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,10 +1,11 @@
|
|
|
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
|
+
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"];
|
|
8
9
|
async function fetchData(url) {
|
|
9
10
|
try {
|
|
10
11
|
const response = await fetch(url);
|
|
@@ -49,8 +50,8 @@ class I18N {
|
|
|
49
50
|
this.config = { location: parsedLocation, ...restOptions };
|
|
50
51
|
const { override, preloaded = {} } = this.config;
|
|
51
52
|
const allLangs = Object.entries(this.langs).concat(Object.entries(override || preloaded));
|
|
52
|
-
this.langs = allLangs.reduce((acc, [
|
|
53
|
-
acc[
|
|
53
|
+
this.langs = allLangs.reduce((acc, [locale, lang]) => {
|
|
54
|
+
acc[locale] = this.applyLanguage(locale, lang);
|
|
54
55
|
return acc;
|
|
55
56
|
}, {});
|
|
56
57
|
this.locale = this.config.locale || this.config.langs[0];
|
|
@@ -69,9 +70,9 @@ class I18N {
|
|
|
69
70
|
* @param {String} locale
|
|
70
71
|
* @param {String|Object} lang
|
|
71
72
|
*/
|
|
72
|
-
addLanguage(
|
|
73
|
+
addLanguage(locale, lang = {}) {
|
|
73
74
|
lang = typeof lang === "string" ? I18N.processFile(lang) : lang;
|
|
74
|
-
this.applyLanguage(
|
|
75
|
+
this.applyLanguage(locale, lang);
|
|
75
76
|
this.config.langs.push("locale");
|
|
76
77
|
}
|
|
77
78
|
/**
|
|
@@ -80,9 +81,9 @@ class I18N {
|
|
|
80
81
|
* @param {String} locale - locale to check for value
|
|
81
82
|
* @return {String} language string or undefined
|
|
82
83
|
*/
|
|
83
|
-
getValue(key,
|
|
84
|
+
getValue(key, locale = this.locale) {
|
|
84
85
|
var _a;
|
|
85
|
-
const value = (_a = this.langs[
|
|
86
|
+
const value = (_a = this.langs[locale]) == null ? void 0 : _a[key];
|
|
86
87
|
return value || this.getFallbackValue(key);
|
|
87
88
|
}
|
|
88
89
|
/**
|
|
@@ -174,22 +175,22 @@ class I18N {
|
|
|
174
175
|
* @param {Boolean} useCache
|
|
175
176
|
* @return {Promise} resolves response
|
|
176
177
|
*/
|
|
177
|
-
loadLang(
|
|
178
|
+
loadLang(locale, useCache = true) {
|
|
178
179
|
const _this = this;
|
|
179
180
|
return new Promise(function(resolve, reject) {
|
|
180
|
-
if (_this.loaded.indexOf(
|
|
181
|
-
_this.applyLanguage(_this.langs[
|
|
182
|
-
return resolve(_this.langs[
|
|
181
|
+
if (_this.loaded.indexOf(locale) !== -1 && useCache) {
|
|
182
|
+
_this.applyLanguage(_this.langs[locale]);
|
|
183
|
+
return resolve(_this.langs[locale]);
|
|
183
184
|
} else {
|
|
184
|
-
const langFile = [_this.config.location,
|
|
185
|
+
const langFile = [_this.config.location, locale, _this.config.extension].join("");
|
|
185
186
|
return fetchData(langFile).then((lang) => {
|
|
186
187
|
const processedFile = I18N.processFile(lang);
|
|
187
|
-
_this.applyLanguage(
|
|
188
|
-
_this.loaded.push(
|
|
189
|
-
return resolve(_this.langs[
|
|
188
|
+
_this.applyLanguage(locale, processedFile);
|
|
189
|
+
_this.loaded.push(locale);
|
|
190
|
+
return resolve(_this.langs[locale]);
|
|
190
191
|
}).catch((err) => {
|
|
191
192
|
console.error(err);
|
|
192
|
-
const lang = _this.applyLanguage(
|
|
193
|
+
const lang = _this.applyLanguage(locale);
|
|
193
194
|
resolve(lang);
|
|
194
195
|
});
|
|
195
196
|
}
|
|
@@ -201,11 +202,11 @@ class I18N {
|
|
|
201
202
|
* @param {Object} lang
|
|
202
203
|
* @return {Object} overriden language
|
|
203
204
|
*/
|
|
204
|
-
applyLanguage(
|
|
205
|
-
const override = this.config.override[
|
|
206
|
-
const existingLang = this.langs[
|
|
207
|
-
this.langs[
|
|
208
|
-
return this.langs[
|
|
205
|
+
applyLanguage(locale, lang = {}) {
|
|
206
|
+
const override = this.config.override[locale] || {};
|
|
207
|
+
const existingLang = this.langs[locale] || {};
|
|
208
|
+
this.langs[locale] = { ...existingLang, ...lang, ...override };
|
|
209
|
+
return this.langs[locale];
|
|
209
210
|
}
|
|
210
211
|
/**
|
|
211
212
|
* return currently available languages
|
|
@@ -219,10 +220,10 @@ class I18N {
|
|
|
219
220
|
* @param {String} locale
|
|
220
221
|
* @return {Promise} language
|
|
221
222
|
*/
|
|
222
|
-
async setCurrent(
|
|
223
|
-
await this.loadLang(
|
|
224
|
-
this.locale =
|
|
225
|
-
this.current = this.langs[
|
|
223
|
+
async setCurrent(locale = "en-US") {
|
|
224
|
+
await this.loadLang(locale);
|
|
225
|
+
this.locale = locale;
|
|
226
|
+
this.current = this.langs[locale];
|
|
226
227
|
return this.current;
|
|
227
228
|
}
|
|
228
229
|
}
|
|
@@ -431,7 +432,7 @@ if (window !== void 0) {
|
|
|
431
432
|
window.SmartTooltip = SmartTooltip;
|
|
432
433
|
}
|
|
433
434
|
const name$1 = "formeo";
|
|
434
|
-
const version$2 = "4.2.
|
|
435
|
+
const version$2 = "4.2.5";
|
|
435
436
|
const pkg = {
|
|
436
437
|
name: name$1,
|
|
437
438
|
version: version$2
|
|
@@ -2166,7 +2167,7 @@ function buildFlatDataStructure(data, componentId, componentType2, result = {})
|
|
|
2166
2167
|
}
|
|
2167
2168
|
return result;
|
|
2168
2169
|
}
|
|
2169
|
-
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>';
|
|
2170
|
+
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>';
|
|
2170
2171
|
const name = pkg.name;
|
|
2171
2172
|
const version$1 = pkg.version;
|
|
2172
2173
|
const PACKAGE_NAME = name;
|
|
@@ -2350,8 +2351,11 @@ const DEFAULT_FORMDATA = () => ({
|
|
|
2350
2351
|
});
|
|
2351
2352
|
const CHECKED_TYPES = ["selected", "checked"];
|
|
2352
2353
|
const REVERSED_CHECKED_TYPES = CHECKED_TYPES.toReversed();
|
|
2353
|
-
const
|
|
2354
|
-
|
|
2354
|
+
const FILTERED_PANEL_DATA_KEYS = /* @__PURE__ */ new Map([
|
|
2355
|
+
["config", /* @__PURE__ */ new Set(["label", "helpText", "hideLabel", "labelAfter", "disableHtmlLabel", "tooltip"])]
|
|
2356
|
+
]);
|
|
2357
|
+
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`);
|
|
2358
|
+
const toTitleCaseRegex = new RegExp(String.raw`(?!${toTitleCaseLowers.join("|")})\w\S*`, "g");
|
|
2355
2359
|
const regexSpace = /\s+/g;
|
|
2356
2360
|
function toTitleCase(str) {
|
|
2357
2361
|
if (typeof str !== "string") {
|
|
@@ -2403,6 +2407,10 @@ const truncateByWord = (str, maxLength, tail = "…") => {
|
|
|
2403
2407
|
}
|
|
2404
2408
|
return truncatedWord;
|
|
2405
2409
|
};
|
|
2410
|
+
const keyPrefixRegex = /^attrs\.|^meta\.|^options\.|^config\./g;
|
|
2411
|
+
function trimKeyPrefix(key) {
|
|
2412
|
+
return key.replaceAll(keyPrefixRegex, "");
|
|
2413
|
+
}
|
|
2406
2414
|
var isSymbol_1;
|
|
2407
2415
|
var hasRequiredIsSymbol;
|
|
2408
2416
|
function requireIsSymbol() {
|
|
@@ -3973,14 +3981,14 @@ function calculateRealTime(animatingRect, fromRect, toRect, options) {
|
|
|
3973
3981
|
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;
|
|
3974
3982
|
}
|
|
3975
3983
|
var plugins = [];
|
|
3976
|
-
var defaults$
|
|
3984
|
+
var defaults$4 = {
|
|
3977
3985
|
initializeByDefault: true
|
|
3978
3986
|
};
|
|
3979
3987
|
var PluginManager = {
|
|
3980
3988
|
mount: function mount(plugin) {
|
|
3981
|
-
for (var option2 in defaults$
|
|
3982
|
-
if (defaults$
|
|
3983
|
-
plugin[option2] = defaults$
|
|
3989
|
+
for (var option2 in defaults$4) {
|
|
3990
|
+
if (defaults$4.hasOwnProperty(option2) && !(option2 in plugin)) {
|
|
3991
|
+
plugin[option2] = defaults$4[option2];
|
|
3984
3992
|
}
|
|
3985
3993
|
}
|
|
3986
3994
|
plugins.forEach(function(p) {
|
|
@@ -5780,7 +5788,7 @@ const insertStyle = (srcs) => {
|
|
|
5780
5788
|
},
|
|
5781
5789
|
action: {
|
|
5782
5790
|
load: () => onLoadStylesheet(styleLink, resolve),
|
|
5783
|
-
error: () => reject(new Error(`${
|
|
5791
|
+
error: () => reject(new Error(`${src} failed to load.`))
|
|
5784
5792
|
}
|
|
5785
5793
|
});
|
|
5786
5794
|
document.head.appendChild(styleLink);
|
|
@@ -5825,9 +5833,9 @@ const fetchDependencies = (dependencies) => {
|
|
|
5825
5833
|
return Promise.all(promises);
|
|
5826
5834
|
};
|
|
5827
5835
|
const fetchFormeoStyle = async (cssUrl) => {
|
|
5828
|
-
if (!loaded.css.has(cssUrl)) {
|
|
5836
|
+
if (cssUrl && !loaded.css.has(cssUrl)) {
|
|
5829
5837
|
await insertStyle(cssUrl);
|
|
5830
|
-
if (!loaded.css.has(FALLBACK_CSS_URL)) {
|
|
5838
|
+
if (!loaded.css.has(cssUrl) && !loaded.css.has(FALLBACK_CSS_URL)) {
|
|
5831
5839
|
return await insertStyle(FALLBACK_CSS_URL);
|
|
5832
5840
|
}
|
|
5833
5841
|
}
|
|
@@ -5841,6 +5849,12 @@ const iconFontTemplates = {
|
|
|
5841
5849
|
fontello: (icon) => `<i class="${iconPrefix}${icon}">${icon}</i>`
|
|
5842
5850
|
};
|
|
5843
5851
|
const inputTags = /* @__PURE__ */ new Set(["input", "textarea", "select"]);
|
|
5852
|
+
const stripOn = (str) => str.replace(/^on([A-Z])/, (_, l) => l.toLowerCase());
|
|
5853
|
+
const useCaptureEvts = /* @__PURE__ */ new Set(["focus", "blur"]);
|
|
5854
|
+
const defaultActionHandler = (event) => {
|
|
5855
|
+
const eventName = stripOn(event);
|
|
5856
|
+
return (node, cb) => node.addEventListener(eventName, cb, useCaptureEvts.has(eventName));
|
|
5857
|
+
};
|
|
5844
5858
|
const getName = (elem = {}) => {
|
|
5845
5859
|
let name2 = elem?.attrs?.name || elem?.name;
|
|
5846
5860
|
if (name2) {
|
|
@@ -6046,12 +6060,10 @@ class DOM {
|
|
|
6046
6060
|
onRender: dom.onRender,
|
|
6047
6061
|
render: dom.onRender
|
|
6048
6062
|
};
|
|
6049
|
-
const useCaptureEvts = ["focus", "blur"];
|
|
6050
|
-
const defaultHandler = (event) => (node2, cb) => node2.addEventListener(event, cb, useCaptureEvts.includes(event));
|
|
6051
6063
|
return Object.entries(actions2).map(([event, cb]) => {
|
|
6052
6064
|
const cbs = Array.isArray(cb) ? cb : [cb];
|
|
6053
6065
|
return cbs.map((cb2) => {
|
|
6054
|
-
const action = handlers[event] ||
|
|
6066
|
+
const action = handlers[event] || defaultActionHandler(event);
|
|
6055
6067
|
return action(node, cb2);
|
|
6056
6068
|
});
|
|
6057
6069
|
});
|
|
@@ -6133,7 +6145,11 @@ class DOM {
|
|
|
6133
6145
|
const safeAttrName2 = helpers.safeAttrName(attr);
|
|
6134
6146
|
const value = this.processAttrValue(attrs[attr]);
|
|
6135
6147
|
if (value !== false) {
|
|
6136
|
-
|
|
6148
|
+
try {
|
|
6149
|
+
element.setAttribute(safeAttrName2, value);
|
|
6150
|
+
} catch (e2) {
|
|
6151
|
+
console.warn(`Could not set attribute ${safeAttrName2} with value ${value}`, e2);
|
|
6152
|
+
}
|
|
6137
6153
|
}
|
|
6138
6154
|
}
|
|
6139
6155
|
}
|
|
@@ -6293,7 +6309,7 @@ class DOM {
|
|
|
6293
6309
|
* @return {Boolean} holdsContent
|
|
6294
6310
|
*/
|
|
6295
6311
|
holdsContent(element) {
|
|
6296
|
-
return element.outerHTML.
|
|
6312
|
+
return element.outerHTML.includes("/");
|
|
6297
6313
|
}
|
|
6298
6314
|
/**
|
|
6299
6315
|
* Is this a textarea, select or other block input
|
|
@@ -6335,13 +6351,26 @@ class DOM {
|
|
|
6335
6351
|
const type = helpers.get(elem, "attrs.type");
|
|
6336
6352
|
const labelAfter = helpers.get(elem, "config.labelAfter");
|
|
6337
6353
|
const isCB = type === "checkbox" || type === "radio";
|
|
6338
|
-
return labelAfter
|
|
6354
|
+
return labelAfter === void 0 ? isCB : labelAfter;
|
|
6339
6355
|
}
|
|
6340
6356
|
requiredMark = () => ({
|
|
6341
6357
|
tag: "span",
|
|
6342
6358
|
className: "text-error",
|
|
6343
6359
|
children: "*"
|
|
6344
6360
|
});
|
|
6361
|
+
tooltip = (tooltip2) => ({
|
|
6362
|
+
tag: "span",
|
|
6363
|
+
className: "f-tooltip",
|
|
6364
|
+
dataset: {
|
|
6365
|
+
tooltip: tooltip2
|
|
6366
|
+
},
|
|
6367
|
+
content: dom.icon("info-circle")
|
|
6368
|
+
});
|
|
6369
|
+
helpText = (helpText) => ({
|
|
6370
|
+
tag: "small",
|
|
6371
|
+
className: "f-help-text",
|
|
6372
|
+
children: helpText
|
|
6373
|
+
});
|
|
6345
6374
|
/**
|
|
6346
6375
|
* Generate a label
|
|
6347
6376
|
* @param {Object} elem config object
|
|
@@ -6351,7 +6380,7 @@ class DOM {
|
|
|
6351
6380
|
label(elem, fMap) {
|
|
6352
6381
|
const required = helpers.get(elem, "attrs.required");
|
|
6353
6382
|
let {
|
|
6354
|
-
config: { label: labelText = "" }
|
|
6383
|
+
config: { label: labelText = "", helpText = "", tooltip: tooltip2 = null }
|
|
6355
6384
|
} = elem;
|
|
6356
6385
|
const { id: elemId, attrs } = elem;
|
|
6357
6386
|
if (typeof labelText === "function") {
|
|
@@ -6363,7 +6392,12 @@ class DOM {
|
|
|
6363
6392
|
for: elemId || attrs?.id
|
|
6364
6393
|
},
|
|
6365
6394
|
className: [],
|
|
6366
|
-
children: [
|
|
6395
|
+
children: [
|
|
6396
|
+
labelText,
|
|
6397
|
+
required && this.requiredMark(),
|
|
6398
|
+
tooltip2 && this.tooltip(tooltip2),
|
|
6399
|
+
helpText && this.helpText(helpText)
|
|
6400
|
+
],
|
|
6367
6401
|
action: {}
|
|
6368
6402
|
};
|
|
6369
6403
|
if (fMap) {
|
|
@@ -7077,15 +7111,21 @@ class Autocomplete {
|
|
|
7077
7111
|
this.onChange?.({ target: this.hiddenField });
|
|
7078
7112
|
}
|
|
7079
7113
|
}
|
|
7114
|
+
const keyToPlaceHolder = (key) => mi18n.get(`${key}.placeholder`) || toTitleCase(trimKeyPrefix(key));
|
|
7115
|
+
const keyToClassName = (key) => key.replaceAll(".", "-");
|
|
7116
|
+
const stringInputTypeMap = /* @__PURE__ */ new Map([
|
|
7117
|
+
["config.helpText", (...args) => largeTextInputConfigBase(...args)],
|
|
7118
|
+
["config.tooltip", (...args) => largeTextInputConfigBase(...args)]
|
|
7119
|
+
]);
|
|
7080
7120
|
function inputConfigBase({ key, value, type = "text", checked }) {
|
|
7081
7121
|
const config = {
|
|
7082
7122
|
tag: "input",
|
|
7083
7123
|
attrs: {
|
|
7084
7124
|
type,
|
|
7085
7125
|
value,
|
|
7086
|
-
placeholder:
|
|
7126
|
+
placeholder: keyToPlaceHolder(key)
|
|
7087
7127
|
},
|
|
7088
|
-
className: [key
|
|
7128
|
+
className: [keyToClassName(key)],
|
|
7089
7129
|
config: {}
|
|
7090
7130
|
};
|
|
7091
7131
|
if (checked) {
|
|
@@ -7093,17 +7133,33 @@ function inputConfigBase({ key, value, type = "text", checked }) {
|
|
|
7093
7133
|
}
|
|
7094
7134
|
return config;
|
|
7095
7135
|
}
|
|
7136
|
+
function largeTextInputConfigBase({ key, value }) {
|
|
7137
|
+
return {
|
|
7138
|
+
tag: "textarea",
|
|
7139
|
+
attrs: {
|
|
7140
|
+
placeholder: keyToPlaceHolder(key)
|
|
7141
|
+
},
|
|
7142
|
+
className: [keyToClassName(key)],
|
|
7143
|
+
config: {},
|
|
7144
|
+
textContent: value
|
|
7145
|
+
};
|
|
7146
|
+
}
|
|
7096
7147
|
function labelHelper(key) {
|
|
7097
7148
|
const labelText = mi18n.get(key);
|
|
7098
7149
|
if (labelText) {
|
|
7099
7150
|
return labelText;
|
|
7100
7151
|
}
|
|
7101
|
-
const
|
|
7102
|
-
return mi18n.get(
|
|
7152
|
+
const trimmedKey = trimKeyPrefix(key);
|
|
7153
|
+
return mi18n.get(trimmedKey) || toTitleCase(trimmedKey);
|
|
7103
7154
|
}
|
|
7104
7155
|
const ITEM_INPUT_TYPE_MAP = {
|
|
7105
7156
|
autocomplete: (...args) => new Autocomplete(...args).createProxy(),
|
|
7106
|
-
string: ({ key, value }) =>
|
|
7157
|
+
string: ({ key, value }) => {
|
|
7158
|
+
if (stringInputTypeMap.has(key)) {
|
|
7159
|
+
return stringInputTypeMap.get(key)({ key, value });
|
|
7160
|
+
}
|
|
7161
|
+
return inputConfigBase({ key, value });
|
|
7162
|
+
},
|
|
7107
7163
|
boolean: ({ key, value }) => {
|
|
7108
7164
|
const type = key === "selected" ? "radio" : "checkbox";
|
|
7109
7165
|
return inputConfigBase({ key, value, type, checked: !!value });
|
|
@@ -7115,7 +7171,7 @@ const ITEM_INPUT_TYPE_MAP = {
|
|
|
7115
7171
|
attrs: {
|
|
7116
7172
|
placeholder: labelHelper(`placeholder.${key}`)
|
|
7117
7173
|
},
|
|
7118
|
-
className: [key
|
|
7174
|
+
className: [keyToClassName(key)],
|
|
7119
7175
|
options: value
|
|
7120
7176
|
};
|
|
7121
7177
|
},
|
|
@@ -7156,6 +7212,265 @@ const INPUT_TYPE_ACTION = {
|
|
|
7156
7212
|
}),
|
|
7157
7213
|
object: () => ({})
|
|
7158
7214
|
};
|
|
7215
|
+
const defaults$3 = Object.freeze({
|
|
7216
|
+
title: "",
|
|
7217
|
+
content: null,
|
|
7218
|
+
confirmText: () => labelHelper("save"),
|
|
7219
|
+
cancelText: () => labelHelper("cancel"),
|
|
7220
|
+
onConfirm: () => {
|
|
7221
|
+
},
|
|
7222
|
+
onCancel: () => {
|
|
7223
|
+
},
|
|
7224
|
+
className: "",
|
|
7225
|
+
closeOnEscape: true,
|
|
7226
|
+
position: "top",
|
|
7227
|
+
// 'top' | 'center' | 'trigger'
|
|
7228
|
+
triggerElement: null,
|
|
7229
|
+
// Element that triggered the dialog (for position: 'trigger')
|
|
7230
|
+
triggerCoords: null
|
|
7231
|
+
// Or manual coords { x, y } (for position: 'trigger')
|
|
7232
|
+
});
|
|
7233
|
+
class Dialog {
|
|
7234
|
+
/**
|
|
7235
|
+
* Creates a new Dialog instance
|
|
7236
|
+
* @param {Object} options - Dialog configuration options
|
|
7237
|
+
* @param {string} [options.title] - Dialog title
|
|
7238
|
+
* @param {Object|Array} [options.content] - DOM config for dialog body content
|
|
7239
|
+
* @param {Function} [options.onConfirm] - Callback when form is submitted (receives FormData)
|
|
7240
|
+
* @param {Function} [options.onCancel] - Callback when dialog is cancelled
|
|
7241
|
+
* @param {string|Function} [options.confirmText] - Confirm button text
|
|
7242
|
+
* @param {string|Function} [options.cancelText] - Cancel button text
|
|
7243
|
+
* @param {string} [options.className] - Additional CSS class name(s)
|
|
7244
|
+
* @param {boolean} [options.closeOnEscape] - Whether Escape key closes dialog
|
|
7245
|
+
* @param {string} [options.position] - Positioning mode: 'top' (upper center), 'center', or 'trigger' (near trigger element)
|
|
7246
|
+
* @param {HTMLElement} [options.triggerElement] - Element that triggered dialog (for position: 'trigger')
|
|
7247
|
+
* @param {Object} [options.triggerCoords] - Manual coordinates {x, y} (for position: 'trigger')
|
|
7248
|
+
*/
|
|
7249
|
+
constructor(options) {
|
|
7250
|
+
this.opts = merge(defaults$3, options);
|
|
7251
|
+
this.dialog = null;
|
|
7252
|
+
}
|
|
7253
|
+
/**
|
|
7254
|
+
* Creates the dialog DOM structure
|
|
7255
|
+
* @returns {HTMLDialogElement} The created dialog element
|
|
7256
|
+
*/
|
|
7257
|
+
createDialog() {
|
|
7258
|
+
const { title, content, confirmText, cancelText, className, closeOnEscape, position } = this.opts;
|
|
7259
|
+
const positionClass = `dialog-position-${position}`;
|
|
7260
|
+
const formChildren = [];
|
|
7261
|
+
if (title) {
|
|
7262
|
+
formChildren.push({
|
|
7263
|
+
tag: "h3",
|
|
7264
|
+
className: "dialog-title",
|
|
7265
|
+
textContent: title
|
|
7266
|
+
});
|
|
7267
|
+
}
|
|
7268
|
+
if (content) {
|
|
7269
|
+
formChildren.push({
|
|
7270
|
+
tag: "div",
|
|
7271
|
+
className: "dialog-body",
|
|
7272
|
+
children: Array.isArray(content) ? content : [content]
|
|
7273
|
+
});
|
|
7274
|
+
}
|
|
7275
|
+
formChildren.push({
|
|
7276
|
+
tag: "div",
|
|
7277
|
+
className: "dialog-actions",
|
|
7278
|
+
children: [
|
|
7279
|
+
{
|
|
7280
|
+
tag: "button",
|
|
7281
|
+
type: "button",
|
|
7282
|
+
className: "btn btn-sm btn-secondary",
|
|
7283
|
+
textContent: typeof cancelText === "function" ? cancelText() : cancelText,
|
|
7284
|
+
action: {
|
|
7285
|
+
click: () => this.handleCancel()
|
|
7286
|
+
}
|
|
7287
|
+
},
|
|
7288
|
+
{
|
|
7289
|
+
tag: "button",
|
|
7290
|
+
type: "submit",
|
|
7291
|
+
className: "btn btn-sm btn-primary",
|
|
7292
|
+
textContent: typeof confirmText === "function" ? confirmText() : confirmText
|
|
7293
|
+
}
|
|
7294
|
+
]
|
|
7295
|
+
});
|
|
7296
|
+
const dialogElement = dom.create({
|
|
7297
|
+
tag: "dialog",
|
|
7298
|
+
className: ["formeo-dialog", "formeo", positionClass, className],
|
|
7299
|
+
children: [
|
|
7300
|
+
{
|
|
7301
|
+
tag: "form",
|
|
7302
|
+
className: "dialog-form",
|
|
7303
|
+
method: "dialog",
|
|
7304
|
+
children: formChildren,
|
|
7305
|
+
action: {
|
|
7306
|
+
submit: (e2) => this.handleSubmit(e2)
|
|
7307
|
+
}
|
|
7308
|
+
}
|
|
7309
|
+
],
|
|
7310
|
+
action: {
|
|
7311
|
+
cancel: (e2) => {
|
|
7312
|
+
if (closeOnEscape) {
|
|
7313
|
+
this.handleCancel();
|
|
7314
|
+
} else {
|
|
7315
|
+
e2.preventDefault();
|
|
7316
|
+
}
|
|
7317
|
+
}
|
|
7318
|
+
}
|
|
7319
|
+
});
|
|
7320
|
+
return dialogElement;
|
|
7321
|
+
}
|
|
7322
|
+
/**
|
|
7323
|
+
* Handles form submission
|
|
7324
|
+
* @param {Event} e - Submit event
|
|
7325
|
+
*/
|
|
7326
|
+
handleSubmit(e2) {
|
|
7327
|
+
e2.preventDefault();
|
|
7328
|
+
const formData = new FormData(e2.target);
|
|
7329
|
+
this.opts.onConfirm(formData, this);
|
|
7330
|
+
this.close();
|
|
7331
|
+
}
|
|
7332
|
+
/**
|
|
7333
|
+
* Handles dialog cancellation
|
|
7334
|
+
*/
|
|
7335
|
+
handleCancel() {
|
|
7336
|
+
this.opts.onCancel(this);
|
|
7337
|
+
this.close();
|
|
7338
|
+
}
|
|
7339
|
+
/**
|
|
7340
|
+
* Sets dialog position based on trigger element or coordinates
|
|
7341
|
+
*/
|
|
7342
|
+
setPosition() {
|
|
7343
|
+
const { position, triggerElement, triggerCoords } = this.opts;
|
|
7344
|
+
if (position !== "trigger" || !this.dialog) return;
|
|
7345
|
+
let coords = triggerCoords;
|
|
7346
|
+
if (!coords && triggerElement) {
|
|
7347
|
+
const rect = triggerElement.getBoundingClientRect();
|
|
7348
|
+
coords = {
|
|
7349
|
+
x: rect.left + rect.width / 2,
|
|
7350
|
+
y: rect.bottom + 8
|
|
7351
|
+
// 8px gap below trigger
|
|
7352
|
+
};
|
|
7353
|
+
}
|
|
7354
|
+
if (coords) {
|
|
7355
|
+
const dialogRect = this.dialog.getBoundingClientRect();
|
|
7356
|
+
const viewportWidth = window.innerWidth;
|
|
7357
|
+
const viewportHeight = window.innerHeight;
|
|
7358
|
+
let left = coords.x - dialogRect.width / 2;
|
|
7359
|
+
let top = coords.y;
|
|
7360
|
+
const padding = 16;
|
|
7361
|
+
left = Math.max(padding, Math.min(left, viewportWidth - dialogRect.width - padding));
|
|
7362
|
+
top = Math.max(padding, Math.min(top, viewportHeight - dialogRect.height - padding));
|
|
7363
|
+
this.dialog.style.left = `${left}px`;
|
|
7364
|
+
this.dialog.style.top = `${top}px`;
|
|
7365
|
+
this.dialog.style.transform = "none";
|
|
7366
|
+
}
|
|
7367
|
+
}
|
|
7368
|
+
/**
|
|
7369
|
+
* Opens the dialog
|
|
7370
|
+
* @returns {Dialog} This dialog instance for chaining
|
|
7371
|
+
*/
|
|
7372
|
+
open() {
|
|
7373
|
+
if (!this.dialog) {
|
|
7374
|
+
this.dialog = this.createDialog();
|
|
7375
|
+
}
|
|
7376
|
+
document.body.appendChild(this.dialog);
|
|
7377
|
+
this.dialog.showModal();
|
|
7378
|
+
if (this.opts.position === "trigger") {
|
|
7379
|
+
const setTimeoutId = setTimeout(() => {
|
|
7380
|
+
this.setPosition();
|
|
7381
|
+
clearTimeout(setTimeoutId);
|
|
7382
|
+
}, 0);
|
|
7383
|
+
}
|
|
7384
|
+
return this;
|
|
7385
|
+
}
|
|
7386
|
+
/**
|
|
7387
|
+
* Closes and removes the dialog
|
|
7388
|
+
*/
|
|
7389
|
+
close() {
|
|
7390
|
+
if (this.dialog) {
|
|
7391
|
+
this.dialog.close();
|
|
7392
|
+
this.dialog.remove();
|
|
7393
|
+
this.dialog = null;
|
|
7394
|
+
}
|
|
7395
|
+
}
|
|
7396
|
+
/**
|
|
7397
|
+
* Static shorthand for simple alert dialog
|
|
7398
|
+
* @param {string} message - Alert message
|
|
7399
|
+
* @param {Function} [onConfirm] - Optional callback when confirmed
|
|
7400
|
+
* @returns {Dialog} Dialog instance
|
|
7401
|
+
*/
|
|
7402
|
+
static alert(message, onConfirm = () => {
|
|
7403
|
+
}) {
|
|
7404
|
+
return new Dialog({
|
|
7405
|
+
content: {
|
|
7406
|
+
tag: "p",
|
|
7407
|
+
className: "dialog-message",
|
|
7408
|
+
textContent: message
|
|
7409
|
+
},
|
|
7410
|
+
confirmText: () => mi18n.get("ok") || "OK",
|
|
7411
|
+
cancelText: "",
|
|
7412
|
+
// Hide cancel button by returning empty string
|
|
7413
|
+
onConfirm: () => onConfirm()
|
|
7414
|
+
});
|
|
7415
|
+
}
|
|
7416
|
+
/**
|
|
7417
|
+
* Static shorthand for confirmation dialog
|
|
7418
|
+
* @param {string} message - Confirmation question
|
|
7419
|
+
* @param {Function} [onConfirm] - Callback when confirmed
|
|
7420
|
+
* @param {Function} [onCancel] - Callback when cancelled
|
|
7421
|
+
* @returns {Dialog} Dialog instance
|
|
7422
|
+
*/
|
|
7423
|
+
static confirm(message, onConfirm = () => {
|
|
7424
|
+
}, onCancel = () => {
|
|
7425
|
+
}) {
|
|
7426
|
+
return new Dialog({
|
|
7427
|
+
content: {
|
|
7428
|
+
tag: "p",
|
|
7429
|
+
className: "dialog-message",
|
|
7430
|
+
textContent: message
|
|
7431
|
+
},
|
|
7432
|
+
confirmText: () => mi18n.get("confirm") || "Confirm",
|
|
7433
|
+
onConfirm: () => onConfirm(),
|
|
7434
|
+
onCancel: () => onCancel()
|
|
7435
|
+
});
|
|
7436
|
+
}
|
|
7437
|
+
/**
|
|
7438
|
+
* Static shorthand for prompt dialog
|
|
7439
|
+
* @param {string} message - Prompt message
|
|
7440
|
+
* @param {Function} onSubmit - Callback with user input value
|
|
7441
|
+
* @param {string} [defaultValue] - Default input value
|
|
7442
|
+
* @returns {Dialog} Dialog instance
|
|
7443
|
+
*/
|
|
7444
|
+
static prompt(message, onSubmit = () => {
|
|
7445
|
+
}, defaultValue = "") {
|
|
7446
|
+
return new Dialog({
|
|
7447
|
+
content: [
|
|
7448
|
+
{
|
|
7449
|
+
tag: "label",
|
|
7450
|
+
className: "dialog-prompt-label",
|
|
7451
|
+
children: [
|
|
7452
|
+
{
|
|
7453
|
+
tag: "p",
|
|
7454
|
+
className: "dialog-message",
|
|
7455
|
+
textContent: message
|
|
7456
|
+
},
|
|
7457
|
+
{
|
|
7458
|
+
tag: "input",
|
|
7459
|
+
type: "text",
|
|
7460
|
+
name: "prompt-value",
|
|
7461
|
+
className: "dialog-prompt-input",
|
|
7462
|
+
value: defaultValue
|
|
7463
|
+
}
|
|
7464
|
+
]
|
|
7465
|
+
}
|
|
7466
|
+
],
|
|
7467
|
+
onConfirm: (formData) => {
|
|
7468
|
+
const value = formData.get("prompt-value");
|
|
7469
|
+
onSubmit(value);
|
|
7470
|
+
}
|
|
7471
|
+
});
|
|
7472
|
+
}
|
|
7473
|
+
}
|
|
7159
7474
|
const hiddenPropertyClassname = "hidden-property";
|
|
7160
7475
|
const hiddenOptionClassname = "hidden-option";
|
|
7161
7476
|
const optionsAddressRegex = /\.options\[\d+\]$/;
|
|
@@ -7543,7 +7858,7 @@ class EditPanelItem {
|
|
|
7543
7858
|
const conditionTypeWrap = this.conditionTypeWrap.get(conditionType);
|
|
7544
7859
|
const conditionField = conditionTypeWrap.children[index2];
|
|
7545
7860
|
conditionField.destroy();
|
|
7546
|
-
|
|
7861
|
+
conditionField.dom.remove();
|
|
7547
7862
|
};
|
|
7548
7863
|
generateConditionFields = (conditionType, conditionVals) => {
|
|
7549
7864
|
this.conditions = /* @__PURE__ */ new Map();
|
|
@@ -7594,24 +7909,52 @@ class EditPanelItem {
|
|
|
7594
7909
|
};
|
|
7595
7910
|
return controls;
|
|
7596
7911
|
}
|
|
7912
|
+
/**
|
|
7913
|
+
* Get config-provided options for an attribute
|
|
7914
|
+
* @param {String} attrKey - The attribute key (e.g., 'attrs.type')
|
|
7915
|
+
* @returns {Array|null} Array of options if config provides them, null otherwise
|
|
7916
|
+
*/
|
|
7917
|
+
getConfigAttrOptions(attrKey) {
|
|
7918
|
+
const attrName = attrKey.split(".").pop();
|
|
7919
|
+
const configValue = this.field.config?.attrs?.[attrName];
|
|
7920
|
+
if (Array.isArray(configValue)) {
|
|
7921
|
+
return configValue;
|
|
7922
|
+
}
|
|
7923
|
+
return null;
|
|
7924
|
+
}
|
|
7597
7925
|
itemInput(key, value) {
|
|
7598
|
-
|
|
7926
|
+
if (this.isDisabled) {
|
|
7927
|
+
return null;
|
|
7928
|
+
}
|
|
7929
|
+
let valType = dom.childType(value) || "string";
|
|
7930
|
+
let effectiveValue = value;
|
|
7931
|
+
if (this.panelName === "attrs") {
|
|
7932
|
+
const configAttrOptions = this.getConfigAttrOptions(key);
|
|
7933
|
+
if (configAttrOptions) {
|
|
7934
|
+
effectiveValue = configAttrOptions.map((opt) => ({
|
|
7935
|
+
...opt,
|
|
7936
|
+
selected: opt.value === value
|
|
7937
|
+
}));
|
|
7938
|
+
valType = "array";
|
|
7939
|
+
}
|
|
7940
|
+
}
|
|
7599
7941
|
const dataKey = panelDataKeyMap.get(this.panelName)?.({ itemKey: this.itemKey, key }) || this.itemKey;
|
|
7600
7942
|
const labelKey = dataKey.split(".").filter(Number.isNaN).join(".") || key;
|
|
7601
|
-
const baseConfig = ITEM_INPUT_TYPE_MAP[valType]({ key, value });
|
|
7602
|
-
const name2 = `${this.field.shortId}-${slugifyAddress(dataKey).
|
|
7943
|
+
const baseConfig = ITEM_INPUT_TYPE_MAP[valType]({ key, value: effectiveValue });
|
|
7944
|
+
const name2 = `${this.field.shortId}-${slugifyAddress(dataKey).replaceAll(/-\d+-(selected)/g, "-$1")}`;
|
|
7603
7945
|
const config = {
|
|
7604
|
-
label: this.panelName !== "options" &&
|
|
7605
|
-
labelAfter: false
|
|
7946
|
+
label: this.panelName !== "options" && labelHelper(labelKey),
|
|
7947
|
+
labelAfter: false,
|
|
7948
|
+
inputWrap: ["f-input-wrap", this.isLocked && "locked-prop", this.isDisabled && "disabled-prop"].filter(Boolean).join(" ")
|
|
7606
7949
|
};
|
|
7607
7950
|
const attrs = {
|
|
7608
7951
|
name: baseConfig.attrs.type === "checkbox" ? `${name2}[]` : name2
|
|
7609
7952
|
};
|
|
7610
7953
|
attrs.disabled = this.isDisabled;
|
|
7611
|
-
attrs.
|
|
7954
|
+
attrs.readonly = this.isLocked;
|
|
7612
7955
|
const itemInputAction = itemInputActions.get(this.itemSlug)?.(this);
|
|
7613
7956
|
const action = mergeActions(INPUT_TYPE_ACTION[valType](dataKey, this.field), itemInputAction || {});
|
|
7614
|
-
const inputConfig = merge(ITEM_INPUT_TYPE_MAP[valType]({ key, value }), { action, attrs, config });
|
|
7957
|
+
const inputConfig = merge(ITEM_INPUT_TYPE_MAP[valType]({ key, value: effectiveValue }), { action, attrs, config });
|
|
7615
7958
|
if (CHECKED_TYPES.includes(key)) {
|
|
7616
7959
|
return {
|
|
7617
7960
|
className: "f-addon",
|
|
@@ -7626,6 +7969,22 @@ const addAttributeActions = {
|
|
|
7626
7969
|
toggleOptionMultiSelect(!!val, field2);
|
|
7627
7970
|
}
|
|
7628
7971
|
};
|
|
7972
|
+
const defaultConfigOptions = [
|
|
7973
|
+
{ label: labelHelper("config.label"), value: "label" },
|
|
7974
|
+
{ label: labelHelper("config.hideLabel"), value: "hideLabel" },
|
|
7975
|
+
{ label: labelHelper("config.helpText"), value: "helpText" },
|
|
7976
|
+
{ label: labelHelper("config.labelAfter"), value: "labelAfter" },
|
|
7977
|
+
{ label: labelHelper("config.disableHtmlLabel"), value: "disableHtmlLabel" },
|
|
7978
|
+
{ label: labelHelper("config.tooltip"), value: "tooltip" }
|
|
7979
|
+
];
|
|
7980
|
+
const defaultConfigValues = {
|
|
7981
|
+
label: "New Field",
|
|
7982
|
+
hideLabel: false,
|
|
7983
|
+
helpText: "",
|
|
7984
|
+
labelAfter: false,
|
|
7985
|
+
disableHtmlLabel: false,
|
|
7986
|
+
tooltip: ""
|
|
7987
|
+
};
|
|
7629
7988
|
class EditPanel {
|
|
7630
7989
|
/**
|
|
7631
7990
|
* Set defaults and load panelData
|
|
@@ -7666,16 +8025,23 @@ class EditPanel {
|
|
|
7666
8025
|
createProps(data = this.data) {
|
|
7667
8026
|
this.editPanelItems = Array.from(data).map((dataVal, index2) => {
|
|
7668
8027
|
const isArray = this.type === "array";
|
|
8028
|
+
const keyBase = dataVal[0];
|
|
7669
8029
|
const key = isArray ? `[${index2}]` : `.${dataVal[0]}`;
|
|
7670
8030
|
const val = isArray ? dataVal : { [dataVal[0]]: dataVal[1] };
|
|
8031
|
+
const itemKey = `${this.name}${key}`;
|
|
8032
|
+
const isDisabledProp = this.component.isDisabledProp(itemKey, this.name);
|
|
8033
|
+
const isEditableProp = FILTERED_PANEL_DATA_KEYS.get(this.name)?.has(keyBase) ?? true;
|
|
8034
|
+
if (isDisabledProp || !isEditableProp) {
|
|
8035
|
+
return null;
|
|
8036
|
+
}
|
|
7671
8037
|
return new EditPanelItem({
|
|
7672
|
-
key:
|
|
8038
|
+
key: itemKey,
|
|
7673
8039
|
data: val,
|
|
7674
8040
|
field: this.component,
|
|
7675
8041
|
index: index2,
|
|
7676
8042
|
panel: this
|
|
7677
8043
|
});
|
|
7678
|
-
});
|
|
8044
|
+
}).filter(Boolean);
|
|
7679
8045
|
const editGroupConfig = {
|
|
7680
8046
|
tag: "ul",
|
|
7681
8047
|
attrs: {
|
|
@@ -7698,11 +8064,11 @@ class EditPanel {
|
|
|
7698
8064
|
*/
|
|
7699
8065
|
createEditButtons() {
|
|
7700
8066
|
const type = this.name;
|
|
7701
|
-
const btnTitle = mi18n.get(`panelEditButtons.${type}`);
|
|
7702
8067
|
const addActions = {
|
|
7703
8068
|
attrs: this.addAttribute,
|
|
7704
8069
|
options: this.addOption,
|
|
7705
|
-
conditions: this.addCondition
|
|
8070
|
+
conditions: this.addCondition,
|
|
8071
|
+
config: this.addConfiguration
|
|
7706
8072
|
};
|
|
7707
8073
|
const editPanelButtons = [];
|
|
7708
8074
|
if (type === "conditions") {
|
|
@@ -7723,8 +8089,9 @@ class EditPanel {
|
|
|
7723
8089
|
};
|
|
7724
8090
|
editPanelButtons.push(clearAllBtn);
|
|
7725
8091
|
}
|
|
8092
|
+
const addBtnTitle = mi18n.get(`panelEditButtons.${type}`) || `+ Add ${toTitleCase(type)}`;
|
|
7726
8093
|
const addBtn = {
|
|
7727
|
-
...dom.btnTemplate({ content:
|
|
8094
|
+
...dom.btnTemplate({ content: addBtnTitle, title: addBtnTitle }),
|
|
7728
8095
|
className: `add-${type}`,
|
|
7729
8096
|
action: {
|
|
7730
8097
|
click: (evt) => {
|
|
@@ -7741,7 +8108,7 @@ class EditPanel {
|
|
|
7741
8108
|
};
|
|
7742
8109
|
}
|
|
7743
8110
|
const eventType = toTitleCase(type);
|
|
7744
|
-
const customEvt = new
|
|
8111
|
+
const customEvt = new globalThis.CustomEvent(`onAdd${eventType}`, {
|
|
7745
8112
|
detail: addEvt
|
|
7746
8113
|
});
|
|
7747
8114
|
actions.add[type](addEvt);
|
|
@@ -7822,6 +8189,37 @@ class EditPanel {
|
|
|
7822
8189
|
this.component.set(itemKey, evt.template);
|
|
7823
8190
|
this.component.resizePanelWrap();
|
|
7824
8191
|
};
|
|
8192
|
+
addConfiguration = () => {
|
|
8193
|
+
const configData = this.component.get("config");
|
|
8194
|
+
const dialog = new Dialog({
|
|
8195
|
+
className: "config-item-dialog",
|
|
8196
|
+
content: [
|
|
8197
|
+
{
|
|
8198
|
+
tag: "select",
|
|
8199
|
+
config: { label: mi18n.get("selectConfigKey") || "Select Configuration Key" },
|
|
8200
|
+
attrs: { name: "selectConfigKey", required: true, className: "config-key-select" },
|
|
8201
|
+
options: defaultConfigOptions.filter((opt) => !(opt.value in configData))
|
|
8202
|
+
}
|
|
8203
|
+
],
|
|
8204
|
+
onConfirm: (formData) => {
|
|
8205
|
+
const configKey = formData.get("selectConfigKey").trim();
|
|
8206
|
+
const itemKey = `config.${configKey}`;
|
|
8207
|
+
if (configKey) {
|
|
8208
|
+
const newConfig = new EditPanelItem({
|
|
8209
|
+
key: itemKey,
|
|
8210
|
+
data: defaultConfigValues[configKey],
|
|
8211
|
+
field: this.component,
|
|
8212
|
+
panel: this
|
|
8213
|
+
});
|
|
8214
|
+
this.editPanelItems.push(newConfig);
|
|
8215
|
+
this.props.appendChild(newConfig.dom);
|
|
8216
|
+
this.component.debouncedUpdatePreview();
|
|
8217
|
+
this.component.resizePanelWrap();
|
|
8218
|
+
}
|
|
8219
|
+
}
|
|
8220
|
+
});
|
|
8221
|
+
dialog.open();
|
|
8222
|
+
};
|
|
7825
8223
|
/**
|
|
7826
8224
|
* Clears all items from the component property based on its type.
|
|
7827
8225
|
* Sets the property to an empty array for 'array' type or empty object for other types.
|
|
@@ -7842,7 +8240,7 @@ class EditPanel {
|
|
|
7842
8240
|
};
|
|
7843
8241
|
actions.remove[this.name](removeEvt);
|
|
7844
8242
|
const eventType = toTitleCase(this.name);
|
|
7845
|
-
const customEvt = new
|
|
8243
|
+
const customEvt = new globalThis.CustomEvent(`onRemove${eventType}`, {
|
|
7846
8244
|
detail: removeEvt
|
|
7847
8245
|
});
|
|
7848
8246
|
document.dispatchEvent(customEvt);
|
|
@@ -7997,10 +8395,6 @@ class Panels {
|
|
|
7997
8395
|
title: mi18n.get("controlGroups.nextGroup"),
|
|
7998
8396
|
type: "button"
|
|
7999
8397
|
},
|
|
8000
|
-
dataset: {
|
|
8001
|
-
toggle: "tooltip",
|
|
8002
|
-
placement: "top"
|
|
8003
|
-
},
|
|
8004
8398
|
action: {
|
|
8005
8399
|
click: (e2) => this.nav.nextGroup(e2)
|
|
8006
8400
|
},
|
|
@@ -8013,10 +8407,6 @@ class Panels {
|
|
|
8013
8407
|
title: mi18n.get("controlGroups.prevGroup"),
|
|
8014
8408
|
type: "button"
|
|
8015
8409
|
},
|
|
8016
|
-
dataset: {
|
|
8017
|
-
toggle: "tooltip",
|
|
8018
|
-
placement: "top"
|
|
8019
|
-
},
|
|
8020
8410
|
action: {
|
|
8021
8411
|
click: (e2) => this.nav.prevGroup(e2)
|
|
8022
8412
|
},
|
|
@@ -8147,8 +8537,7 @@ class Component extends Data {
|
|
|
8147
8537
|
this.shortId = this.id.slice(0, this.id.indexOf("-"));
|
|
8148
8538
|
this.name = name2;
|
|
8149
8539
|
this.indexName = `${name2}s`;
|
|
8150
|
-
this.config = components[`${this.name}s`].config;
|
|
8151
|
-
merge(this.config, data.config);
|
|
8540
|
+
this.config = { ...data.config, ...components[`${this.name}s`].config };
|
|
8152
8541
|
this.address = `${this.name}s.${this.id}`;
|
|
8153
8542
|
this.dataPath = `${this.address}.`;
|
|
8154
8543
|
this.editPanels = /* @__PURE__ */ new Map();
|
|
@@ -8278,7 +8667,7 @@ class Component extends Data {
|
|
|
8278
8667
|
// copy array since children will be modified
|
|
8279
8668
|
});
|
|
8280
8669
|
forEach(children, (child) => child.remove());
|
|
8281
|
-
this.dom.
|
|
8670
|
+
this.dom.remove();
|
|
8282
8671
|
remove(components.getAddress(`${parent.name}s.${parent.id}.children`), this.id);
|
|
8283
8672
|
if (!parent.children.length) {
|
|
8284
8673
|
parent.emptyClass();
|
|
@@ -8849,12 +9238,18 @@ class Component extends Data {
|
|
|
8849
9238
|
* @return {Boolean}
|
|
8850
9239
|
*/
|
|
8851
9240
|
isDisabledProp = (propName, kind = "attrs") => {
|
|
8852
|
-
|
|
8853
|
-
if (!propKind) {
|
|
9241
|
+
if (get(this.config, propName)) {
|
|
8854
9242
|
return false;
|
|
8855
9243
|
}
|
|
8856
|
-
const
|
|
8857
|
-
|
|
9244
|
+
const disabledConfigProps = this.config?.disabled || [];
|
|
9245
|
+
const isDisabledConfigProp = disabledConfigProps.includes(propName);
|
|
9246
|
+
if (isDisabledConfigProp) {
|
|
9247
|
+
return true;
|
|
9248
|
+
}
|
|
9249
|
+
const basePropName = trimKeyPrefix(propName);
|
|
9250
|
+
const disabledPanelProps = this.config?.panels[kind]?.disabled || [];
|
|
9251
|
+
const isDisabledPanelProp = disabledPanelProps.includes(basePropName);
|
|
9252
|
+
return isDisabledPanelProp;
|
|
8858
9253
|
};
|
|
8859
9254
|
/**
|
|
8860
9255
|
* Checks if property can be removed
|
|
@@ -8862,12 +9257,18 @@ class Component extends Data {
|
|
|
8862
9257
|
* @return {Boolean}
|
|
8863
9258
|
*/
|
|
8864
9259
|
isLockedProp = (propName, kind = "attrs") => {
|
|
8865
|
-
const
|
|
8866
|
-
|
|
8867
|
-
|
|
9260
|
+
const lockedConfigProps = this.config?.locked || [];
|
|
9261
|
+
const isLockedConfigProp = lockedConfigProps.includes(propName);
|
|
9262
|
+
if (isLockedConfigProp) {
|
|
9263
|
+
return true;
|
|
8868
9264
|
}
|
|
8869
|
-
const
|
|
8870
|
-
|
|
9265
|
+
const basePropName = trimKeyPrefix(propName);
|
|
9266
|
+
const lockedPanelProps = this.config?.panels[kind]?.locked || [];
|
|
9267
|
+
const isLockedPanelProp = lockedPanelProps.includes(basePropName);
|
|
9268
|
+
if (isLockedPanelProp) {
|
|
9269
|
+
return true;
|
|
9270
|
+
}
|
|
9271
|
+
return false;
|
|
8871
9272
|
};
|
|
8872
9273
|
/**
|
|
8873
9274
|
* Generate the markup for field edit mode
|
|
@@ -8903,14 +9304,14 @@ class Component extends Data {
|
|
|
8903
9304
|
if (!this.config) {
|
|
8904
9305
|
return null;
|
|
8905
9306
|
}
|
|
8906
|
-
const editable = ["object", "array"];
|
|
9307
|
+
const editable = /* @__PURE__ */ new Set(["object", "array"]);
|
|
8907
9308
|
const panelOrder = unique([...this.config.panels.order, ...Object.keys(this.data)]);
|
|
8908
|
-
const noPanels = ["children", "
|
|
8909
|
-
const allowedPanels = panelOrder.filter((panelName) => !noPanels.
|
|
9309
|
+
const noPanels = /* @__PURE__ */ new Set(["children", "meta", "action", "events", ...this.config.panels.disabled]);
|
|
9310
|
+
const allowedPanels = panelOrder.filter((panelName) => !noPanels.has(panelName));
|
|
8910
9311
|
for (const panelName of allowedPanels) {
|
|
8911
9312
|
const panelData = this.get(panelName);
|
|
8912
9313
|
const propType = dom.childType(panelData);
|
|
8913
|
-
if (editable.
|
|
9314
|
+
if (editable.has(propType)) {
|
|
8914
9315
|
const editPanel = new EditPanel(panelData, panelName, this);
|
|
8915
9316
|
this.editPanels.set(editPanel.name, editPanel);
|
|
8916
9317
|
}
|
|
@@ -9092,7 +9493,7 @@ class ResizeColumn {
|
|
|
9092
9493
|
return value;
|
|
9093
9494
|
}
|
|
9094
9495
|
}
|
|
9095
|
-
const DEFAULT_DATA$
|
|
9496
|
+
const DEFAULT_DATA$2 = () => Object.freeze({
|
|
9096
9497
|
config: {
|
|
9097
9498
|
width: "100%"
|
|
9098
9499
|
},
|
|
@@ -9118,7 +9519,7 @@ class Column extends Component {
|
|
|
9118
9519
|
* @return {Object} Column config object
|
|
9119
9520
|
*/
|
|
9120
9521
|
constructor(columnData) {
|
|
9121
|
-
super("column", { ...DEFAULT_DATA$
|
|
9522
|
+
super("column", { ...DEFAULT_DATA$2(), ...columnData });
|
|
9122
9523
|
const childWrap = this.createChildWrap();
|
|
9123
9524
|
this.dom = dom.create({
|
|
9124
9525
|
tag: "li",
|
|
@@ -9217,7 +9618,7 @@ let Columns$1 = class Columns extends ComponentData {
|
|
|
9217
9618
|
}
|
|
9218
9619
|
};
|
|
9219
9620
|
const columns = new Columns$1();
|
|
9220
|
-
const DEFAULT_DATA$
|
|
9621
|
+
const DEFAULT_DATA$1 = () => Object.freeze({
|
|
9221
9622
|
config: {
|
|
9222
9623
|
fieldset: false,
|
|
9223
9624
|
// wrap contents of row in fieldset
|
|
@@ -9236,7 +9637,7 @@ class Row extends Component {
|
|
|
9236
9637
|
* @return {Object}
|
|
9237
9638
|
*/
|
|
9238
9639
|
constructor(rowData) {
|
|
9239
|
-
super("row", { ...DEFAULT_DATA$
|
|
9640
|
+
super("row", { ...DEFAULT_DATA$1(), ...rowData });
|
|
9240
9641
|
const children = this.createChildWrap();
|
|
9241
9642
|
this.dom = dom.create({
|
|
9242
9643
|
tag: "li",
|
|
@@ -9499,7 +9900,7 @@ let Rows$1 = class Rows extends ComponentData {
|
|
|
9499
9900
|
}
|
|
9500
9901
|
};
|
|
9501
9902
|
const rows = new Rows$1();
|
|
9502
|
-
const DEFAULT_DATA
|
|
9903
|
+
const DEFAULT_DATA = () => ({ conditions: [CONDITION_TEMPLATE()], children: [] });
|
|
9503
9904
|
class Stage extends Component {
|
|
9504
9905
|
/**
|
|
9505
9906
|
* Process options and load existing fields from data to the stage
|
|
@@ -9508,7 +9909,7 @@ class Stage extends Component {
|
|
|
9508
9909
|
* @return {Object} DOM element
|
|
9509
9910
|
*/
|
|
9510
9911
|
constructor(stageData) {
|
|
9511
|
-
super("stage", { ...DEFAULT_DATA
|
|
9912
|
+
super("stage", { ...DEFAULT_DATA(), ...stageData });
|
|
9512
9913
|
this.updateEditPanels();
|
|
9513
9914
|
this.debouncedUpdateEditPanels = debounce(this.updateEditPanels);
|
|
9514
9915
|
({
|
|
@@ -9691,9 +10092,9 @@ class Control {
|
|
|
9691
10092
|
* @return {String} the translated label
|
|
9692
10093
|
*/
|
|
9693
10094
|
i18n(lookup, args) {
|
|
9694
|
-
const
|
|
10095
|
+
const locale = mi18n.locale;
|
|
9695
10096
|
const controlTranslations = this.definition?.i18n;
|
|
9696
|
-
const localeTranslations = controlTranslations?.[
|
|
10097
|
+
const localeTranslations = controlTranslations?.[locale] || {};
|
|
9697
10098
|
return (localeTranslations[lookup]?.() ?? localeTranslations[lookup]) || mi18n.get(lookup, args);
|
|
9698
10099
|
}
|
|
9699
10100
|
}
|
|
@@ -10043,9 +10444,6 @@ const index$7 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePrope
|
|
|
10043
10444
|
Controls: Controls$1,
|
|
10044
10445
|
default: Controls$2
|
|
10045
10446
|
}, Symbol.toStringTag, { value: "Module" }));
|
|
10046
|
-
const DEFAULT_DATA = () => ({
|
|
10047
|
-
// conditions: [CONDITION_TEMPLATE()],
|
|
10048
|
-
});
|
|
10049
10447
|
const checkableTypes = /* @__PURE__ */ new Set(["checkbox", "radio"]);
|
|
10050
10448
|
const isSelectableType = /* @__PURE__ */ new Set(["radio", "checkbox", "select-one", "select-multiple"]);
|
|
10051
10449
|
class Field extends Component {
|
|
@@ -10055,7 +10453,7 @@ class Field extends Component {
|
|
|
10055
10453
|
* @return {Object} field object
|
|
10056
10454
|
*/
|
|
10057
10455
|
constructor(fieldData = /* @__PURE__ */ Object.create(null)) {
|
|
10058
|
-
super("field",
|
|
10456
|
+
super("field", fieldData);
|
|
10059
10457
|
this.debouncedUpdateEditPanels = debounce(this.updateEditPanels);
|
|
10060
10458
|
this.debouncedUpdatePreview = debounce(this.updatePreview);
|
|
10061
10459
|
this.label = dom.create(this.labelConfig);
|
|
@@ -10091,34 +10489,41 @@ class Field extends Component {
|
|
|
10091
10489
|
if (hideLabel) {
|
|
10092
10490
|
return null;
|
|
10093
10491
|
}
|
|
10094
|
-
const
|
|
10095
|
-
const required = this.get("attrs
|
|
10096
|
-
const
|
|
10097
|
-
const
|
|
10098
|
-
|
|
10099
|
-
|
|
10100
|
-
attrs: {}
|
|
10101
|
-
};
|
|
10102
|
-
if (disableHTML) {
|
|
10103
|
-
config.tag = "input";
|
|
10104
|
-
config.attrs.value = labelVal;
|
|
10105
|
-
return config;
|
|
10106
|
-
}
|
|
10107
|
-
config.attrs.contenteditable = true;
|
|
10108
|
-
config.children = labelVal;
|
|
10109
|
-
return config;
|
|
10492
|
+
const { label, editorLabel, disableHtmlLabel, helpText, tooltip: tooltip2 } = this.get("config");
|
|
10493
|
+
const { required: isRequired } = this.get("attrs") || {};
|
|
10494
|
+
const labelVal = editorLabel || label;
|
|
10495
|
+
const labelBase = {
|
|
10496
|
+
tag: "label",
|
|
10497
|
+
attrs: {}
|
|
10110
10498
|
};
|
|
10111
|
-
|
|
10112
|
-
|
|
10499
|
+
if (disableHtmlLabel) {
|
|
10500
|
+
labelBase.tag = "input";
|
|
10501
|
+
labelBase.attrs.value = labelVal;
|
|
10502
|
+
} else {
|
|
10503
|
+
labelBase.attrs.contenteditable = true;
|
|
10504
|
+
labelBase.children = labelVal;
|
|
10505
|
+
}
|
|
10506
|
+
const labelObj = {
|
|
10507
|
+
...labelBase,
|
|
10113
10508
|
action: {
|
|
10114
|
-
input: ({ target: { innerHTML,
|
|
10115
|
-
|
|
10509
|
+
input: ({ target: { innerHTML, value } }) => {
|
|
10510
|
+
const labelVal2 = disableHtmlLabel ? value : innerHTML;
|
|
10511
|
+
super.set("config.label", labelVal2);
|
|
10512
|
+
const configPanelLabelInput = this.dom.querySelector(".config-label");
|
|
10513
|
+
if (configPanelLabelInput) {
|
|
10514
|
+
configPanelLabelInput.value = labelVal2;
|
|
10515
|
+
}
|
|
10116
10516
|
}
|
|
10117
10517
|
}
|
|
10118
10518
|
};
|
|
10119
10519
|
const labelWrap = {
|
|
10120
10520
|
className: "prev-label",
|
|
10121
|
-
children: [
|
|
10521
|
+
children: [
|
|
10522
|
+
labelObj,
|
|
10523
|
+
isRequired && dom.requiredMark(),
|
|
10524
|
+
tooltip2 && dom.tooltip(tooltip2),
|
|
10525
|
+
helpText && dom.helpText(helpText)
|
|
10526
|
+
]
|
|
10122
10527
|
};
|
|
10123
10528
|
return labelWrap;
|
|
10124
10529
|
}
|
|
@@ -10130,18 +10535,23 @@ class Field extends Component {
|
|
|
10130
10535
|
*/
|
|
10131
10536
|
set(path, value) {
|
|
10132
10537
|
const data = this.setData(path, value);
|
|
10133
|
-
this.debouncedUpdatePreview();
|
|
10134
10538
|
return data;
|
|
10135
10539
|
}
|
|
10136
10540
|
/**
|
|
10137
10541
|
* Update the label dom when label data changes
|
|
10138
10542
|
*/
|
|
10139
10543
|
updateLabel() {
|
|
10140
|
-
if (!this.label) {
|
|
10141
|
-
return null;
|
|
10142
|
-
}
|
|
10143
10544
|
const newLabel = dom.create(this.labelConfig);
|
|
10144
|
-
this.label
|
|
10545
|
+
if (this.label || !newLabel) {
|
|
10546
|
+
this.label.remove();
|
|
10547
|
+
}
|
|
10548
|
+
if (newLabel) {
|
|
10549
|
+
if (this.data.config?.labelAfter) {
|
|
10550
|
+
this.dom.append(newLabel);
|
|
10551
|
+
} else {
|
|
10552
|
+
this.dom.prepend(newLabel);
|
|
10553
|
+
}
|
|
10554
|
+
}
|
|
10145
10555
|
this.label = newLabel;
|
|
10146
10556
|
}
|
|
10147
10557
|
/**
|
|
@@ -10162,7 +10572,7 @@ class Field extends Component {
|
|
|
10162
10572
|
if (isSelectableType.has(type)) {
|
|
10163
10573
|
const selectedOptions = this.preview.querySelectorAll(":checked");
|
|
10164
10574
|
const optionsData = this.get("options");
|
|
10165
|
-
const checkedType = optionsData?.[0]?.selected
|
|
10575
|
+
const checkedType = optionsData?.[0]?.selected === void 0 ? "checked" : "selected";
|
|
10166
10576
|
const optionsDataMap = optionsData.reduce((acc, option2) => {
|
|
10167
10577
|
acc[option2.value] = option2;
|
|
10168
10578
|
acc[option2.value][checkedType] = false;
|
|
@@ -10413,6 +10823,7 @@ const index$6 = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.definePrope
|
|
|
10413
10823
|
Columns: Columns2,
|
|
10414
10824
|
Components,
|
|
10415
10825
|
Controls: Controls2,
|
|
10826
|
+
Dialog,
|
|
10416
10827
|
Fields: Fields2,
|
|
10417
10828
|
Rows: Rows2,
|
|
10418
10829
|
Stages: Stages2,
|
|
@@ -10444,19 +10855,19 @@ const defaults$1 = {
|
|
|
10444
10855
|
onSave: (_evt) => {
|
|
10445
10856
|
},
|
|
10446
10857
|
confirmClearAll: (evt) => {
|
|
10447
|
-
if (
|
|
10858
|
+
if (globalThis.confirm(evt.confirmationMessage)) {
|
|
10448
10859
|
evt.clearAllAction(evt);
|
|
10449
10860
|
}
|
|
10450
10861
|
}
|
|
10451
10862
|
};
|
|
10452
10863
|
const defaultCustomEvent = ({ src, ...evtData }, type = EVENT_FORMEO_UPDATED) => {
|
|
10453
|
-
const evt = new
|
|
10864
|
+
const evt = new globalThis.CustomEvent(type, {
|
|
10454
10865
|
detail: evtData,
|
|
10455
10866
|
bubbles: events.opts?.debug || events.opts?.bubbles
|
|
10456
10867
|
});
|
|
10457
10868
|
evt.data = (src || document).dispatchEvent(evt);
|
|
10458
10869
|
if (type === EVENT_FORMEO_UPDATED) {
|
|
10459
|
-
const changedEvt = new
|
|
10870
|
+
const changedEvt = new globalThis.CustomEvent(EVENT_FORMEO_CHANGED, {
|
|
10460
10871
|
detail: evtData,
|
|
10461
10872
|
bubbles: events.opts?.debug || events.opts?.bubbles
|
|
10462
10873
|
});
|
|
@@ -10483,7 +10894,7 @@ const events = {
|
|
|
10483
10894
|
};
|
|
10484
10895
|
const formeoUpdatedThrottled = throttle$1(() => {
|
|
10485
10896
|
const eventData = {
|
|
10486
|
-
timeStamp:
|
|
10897
|
+
timeStamp: globalThis.performance.now(),
|
|
10487
10898
|
type: EVENT_FORMEO_UPDATED,
|
|
10488
10899
|
detail: components.formData
|
|
10489
10900
|
};
|
|
@@ -10592,14 +11003,14 @@ window.addEventListener("resize", onResizeWindow);
|
|
|
10592
11003
|
const defaultActions = {
|
|
10593
11004
|
add: {
|
|
10594
11005
|
attr: (evt) => {
|
|
10595
|
-
const attr =
|
|
11006
|
+
const attr = globalThis.prompt(evt.message.attr);
|
|
10596
11007
|
if (attr && evt.isDisabled(attr)) {
|
|
10597
|
-
|
|
11008
|
+
globalThis.alert(mi18n.get("attributeNotPermitted", attr));
|
|
10598
11009
|
return actions.add.attrs(evt);
|
|
10599
11010
|
}
|
|
10600
11011
|
let val;
|
|
10601
11012
|
if (attr) {
|
|
10602
|
-
val = String(
|
|
11013
|
+
val = String(globalThis.prompt(evt.message.value, ""));
|
|
10603
11014
|
evt.addAction(attr, val);
|
|
10604
11015
|
}
|
|
10605
11016
|
},
|
|
@@ -10608,6 +11019,9 @@ const defaultActions = {
|
|
|
10608
11019
|
},
|
|
10609
11020
|
condition: (evt) => {
|
|
10610
11021
|
evt.addAction(evt);
|
|
11022
|
+
},
|
|
11023
|
+
config: (evt) => {
|
|
11024
|
+
evt.addAction(evt);
|
|
10611
11025
|
}
|
|
10612
11026
|
},
|
|
10613
11027
|
remove: {
|
|
@@ -10649,6 +11063,9 @@ const actions = {
|
|
|
10649
11063
|
conditions: (evt) => {
|
|
10650
11064
|
evt.template = evt.template || CONDITION_TEMPLATE();
|
|
10651
11065
|
return actions.opts.add.condition(evt);
|
|
11066
|
+
},
|
|
11067
|
+
config: (evt) => {
|
|
11068
|
+
return actions.opts.add.config(evt);
|
|
10652
11069
|
}
|
|
10653
11070
|
},
|
|
10654
11071
|
remove: {
|
|
@@ -10677,10 +11094,6 @@ const actions = {
|
|
|
10677
11094
|
}
|
|
10678
11095
|
}
|
|
10679
11096
|
};
|
|
10680
|
-
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"];
|
|
10681
|
-
const locale = "en-US";
|
|
10682
|
-
mi18n.addLanguage(locale, i);
|
|
10683
|
-
mi18n.setCurrent(locale);
|
|
10684
11097
|
const defaults = {
|
|
10685
11098
|
get editor() {
|
|
10686
11099
|
return {
|
|
@@ -10694,7 +11107,6 @@ const defaults = {
|
|
|
10694
11107
|
svgSprite: null,
|
|
10695
11108
|
// null = use bundled sprite, or provide custom URL
|
|
10696
11109
|
style: CSS_URL,
|
|
10697
|
-
// change to null
|
|
10698
11110
|
iconFont: null,
|
|
10699
11111
|
// 'glyphicons' || 'font-awesome' || 'fontello'
|
|
10700
11112
|
config: {},
|
|
@@ -10710,7 +11122,6 @@ const defaults = {
|
|
|
10710
11122
|
};
|
|
10711
11123
|
}
|
|
10712
11124
|
};
|
|
10713
|
-
new SmartTooltip();
|
|
10714
11125
|
let FormeoEditor$1 = class FormeoEditor {
|
|
10715
11126
|
/**
|
|
10716
11127
|
* @param {Object} options formeo options
|
|
@@ -10765,12 +11176,15 @@ let FormeoEditor$1 = class FormeoEditor {
|
|
|
10765
11176
|
*/
|
|
10766
11177
|
async loadResources() {
|
|
10767
11178
|
document.removeEventListener("DOMContentLoaded", this.loadResources);
|
|
10768
|
-
const promises = [
|
|
10769
|
-
promises.push(
|
|
11179
|
+
const promises = [
|
|
10770
11180
|
fetchIcons(this.opts.svgSprite),
|
|
10771
11181
|
fetchFormeoStyle(this.opts.style),
|
|
10772
|
-
mi18n.init({
|
|
10773
|
-
|
|
11182
|
+
mi18n.init({
|
|
11183
|
+
preloaded: { "en-US": i },
|
|
11184
|
+
...this.opts.i18n,
|
|
11185
|
+
locale: globalThis.sessionStorage?.getItem(SESSION_LOCALE_KEY)
|
|
11186
|
+
})
|
|
11187
|
+
].filter(Boolean);
|
|
10774
11188
|
await Promise.all(promises);
|
|
10775
11189
|
if (this.opts.allowEdit) {
|
|
10776
11190
|
this.init();
|
|
@@ -10788,7 +11202,7 @@ let FormeoEditor$1 = class FormeoEditor {
|
|
|
10788
11202
|
this.formId = components.get("id");
|
|
10789
11203
|
this.i18n = {
|
|
10790
11204
|
setLang: (formeoLocale) => {
|
|
10791
|
-
|
|
11205
|
+
globalThis.sessionStorage?.setItem(SESSION_LOCALE_KEY, formeoLocale);
|
|
10792
11206
|
const loadLang = mi18n.setCurrent(formeoLocale);
|
|
10793
11207
|
loadLang.then(() => {
|
|
10794
11208
|
this.init();
|
|
@@ -10796,6 +11210,7 @@ let FormeoEditor$1 = class FormeoEditor {
|
|
|
10796
11210
|
}
|
|
10797
11211
|
};
|
|
10798
11212
|
this.opts.onLoad?.(this);
|
|
11213
|
+
this.tooltipInstance = new SmartTooltip();
|
|
10799
11214
|
});
|
|
10800
11215
|
}
|
|
10801
11216
|
load(formData = this.userFormData, opts = this.opts) {
|
|
@@ -10808,7 +11223,7 @@ let FormeoEditor$1 = class FormeoEditor {
|
|
|
10808
11223
|
*/
|
|
10809
11224
|
render() {
|
|
10810
11225
|
if (!this.controls) {
|
|
10811
|
-
return
|
|
11226
|
+
return globalThis.requestAnimationFrame(() => this.render());
|
|
10812
11227
|
}
|
|
10813
11228
|
this.stages = Object.values(components.get("stages"));
|
|
10814
11229
|
if (this.opts.controlOnLeft) {
|
|
@@ -10854,7 +11269,7 @@ const processOptions = ({ editorContainer, renderContainer, formData, ...opts })
|
|
|
10854
11269
|
};
|
|
10855
11270
|
const baseId = (id) => {
|
|
10856
11271
|
const match2 = id.match(UUID_REGEXP);
|
|
10857
|
-
return match2?.[0] || id
|
|
11272
|
+
return match2?.[0] || id;
|
|
10858
11273
|
};
|
|
10859
11274
|
const isVisible = (elem) => {
|
|
10860
11275
|
if (!elem) return false;
|
|
@@ -10939,12 +11354,13 @@ const targetPropertyMap = {
|
|
|
10939
11354
|
};
|
|
10940
11355
|
let FormeoRenderer$1 = class FormeoRenderer {
|
|
10941
11356
|
constructor(opts, formDataArg) {
|
|
10942
|
-
const { renderContainer, elements, formData } = processOptions(opts);
|
|
10943
|
-
this.container =
|
|
11357
|
+
const { renderContainer: container, elements, formData, config } = processOptions(opts);
|
|
11358
|
+
this.container = container;
|
|
10944
11359
|
this.form = cleanFormData(formDataArg || formData);
|
|
10945
|
-
this.dom = dom;
|
|
10946
|
-
this.components = /* @__PURE__ */ Object.create(null);
|
|
10947
11360
|
this.elements = elements;
|
|
11361
|
+
this.config = config;
|
|
11362
|
+
this.components = /* @__PURE__ */ Object.create(null);
|
|
11363
|
+
this.dom = dom;
|
|
10948
11364
|
}
|
|
10949
11365
|
get formData() {
|
|
10950
11366
|
return this.form;
|
|
@@ -10952,10 +11368,30 @@ let FormeoRenderer$1 = class FormeoRenderer {
|
|
|
10952
11368
|
set formData(data) {
|
|
10953
11369
|
this.form = cleanFormData(data);
|
|
10954
11370
|
}
|
|
11371
|
+
/**
|
|
11372
|
+
* Gets the user data from the rendered form as a plain object.
|
|
11373
|
+
* Converts FormData to an object, handling multiple values for the same key
|
|
11374
|
+
* by converting them into arrays.
|
|
11375
|
+
*
|
|
11376
|
+
* @returns {Object.<string, string|string[]>} An object containing form field names as keys
|
|
11377
|
+
* and their values. Fields with multiple values are stored as arrays.
|
|
11378
|
+
*
|
|
11379
|
+
* @example
|
|
11380
|
+
* // Form with single values
|
|
11381
|
+
* { username: 'john', email: 'john@example.com' }
|
|
11382
|
+
*
|
|
11383
|
+
* @example
|
|
11384
|
+
* // Form with multiple values for same key
|
|
11385
|
+
* { username: 'john', hobbies: ['reading', 'gaming'] }
|
|
11386
|
+
*/
|
|
10955
11387
|
get userData() {
|
|
10956
|
-
const
|
|
11388
|
+
const form = this.container.querySelector(".formeo-render") || this.renderedForm;
|
|
11389
|
+
if (!form) {
|
|
11390
|
+
return {};
|
|
11391
|
+
}
|
|
11392
|
+
const formEntries = new FormData(form);
|
|
10957
11393
|
const formDataObj = {};
|
|
10958
|
-
for (const [key, value] of
|
|
11394
|
+
for (const [key, value] of formEntries.entries()) {
|
|
10959
11395
|
if (formDataObj[key]) {
|
|
10960
11396
|
if (Array.isArray(formDataObj[key])) {
|
|
10961
11397
|
formDataObj[key].push(value);
|
|
@@ -10968,6 +11404,27 @@ let FormeoRenderer$1 = class FormeoRenderer {
|
|
|
10968
11404
|
}
|
|
10969
11405
|
return formDataObj;
|
|
10970
11406
|
}
|
|
11407
|
+
/**
|
|
11408
|
+
* Gets the user form data as an array of field objects.
|
|
11409
|
+
* Combines user input values with component metadata to create structured field data.
|
|
11410
|
+
*
|
|
11411
|
+
* @returns {Array<{key: string, value: any, label: string}>} An array of field data objects, where each object contains:
|
|
11412
|
+
* - key: The field identifier
|
|
11413
|
+
* - value: The user's input value for the field
|
|
11414
|
+
* - label: The field's label from component configuration (empty string if not found)
|
|
11415
|
+
*/
|
|
11416
|
+
get userFormData() {
|
|
11417
|
+
const userFormData = [];
|
|
11418
|
+
for (const [key, value] of Object.entries(this.userData)) {
|
|
11419
|
+
const fieldData = {
|
|
11420
|
+
key,
|
|
11421
|
+
value,
|
|
11422
|
+
label: this.components[baseId(key)]?.config?.label || ""
|
|
11423
|
+
};
|
|
11424
|
+
userFormData.push(fieldData);
|
|
11425
|
+
}
|
|
11426
|
+
return userFormData;
|
|
11427
|
+
}
|
|
10971
11428
|
set userData(data = {}) {
|
|
10972
11429
|
const form = this.container.querySelector("form");
|
|
10973
11430
|
for (const key of Object.keys(data)) {
|
|
@@ -10991,6 +11448,7 @@ let FormeoRenderer$1 = class FormeoRenderer {
|
|
|
10991
11448
|
* @param {Object} formData
|
|
10992
11449
|
*/
|
|
10993
11450
|
render(formData = this.form) {
|
|
11451
|
+
this.form = cleanFormData(formData);
|
|
10994
11452
|
const renderedForm = this.getRenderedForm(formData);
|
|
10995
11453
|
const existingRenderedForm = this.container.querySelector(".formeo-render");
|
|
10996
11454
|
if (existingRenderedForm) {
|
|
@@ -11003,6 +11461,7 @@ let FormeoRenderer$1 = class FormeoRenderer {
|
|
|
11003
11461
|
this.form = cleanFormData(formData);
|
|
11004
11462
|
const renderCount = document.getElementsByClassName("formeo-render").length;
|
|
11005
11463
|
const config = {
|
|
11464
|
+
...this.config,
|
|
11006
11465
|
tag: "form",
|
|
11007
11466
|
id: this.form.id,
|
|
11008
11467
|
className: `formeo-render formeo formeo-rendered-${renderCount}`,
|
|
@@ -11028,11 +11487,9 @@ let FormeoRenderer$1 = class FormeoRenderer {
|
|
|
11028
11487
|
*/
|
|
11029
11488
|
processColumn = ({ id, ...columnData }) => ({
|
|
11030
11489
|
...columnData,
|
|
11031
|
-
|
|
11032
|
-
|
|
11033
|
-
|
|
11034
|
-
style: `width: ${columnData.config.width || "100%"}`
|
|
11035
|
-
}
|
|
11490
|
+
id: this.prefixId(id),
|
|
11491
|
+
children: this.processFields(columnData.children),
|
|
11492
|
+
style: `width: ${columnData.config.width || "100%"}`
|
|
11036
11493
|
});
|
|
11037
11494
|
processRows = (stageId) => this.orderChildren("rows", this.form.stages[stageId].children).reduce((acc, row) => {
|
|
11038
11495
|
if (row) {
|
|
@@ -11075,11 +11532,16 @@ let FormeoRenderer$1 = class FormeoRenderer {
|
|
|
11075
11532
|
};
|
|
11076
11533
|
};
|
|
11077
11534
|
cloneComponentData = (componentId) => {
|
|
11078
|
-
const { children = [], id, ...rest } = this.components[componentId];
|
|
11535
|
+
const { children = [], id, attrs = {}, ...rest } = this.components[componentId];
|
|
11536
|
+
const updatedAttrs = { ...attrs, "data-clone-of": id };
|
|
11537
|
+
if (rest.tag === "input") {
|
|
11538
|
+
updatedAttrs.name = getName(this.components[componentId]);
|
|
11539
|
+
}
|
|
11079
11540
|
return {
|
|
11080
11541
|
...rest,
|
|
11081
|
-
id: uuid(id),
|
|
11082
|
-
children: children?.length && children.map(({ id: id2 }) => this.cloneComponentData(baseId(id2)))
|
|
11542
|
+
id: RENDER_PREFIX + uuid(id),
|
|
11543
|
+
children: children?.length && children.map(({ id: id2 }) => this.cloneComponentData(baseId(id2))),
|
|
11544
|
+
attrs: updatedAttrs
|
|
11083
11545
|
};
|
|
11084
11546
|
};
|
|
11085
11547
|
addButton = (id) => ({
|
|
@@ -11227,12 +11689,12 @@ let FormeoRenderer$1 = class FormeoRenderer {
|
|
|
11227
11689
|
return components2;
|
|
11228
11690
|
};
|
|
11229
11691
|
};
|
|
11692
|
+
const listenTypeMap = [
|
|
11693
|
+
["input", (c) => ["textarea", "text"].includes(c.type)],
|
|
11694
|
+
["change", (c) => ["select"].includes(c.tagName.toLowerCase()) || ["checkbox", "radio"].includes(c.type)]
|
|
11695
|
+
];
|
|
11230
11696
|
const LISTEN_TYPE_MAP = (component) => {
|
|
11231
|
-
const
|
|
11232
|
-
["input", (c) => ["textarea", "text"].includes(c.type)],
|
|
11233
|
-
["change", (c) => ["select"].includes(c.tagName.toLowerCase()) || ["checkbox", "radio"].includes(c.type)]
|
|
11234
|
-
];
|
|
11235
|
-
const [listenerEvent] = typesMap.find((typeMap) => typeMap[1](component)) || [false];
|
|
11697
|
+
const [listenerEvent] = listenTypeMap.find((typeMap) => typeMap[1](component)) || [false];
|
|
11236
11698
|
return listenerEvent;
|
|
11237
11699
|
};
|
|
11238
11700
|
if (window !== void 0) {
|
|
@@ -11450,7 +11912,8 @@ class TextControl extends Control {
|
|
|
11450
11912
|
className: ""
|
|
11451
11913
|
},
|
|
11452
11914
|
config: {
|
|
11453
|
-
label: mi18n.get("controls.form.input.text")
|
|
11915
|
+
label: mi18n.get("controls.form.input.text"),
|
|
11916
|
+
hideLabel: false
|
|
11454
11917
|
},
|
|
11455
11918
|
meta: {
|
|
11456
11919
|
group: "common",
|