@daracl/form 0.0.3 → 0.0.5

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.
Files changed (64) hide show
  1. package/dist/193.daracl.form.min.js +7 -0
  2. package/dist/193.daracl.form.min.js.LICENSE.txt +5 -0
  3. package/dist/193.daracl.form.min.js.map +1 -0
  4. package/dist/dara.datetimepicker.js +304 -0
  5. package/dist/dara.datetimepicker.js.LICENSE.txt +5 -0
  6. package/dist/dara.datetimepicker.js.map +1 -0
  7. package/dist/daracl.form.js +67 -33
  8. package/dist/daracl.form.js.map +1 -1
  9. package/dist/daracl.form.min.css +2 -2
  10. package/dist/daracl.form.min.css.map +1 -1
  11. package/dist/daracl.form.min.js +2 -2
  12. package/dist/daracl.form.min.js.LICENSE.txt +1 -1
  13. package/dist/daracl.form.min.js.map +1 -1
  14. package/dist/index.cjs +20 -8
  15. package/dist/index.cjs.map +2 -2
  16. package/dist/index.css.map +2 -2
  17. package/dist/index.js +20 -8
  18. package/dist/index.js.map +2 -2
  19. package/dist/util/utils.d.ts +1 -1
  20. package/dist/vendors-node_modules_daracl_datetimepicker_dist_index_js.daracl.form.js +1477 -0
  21. package/dist/vendors-node_modules_daracl_datetimepicker_dist_index_js.daracl.form.js.map +1 -0
  22. package/package.json +11 -8
  23. package/src/DaraForm.ts +431 -0
  24. package/src/FieldInfoMap.ts +356 -0
  25. package/src/FormTemplate.ts +207 -0
  26. package/src/constants.ts +100 -0
  27. package/src/event/renderEvents.ts +41 -0
  28. package/src/index copy.html +591 -0
  29. package/src/index-grid.html +655 -0
  30. package/src/index-tab.html +639 -0
  31. package/src/index.html +483 -0
  32. package/src/renderer/ButtonRender.ts +51 -0
  33. package/src/renderer/CheckboxRender.ts +214 -0
  34. package/src/renderer/CustomRender.ts +100 -0
  35. package/src/renderer/DateRender.ts +103 -0
  36. package/src/renderer/DropdownRender.ts +149 -0
  37. package/src/renderer/FileRender.ts +239 -0
  38. package/src/renderer/GridRender.ts +289 -0
  39. package/src/renderer/GroupRender.ts +47 -0
  40. package/src/renderer/HiddenRender.ts +36 -0
  41. package/src/renderer/NumberRender.ts +68 -0
  42. package/src/renderer/PasswordRender.ts +69 -0
  43. package/src/renderer/RadioRender.ts +191 -0
  44. package/src/renderer/RangeRender.ts +79 -0
  45. package/src/renderer/Render.ts +194 -0
  46. package/src/renderer/TabRender.ts +229 -0
  47. package/src/renderer/TextAreaRender.ts +72 -0
  48. package/src/renderer/TextRender.ts +68 -0
  49. package/src/rule/fileValidator.ts +26 -0
  50. package/src/rule/numberValidator.ts +96 -0
  51. package/src/rule/regexpValidator.ts +45 -0
  52. package/src/rule/stringValidator.ts +64 -0
  53. package/src/rule/validator.ts +49 -0
  54. package/src/types/DataMap.d.ts +17 -0
  55. package/src/types/FormField.d.ts +129 -0
  56. package/src/types/FormOptions.d.ts +91 -0
  57. package/src/types/Message.d.ts +40 -0
  58. package/src/types/ValidResult.d.ts +9 -0
  59. package/src/util/Lanauage.ts +127 -0
  60. package/src/util/renderFactory.ts +26 -0
  61. package/src/util/styleUtils.ts +85 -0
  62. package/src/util/utils.ts +283 -0
  63. package/src/util/validUtils.ts +53 -0
  64. package/style/daracl.form.scss +2 -1
package/dist/index.js.map CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/util/utils.ts", "../src/renderer/Render.ts", "../src/rule/regexpValidator.ts", "../src/rule/validator.ts", "../src/rule/numberValidator.ts", "../src/util/validUtils.ts", "../src/event/renderEvents.ts", "../src/renderer/NumberRender.ts", "../src/rule/stringValidator.ts", "../src/renderer/TextAreaRender.ts", "../src/renderer/DropdownRender.ts", "../src/renderer/TextRender.ts", "../src/renderer/CheckboxRender.ts", "../src/renderer/RadioRender.ts", "../src/renderer/PasswordRender.ts", "../src/rule/fileValidator.ts", "../src/renderer/FileRender.ts", "../src/renderer/CustomRender.ts", "../src/renderer/GroupRender.ts", "../src/renderer/HiddenRender.ts", "../src/renderer/ButtonRender.ts", "../src/renderer/RangeRender.ts", "../node_modules/@daracl/datetimepicker/src/Lanauage.ts", "../node_modules/@daracl/datetimepicker/src/constants.ts", "../node_modules/@daracl/datetimepicker/src/util/utils.ts", "../node_modules/@daracl/datetimepicker/src/format/index.ts", "../node_modules/@daracl/datetimepicker/src/util/parser.ts", "../node_modules/@daracl/datetimepicker/src/DaraDate.ts", "../node_modules/@daracl/datetimepicker/src/DateTimePicker.ts", "../node_modules/@daracl/datetimepicker/style/daracl.datetimepicker.scss", "../node_modules/@daracl/datetimepicker/src/index.ts", "../src/renderer/DateRender.ts", "../src/util/styleUtils.ts", "../src/renderer/TabRender.ts", "../src/renderer/GridRender.ts", "../src/constants.ts", "../src/util/Lanauage.ts", "../src/util/renderFactory.ts", "../src/FieldInfoMap.ts", "../src/FormTemplate.ts", "../src/DaraForm.ts", "../style/daracl.form.scss", "../node_modules/@daracl/datetimepicker/style/daracl.datetimepicker.scss", "../src/index.ts"],
4
- "sourcesContent": ["import { FormField } from \"@t/FormField\";\r\n\r\nconst xssFilter = {\r\n \"&\": \"&amp;\",\r\n \"<\": \"&lt;\",\r\n \">\": \"&gt;\",\r\n '\"': \"&quot;\",\r\n \"'\": \"&#39;\",\r\n} as any;\r\n\r\nexport const replaceXss = (inputText: string): string => {\r\n let returnText = inputText;\r\n if (returnText) {\r\n Object.keys(xssFilter).forEach((key) => {\r\n returnText = returnText.replaceAll(key, xssFilter[key]);\r\n });\r\n }\r\n return returnText;\r\n};\r\n\r\nexport const hasOwnProp = (obj: any, key: string): boolean => {\r\n return obj.hasOwnProperty(key);\r\n};\r\n\r\nexport const unReplace = (inputText: string): string => {\r\n let returnText = inputText;\r\n\r\n if (returnText) {\r\n Object.keys(xssFilter).forEach((key) => {\r\n returnText = returnText.replaceAll(xssFilter[key], key);\r\n });\r\n }\r\n return returnText;\r\n};\r\n\r\nexport const unFieldName = (fieldName: string): string => {\r\n if (fieldName) {\r\n return unReplace(fieldName).replaceAll('\"', '\\\\\"');\r\n }\r\n return \"\";\r\n};\r\nexport const isBlank = (value: any): boolean => {\r\n if (value === null) return true;\r\n if (value === \"\") return true;\r\n if (typeof value === \"undefined\") return true;\r\n if (typeof value === \"string\" && (value === \"\" || value.replace(/\\s/g, \"\") === \"\")) return true;\r\n\r\n return false;\r\n};\r\n\r\nexport const isUndefined = (value: any): value is undefined => {\r\n return typeof value === \"undefined\";\r\n};\r\n\r\nexport const isFunction = (value: any): boolean => {\r\n return typeof value === \"function\";\r\n};\r\n\r\nexport const isString = (value: any): value is string => {\r\n return typeof value === \"string\";\r\n};\r\nexport const isNumber = (value: any): value is number => {\r\n if (isBlank(value)) {\r\n return false;\r\n }\r\n value = +value;\r\n return !isNaN(value);\r\n};\r\n\r\nexport const isArray = (value: any): value is Array<any> => {\r\n return Array.isArray(value);\r\n};\r\n\r\n/**\r\n * \uAC12\uC788\uB294\uC9C0 \uC5EC\uBD80 \uCCB4\uD06C.\r\n *\r\n * @param {*} value\r\n * @returns {boolean}\r\n */\r\nexport const isEmpty = (value: any): boolean => isUndefined(value) || value == null; //_isEmpty(value);\r\n\r\n/**\r\n * tab render type check\r\n *\r\n * @param {FormField} field\r\n * @returns {boolean} tab type \uC778\uC9C0 \uC5EC\uBD80\r\n */\r\nexport const isTabType = (field: FormField): boolean => {\r\n return field && field.renderType === \"tab\";\r\n};\r\n/**\r\n * grid render type check\r\n *\r\n * @param {FormField} field\r\n * @returns {boolean} grid type \uC778\uC9C0 \uC5EC\uBD80\r\n */\r\nexport const isGridType = (field: FormField): boolean => {\r\n return field && field.renderType === \"grid\";\r\n};\r\nexport const replaceXssField = (field: FormField): FormField => {\r\n field.$xssName = getXssFieldName(field);\r\n\r\n field.label = replaceXss(field.label);\r\n return field;\r\n};\r\n\r\n/**\r\n * \uAC12\uC744 \uBB34\uC2DC\uD558\uB294 \uD544\uB4DC\r\n *\r\n * @param field formField\r\n * @returns\r\n */\r\nexport const ignoreValueField = (field: FormField): boolean => {\r\n return isGridType(field.$parent) || isTabType(field.$parent);\r\n};\r\n\r\n/**\r\n * grid field name xss repalce\r\n *\r\n * @param {FormField} field\r\n * @returns {string} replace \uB41C field name\r\n */\r\nexport const getXssFieldName = (field: FormField): string => {\r\n if (isUndefined(field.$xssName)) {\r\n let returnText = field.name;\r\n if (returnText) {\r\n Object.keys(xssFilter).forEach((key) => {\r\n returnText = returnText.replaceAll(key, \"_\");\r\n });\r\n }\r\n\r\n return \"df_\" + returnText;\r\n }\r\n\r\n return field.$xssName;\r\n};\r\n\r\nexport const getHashCode = (str: string) => {\r\n let hash = 0;\r\n if (str.length == 0) return hash;\r\n for (let i = 0; i < str.length; i++) {\r\n let tmpChar = str.charCodeAt(i);\r\n hash = (hash << 5) - hash + tmpChar;\r\n hash = hash & hash;\r\n }\r\n return String(hash).replaceAll(/-/g, \"_\");\r\n};\r\n\r\nexport const isHiddenField = (field: FormField): boolean => {\r\n if (field.renderType === \"hidden\") {\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\nexport const templateToElement = (htmlTemplate: string): Element | null => {\r\n const template = document.createElement(\"template\");\r\n template.innerHTML = htmlTemplate;\r\n return template.content.firstElementChild;\r\n};\r\n\r\nexport function isPlainObject(obj: any) {\r\n // \uAC1D\uCCB4\uAC00 \uC544\uB2CC \uACBD\uC6B0 \uB610\uB294 null\uC778 \uACBD\uC6B0 false \uBC18\uD658\r\n if (typeof obj !== \"object\" || obj === null) {\r\n return false;\r\n }\r\n\r\n // \uD504\uB85C\uD1A0\uD0C0\uC785 \uCCB4\uC778\uC744 \uB530\uB77C Object \uC0DD\uC131\uC790\uB97C \uCC3E\uC74C\r\n let proto = obj;\r\n while (Object.getPrototypeOf(proto) !== null) {\r\n proto = Object.getPrototypeOf(proto);\r\n }\r\n\r\n // Object \uC0DD\uC131\uC790\uC758 prototype\uACFC \uAC19\uC73C\uBA74 Plain Object\uB85C \uD310\uB2E8\r\n return Object.getPrototypeOf(obj) === proto;\r\n}\r\n\r\nfunction isObject(value: any) {\r\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\r\n}\r\n\r\nfunction isDate(value: any) {\r\n return value instanceof Date && !isNaN(value.valueOf());\r\n}\r\n\r\n/**\r\n * object merge\r\n * \r\n * @example\r\n ```\r\n merge({},{aaa:'bbb',ccc:'ddd'},{bbb:'bbb','aaa':'aaa'})) -> {\"aaa\": \"aaa\", \"bbb\": \"bbb\", \"ccc\": \"ddd\"}\r\n ```\r\n * @param {...any[]} value\r\n * @returns {object}\r\n */\r\nexport const merge = (...value: any[]): any => {\r\n let reval = value[0];\r\n\r\n if (!isPlainObject(reval) || isEmpty(reval)) {\r\n return reval;\r\n }\r\n\r\n let i = 1;\r\n if (Object.keys(reval).length > 0) {\r\n i = 0;\r\n reval = isArray(reval) ? [] : {};\r\n }\r\n const argLen = value.length;\r\n for (; i < argLen; i += 1) {\r\n cloneDeep(reval, value[i]);\r\n }\r\n\r\n return reval;\r\n};\r\n\r\nfunction trim(s: string): string {\r\n return s.replace(/^\\s+|\\s+$/g, \"\");\r\n}\r\n\r\nfunction cloneDeep(dst: any, src: any): any {\r\n if (isObject(src)) {\r\n return cloneObjectDeep(dst, src);\r\n }\r\n\r\n if (isArray(src)) {\r\n return cloneArrayDeep(dst, src);\r\n }\r\n\r\n if (isDate(src)) {\r\n return new src.constructor(src);\r\n }\r\n return src;\r\n}\r\n\r\n/*eslint no-param-reassign: \"error\"*/\r\nfunction cloneObjectDeep(dst: any, src: any): object {\r\n if (isFunction(src)) {\r\n return src;\r\n }\r\n\r\n for (const key of Object.keys(src)) {\r\n const val = (src as any)[key];\r\n\r\n if (isUndefined(val)) {\r\n continue;\r\n }\r\n\r\n if (val === null) {\r\n dst[key] = val;\r\n } else if (isFunction(val)) {\r\n dst[key] = val;\r\n } else if (isEmpty(dst[key])) {\r\n dst[key] = cloneDeep(isArray(val) ? [] : {}, val);\r\n } else if (!isObject(val)) {\r\n dst[key] = val;\r\n } else {\r\n cloneDeep(dst[key], val);\r\n }\r\n }\r\n return dst;\r\n}\r\n\r\nfunction cloneArrayDeep(dst: any, src: any[]) {\r\n const isObj = isPlainObject(dst);\r\n\r\n for (let i = 0; i < src.length; i += 1) {\r\n const val = src[i];\r\n let newVal;\r\n\r\n if (val == null) {\r\n newVal = val;\r\n } else {\r\n newVal = cloneDeep(isArray(val) ? [] : {}, val);\r\n }\r\n\r\n if (isObj) {\r\n (dst as any)[i] = newVal;\r\n } else {\r\n dst.push(newVal);\r\n }\r\n }\r\n return dst;\r\n}\r\n", "import { FormField } from \"@t/FormField\";\r\nimport { ValidResult } from \"@t/ValidResult\";\r\nimport DaraForm from \"src/DaraForm\";\r\nimport * as utils from \"src/util/utils\";\r\n\r\nexport default abstract class Render {\r\n protected daraForm;\r\n protected rowElement;\r\n protected field;\r\n\r\n private enableView: boolean = true;\r\n\r\n constructor(form: DaraForm, field: FormField, rowElement: HTMLElement) {\r\n this.daraForm = form;\r\n this.field = field;\r\n this.rowElement = rowElement;\r\n this.createField();\r\n\r\n if (field.tooltip) rowElement.querySelector(\".df-tooltip\")?.setAttribute(\"tooltip\", field.tooltip);\r\n }\r\n\r\n public setDefaultInfo() {\r\n if (utils.isUndefined(this.field.defaultValue)) {\r\n this.setValue(\"\", false);\r\n } else {\r\n this.setValue(this.field.defaultValue, false);\r\n }\r\n\r\n if (!utils.isUndefined(this.field.placeholder)) {\r\n const ele = this.getElement();\r\n if (ele instanceof Element) {\r\n ele.setAttribute(\"placeholder\", this.field.placeholder);\r\n }\r\n }\r\n }\r\n\r\n public setDefaultOption() {\r\n this.setDisabled(this.field.disabled ?? false);\r\n }\r\n\r\n public addChildField(element: Element) {\r\n this.rowElement.querySelector(\".df-field-container\")?.append(element);\r\n }\r\n\r\n static isDataRender(): boolean {\r\n return true;\r\n }\r\n\r\n static isChildrenCreate(): boolean {\r\n return true;\r\n }\r\n\r\n public getForm(): DaraForm {\r\n return this.daraForm;\r\n }\r\n\r\n public abstract mounted(): void;\r\n public abstract getValue(): any;\r\n public abstract setValue(value: any, changeCheckFlag?: boolean): void;\r\n public abstract reset(): void;\r\n public abstract getElement(): any;\r\n public abstract valid(): ValidResult | boolean;\r\n public abstract createField(): void;\r\n\r\n public setValueItems(value: any): void {}\r\n\r\n public static getDescriptionTemplate(field: FormField): string {\r\n return field.description ? `<div class=\"df-description\">${field.description}</div>` : \"\";\r\n }\r\n\r\n public changeEventCall(field: FormField, e: Event | null, rederInfo: Render, fieldValue: any): boolean | undefined {\r\n if (field.onChange) {\r\n let changeInfo: any = {\r\n field: field,\r\n evt: e,\r\n oldValue: field.$value,\r\n value: fieldValue,\r\n };\r\n\r\n if (field.listItem?.list) {\r\n let valuesItem = [];\r\n const valueKey = Render.valuesValueKey(field);\r\n\r\n for (let val of field.listItem.list) {\r\n let changeVal = val[valueKey];\r\n if (utils.isString(fieldValue)) {\r\n if (changeVal == fieldValue) {\r\n valuesItem.push(val);\r\n break;\r\n }\r\n } else if (utils.isArray(fieldValue)) {\r\n if (fieldValue.includes(changeVal)) {\r\n valuesItem.push(val);\r\n }\r\n }\r\n }\r\n\r\n changeInfo.valueItems = valuesItem;\r\n }\r\n\r\n if (changeInfo.oldValue != changeInfo.value && field.onChange.call(null, changeInfo) === false) {\r\n rederInfo.setValue(field.$value, false);\r\n return false;\r\n }\r\n\r\n field.$value = changeInfo.value;\r\n }\r\n\r\n this.daraForm.conditionCheck();\r\n }\r\n\r\n public focus() {\r\n this.getElement().focus();\r\n }\r\n\r\n public isEnableView() {\r\n return this.enableView;\r\n }\r\n\r\n public show() {\r\n this.enableView = true;\r\n this.rowElement.classList.remove(\"df-hidden\");\r\n }\r\n\r\n public hide() {\r\n this.enableView = false;\r\n if (!this.rowElement.classList.contains(\"df-hidden\")) {\r\n this.rowElement.classList.add(\"df-hidden\");\r\n }\r\n }\r\n\r\n /**\r\n * \uC124\uBA85 \uCD94\uAC00\r\n *\r\n * @public\r\n * @param {string} desc\r\n */\r\n public setDescription(desc: string) {\r\n const descEle = this.rowElement.querySelector(\".df-description\");\r\n if (descEle) {\r\n descEle.innerHTML = desc;\r\n } else {\r\n const fieldEle = this.rowElement.querySelector(\".df-field\");\r\n if (fieldEle) {\r\n const parser = new DOMParser();\r\n this.field.description = desc;\r\n const descEle = parser.parseFromString(Render.getDescriptionTemplate(this.field), \"text/html\").querySelector(\".df-description\");\r\n\r\n if (descEle) fieldEle.parentNode?.insertBefore(descEle, fieldEle.nextSibling);\r\n }\r\n }\r\n }\r\n\r\n public setActive(id: string): void {\r\n //console.log(\"parent\");\r\n }\r\n\r\n public setDisabled(flag: boolean) {\r\n const ele = this.getElement();\r\n if (ele instanceof HTMLElement) {\r\n if (flag === false) {\r\n this.getElement().removeAttribute(\"disabled\");\r\n } else {\r\n this.getElement().setAttribute(\"disabled\", true);\r\n }\r\n }\r\n }\r\n\r\n public commonValidator() {\r\n //this.field.diff\r\n }\r\n\r\n public static valuesValueKey(field: FormField): string {\r\n return field.listItem?.valueField ? field.listItem.valueField : \"value\";\r\n }\r\n\r\n public static valuesLabelKey(field: FormField): string {\r\n return field.listItem?.labelField ? field.listItem.labelField : \"label\";\r\n }\r\n\r\n public static valuesLabelValue(label: string, val: any) {\r\n let replaceFlag = false;\r\n const resultValue = label.replace(/\\{\\{([A-Za-z0-9_.]*)\\}\\}/g, (match, key) => {\r\n replaceFlag = true;\r\n return val[key] || \"\";\r\n });\r\n\r\n if (replaceFlag) {\r\n return resultValue;\r\n }\r\n\r\n return val[label] || \"\";\r\n }\r\n}\r\n", "import { FormField } from \"@t/FormField\";\r\nimport { ValidResult } from \"@t/ValidResult\";\r\n\r\nconst regexp = {\r\n mobile: /^\\d{3}-\\d{3,4}-\\d{4}$/,\r\n email: /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/,\r\n url: /^(?:(?:https?|HTTPS?|ftp|FTP):\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-zA-Z\\u00a1-\\uffff0-9]-*)*[a-zA-Z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-zA-Z\\u00a1-\\uffff0-9]-*)*[a-zA-Z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-zA-Z\\u00a1-\\uffff]{2,}))\\.?)(?::\\d{2,5})?(?:[/?#]\\S*)?$/,\r\n number: /\\d$/,\r\n alpha: /^[a-zA-Z]+$/,\r\n \"alpha-num\": /^[a-zA-Z0-9]+$/,\r\n variable: /^[a-zA-Z0-9_$][a-zA-Z0-9_$]*$/,\r\n \"number-char\": /^(?=.*[A-Za-z])(?=.*\\d)[A-Za-z\\d]/,\r\n \"upper-char\": /^(?=.*?[A-Z])(?=.*?[a-z])/,\r\n \"upper-char-special\": /^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[#?!@$%^&*-])/,\r\n \"upper-char-special-number\": /^(?=.*[A-Za-z])(?=.*\\d)(?=.*[@$!%*#?&])[A-Za-z\\d@$!%*#?&]/,\r\n};\r\n\r\n/**\r\n * \uC815\uADDC\uC2DD \uC720\uD6A8\uC131 \uCCB4\uD06C.\r\n *\r\n * @param {string} value\r\n * @param {FormField} field\r\n * @param {(ValidResult | undefined)} result\r\n * @returns {ValidResult}\r\n */\r\nexport const regexpValidator = (value: string, field: FormField, result: ValidResult): ValidResult => {\r\n if (!field.$instance.isEnableView()) {\r\n return { name: field.name, constraint: [] };\r\n }\r\n\r\n if (typeof result === \"undefined\") {\r\n result = { name: field.name, constraint: [] };\r\n }\r\n\r\n const regexpType = field.regexpType;\r\n\r\n if (regexpType) {\r\n if (!regexp[regexpType].test(value)) {\r\n result.regexp = regexpType;\r\n return result;\r\n }\r\n }\r\n\r\n return result;\r\n};\r\n", "import { FormField } from \"@t/FormField\";\r\nimport { ValidResult } from \"@t/ValidResult\";\r\nimport { regexpValidator } from \"./regexpValidator\";\r\nimport * as utils from \"src/util/utils\";\r\n\r\n/**\r\n * validator , regexp \uCCB4\uD06C .\r\n *\r\n * @param {string} value field value\r\n * @param {FormField} field field \uC815\uBCF4\r\n * @param {ValidResult} result\r\n * @returns {(ValidResult | boolean)}\r\n */\r\nexport const validator = (value: string, field: FormField, result: ValidResult): ValidResult | boolean => {\r\n if (field.validator) {\r\n result.validator = field.validator(field, value);\r\n if (typeof result.validator === \"object\") {\r\n return result;\r\n }\r\n }\r\n\r\n result = regexpValidator(value, field, result);\r\n\r\n if (result.regexp) {\r\n return result;\r\n }\r\n\r\n if (field.different) {\r\n const diffFieldName = field.different.field;\r\n const diffField = field.$instance.getForm().getField(diffFieldName);\r\n\r\n if (!utils.isEmpty(diffField) && field.$instance.getValue() == diffField.$instance.getValue()) {\r\n result.message = field.different.message;\r\n return result;\r\n }\r\n }\r\n\r\n if (field.identical) {\r\n const diffFieldName = field.identical.field;\r\n const diffField = field.$instance.getForm().getField(diffFieldName);\r\n\r\n if (!utils.isEmpty(diffField) && field.$instance.getValue() != diffField.$instance.getValue()) {\r\n result.message = field.identical.message;\r\n return result;\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n", "import { FormField } from \"@t/FormField\";\r\nimport { ValidResult } from \"@t/ValidResult\";\r\nimport { RULES } from \"src/constants\";\r\nimport { validator } from \"./validator\";\r\nimport * as utils from \"src/util/utils\";\r\n\r\n/**\r\n * \uC22B\uC790 \uC720\uD6A8\uC131 \uCCB4\uD06C\r\n *\r\n * @param {string} value\r\n * @param {FormField} field\r\n * @returns {(ValidResult | boolean)}\r\n */\r\nexport const numberValidator = (value: string, field: FormField): ValidResult | boolean => {\r\n if (!field.$instance.isEnableView()) {\r\n return true;\r\n }\r\n\r\n const result: ValidResult = { name: field.name, constraint: [] };\r\n const numValue = Number(value);\r\n\r\n if (field.required && utils.isBlank(value)) {\r\n result.constraint.push(RULES.REQUIRED);\r\n return result;\r\n }\r\n\r\n if (!utils.isNumber(value)) {\r\n result.constraint.push(RULES.NAN);\r\n return result;\r\n }\r\n\r\n if (validator(value, field, result) !== true) {\r\n return result;\r\n }\r\n\r\n const rule = field.rule;\r\n if (rule) {\r\n const isMinimum = utils.isNumber(rule.minimum),\r\n isMaximum = utils.isNumber(rule.maximum);\r\n\r\n let minRule = false,\r\n minExclusive = false,\r\n maxRule = false,\r\n maxExclusive = false;\r\n\r\n if (isMinimum) {\r\n if (rule.exclusiveMinimum && numValue <= rule.minimum) {\r\n minExclusive = true;\r\n } else if (numValue < rule.minimum) {\r\n minRule = true;\r\n }\r\n }\r\n\r\n if (isMaximum) {\r\n if (rule.exclusiveMaximum && numValue >= rule.maximum) {\r\n maxExclusive = true;\r\n } else if (numValue > rule.maximum) {\r\n maxRule = true;\r\n }\r\n }\r\n\r\n if (isMinimum && isMaximum && (minRule || minExclusive || maxRule || maxExclusive)) {\r\n if (rule.exclusiveMinimum && rule.exclusiveMaximum && (minExclusive || maxExclusive)) {\r\n result.constraint.push(RULES.BETWEEN_EXCLUSIVE_MINMAX);\r\n } else if (minExclusive) {\r\n result.constraint.push(RULES.BETWEEN_EXCLUSIVE_MIN);\r\n } else if (maxExclusive) {\r\n result.constraint.push(RULES.BETWEEN_EXCLUSIVE_MAX);\r\n } else {\r\n result.constraint.push(RULES.BETWEEN);\r\n }\r\n } else {\r\n if (minExclusive) {\r\n result.constraint.push(RULES.EXCLUSIVE_MIN);\r\n }\r\n\r\n if (maxExclusive) {\r\n result.constraint.push(RULES.EXCLUSIVE_MAX);\r\n }\r\n\r\n if (minRule) {\r\n result.constraint.push(RULES.MIN);\r\n }\r\n\r\n if (maxRule) {\r\n result.constraint.push(RULES.MAX);\r\n }\r\n }\r\n }\r\n\r\n if (result.constraint.length > 0) {\r\n return result;\r\n }\r\n\r\n return true;\r\n};\r\n", "import { FormField } from \"@t/FormField\";\r\nimport { ValidResult } from \"@t/ValidResult\";\r\nimport Lanauage from \"./Lanauage\";\r\n\r\nexport const invalidMessage = (field: FormField, rowElement: Element, validResult: ValidResult | boolean) => {\r\n if (validResult === true) {\r\n rowElement.classList.remove(\"invalid\");\r\n\r\n if (!rowElement.classList.contains(\"valid\")) {\r\n rowElement.classList.add(\"valid\");\r\n }\r\n\r\n const helpMessageElement = rowElement.querySelector(\".help-message\");\r\n if (helpMessageElement) {\r\n helpMessageElement.innerHTML = \"\";\r\n }\r\n\r\n return;\r\n }\r\n\r\n rowElement.classList.remove(\"valid\");\r\n\r\n if (!rowElement.classList.contains(\"invalid\")) {\r\n rowElement.classList.add(\"invalid\");\r\n }\r\n\r\n if (validResult !== false) {\r\n const message: string[] = Lanauage.validMessage(field, validResult);\r\n\r\n if (validResult.message) {\r\n message.push(validResult.message);\r\n }\r\n\r\n const helpMessageElement = rowElement.querySelector(\".help-message\");\r\n if (helpMessageElement && message.length > 0) {\r\n const msgHtml: string[] = [];\r\n message.forEach((item) => {\r\n msgHtml.push(`<div>${item}</div>`);\r\n });\r\n helpMessageElement.innerHTML = msgHtml.join(\"\");\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * remove row element style class\r\n *\r\n * @param {Element} rowElement\r\n */\r\nexport const resetRowElementStyleClass = (rowElement: Element) => {\r\n rowElement.classList.remove(\"invalid\");\r\n rowElement.classList.remove(\"valid\");\r\n};\r\n", "import { FormField } from \"@t/FormField\";\r\nimport Render from \"src/renderer/Render\";\r\nimport * as utils from \"src/util/utils\";\r\n\r\nexport const inputEvent = (field: FormField, element: Element, renderInfo: Render) => {\r\n element.addEventListener(\"input\", (e: Event) => {\r\n customChangeEventCall(field, e, renderInfo, renderInfo.getValue());\r\n renderInfo.valid();\r\n });\r\n};\r\n\r\nexport const numberInputEvent = (field: FormField, element: HTMLInputElement, renderInfo: Render) => {\r\n element.addEventListener(\"keyup\", (e: any) => {\r\n const val = e.target.value;\r\n\r\n if (!utils.isNumber(val)) {\r\n element.value = val.replace(/[^0-9\\.\\-\\+]/g, \"\");\r\n e.preventDefault();\r\n }\r\n customChangeEventCall(field, e, renderInfo, renderInfo.getValue());\r\n renderInfo.valid();\r\n });\r\n\r\n /*\r\n element.addEventListener('input', (e: any) => {\r\n customChangeEventCall(field, e, renderInfo);\r\n renderInfo.valid();\r\n })\r\n */\r\n};\r\n\r\nexport const dropdownChangeEvent = (field: FormField, element: Element, renderInfo: Render) => {\r\n element.addEventListener(\"change\", (e: any) => {\r\n customChangeEventCall(field, e, renderInfo, renderInfo.getValue());\r\n renderInfo.valid();\r\n });\r\n};\r\n\r\nexport const customChangeEventCall = (field: FormField, e: Event, renderInfo: Render, value: any) => {\r\n renderInfo.changeEventCall(field, e, renderInfo, value);\r\n};\r\n", "import { FormField } from \"@t/FormField\";\r\nimport Render from \"./Render\";\r\nimport { numberValidator } from \"src/rule/numberValidator\";\r\nimport { resetRowElementStyleClass, invalidMessage } from \"src/util/validUtils\";\r\nimport { numberInputEvent } from \"src/event/renderEvents\";\r\nimport DaraForm from \"src/DaraForm\";\r\n\r\nexport default class NumberRender extends Render {\r\n private element: HTMLInputElement;\r\n\r\n constructor(field: FormField, rowElement: HTMLElement, daraForm: DaraForm) {\r\n super(daraForm, field, rowElement);\r\n\r\n this.mounted();\r\n this.setDefaultOption();\r\n this.setDefaultInfo();\r\n }\r\n\r\n mounted() {\r\n numberInputEvent(this.field, this.element, this);\r\n }\r\n\r\n createField() {\r\n const field = this.field;\r\n\r\n const fieldContainerElement = this.rowElement.querySelector(\".df-field-container\") as HTMLElement;\r\n\r\n fieldContainerElement.innerHTML = `\r\n <div class=\"df-field\">\r\n <input type=\"text\" name=\"${field.$xssName}\" class=\"form-field number help-icon\" />\r\n </div> \r\n ${Render.getDescriptionTemplate(field)}\r\n <div class=\"help-message\"></div>\r\n `;\r\n this.element = fieldContainerElement.querySelector(`[name=\"${field.$xssName}\"]`) as HTMLInputElement;\r\n }\r\n\r\n getValue() {\r\n return this.element.value;\r\n }\r\n\r\n setValue(value: any, changeCheckFlag?: boolean): void {\r\n if (changeCheckFlag !== false && this.changeEventCall(this.field, null, this, value) === false) {\r\n this.element.value = this.field.$value;\r\n return;\r\n }\r\n this.field.$value = value;\r\n this.element.value = value;\r\n }\r\n\r\n reset() {\r\n this.setDefaultInfo();\r\n this.setDisabled(false);\r\n resetRowElementStyleClass(this.rowElement);\r\n }\r\n\r\n getElement(): HTMLElement {\r\n return this.element;\r\n }\r\n\r\n valid(): any {\r\n const validResult = numberValidator(this.getValue(), this.field);\r\n\r\n invalidMessage(this.field, this.rowElement, validResult);\r\n\r\n return validResult;\r\n }\r\n}\r\n", "import { FormField } from \"@t/FormField\";\r\nimport { ValidResult } from \"@t/ValidResult\";\r\nimport { RULES } from \"src/constants\";\r\nimport * as utils from \"src/util/utils\";\r\nimport { validator } from \"./validator\";\r\n\r\n/**\r\n * string validator\r\n *\r\n * @param {string} value\r\n * @param {FormField} field\r\n * @returns {(ValidResult | boolean)}\r\n */\r\nexport const stringValidator = (value: string, field: FormField): ValidResult | boolean => {\r\n if (!field.$instance.isEnableView()) {\r\n return true;\r\n }\r\n\r\n let result: ValidResult = { name: field.name, constraint: [] };\r\n\r\n if (field.required && utils.isBlank(value)) {\r\n result.constraint.push(RULES.REQUIRED);\r\n return result;\r\n }\r\n const validResult = validator(value, field, result);\r\n if (validResult !== true) {\r\n return validResult;\r\n }\r\n\r\n const rule = field.rule;\r\n\r\n if (rule) {\r\n const valueLength = value.length;\r\n\r\n const isMinNumber = utils.isNumber(rule.minLength),\r\n isMaxNumber = utils.isNumber(rule.maxLength);\r\n\r\n let minRule = false,\r\n maxRule = false;\r\n if (isMinNumber && valueLength < rule.minLength) {\r\n minRule = true;\r\n }\r\n if (isMaxNumber && valueLength > rule.maxLength) {\r\n maxRule = true;\r\n }\r\n\r\n if (isMinNumber && isMaxNumber && (minRule || maxRule)) {\r\n result.constraint.push(RULES.BETWEEN);\r\n } else {\r\n if (minRule) {\r\n result.constraint.push(RULES.MIN_LENGTH);\r\n }\r\n\r\n if (maxRule) {\r\n result.constraint.push(RULES.MAX_LENGTH);\r\n }\r\n }\r\n if (result.constraint.length > 0) {\r\n return result;\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n", "import { FormField } from \"@t/FormField\";\r\nimport Render from \"./Render\";\r\nimport { stringValidator } from \"src/rule/stringValidator\";\r\nimport { resetRowElementStyleClass, invalidMessage } from \"src/util/validUtils\";\r\nimport { inputEvent } from \"src/event/renderEvents\";\r\nimport DaraForm from \"src/DaraForm\";\r\n\r\nexport default class TextAreaRender extends Render {\r\n private element: HTMLTextAreaElement;\r\n\r\n constructor(field: FormField, rowElement: HTMLElement, daraForm: DaraForm) {\r\n super(daraForm, field, rowElement);\r\n\r\n this.mounted();\r\n this.setDefaultOption();\r\n this.setDefaultInfo();\r\n }\r\n\r\n mounted() {\r\n inputEvent(this.field, this.element, this);\r\n }\r\n\r\n createField() {\r\n const field = this.field;\r\n\r\n const fieldContainerElement = this.rowElement.querySelector(\".df-field-container\") as HTMLElement;\r\n\r\n let rows = field.customOptions?.rows;\r\n rows = +rows > 0 ? rows : 3;\r\n\r\n fieldContainerElement.innerHTML = `\r\n <div class=\"df-field\">\r\n <textarea name=\"${field.$xssName}\" rows=\"${rows}\" class=\"form-field textarea help-icon\"></textarea>\r\n </div> \r\n ${Render.getDescriptionTemplate(field)}\r\n <div class=\"help-message\"></div>\r\n `;\r\n\r\n this.element = fieldContainerElement.querySelector(`[name=\"${field.$xssName}\"]`) as HTMLTextAreaElement;\r\n }\r\n\r\n getValue() {\r\n return this.element.value;\r\n }\r\n\r\n setValue(value: any, changeCheckFlag?: boolean): void {\r\n if (changeCheckFlag !== false && this.changeEventCall(this.field, null, this, value) === false) {\r\n this.element.value = this.field.$value;\r\n return;\r\n }\r\n this.field.$value = value;\r\n this.element.value = value;\r\n }\r\n\r\n reset() {\r\n this.setDefaultInfo();\r\n this.setDisabled(false);\r\n resetRowElementStyleClass(this.rowElement);\r\n }\r\n\r\n getElement(): HTMLElement {\r\n return this.element;\r\n }\r\n\r\n valid(): any {\r\n const validResult = stringValidator(this.getValue(), this.field);\r\n\r\n invalidMessage(this.field, this.rowElement, validResult);\r\n\r\n return validResult;\r\n }\r\n}\r\n", "import { FormField, ValuesInfo } from \"@t/FormField\";\r\nimport Render from \"./Render\";\r\nimport { ValidResult } from \"@t/ValidResult\";\r\nimport { RULES } from \"src/constants\";\r\nimport { resetRowElementStyleClass, invalidMessage } from \"src/util/validUtils\";\r\nimport { dropdownChangeEvent } from \"src/event/renderEvents\";\r\nimport DaraForm from \"src/DaraForm\";\r\nimport * as utils from \"src/util/utils\";\r\nimport Lanauage from \"src/util/Lanauage\";\r\n\r\nexport default class DropdownRender extends Render {\r\n private element: HTMLSelectElement;\r\n private defaultSelected;\r\n\r\n constructor(field: FormField, rowElement: HTMLElement, daraForm: DaraForm) {\r\n super(daraForm, field, rowElement);\r\n\r\n let initDefaultValue = \"\";\r\n\r\n if (!utils.isUndefined(field.defaultValue)) {\r\n initDefaultValue = field.defaultValue;\r\n }\r\n\r\n const valueKey = DropdownRender.valuesValueKey(field);\r\n let initDefaultValueFlag = false;\r\n this.field.listItem?.list?.forEach((item) => {\r\n let itemValue = item[valueKey];\r\n if (item.selected) {\r\n this.defaultSelected = itemValue;\r\n }\r\n if (itemValue == initDefaultValue) {\r\n initDefaultValueFlag = true;\r\n }\r\n });\r\n\r\n if (initDefaultValueFlag) {\r\n this.defaultSelected = initDefaultValue;\r\n } else if (!this.defaultSelected) {\r\n if (field.customOptions?.disableDefaultOption === true) {\r\n this.defaultSelected = this.field.listItem?.list?.length > 0 ? this.field.listItem.list[0][valueKey] || \"\" : \"\";\r\n }\r\n }\r\n\r\n if (utils.isUndefined(this.defaultSelected)) {\r\n this.defaultSelected = \"\";\r\n }\r\n\r\n this.mounted();\r\n this.setDefaultOption();\r\n this.setValue(this.defaultSelected, false);\r\n }\r\n\r\n mounted() {\r\n dropdownChangeEvent(this.field, this.element, this);\r\n }\r\n\r\n createField() {\r\n const field = this.field;\r\n\r\n const fieldContainerElement = this.rowElement.querySelector(\".df-field-container\") as HTMLElement;\r\n\r\n let template = ` <div class=\"df-field\"><select name=\"${field.$xssName}\" class=\"form-field dropdown\">\r\n ${this.dropdownValuesTemplate(field)}\r\n </select> <i class=\"help-icon\"></i></div>\r\n ${Render.getDescriptionTemplate(field)}\r\n <div class=\"help-message\"></div>\r\n `;\r\n fieldContainerElement.innerHTML = template;\r\n\r\n this.element = fieldContainerElement.querySelector(`[name=\"${field.$xssName}\"]`) as HTMLSelectElement;\r\n }\r\n\r\n public setValueItems(items: any): void {\r\n if (this.field.listItem) {\r\n this.field.listItem.list = items;\r\n } else {\r\n this.field.listItem = {\r\n list: items,\r\n } as ValuesInfo;\r\n }\r\n this.element.innerHTML = this.dropdownValuesTemplate(this.field);\r\n\r\n if (!utils.isBlank(this.field.$value)) {\r\n const currentValue = this.field.$value;\r\n this.field.$value = \"\";\r\n this.setValue(currentValue);\r\n }\r\n }\r\n\r\n getValue() {\r\n return this.element.value;\r\n }\r\n\r\n setValue(value: any, changeCheckFlag?: boolean): void {\r\n if (changeCheckFlag !== false && this.changeEventCall(this.field, null, this, value) === false) {\r\n this.element.value = this.field.$value;\r\n return;\r\n }\r\n this.field.$value = value;\r\n this.element.value = value;\r\n }\r\n\r\n reset() {\r\n this.setValue(this.defaultSelected, false);\r\n this.setDisabled(false);\r\n resetRowElementStyleClass(this.rowElement);\r\n }\r\n\r\n getElement(): HTMLElement {\r\n return this.element;\r\n }\r\n\r\n valid(): any {\r\n const value = this.getValue();\r\n\r\n let validResult: ValidResult | boolean = true;\r\n\r\n if (this.field.required) {\r\n if (value.length < 1) {\r\n validResult = { name: this.field.name, constraint: [] };\r\n validResult.constraint.push(RULES.REQUIRED);\r\n }\r\n }\r\n\r\n invalidMessage(this.field, this.rowElement, validResult);\r\n\r\n return validResult;\r\n }\r\n\r\n public dropdownValuesTemplate(field: FormField) {\r\n const labelKey = Render.valuesLabelKey(field);\r\n const valueKey = Render.valuesValueKey(field);\r\n let template = \"\";\r\n\r\n if (field.customOptions?.disableDefaultOption !== true) {\r\n template += `<option value=\"\">${Lanauage.getMessage(\"selection\")}</option>`;\r\n }\r\n field.listItem?.list?.forEach((val) => {\r\n const attr = `${val.selected ? \"selected\" : \"\"} ${val.disabled ? \"disabled\" : \"\"}`;\r\n if (utils.isUndefined(val[valueKey]) && val.label) {\r\n template += `<option value=\"${val.value || \"\"}\" ${attr}>${val.label}</option>`;\r\n } else {\r\n template += `<option value=\"${val[valueKey]}\" ${attr}>${Render.valuesLabelValue(labelKey, val)}</option>`;\r\n }\r\n });\r\n\r\n return template;\r\n }\r\n}\r\n", "import { FormField } from \"@t/FormField\";\r\nimport Render from \"./Render\";\r\nimport { stringValidator } from \"src/rule/stringValidator\";\r\nimport { resetRowElementStyleClass, invalidMessage } from \"src/util/validUtils\";\r\nimport { inputEvent } from \"src/event/renderEvents\";\r\nimport DaraForm from \"src/DaraForm\";\r\n\r\nexport default class TextRender extends Render {\r\n private element: HTMLInputElement;\r\n\r\n constructor(field: FormField, rowElement: HTMLElement, daraForm: DaraForm) {\r\n super(daraForm, field, rowElement);\r\n this.mounted();\r\n this.setDefaultOption();\r\n this.setDefaultInfo();\r\n }\r\n\r\n mounted() {\r\n inputEvent(this.field, this.element, this);\r\n }\r\n\r\n createField() {\r\n const field = this.field;\r\n\r\n const fieldContainerElement = this.rowElement.querySelector(\".df-field-container\") as HTMLElement;\r\n\r\n fieldContainerElement.innerHTML = `\r\n <div class=\"df-field\">\r\n <input type=\"text\" name=\"${field.$xssName}\" class=\"form-field text help-icon\" />\r\n </div>\r\n ${Render.getDescriptionTemplate(field)}\r\n <div class=\"help-message\"></div>\r\n `;\r\n\r\n this.element = fieldContainerElement.querySelector(`[name=\"${field.$xssName}\"]`) as HTMLInputElement;\r\n }\r\n\r\n getValue() {\r\n return this.element.value;\r\n }\r\n\r\n setValue(value: any, changeCheckFlag?: boolean): void {\r\n if (changeCheckFlag !== false && this.changeEventCall(this.field, null, this, value) === false) {\r\n this.element.value = this.field.$value;\r\n return;\r\n }\r\n this.field.$value = value;\r\n this.element.value = value;\r\n }\r\n\r\n reset() {\r\n this.setDefaultInfo();\r\n this.setDisabled(false);\r\n resetRowElementStyleClass(this.rowElement);\r\n }\r\n\r\n getElement(): HTMLInputElement {\r\n return this.element;\r\n }\r\n\r\n valid(): any {\r\n const validResult = stringValidator(this.getValue(), this.field);\r\n\r\n invalidMessage(this.field, this.rowElement, validResult);\r\n\r\n return validResult;\r\n }\r\n}\r\n", "import { FormField, ValuesInfo } from \"@t/FormField\";\r\nimport Render from \"./Render\";\r\nimport * as utils from \"src/util/utils\";\r\nimport { ValidResult } from \"@t/ValidResult\";\r\nimport { RULES } from \"src/constants\";\r\nimport { resetRowElementStyleClass, invalidMessage } from \"src/util/validUtils\";\r\nimport { customChangeEventCall } from \"src/event/renderEvents\";\r\nimport DaraForm from \"src/DaraForm\";\r\n\r\nexport default class CheckboxRender extends Render {\r\n private defaultCheckValue: any[] = [];\r\n\r\n constructor(field: FormField, rowElement: HTMLElement, daraForm: DaraForm) {\r\n super(daraForm, field, rowElement);\r\n\r\n this.defaultCheckValue = [];\r\n let initDefaultValue = [] as any;\r\n if (!utils.isUndefined(field.defaultValue)) {\r\n if (utils.isArray(field.defaultValue)) {\r\n initDefaultValue = field.defaultValue;\r\n } else {\r\n initDefaultValue = [field.defaultValue];\r\n }\r\n }\r\n\r\n const valueKey = CheckboxRender.valuesValueKey(field);\r\n\r\n if (utils.isUndefined(this.field.listItem)) {\r\n this.setValueItems([{ label: \"\", value: \"Y\" }]);\r\n }\r\n\r\n let initDefaultValueFlag = false;\r\n this.field.listItem?.list?.forEach((item) => {\r\n let itemValue = item[valueKey];\r\n if (item.selected) {\r\n this.defaultCheckValue.push(itemValue ? itemValue : true);\r\n }\r\n if (initDefaultValue.includes(itemValue)) {\r\n initDefaultValueFlag = true;\r\n }\r\n });\r\n\r\n this.defaultCheckValue = initDefaultValueFlag ? initDefaultValue : this.defaultCheckValue;\r\n\r\n this.mounted();\r\n this.setDefaultOption();\r\n this.setValue(this.defaultCheckValue, false);\r\n }\r\n\r\n public mounted() {\r\n this.initEvent();\r\n }\r\n\r\n public initEvent() {\r\n const checkboxes = this.rowElement.querySelectorAll(this.getSelector());\r\n\r\n checkboxes.forEach((ele) => {\r\n ele.addEventListener(\"change\", (e: Event) => {\r\n customChangeEventCall(this.field, e, this, this.getValue());\r\n this.valid();\r\n });\r\n });\r\n }\r\n\r\n public getSelector() {\r\n return `input[type=\"checkbox\"][name=\"${this.field.$xssName}\"]`;\r\n }\r\n\r\n createField() {\r\n const field = this.field;\r\n\r\n const fieldContainerElement = this.rowElement.querySelector(\".df-field-container\") as HTMLElement;\r\n\r\n const templates: string[] = [];\r\n const fieldName = field.$xssName;\r\n\r\n const labelKey = Render.valuesLabelKey(field);\r\n const valueKey = Render.valuesValueKey(field);\r\n\r\n templates.push(` <div class=\"df-field\"><div class=\"field-group\">`);\r\n field.listItem?.list?.forEach((val) => {\r\n const checkVal = val[valueKey];\r\n templates.push(`\r\n <span class=\"field ${field.listItem.orientation == \"vertical\" ? \"vertical\" : \"horizontal\"}\">\r\n <label>\r\n <input type=\"checkbox\" name=\"${fieldName}\" value=\"${checkVal ? utils.replaceXss(checkVal) : \"\"}\" class=\"form-field checkbox\" ${val.selected ? \"checked\" : \"\"} ${val.disabled ? \"disabled\" : \"\"} />\r\n ${Render.valuesLabelValue(labelKey, val)}\r\n </label>\r\n </span>\r\n `);\r\n });\r\n templates.push(`<i class=\"daracl-icon help-icon\"></i></div></div> ${Render.getDescriptionTemplate(field)}<div class=\"help-message\"></div>`);\r\n\r\n fieldContainerElement.innerHTML = templates.join(\"\");\r\n }\r\n\r\n public setValueItems(items: any): void {\r\n const containerEle = this.rowElement.querySelector(\".df-field-container\");\r\n if (containerEle) {\r\n if (this.field.listItem) {\r\n this.field.listItem.list = items;\r\n } else {\r\n this.field.listItem = {\r\n list: items,\r\n } as ValuesInfo;\r\n }\r\n\r\n this.createField();\r\n\r\n if (!utils.isBlank(this.field.$value)) {\r\n const currentValue = this.field.$value;\r\n this.field.$value = \"\";\r\n this.setValue(currentValue);\r\n }\r\n }\r\n }\r\n\r\n getValue() {\r\n const checkboxes = this.rowElement.querySelectorAll(this.getSelector());\r\n\r\n if (checkboxes.length > 1) {\r\n const checkValue: any[] = [];\r\n checkboxes.forEach((ele) => {\r\n const checkEle = ele as HTMLInputElement;\r\n if (checkEle.checked) {\r\n checkValue.push(checkEle.value);\r\n }\r\n });\r\n return checkValue;\r\n } else {\r\n const checkElement = this.rowElement.querySelector(`[name=\"${this.field.$xssName}\"]`) as HTMLInputElement;\r\n\r\n if (checkElement?.checked) {\r\n return checkElement.value ? checkElement.value : true;\r\n }\r\n\r\n return checkElement.value ? \"\" : false;\r\n }\r\n }\r\n\r\n setValue(value: any, changeCheckFlag?: boolean): void {\r\n if (changeCheckFlag !== false && this.changeEventCall(this.field, null, this, value) === false) {\r\n value = this.field.$value;\r\n }\r\n\r\n this.field.$value = value;\r\n if (value === true) {\r\n (this.rowElement.querySelector(`[name=\"${this.field.$xssName}\"]`) as HTMLInputElement).checked = true;\r\n return;\r\n }\r\n\r\n if (value === false) {\r\n (this.rowElement.querySelector(`[name=\"${this.field.$xssName}\"]`) as HTMLInputElement).checked = false;\r\n return;\r\n }\r\n\r\n let valueArr: any[] = [];\r\n if (Array.isArray(value)) {\r\n valueArr = value;\r\n } else {\r\n valueArr.push(value);\r\n }\r\n\r\n const checkboxes = this.rowElement.querySelectorAll(this.getSelector());\r\n\r\n checkboxes.forEach((ele) => {\r\n (ele as HTMLInputElement).checked = false;\r\n });\r\n\r\n valueArr.forEach((val) => {\r\n const ele = this.rowElement.querySelector(`[name=\"${this.field.$xssName}\"][value=\"${val}\"]`) as HTMLInputElement;\r\n if (ele) ele.checked = true;\r\n });\r\n }\r\n\r\n reset() {\r\n if (this.field.listItem?.list?.length == 1 && this.defaultCheckValue.length == 1) {\r\n this.setValue(true, false);\r\n } else {\r\n this.setValue(this.defaultCheckValue, false);\r\n }\r\n this.setDisabled(false);\r\n resetRowElementStyleClass(this.rowElement);\r\n }\r\n\r\n getElement(): any {\r\n return this.rowElement.querySelectorAll(`[name=\"${this.field.$xssName}\"]`);\r\n }\r\n\r\n public focus() {\r\n const elements = this.getElement();\r\n\r\n if (elements && elements.length > 0) {\r\n this.getElement()[0].focus();\r\n }\r\n }\r\n\r\n valid(): any {\r\n const value = this.getValue();\r\n\r\n let validResult: ValidResult | boolean = true;\r\n\r\n if (this.field.required && utils.isArray(value)) {\r\n if ((value as any[]).length < 1) {\r\n validResult = { name: this.field.name, constraint: [] };\r\n validResult.constraint.push(RULES.REQUIRED);\r\n }\r\n }\r\n\r\n invalidMessage(this.field, this.rowElement, validResult);\r\n\r\n return validResult;\r\n }\r\n}\r\n", "import { FormField, ValuesInfo } from \"@t/FormField\";\r\nimport Render from \"./Render\";\r\nimport { ValidResult } from \"@t/ValidResult\";\r\nimport { RULES } from \"src/constants\";\r\nimport { resetRowElementStyleClass, invalidMessage } from \"src/util/validUtils\";\r\nimport { customChangeEventCall } from \"src/event/renderEvents\";\r\nimport DaraForm from \"src/DaraForm\";\r\nimport * as utils from \"src/util/utils\";\r\n\r\nexport default class RadioRender extends Render {\r\n private defaultCheckValue;\r\n\r\n constructor(field: FormField, rowElement: HTMLElement, daraForm: DaraForm) {\r\n super(daraForm, field, rowElement);\r\n\r\n this.defaultCheckValue = \"\";\r\n let initDefaultValue = [] as any;\r\n if (!utils.isUndefined(field.defaultValue)) {\r\n initDefaultValue = field.defaultValue;\r\n }\r\n\r\n const valueKey = RadioRender.valuesValueKey(field);\r\n let initDefaultValueFlag = false;\r\n this.field.listItem?.list?.forEach((item) => {\r\n let itemValue = item[valueKey];\r\n if (item.selected) {\r\n this.defaultCheckValue = itemValue;\r\n }\r\n\r\n if (initDefaultValue == itemValue) {\r\n initDefaultValueFlag = true;\r\n }\r\n });\r\n\r\n // \uCC98\uB9AC \uD560\uAC83.\r\n\r\n if (initDefaultValueFlag) {\r\n this.defaultCheckValue = initDefaultValue;\r\n } else if (!this.defaultCheckValue) {\r\n this.defaultCheckValue = this.field.listItem?.list?.length > 0 ? this.field.listItem?.list[0][valueKey] : \"\";\r\n }\r\n\r\n this.mounted();\r\n this.setDefaultOption();\r\n this.setValue(this.defaultCheckValue, false);\r\n }\r\n\r\n public mounted() {\r\n this.initEvent();\r\n }\r\n\r\n public initEvent() {\r\n const checkboxes = this.rowElement.querySelectorAll(this.getSelector());\r\n\r\n checkboxes.forEach((ele) => {\r\n ele.addEventListener(\"change\", (e: Event) => {\r\n customChangeEventCall(this.field, e, this, this.getValue());\r\n\r\n this.valid();\r\n });\r\n });\r\n }\r\n\r\n public getSelector() {\r\n return `input[type=\"radio\"][name=\"${this.field.$xssName}\"]`;\r\n }\r\n\r\n createField() {\r\n const field = this.field;\r\n\r\n const fieldContainerElement = this.rowElement.querySelector(\".df-field-container\") as HTMLElement;\r\n\r\n const templates: string[] = [];\r\n const fieldName = field.$xssName;\r\n\r\n const labelKey = Render.valuesLabelKey(field);\r\n const valueKey = Render.valuesValueKey(field);\r\n\r\n templates.push(`<div class=\"df-field\"><div class=\"field-group\">`);\r\n\r\n field.listItem?.list?.forEach((val) => {\r\n const radioVal = val[valueKey];\r\n\r\n templates.push(\r\n `<span class=\"field ${field.orientation == \"vertical\" ? \"vertical\" : \"horizontal\"}\">\r\n <label>\r\n <input type=\"radio\" name=\"${fieldName}\" value=\"${radioVal}\" class=\"form-field radio\" ${val.selected ? \"checked\" : \"\"} ${val.disabled ? \"disabled\" : \"\"}/>\r\n ${Render.valuesLabelValue(labelKey, val)}\r\n </label>\r\n </span>\r\n `\r\n );\r\n });\r\n templates.push(`<i class=\"daracl-icon help-icon\"></i></div></div>\r\n ${Render.getDescriptionTemplate(field)}\r\n <div class=\"help-message\"></div>\r\n `);\r\n\r\n fieldContainerElement.innerHTML = templates.join(\"\");\r\n\r\n this.initEvent();\r\n }\r\n\r\n public setValueItems(items: any): void {\r\n const containerEle = this.rowElement.querySelector(\".df-field-container\");\r\n if (containerEle) {\r\n if (this.field.listItem) {\r\n this.field.listItem.list = items;\r\n } else {\r\n this.field.listItem = {\r\n list: items,\r\n } as ValuesInfo;\r\n }\r\n\r\n this.createField();\r\n\r\n if (!utils.isBlank(this.field.$value)) {\r\n const currentValue = this.field.$value;\r\n this.field.$value = \"\";\r\n this.setValue(currentValue);\r\n }\r\n }\r\n }\r\n\r\n getValue() {\r\n return (this.rowElement.querySelector(`[name=\"${this.field.$xssName}\"]:checked`) as HTMLInputElement)?.value;\r\n }\r\n\r\n setValue(value: any, changeCheckFlag?: boolean): void {\r\n if (changeCheckFlag !== false && this.changeEventCall(this.field, null, this, value) === false) {\r\n value = this.field.$value;\r\n }\r\n\r\n this.field.$value = value;\r\n if (value === true) {\r\n (this.rowElement.querySelector(`[name=\"${this.field.$xssName}\"]`) as HTMLInputElement).checked = true;\r\n return;\r\n }\r\n\r\n if (value === false) {\r\n (this.rowElement.querySelector(`[name=\"${this.field.$xssName}\"]`) as HTMLInputElement).checked = false;\r\n return;\r\n }\r\n\r\n const elements = this.rowElement.querySelectorAll(this.getSelector());\r\n\r\n elements.forEach((ele) => {\r\n let radioEle = ele as HTMLInputElement;\r\n if (radioEle.value == value) {\r\n radioEle.checked = true;\r\n } else {\r\n radioEle.checked = false;\r\n }\r\n });\r\n }\r\n\r\n reset() {\r\n this.setValue(this.defaultCheckValue, false);\r\n this.setDisabled(false);\r\n resetRowElementStyleClass(this.rowElement);\r\n }\r\n\r\n getElement(): any {\r\n return this.rowElement.querySelectorAll(this.getSelector());\r\n }\r\n\r\n public focus() {\r\n const elements = this.getElement();\r\n\r\n if (elements && elements.length > 0) {\r\n this.getElement()[0].focus();\r\n }\r\n }\r\n\r\n valid(): any {\r\n const value = this.getValue();\r\n\r\n let validResult: ValidResult | boolean = true;\r\n\r\n if (this.field.required) {\r\n if (utils.isBlank(value)) {\r\n validResult = { name: this.field.name, constraint: [] };\r\n validResult.constraint.push(RULES.REQUIRED);\r\n }\r\n }\r\n\r\n invalidMessage(this.field, this.rowElement, validResult);\r\n\r\n return validResult;\r\n }\r\n}\r\n", "import { FormField } from \"@t/FormField\";\r\nimport Render from \"./Render\";\r\nimport { stringValidator } from \"src/rule/stringValidator\";\r\nimport { resetRowElementStyleClass, invalidMessage } from \"src/util/validUtils\";\r\nimport { inputEvent } from \"src/event/renderEvents\";\r\nimport DaraForm from \"src/DaraForm\";\r\n\r\nexport default class PasswordRender extends Render {\r\n private element: HTMLInputElement;\r\n\r\n constructor(field: FormField, rowElement: HTMLElement, daraForm: DaraForm) {\r\n super(daraForm, field, rowElement);\r\n\r\n this.mounted();\r\n this.setDefaultOption();\r\n this.setDefaultInfo();\r\n }\r\n\r\n mounted() {\r\n inputEvent(this.field, this.element, this);\r\n }\r\n\r\n createField() {\r\n const field = this.field;\r\n\r\n const fieldContainerElement = this.rowElement.querySelector(\".df-field-container\") as HTMLElement;\r\n\r\n fieldContainerElement.innerHTML = `\r\n <div class=\"df-field\">\r\n <input type=\"password\" name=\"${field.$xssName}\" class=\"form-field password help-icon\" autocomplete=\"off\" />\r\n </div>\r\n ${Render.getDescriptionTemplate(field)}\r\n <div class=\"help-message\"></div>\r\n `;\r\n\r\n this.element = fieldContainerElement.querySelector(`[name=\"${field.$xssName}\"]`) as HTMLInputElement;\r\n }\r\n\r\n getValue() {\r\n return this.element.value;\r\n }\r\n\r\n setValue(value: any, changeCheckFlag?: boolean): void {\r\n if (changeCheckFlag !== false && this.changeEventCall(this.field, null, this, value) === false) {\r\n this.element.value = this.field.$value;\r\n return;\r\n }\r\n this.field.$value = value;\r\n this.element.value = value;\r\n }\r\n\r\n reset() {\r\n this.setDefaultInfo();\r\n this.setDisabled(false);\r\n resetRowElementStyleClass(this.rowElement);\r\n }\r\n\r\n getElement(): HTMLElement {\r\n return this.element;\r\n }\r\n\r\n valid(): any {\r\n const validResult = stringValidator(this.getValue(), this.field);\r\n\r\n invalidMessage(this.field, this.rowElement, validResult);\r\n\r\n return validResult;\r\n }\r\n}\r\n", "import { FileInfo, FormField } from \"@t/FormField\";\r\nimport { ValidResult } from \"@t/ValidResult\";\r\nimport { RULES } from \"src/constants\";\r\n\r\n/**\r\n * file validator\r\n *\r\n * @param {HTMLInputElement} element\r\n * @param {FormField} field\r\n * @param {FileInfo[]} fileList\r\n * @returns {(ValidResult | boolean)}\r\n */\r\nexport const fileValidator = (element: HTMLInputElement, field: FormField, fileList: FileInfo[]): ValidResult | boolean => {\r\n const result: ValidResult = { name: field.name, constraint: [] };\r\n\r\n if (field.required && fileList.length < 1) {\r\n result.constraint.push(RULES.REQUIRED);\r\n return result;\r\n }\r\n\r\n if (result.constraint.length > 0) {\r\n return result;\r\n }\r\n\r\n return true;\r\n};\r\n", "import { FileInfo, FormField } from \"@t/FormField\";\r\nimport Render from \"./Render\";\r\nimport { resetRowElementStyleClass, invalidMessage } from \"src/util/validUtils\";\r\nimport { fileValidator } from \"src/rule/fileValidator\";\r\nimport Lanauage from \"src/util/Lanauage\";\r\nimport { customChangeEventCall } from \"src/event/renderEvents\";\r\nimport DaraForm from \"src/DaraForm\";\r\nimport * as utils from \"src/util/utils\";\r\n\r\nexport default class FileRender extends Render {\r\n private element: HTMLInputElement;\r\n private removeIds: any[] = [];\r\n private uploadFiles: any = {};\r\n private fileList: any[] = [];\r\n private fileSeq = 0;\r\n\r\n constructor(field: FormField, rowElement: HTMLElement, daraForm: DaraForm) {\r\n super(daraForm, field, rowElement);\r\n\r\n this.element = rowElement.querySelector(`[name=\"${field.$xssName}\"]`) as HTMLInputElement;\r\n this.fileList = field.listItem?.list || [];\r\n this.mounted();\r\n this.setDefaultOption();\r\n }\r\n\r\n mounted() {\r\n this.element.addEventListener(\"change\", (e: Event) => {\r\n const files = (e.target as HTMLInputElement)?.files;\r\n\r\n if (files) {\r\n let fileList = [];\r\n for (let item of files) {\r\n fileList.push(item);\r\n }\r\n this.addFiles(fileList);\r\n }\r\n customChangeEventCall(this.field, e, this, this.fileList);\r\n this.valid();\r\n });\r\n\r\n this.fileList.forEach((file) => {\r\n file.$seq = this.fileSeq += 1;\r\n });\r\n\r\n this.setFileList(this.fileList);\r\n }\r\n\r\n createField() {\r\n const field = this.field;\r\n\r\n const fieldContainerElement = this.rowElement.querySelector(\".df-field-container\") as HTMLElement;\r\n\r\n fieldContainerElement.innerHTML = `\r\n <div class=\"df-field\">\r\n <span class=\"file-wrapper\">\r\n <label class=\"file-label\">\r\n <input type=\"file\" name=\"${field.$xssName}\" class=\"form-field file\" multiple />\r\n ${Lanauage.getMessage(\"fileButton\")}\r\n </label>\r\n <i class=\"daracl-icon help-icon\"></i>\r\n </span>\r\n </div>\r\n ${Render.getDescriptionTemplate(field)}\r\n <div class=\"daracl-file-list\"></div>\r\n <div class=\"help-message\"></div>\r\n `;\r\n\r\n this.element = fieldContainerElement.querySelector(`[name=\"${field.$xssName}\"]`) as HTMLInputElement;\r\n }\r\n\r\n addFiles(files: any[]) {\r\n let addFlag = false;\r\n\r\n const newFiles: FileInfo[] = [];\r\n\r\n for (let item of files) {\r\n const fileCheckList = this.fileList.filter((fileItem) => fileItem.fileName == item.name && fileItem.fileSize == item.size && fileItem.lastModified == item.lastModified);\r\n\r\n if (fileCheckList.length > 0) continue;\r\n this.fileSeq += 1;\r\n this.uploadFiles[this.fileSeq] = item;\r\n\r\n let newFileInfo = {\r\n fileName: item.name,\r\n $seq: this.fileSeq,\r\n fileSize: item.size,\r\n lastModified: item.lastModified,\r\n } as FileInfo;\r\n\r\n newFiles.push(newFileInfo);\r\n addFlag = true;\r\n }\r\n if (addFlag) {\r\n this.setFileList(newFiles);\r\n this.fileList.push(...newFiles);\r\n }\r\n }\r\n\r\n private setFileList(fileList: FileInfo[], initFlag?: boolean | undefined) {\r\n const fileListElement = this.rowElement.querySelector(\".daracl-file-list\");\r\n\r\n if (fileListElement) {\r\n if (initFlag === true) {\r\n fileListElement.innerHTML = \"\";\r\n }\r\n\r\n const fileTemplateHtml: string[] = [];\r\n\r\n fileList.forEach((file) => {\r\n fileTemplateHtml.push(`\r\n <div class=\"file-item\" data-seq=\"${file.$seq}\">\r\n ${file.fileId ? '<span class=\"file-icon download\"></span>' : '<span class=\"file-icon\"></span>'} <span class=\"file-icon remove\"></span>\r\n <span class=\"file-name\">${file.fileName}</span > \r\n </div>`);\r\n });\r\n\r\n fileListElement.insertAdjacentHTML(\"beforeend\", fileTemplateHtml.join(\"\"));\r\n\r\n fileList.forEach((item) => {\r\n this.removeFileEvent(item, fileListElement);\r\n this.downloadFileEvent(item, fileListElement);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * \uD30C\uC77C \uB2E4\uC6B4\uB85C\uB4DC \uC774\uBCA4\uD2B8 \uCC98\uB9AC.\r\n *\r\n * @param item\r\n * @param fileListElement\r\n */\r\n private downloadFileEvent(item: FileInfo, fileListElement: Element) {\r\n const ele = fileListElement.querySelector(`[data-seq=\"${item.$seq}\"] .download`);\r\n if (ele) {\r\n ele.addEventListener(\"click\", (evt: Event) => {\r\n const fileItemElement = (evt.target as Element).closest(\".file-item\");\r\n\r\n if (fileItemElement) {\r\n const attrSeq = fileItemElement.getAttribute(\"data-seq\");\r\n if (attrSeq) {\r\n const seq = parseInt(attrSeq, 10);\r\n const idx = this.fileList.findIndex((v) => v.$seq === seq);\r\n\r\n const item = this.fileList[idx];\r\n\r\n if (item[\"url\"]) {\r\n location.href = item[\"url\"];\r\n return;\r\n }\r\n\r\n if (this.field.fileDownload) {\r\n this.field.fileDownload.call(null, { file: item, field: this.field });\r\n return;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * \uD30C\uC77C \uC0AD\uC81C \uCC98\uB9AC.\r\n *\r\n * @param item\r\n * @param fileListElement\r\n */\r\n private removeFileEvent(item: FileInfo, fileListElement: Element) {\r\n const ele = fileListElement.querySelector(`[data-seq=\"${item.$seq}\"] .remove`);\r\n if (ele) {\r\n ele.addEventListener(\"click\", (evt: Event) => {\r\n const fileItemElement = (evt.target as Element).closest(\".file-item\");\r\n\r\n if (fileItemElement) {\r\n const attrSeq = fileItemElement.getAttribute(\"data-seq\");\r\n if (attrSeq) {\r\n const seq = parseInt(attrSeq, 10);\r\n const removeIdx = this.fileList.findIndex((v) => v.$seq === seq);\r\n\r\n const removeItem = this.fileList[removeIdx];\r\n\r\n this.fileList.splice(removeIdx, 1);\r\n delete this.uploadFiles[seq];\r\n fileItemElement.remove();\r\n\r\n if (removeItem.fileId) {\r\n this.removeIds.push(removeItem.fileId);\r\n }\r\n }\r\n }\r\n this.valid();\r\n });\r\n }\r\n }\r\n\r\n getValue() {\r\n return {\r\n uploadFile: Object.values(this.uploadFiles),\r\n removeIds: this.removeIds,\r\n };\r\n }\r\n\r\n public setValueItems(value: any): void {\r\n this.fileList = [];\r\n this.uploadFiles = [];\r\n this.removeIds = [];\r\n for (let file of value) {\r\n file.$seq = this.fileSeq += 1;\r\n\r\n this.fileList.push(file);\r\n }\r\n\r\n this.setFileList(this.fileList, true);\r\n }\r\n\r\n setValue(value: any): void {\r\n if (utils.isArray(value)) {\r\n this.setValueItems(value);\r\n }\r\n this.element.value = \"\";\r\n }\r\n\r\n reset() {\r\n this.setValue(\"\");\r\n this.setValueItems([]);\r\n resetRowElementStyleClass(this.rowElement);\r\n }\r\n\r\n getElement(): HTMLInputElement {\r\n return this.element;\r\n }\r\n\r\n valid(): any {\r\n const validResult = fileValidator(this.element, this.field, this.fileList);\r\n\r\n invalidMessage(this.field, this.rowElement, validResult);\r\n\r\n return validResult;\r\n }\r\n}\r\n", "import { FormField } from \"@t/FormField\";\r\nimport Render from \"./Render\";\r\nimport { invalidMessage, resetRowElementStyleClass } from \"src/util/validUtils\";\r\nimport DaraForm from \"src/DaraForm\";\r\nimport * as utils from \"src/util/utils\";\r\nimport { stringValidator } from \"src/rule/stringValidator\";\r\n\r\nexport default class CustomRender extends Render {\r\n private customFunction;\r\n\r\n constructor(field: FormField, rowElement: HTMLElement, daraForm: DaraForm) {\r\n super(daraForm, field, rowElement);\r\n if (field.renderer) {\r\n this.customFunction = field.renderer;\r\n this.mounted();\r\n this.setDefaultOption();\r\n this.setDefaultInfo();\r\n } else {\r\n this.customFunction = {} as any;\r\n }\r\n }\r\n\r\n mounted() {\r\n if (this.customFunction.mounted) {\r\n (this.customFunction.mounted as any).call(this, this.field, this.rowElement);\r\n }\r\n }\r\n\r\n static isDataRender(): boolean {\r\n return false;\r\n }\r\n\r\n createField() {\r\n const field = this.field;\r\n\r\n const fieldTemplate = utils.isEmpty(field.template) ? \"\" : utils.isString(field.template) ? field.template : field.template();\r\n\r\n const fieldContainerElement = this.rowElement.querySelector(\".df-field-container\") as HTMLElement;\r\n\r\n fieldContainerElement.innerHTML = ` <div class=\"df-field\">\r\n ${fieldTemplate}\r\n </div>\r\n ${Render.getDescriptionTemplate(field)}\r\n <div class=\"help-message\"></div>`;\r\n }\r\n\r\n getValue() {\r\n if (this.customFunction.getValue) {\r\n return (this.customFunction.getValue as any).call(this, this.field, this.rowElement);\r\n }\r\n return \"\";\r\n }\r\n\r\n setValue(value: any, changeCheckFlag?: boolean): void {\r\n if (this.customFunction.setValue) {\r\n if (changeCheckFlag !== false && this.changeEventCall(this.field, null, this, value) === false) {\r\n value = this.field.$value;\r\n }\r\n (this.customFunction.setValue as any).call(this, value, this.field, this.rowElement);\r\n }\r\n\r\n this.field.$value = value;\r\n }\r\n\r\n reset() {\r\n this.setDefaultInfo();\r\n resetRowElementStyleClass(this.rowElement);\r\n }\r\n\r\n getElement() {\r\n if (this.customFunction.getElement) {\r\n return (this.customFunction.getElement as any).call(this, this.field, this.rowElement);\r\n }\r\n return null;\r\n }\r\n\r\n valid(): any {\r\n if (this.customFunction.valid) {\r\n const validResult = (this.customFunction.valid as any).call(this, this.field, this.rowElement);\r\n\r\n invalidMessage(this.field, this.rowElement, validResult);\r\n\r\n return;\r\n }\r\n const validResult = stringValidator(this.getValue(), this.field);\r\n\r\n invalidMessage(this.field, this.rowElement, validResult);\r\n\r\n return validResult;\r\n }\r\n\r\n /**\r\n * focus\r\n */\r\n focus(): void {\r\n if (this.customFunction.focus) {\r\n (this.customFunction.focus as any).call(this, this.field, this.rowElement);\r\n }\r\n }\r\n}\r\n", "import { FormField } from \"@t/FormField\";\r\nimport Render from \"./Render\";\r\nimport DaraForm from \"src/DaraForm\";\r\n\r\nexport default class GroupRender extends Render {\r\n constructor(field: FormField, rowElement: HTMLElement, daraForm: DaraForm) {\r\n super(daraForm, field, rowElement);\r\n }\r\n\r\n public mounted() {}\r\n\r\n static isDataRender(): boolean {\r\n return false;\r\n }\r\n\r\n createField() {\r\n return \"\";\r\n }\r\n\r\n getValue() {\r\n return null;\r\n }\r\n\r\n setValue(value: any): void {}\r\n\r\n reset() {}\r\n\r\n getElement(): HTMLElement {\r\n return this.rowElement;\r\n }\r\n\r\n valid(): any {\r\n return true;\r\n }\r\n\r\n public addChildField(element: Element) {\r\n let addContainer = this.rowElement.querySelector(\".df-field-container\");\r\n\r\n if (addContainer) {\r\n addContainer.append(element);\r\n } else {\r\n this.rowElement.append(element);\r\n }\r\n }\r\n\r\n focus(): void {}\r\n}\r\n", "import { FormField } from \"@t/FormField\";\r\nimport Render from \"./Render\";\r\nimport DaraForm from \"src/DaraForm\";\r\n\r\nexport default class HiddenRender extends Render {\r\n constructor(field: FormField, rowElement: HTMLElement, daraForm: DaraForm) {\r\n super(daraForm, field, rowElement);\r\n this.field.$value = field.defaultValue;\r\n }\r\n\r\n mounted() {}\r\n\r\n createField() {\r\n return ``;\r\n }\r\n\r\n getValue() {\r\n return this.field.$value;\r\n }\r\n\r\n setValue(value: any): void {\r\n this.field.$value = value;\r\n }\r\n\r\n reset() {\r\n this.setValue(this.field.defaultValue);\r\n }\r\n\r\n getElement() {\r\n return;\r\n }\r\n\r\n valid(): any {\r\n return true;\r\n }\r\n}\r\n", "import { FormField } from \"@t/FormField\";\r\nimport Render from \"./Render\";\r\nimport DaraForm from \"src/DaraForm\";\r\n\r\nexport default class ButtonRender extends Render {\r\n constructor(field: FormField, rowElement: HTMLElement, daraForm: DaraForm) {\r\n super(daraForm, field, rowElement);\r\n this.mounted();\r\n this.setDefaultOption();\r\n }\r\n\r\n mounted() {\r\n this.rowElement.querySelector(`#${this.field.$key}`)?.addEventListener(\"click\", (evt) => {\r\n if (this.field.onClick) {\r\n this.field.onClick.call(null, this.field);\r\n }\r\n });\r\n }\r\n\r\n static isDataRender(): boolean {\r\n return false;\r\n }\r\n\r\n createField() {\r\n const field = this.field;\r\n\r\n const fieldContainerElement = this.rowElement.querySelector(\".df-field-container\") as HTMLElement;\r\n\r\n fieldContainerElement.innerHTML = `\r\n <button type=\"button\" id=\"${field.$key}\" class=\"df-btn\">${field.label}</button> ${Render.getDescriptionTemplate(field)}\r\n `;\r\n }\r\n\r\n getValue() {\r\n return \"\";\r\n }\r\n\r\n setValue(value: any): void {}\r\n\r\n reset() {\r\n this.setDisabled(false);\r\n }\r\n\r\n getElement() {\r\n return null;\r\n }\r\n\r\n valid(): any {\r\n return true;\r\n }\r\n}\r\n", "import { FormField } from \"@t/FormField\";\r\nimport Render from \"./Render\";\r\nimport { numberValidator } from \"src/rule/numberValidator\";\r\nimport { resetRowElementStyleClass, invalidMessage } from \"src/util/validUtils\";\r\nimport { customChangeEventCall, numberInputEvent } from \"src/event/renderEvents\";\r\nimport DaraForm from \"src/DaraForm\";\r\n\r\nexport default class RangeRender extends Render {\r\n private element: HTMLInputElement;\r\n private rangeNumElement: Element;\r\n\r\n constructor(field: FormField, rowElement: HTMLElement, daraForm: DaraForm) {\r\n super(daraForm, field, rowElement);\r\n\r\n this.rangeNumElement = rowElement.querySelector(\".range-num\") as Element;\r\n\r\n this.mounted();\r\n this.setDefaultOption();\r\n this.setDefaultInfo();\r\n }\r\n\r\n mounted() {\r\n this.element.addEventListener(\"input\", (e: any) => {\r\n this.rangeNumElement.innerHTML = e.target.value;\r\n\r\n this.element.setAttribute(\"title\", e.target.value);\r\n customChangeEventCall(this.field, e, this, this.getValue());\r\n this.valid();\r\n });\r\n }\r\n\r\n createField() {\r\n const field = this.field;\r\n\r\n const fieldContainerElement = this.rowElement.querySelector(\".df-field-container\") as HTMLElement;\r\n\r\n fieldContainerElement.innerHTML = `\r\n <div class=\"df-field\">\r\n <span class=\"range-num\">${field.defaultValue ? field.defaultValue : 0}</span>\r\n <input type=\"range\" name=\"${field.$xssName}\" class=\"form-field range help-icon\" min=\"${field.rule.minimum}\" max=\"${field.rule.maximum}\"/>\r\n </div> \r\n ${Render.getDescriptionTemplate(field)}\r\n <div class=\"help-message\"></div>\r\n `;\r\n\r\n this.element = fieldContainerElement.querySelector(`[name=\"${field.$xssName}\"]`) as HTMLInputElement;\r\n }\r\n\r\n getValue() {\r\n return this.element.value;\r\n }\r\n\r\n setValue(value: any, changeCheckFlag?: boolean): void {\r\n if (changeCheckFlag !== false && this.changeEventCall(this.field, null, this, value) === false) {\r\n this.element.value = this.field.$value;\r\n return;\r\n }\r\n this.field.$value = value;\r\n this.element.value = value;\r\n }\r\n\r\n reset() {\r\n this.setDefaultInfo();\r\n this.setDisabled(false);\r\n resetRowElementStyleClass(this.rowElement);\r\n }\r\n\r\n getElement(): HTMLElement {\r\n return this.element;\r\n }\r\n\r\n valid(): any {\r\n const validResult = numberValidator(this.getValue(), this.field);\r\n\r\n invalidMessage(this.field, this.rowElement, validResult);\r\n\r\n return validResult;\r\n }\r\n}\r\n", "import { Message } from \"@t/Message\";\r\n\r\nlet localeMessage: Message = {\r\n year: \"Year\",\r\n month: \"Month\",\r\n day: \"Day\",\r\n am: \"AM\",\r\n pm: \"PM\",\r\n today: \"Today\",\r\n ok: \"Ok\",\r\n months: {\r\n full: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\r\n abbr: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\r\n },\r\n weeks: {\r\n full: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\r\n abbr: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\r\n },\r\n};\r\n\r\n/**\r\n * validation \uBA54\uC2DC\uC9C0 \uCC98\uB9AC.\r\n *\r\n * @class Language\r\n * @typedef {Language}\r\n */\r\nclass Language {\r\n private lang: Message = localeMessage;\r\n\r\n public setDefaultMessage(lang?: Message) {\r\n localeMessage = Object.assign(localeMessage, lang);\r\n }\r\n\r\n /**\r\n * \uB2E4\uAD6D\uC5B4 \uBA54\uC2DC\uC9C0 \uB4F1\uB85D\r\n *\r\n * @public\r\n * @param {?Message} [lang] \uB465\uB85D\uD560 \uBA54\uC2DC\uC9C0\r\n */\r\n public set(lang?: Message) {\r\n this.lang = Object.assign({}, localeMessage, lang);\r\n }\r\n\r\n /**\r\n * \uBA54\uC2DC\uC9C0 \uC5BB\uAE30\r\n *\r\n * @public\r\n * @param {string} messageKey \uBA54\uC2DC\uC9C0 \uD0A4\r\n * @returns {*}\r\n */\r\n public getMessage(messageKey: string): any {\r\n return (this.lang as any)[messageKey];\r\n }\r\n\r\n public getMonthsMessage(idx: number, mode: \"full\" | \"abbr\" = \"abbr\") {\r\n return (this.lang.months as any)[mode][idx] || \"\";\r\n }\r\n\r\n public getWeeksMessage(idx: number, mode: \"full\" | \"abbr\" = \"abbr\") {\r\n return (this.lang.weeks as any)[mode][idx] || \"\";\r\n }\r\n\r\n public getMonthsIdx(val: string, mode: \"full\" | \"abbr\" = \"abbr\"): number {\r\n return mode == \"full\" ? this.lang.months.full.indexOf(val) : this.lang.months.abbr.indexOf(val);\r\n }\r\n\r\n public getWeeksIdx(val: string, mode: \"full\" | \"abbr\" = \"abbr\"): number {\r\n return mode == \"full\" ? this.lang.weeks.full.indexOf(val) : this.lang.weeks.abbr.indexOf(val);\r\n }\r\n}\r\n\r\nfunction message(msgFormat: string, msgParam: any): string {\r\n return msgFormat.replace(/\\{{1,1}([A-Za-z0-9_.]*)\\}{1,1}/g, (match, key) => {\r\n return typeof msgParam[key] !== \"undefined\" ? msgParam[key] : match;\r\n });\r\n}\r\n\r\nexport default new Language();\r\n", "export const EXPRESSIONS_FORMAT = [\"YY\", \"YYYY\", \"MMMM\", \"MMM\", \"MM\", \"M\", \"dddd\", \"ddd\", \"dd\", \"d\", \"DD\", \"D\", \"S\", \"HH\", \"H\", \"hh\", \"h\", \"mm\", \"m\", \"ss\", \"s\", \"SSS\", \"zzzz\", \"zzz\", \"zz\", \"z\", \"a\", \"A\"];\r\n\r\nexport let MAX_CHAR_LENGTH = 0;\r\n\r\nexport let DEFAULT_FORMAT = {\r\n year: \"YYYY\",\r\n month: \"YYYY-MM\",\r\n date: \"YYYY-MM-DD\",\r\n time: \"HH:mm\",\r\n datetime: \"YYYY-MM-DD HH:mm\",\r\n};\r\n\r\nexport const DAY_STYLE_CLASS = [\"sun\", \"mon\", \"tue\", \"wed\", \"thu\", \"fri\", \"sat\"];\r\n\r\nexport enum DateViewMode {\r\n year = \"year\",\r\n month = \"month\",\r\n date = \"date\",\r\n datetime = \"datetime\",\r\n time = \"time\",\r\n}\r\n\r\nEXPRESSIONS_FORMAT.forEach((item) => {\r\n MAX_CHAR_LENGTH = Math.max(item.length, MAX_CHAR_LENGTH);\r\n});\r\n", "const xssFilter = {\r\n \"&\": \"&amp;\",\r\n \"<\": \"&lt;\",\r\n \">\": \"&gt;\",\r\n '\"': \"&quot;\",\r\n \"'\": \"&#39;\",\r\n} as any;\r\n\r\nexport default {\r\n replace(str: string): string {\r\n let returnText = str;\r\n if (returnText) {\r\n Object.keys(xssFilter).forEach((key) => {\r\n returnText = returnText.replaceAll(key, xssFilter[key]);\r\n });\r\n }\r\n return returnText;\r\n },\r\n\r\n unReplace(inputText: string): string {\r\n let returnText = inputText;\r\n\r\n if (returnText) {\r\n Object.keys(xssFilter).forEach((key) => {\r\n returnText = returnText.replaceAll(xssFilter[key], key);\r\n });\r\n }\r\n return returnText;\r\n },\r\n\r\n unFieldName(fieldName: string): string {\r\n if (fieldName) {\r\n return this.unReplace(fieldName).replaceAll('\"', '\\\\\"');\r\n }\r\n return \"\";\r\n },\r\n\r\n isBlank(value: any): boolean {\r\n if (value === null) return true;\r\n if (value === \"\") return true;\r\n if (typeof value === \"undefined\") return true;\r\n if (typeof value === \"string\" && (value === \"\" || value.replace(/\\s/g, \"\") === \"\")) return true;\r\n\r\n return false;\r\n },\r\n\r\n isUndefined(value: any): value is undefined {\r\n return typeof value === \"undefined\";\r\n },\r\n\r\n isFunction(value: any): boolean {\r\n return typeof value === \"function\";\r\n },\r\n\r\n isString(value: any): value is string {\r\n return typeof value === \"string\";\r\n },\r\n isNumber(value: any): value is number {\r\n if (this.isBlank(value)) {\r\n return false;\r\n }\r\n return !isNaN(value);\r\n },\r\n\r\n isArray(value: any) {\r\n return Array.isArray(value);\r\n },\r\n\r\n getHashCode(str: string) {\r\n let hash = 0;\r\n if (str.length == 0) return hash;\r\n for (let i = 0; i < str.length; i++) {\r\n let tmpChar = str.charCodeAt(i);\r\n hash = (hash << 5) - hash + tmpChar;\r\n hash = hash & hash;\r\n }\r\n return hash;\r\n },\r\n\r\n pad(str: any, length: number): string {\r\n str = String(str);\r\n while (str.length < length) {\r\n str = \"0\" + str;\r\n }\r\n return str;\r\n },\r\n\r\n closestElement(el: HTMLElement, checkElement: Element) {\r\n let currentEl: HTMLElement | null = el;\r\n while (currentEl) {\r\n if (currentEl == checkElement) {\r\n return true;\r\n }\r\n\r\n currentEl = currentEl.parentElement;\r\n }\r\n\r\n return false;\r\n },\r\n};\r\n", "import Lanauage from \"src/Lanauage\";\r\nimport { MAX_CHAR_LENGTH, EXPRESSIONS_FORMAT } from \"src/constants\";\r\nimport utils from \"src/util/utils\";\r\n\r\nexport default (date: Date, format: string) => {\r\n format = format || \"YYYY-MM-DD\";\r\n const len = format.length;\r\n\r\n let result = [];\r\n for (let i = 0; i < len; ) {\r\n let minLen = Math.min(MAX_CHAR_LENGTH, len - i);\r\n let j = minLen;\r\n for (; j > 0; j--) {\r\n const v = format.substring(i, i + j);\r\n if (EXPRESSIONS_FORMAT.includes(v)) {\r\n try {\r\n result.push(expressionsFunction[v](date));\r\n } catch (e) {\r\n console.log(EXPRESSIONS_FORMAT.includes(v), v, e);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n if (j < 1) {\r\n result.push(format.substring(i, i + 1));\r\n i += 1;\r\n } else {\r\n i += j;\r\n }\r\n }\r\n\r\n return result.join(\"\");\r\n};\r\n\r\nconst expressionsFunction: any = {\r\n YY: (date: Date) => {\r\n return String(date.getFullYear()).slice(-2);\r\n },\r\n YYYY: (date: Date) => {\r\n return String(date.getFullYear());\r\n },\r\n M: (date: Date) => {\r\n return String(date.getMonth() + 1);\r\n },\r\n MM: (date: Date) => {\r\n return utils.pad(date.getMonth() + 1, 2);\r\n },\r\n MMM: (date: Date) => {\r\n return Lanauage.getMonthsMessage(date.getMonth());\r\n },\r\n MMMM: (date: Date) => {\r\n return Lanauage.getMonthsMessage(date.getMonth(), \"full\");\r\n },\r\n D: (date: Date) => {\r\n return String(date.getDate());\r\n },\r\n DD: (date: Date) => {\r\n return utils.pad(date.getDate(), 2);\r\n },\r\n d: (date: Date) => {\r\n return String(date.getDate());\r\n },\r\n dd: (date: Date) => {\r\n return utils.pad(date.getDate(), 2);\r\n },\r\n ddd: (date: Date) => {\r\n return Lanauage.getWeeksMessage(date.getDay());\r\n },\r\n dddd: (date: Date) => {\r\n return Lanauage.getWeeksMessage(date.getDay(), \"full\");\r\n },\r\n H: (date: Date) => {\r\n return String(date.getHours());\r\n },\r\n HH: (date: Date) => {\r\n return utils.pad(date.getHours(), 2);\r\n },\r\n h: (date: Date) => {\r\n return getH(date);\r\n },\r\n hh: (date: Date) => {\r\n return utils.pad(getH(date), 2);\r\n },\r\n a: (date: Date) => {\r\n return String(date.getFullYear()).slice(-2);\r\n },\r\n A: (date: Date) => {\r\n return getMeridiem(date, true, true);\r\n },\r\n m: (date: Date) => {\r\n return String(date.getMinutes());\r\n },\r\n mm: (date: Date) => {\r\n return utils.pad(date.getMinutes(), 2);\r\n },\r\n s: (date: Date) => {\r\n return String(date.getSeconds());\r\n },\r\n ss: (date: Date) => {\r\n return utils.pad(date.getSeconds(), 2);\r\n },\r\n SSS: (date: Date) => {\r\n return utils.pad(date.getMilliseconds(), 3);\r\n },\r\n};\r\n\r\nfunction getH(date: Date) {\r\n let hour = date.getHours();\r\n if (hour > 12) {\r\n hour -= 12;\r\n } else if (hour < 1) {\r\n hour = 12;\r\n }\r\n return hour;\r\n}\r\n\r\nfunction getMeridiem(date: Date, isUpper: boolean, isShort: boolean) {\r\n const hour = date.getHours();\r\n let m = hour < 12 ? \"am\" : \"pm\";\r\n\r\n m = Lanauage.getMessage(m);\r\n m = isUpper ? m.toUpperCase() : m;\r\n\r\n return m;\r\n}\r\n", "import Lanauage from \"src/Lanauage\";\r\nimport { DEFAULT_FORMAT, EXPRESSIONS_FORMAT, MAX_CHAR_LENGTH } from \"src/constants\";\r\n\r\ntype DateInfo = {\r\n year: number;\r\n month: number;\r\n day: number;\r\n hour: number;\r\n minute: number;\r\n second: number;\r\n millisecond: number;\r\n isPm: boolean;\r\n isH: boolean;\r\n timezoneOffset?: number | null;\r\n charIdx: number;\r\n};\r\n\r\nexport default (dateStr: string, format: string): Date | null => {\r\n if (dateStr.length > 1000) {\r\n return null;\r\n }\r\n\r\n format = format || DEFAULT_FORMAT.date;\r\n\r\n const dateInfo: DateInfo = {\r\n year: new Date().getFullYear(),\r\n month: 0,\r\n day: 1,\r\n hour: 0,\r\n minute: 0,\r\n second: 0,\r\n millisecond: 0,\r\n isPm: false,\r\n isH: false,\r\n charIdx: 0,\r\n };\r\n\r\n const len = format.length;\r\n let startIdx = 0;\r\n\r\n for (let i = 0; i < len; ) {\r\n let minLen = Math.min(MAX_CHAR_LENGTH, len - i);\r\n let j = minLen;\r\n for (; j > 0; j--) {\r\n const v = format.substring(i, i + j);\r\n if (EXPRESSIONS_FORMAT.includes(v)) {\r\n const expInfo = expressionsFunction[v];\r\n const val = matchFind(dateStr.substring(startIdx), expInfo[0]);\r\n expInfo[1](dateInfo, val);\r\n startIdx += val.length;\r\n break;\r\n }\r\n }\r\n\r\n if (j < 1) {\r\n i += 1;\r\n startIdx += 1;\r\n } else {\r\n i += j;\r\n }\r\n }\r\n\r\n if (dateInfo.hour != null && !dateInfo.isH) {\r\n if (dateInfo.isPm && +dateInfo.hour !== 12) {\r\n dateInfo.hour = +dateInfo.hour + 12;\r\n } else if (!dateInfo.isPm && +dateInfo.hour === 12) {\r\n dateInfo.hour = 0;\r\n }\r\n }\r\n\r\n let date: Date;\r\n\r\n date = new Date(dateInfo.year, dateInfo.month, dateInfo.day, dateInfo.hour, dateInfo.minute, dateInfo.second, dateInfo.millisecond);\r\n\r\n return date;\r\n};\r\n\r\n// match word\r\nconst matchFind = (val: string, regexp: RegExp) => {\r\n const match = regexp.exec(val);\r\n\r\n return match == null ? \"\" : match[0];\r\n};\r\n\r\n// number check regular expression\r\nconst digitsCheck: Record<string, RegExp> = {\r\n twoOptional: /\\d\\d?/,\r\n two: /\\d\\d/,\r\n three: /\\d{3}/,\r\n four: /\\d{4}/,\r\n};\r\n\r\n// word check regular expression\r\nconst word = /[^\\s]+/;\r\n\r\nconst expressionsFunction: Record<string, [RegExp, (dateInfo: DateInfo, val: string) => DateInfo]> = {\r\n YY: [\r\n digitsCheck[\"two\"],\r\n (dateInfo: DateInfo, val: string) => {\r\n dateInfo.year = +((\"\" + new Date().getFullYear()).substring(0, 2) + val);\r\n return dateInfo;\r\n },\r\n ],\r\n YYYY: [\r\n digitsCheck[\"four\"],\r\n (dateInfo: DateInfo, val: string) => {\r\n dateInfo.year = +val;\r\n return dateInfo;\r\n },\r\n ],\r\n M: [\r\n digitsCheck[\"twoOptional\"],\r\n (dateInfo: DateInfo, val: string) => {\r\n dateInfo.month = +val - 1;\r\n return dateInfo;\r\n },\r\n ],\r\n MM: [\r\n digitsCheck[\"two\"],\r\n (dateInfo: DateInfo, val: string) => {\r\n dateInfo.month = +val - 1;\r\n return dateInfo;\r\n },\r\n ],\r\n MMM: [\r\n word,\r\n (dateInfo: DateInfo, val: string) => {\r\n dateInfo.month = Lanauage.getMonthsIdx(val, \"abbr\");\r\n return dateInfo;\r\n },\r\n ],\r\n MMMM: [\r\n word,\r\n (dateInfo: DateInfo, val: string) => {\r\n dateInfo.month = Lanauage.getMonthsIdx(val, \"full\");\r\n return dateInfo;\r\n },\r\n ],\r\n D: [\r\n digitsCheck[\"twoOptional\"],\r\n (dateInfo: DateInfo, val: string) => {\r\n dateInfo.day = +val;\r\n return dateInfo;\r\n },\r\n ],\r\n DD: [\r\n digitsCheck[\"two\"],\r\n (dateInfo: DateInfo, val: string) => {\r\n dateInfo.day = +val;\r\n return dateInfo;\r\n },\r\n ],\r\n d: [\r\n digitsCheck[\"twoOptional\"],\r\n (dateInfo: DateInfo, val: string) => {\r\n dateInfo.day = +val;\r\n return dateInfo;\r\n },\r\n ],\r\n dd: [\r\n digitsCheck[\"two\"],\r\n (dateInfo: DateInfo, val: string) => {\r\n dateInfo.day = +val;\r\n return dateInfo;\r\n },\r\n ],\r\n ddd: [\r\n word,\r\n (dateInfo: DateInfo, val: string) => {\r\n return dateInfo;\r\n },\r\n ],\r\n dddd: [\r\n word,\r\n (dateInfo: DateInfo, val: string) => {\r\n return dateInfo;\r\n },\r\n ],\r\n H: [\r\n digitsCheck[\"twoOptional\"],\r\n (dateInfo: DateInfo, val: string) => {\r\n dateInfo.hour = +val;\r\n dateInfo.isH = true;\r\n return dateInfo;\r\n },\r\n ],\r\n HH: [\r\n digitsCheck[\"two\"],\r\n (dateInfo: DateInfo, val: string) => {\r\n dateInfo.hour = +val;\r\n dateInfo.isH = true;\r\n return dateInfo;\r\n },\r\n ],\r\n h: [\r\n digitsCheck[\"twoOptional\"],\r\n (dateInfo: DateInfo, val: string) => {\r\n dateInfo.hour = +val;\r\n return dateInfo;\r\n },\r\n ],\r\n hh: [\r\n digitsCheck[\"two\"],\r\n (dateInfo: DateInfo, val: string) => {\r\n dateInfo.hour = +val;\r\n return dateInfo;\r\n },\r\n ],\r\n a: [\r\n word,\r\n (dateInfo: DateInfo, val: string) => {\r\n if (Lanauage.getMessage(\"am\") != val.toLowerCase()) {\r\n dateInfo.isPm = true;\r\n }\r\n return dateInfo;\r\n },\r\n ],\r\n A: [\r\n word,\r\n (dateInfo: DateInfo, val: string) => {\r\n if (Lanauage.getMessage(\"am\") != val.toLowerCase()) {\r\n dateInfo.isPm = true;\r\n }\r\n return dateInfo;\r\n },\r\n ],\r\n m: [\r\n digitsCheck[\"twoOptional\"],\r\n (dateInfo: DateInfo, val: string) => {\r\n dateInfo.minute = +val;\r\n return dateInfo;\r\n },\r\n ],\r\n mm: [\r\n digitsCheck[\"two\"],\r\n (dateInfo: DateInfo, val: string) => {\r\n dateInfo.minute = +val;\r\n return dateInfo;\r\n },\r\n ],\r\n s: [\r\n digitsCheck[\"twoOptional\"],\r\n (dateInfo: DateInfo, val: string) => {\r\n dateInfo.second = +val;\r\n return dateInfo;\r\n },\r\n ],\r\n ss: [\r\n digitsCheck[\"two\"],\r\n (dateInfo: DateInfo, val: string) => {\r\n dateInfo.second = +val;\r\n return dateInfo;\r\n },\r\n ],\r\n SSS: [\r\n digitsCheck[\"three\"],\r\n (dateInfo: DateInfo, val: string) => {\r\n dateInfo.millisecond = +val;\r\n return dateInfo;\r\n },\r\n ],\r\n};\r\n", "import dateFormat from './format';\r\n\r\nexport default class DaraDate {\r\n\r\n private date;\r\n\r\n constructor(dt: Date) {\r\n this.date = dt;\r\n }\r\n\r\n public setYear(num: number) {\r\n this.date.setFullYear(num);\r\n return this;\r\n }\r\n\r\n public addYear(num: number) {\r\n this.date.setFullYear(this.date.getFullYear() + num);\r\n return this;\r\n }\r\n\r\n public addMonth(num: number) {\r\n this.date.setMonth(this.date.getMonth() + num);\r\n return this;\r\n }\r\n\r\n public setMonth(num: number) {\r\n this.date.setMonth(num);\r\n return this;\r\n }\r\n\r\n public setDate(num: number) {\r\n this.date.setDate(num);\r\n return this;\r\n }\r\n\r\n public addDate(num: number) {\r\n this.date.setDate(this.date.getDate() + num);\r\n return this;\r\n }\r\n\r\n public addWeek(num: number) {\r\n this.date.setDate(this.date.getDate() + (num * 7));\r\n return this;\r\n }\r\n\r\n public addHours(num: number) {\r\n this.date.setHours(this.date.getHours() + num);\r\n return this;\r\n }\r\n\r\n public setHour(num: number) {\r\n this.date.setHours(num);\r\n return this;\r\n }\r\n\r\n public addMinutes(num: number) {\r\n this.date.setMinutes(this.date.getMinutes() + num);\r\n return this;\r\n }\r\n\r\n public setMinutes(num: number) {\r\n this.date.setMinutes(num);\r\n return this;\r\n }\r\n\r\n public addSeconds(num: number) {\r\n this.date.setSeconds(this.date.getSeconds() + num);\r\n return this;\r\n }\r\n\r\n public addMilliseconds(num: number) {\r\n this.date.setMilliseconds(this.date.getMilliseconds() + num);\r\n return this;\r\n }\r\n\r\n public compare(date: Date) {\r\n\r\n if (this.date.valueOf() < date.valueOf()) {\r\n return -1;\r\n } else if (this.date.valueOf() > date.valueOf()) {\r\n return 1;\r\n }\r\n return 0;\r\n }\r\n\r\n public getYear() {\r\n return this.date.getFullYear();\r\n }\r\n\r\n public getMonth() {\r\n return this.date.getMonth() + 1;\r\n }\r\n\r\n public getDate() {\r\n return this.date.getDate();\r\n }\r\n\r\n public getDay() {\r\n return this.date.getDay();\r\n }\r\n\r\n public getTime() {\r\n return this.date.getTime();\r\n }\r\n\r\n public format(format: string): string {\r\n return dateFormat(this.date, format);\r\n }\r\n\r\n public clone() {\r\n return new DaraDate(new Date(this.date.valueOf()));\r\n }\r\n\r\n}", "import { DateTimePickerOptions } from \"@t/DateTimePickerOptions\";\r\nimport { Message } from \"@t/Message\";\r\nimport format from \"./format\";\r\nimport parser from \"./util/parser\";\r\nimport Lanauage from \"./Lanauage\";\r\nimport utils from \"./util/utils\";\r\nimport DaraDate from \"./DaraDate\";\r\nimport { DAY_STYLE_CLASS, DEFAULT_FORMAT, DateViewMode } from \"./constants\";\r\n\r\ndeclare const APP_VERSION: string;\r\n\r\nlet DEFAULT_OPTIONS: DateTimePickerOptions = {\r\n inline: false, // layer or innerhtml\r\n weekStartDay: 0,\r\n initialDate: \"\",\r\n autoClose: true,\r\n isRTL: false,\r\n mode: DateViewMode.date,\r\n enableTodayBtn: true,\r\n showMonthAfterYear: false,\r\n format: \"\",\r\n zIndex: 1000,\r\n minDate: \"\",\r\n maxDate: \"\",\r\n beforeDrawDate: (dt) => {\r\n return {\r\n check: false,\r\n style: \"\",\r\n tooltip: \"\",\r\n };\r\n },\r\n};\r\n\r\nfunction hiddenElement() {\r\n if (document.getElementById(\"hiddenDaraDatetimeElement\") == null) {\r\n document.querySelector(\"body\")?.insertAdjacentHTML(\"beforeend\", `<div id=\"hiddenDaraDatetimeElement\" class=\"daracl-datetime-hidden\"></div>`);\r\n }\r\n\r\n return document.getElementById(\"hiddenDaraDatetimeElement\");\r\n}\r\n\r\nlet daraDatetimeIdx = 0;\r\n\r\n/**\r\n * date timepicker\r\n *\r\n * @class DateTimePicker1\r\n * @typedef {DateTimePicker}\r\n */\r\nexport default class DateTimePicker {\r\n public static VERSION = `${APP_VERSION}`;\r\n public static format = format;\r\n public static parser = parser;\r\n\r\n private readonly options;\r\n\r\n private datetimeElement;\r\n\r\n private targetElement: HTMLElement;\r\n\r\n private currentDate: DaraDate;\r\n\r\n private dateFormat: string;\r\n\r\n private todayDate: string;\r\n\r\n private isInput: boolean = false;\r\n\r\n private isVisible = false;\r\n\r\n private _viewMode: DateViewMode;\r\n\r\n private initMode: DateViewMode;\r\n\r\n private hourInputEle: HTMLInputElement;\r\n\r\n private minuteInputEle: HTMLInputElement;\r\n\r\n private minDate: number;\r\n private maxDate: number;\r\n private minYear: number = -1;\r\n private maxYear: number = -1;\r\n private minMonth: number = -1;\r\n private maxMonth: number = -1;\r\n\r\n // \uC694\uC77C \uC21C\uC11C.\r\n private dayOrder: number[] = [0, 1, 2, 3, 4, 5, 6];\r\n\r\n constructor(selector: string | HTMLElement, options: DateTimePickerOptions, message: Message) {\r\n this.options = Object.assign({}, DEFAULT_OPTIONS, options);\r\n\r\n daraDatetimeIdx += 1;\r\n\r\n let selectorElement: HTMLElement;\r\n if (typeof selector === \"string\") {\r\n selectorElement = document.querySelector(selector) as HTMLElement;\r\n } else {\r\n selectorElement = selector;\r\n }\r\n\r\n if (!selectorElement) {\r\n throw new Error(`${selector} datetimepicker element not found`);\r\n }\r\n\r\n this._viewMode = Object.keys(DateViewMode).includes(this.options.mode) ? this.options.mode : DateViewMode.date;\r\n\r\n this.initMode = this._viewMode;\r\n\r\n Lanauage.set(message);\r\n\r\n if (this.initMode == DateViewMode.year) {\r\n this.dateFormat = this.options.format || DEFAULT_FORMAT.year;\r\n } else if (this.initMode == DateViewMode.month) {\r\n this.dateFormat = this.options.format || DEFAULT_FORMAT.month;\r\n } else if (this.initMode == DateViewMode.time) {\r\n this.dateFormat = this.options.format || DEFAULT_FORMAT.time;\r\n } else if (this.initMode == DateViewMode.datetime) {\r\n this.dateFormat = this.options.format || DEFAULT_FORMAT.datetime;\r\n } else {\r\n this.dateFormat = this.options.format || DEFAULT_FORMAT.date;\r\n }\r\n\r\n let viewDate: DaraDate;\r\n if (this.options.initialDate) {\r\n if (typeof this.options.initialDate === \"string\") {\r\n viewDate = new DaraDate(parser(this.options.initialDate, this.dateFormat) || new Date());\r\n } else {\r\n viewDate = new DaraDate(this.options.initialDate);\r\n }\r\n } else {\r\n viewDate = new DaraDate(new Date());\r\n this.options.initialDate = viewDate.format(this.dateFormat);\r\n }\r\n\r\n this.setWeekDays();\r\n\r\n this.todayDate = viewDate.format(DEFAULT_FORMAT.date);\r\n this.currentDate = viewDate;\r\n this.targetElement = selectorElement;\r\n\r\n this.minDate = this._minDate();\r\n this.maxDate = this._maxDate();\r\n\r\n if (this.options.inline) {\r\n this.datetimeElement = selectorElement;\r\n this.datetimeElement.className = `daracl-datetime-wrapper ddtp-${daraDatetimeIdx} embed`;\r\n } else {\r\n this.isInput = true;\r\n this.targetElement.setAttribute(\"value\", viewDate.format(this.dateFormat));\r\n\r\n const datetimeElement = document.createElement(\"div\");\r\n datetimeElement.className = `daracl-datetime-wrapper ddtp-${daraDatetimeIdx} layer`;\r\n datetimeElement.setAttribute(\"style\", `z-index:${this.options.zIndex};`);\r\n hiddenElement()?.appendChild(datetimeElement);\r\n\r\n this.datetimeElement = datetimeElement;\r\n\r\n this.initTargetEvent();\r\n }\r\n\r\n this.createDatetimeTemplate();\r\n\r\n if (this.isTimeMode()) {\r\n this.hourInputEle = this.datetimeElement.querySelector(\".ddtp-hour\") as HTMLInputElement;\r\n this.minuteInputEle = this.datetimeElement.querySelector(\".ddtp-minute\") as HTMLInputElement;\r\n } else {\r\n this.hourInputEle = {} as HTMLInputElement;\r\n this.minuteInputEle = {} as HTMLInputElement;\r\n }\r\n\r\n this.changeViewMode(this._viewMode);\r\n\r\n this.initHeaderEvent();\r\n\r\n this.initDateEvent();\r\n\r\n this.initTimeEvent();\r\n }\r\n setWeekDays() {\r\n let weekStartDay = this.options.weekStartDay;\r\n\r\n if (weekStartDay == 0) return;\r\n\r\n if (weekStartDay < 0 || weekStartDay > 6) {\r\n weekStartDay = 0;\r\n }\r\n\r\n for (let i = 0; i < 7; i++) {\r\n let day = weekStartDay + i;\r\n\r\n this.dayOrder[i] = day < 7 ? day : day - 7;\r\n }\r\n }\r\n\r\n public static create(selector: string | HTMLElement, options: DateTimePickerOptions, message: Message): DateTimePicker {\r\n return new DateTimePicker(selector, options, message);\r\n }\r\n\r\n /**\r\n * default date format setting\r\n * @example\r\n ```\r\n setDefaultFormat({\r\n year: \"YYYY\",\r\n month: \"YYYY-MM\",\r\n date: \"YYYY-MM-DD\",\r\n time: \"HH:mm\",\r\n datetime: \"YYYY-MM-DD HH:mm\",\r\n });\r\n ```\r\n * @public\r\n * @static\r\n * @param {*} dateFormat\r\n */\r\n public static setDefaultFormat(dateFormat: any) {\r\n Object.assign(DEFAULT_FORMAT, dateFormat);\r\n }\r\n\r\n private _minDate() {\r\n let minDate = this.options.minDate;\r\n\r\n if (minDate != \"\") {\r\n if (typeof minDate === \"string\") {\r\n const dt = parser(minDate, this.dateFormat);\r\n if (!dt) {\r\n return -1;\r\n }\r\n\r\n minDate = dt;\r\n }\r\n this.minYear = minDate.getFullYear();\r\n this.minMonth = +(this.minYear + utils.pad(minDate.getMonth(), 2));\r\n return new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate(), 0, 0).getTime();\r\n }\r\n return -1;\r\n }\r\n\r\n private _maxDate() {\r\n let maxDate = this.options.maxDate;\r\n\r\n if (maxDate != \"\") {\r\n if (typeof maxDate === \"string\") {\r\n const dt = parser(maxDate, this.dateFormat);\r\n if (!dt) {\r\n return -1;\r\n }\r\n\r\n maxDate = dt;\r\n }\r\n this.maxYear = maxDate.getFullYear();\r\n this.maxMonth = +(this.maxYear + utils.pad(maxDate.getMonth(), 2));\r\n return new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate(), 23, 59).getTime();\r\n }\r\n return -1;\r\n }\r\n\r\n public set viewMode(mode: DateViewMode) {\r\n if (this._viewMode === mode) {\r\n return;\r\n }\r\n\r\n this._viewMode = mode;\r\n\r\n this.changeViewMode(mode);\r\n }\r\n\r\n public get viewMode(): DateViewMode {\r\n return this._viewMode;\r\n }\r\n\r\n /**\r\n * \uBAA8\uB4DC change\r\n * @param mode\r\n */\r\n public changeViewMode(mode: DateViewMode) {\r\n this.datetimeElement.querySelector(\".ddtp-datetime\")?.setAttribute(\"view-mode\", mode);\r\n\r\n if (mode === \"year\") {\r\n this.yearDraw();\r\n } else if (mode === \"month\") {\r\n this.monthDraw();\r\n } else {\r\n this.dayDraw();\r\n }\r\n }\r\n\r\n /**\r\n * init header event\r\n *\r\n * @public\r\n */\r\n private initHeaderEvent() {\r\n const isRTL = this.options.isRTL;\r\n this.datetimeElement.querySelector(\".ddtp-move-btn.prev\")?.addEventListener(\"click\", (e: Event) => {\r\n this.moveDate(isRTL ? \"next\" : \"prev\", e);\r\n });\r\n\r\n this.datetimeElement.querySelector(\".ddtp-move-btn.next\")?.addEventListener(\"click\", (e: Event) => {\r\n this.moveDate(isRTL ? \"prev\" : \"next\", e);\r\n });\r\n\r\n this.datetimeElement.querySelector(\".ddtp-header-year\")?.addEventListener(\"click\", (e: Event) => {\r\n this.viewMode = DateViewMode.year;\r\n });\r\n\r\n this.datetimeElement.querySelector(\".ddtp-header-month\")?.addEventListener(\"click\", (e: Event) => {\r\n this.viewMode = DateViewMode.month;\r\n });\r\n }\r\n\r\n /**\r\n * \uB0A0\uC9DC \uB2EC\uB825 \uC774\uBCA4\uD2B8\uCC98\uB9AC.\r\n */\r\n private initDateEvent() {\r\n this.datetimeElement.querySelector(\".ddtp-day-body\")?.addEventListener(\"click\", (e: Event) => {\r\n const targetEle = e.target as Element;\r\n\r\n if (targetEle.classList.contains(\"ddtp-day\") || targetEle.closest(\".ddtp-day\")) {\r\n const selectDate = targetEle.getAttribute(\"data-day\") || \"1\";\r\n\r\n const mmDD = selectDate.split(\",\");\r\n\r\n this.currentDate.setMonth(+mmDD[0] - 1);\r\n this.currentDate.setDate(+mmDD[1]);\r\n\r\n if (this.isDayDisabled(this.currentDate)) {\r\n return;\r\n }\r\n\r\n this.datetimeElement.querySelector(\".select\")?.classList.remove(\"select\");\r\n\r\n targetEle.classList.add(\"select\");\r\n\r\n if (this.isTimeMode()) {\r\n this.currentDate.setHour(+this.hourInputEle.value);\r\n this.currentDate.setMinutes(+this.minuteInputEle.value);\r\n }\r\n\r\n this.dateChangeEvent(e);\r\n }\r\n });\r\n\r\n // today click\r\n this.datetimeElement.querySelector(\".time-today\")?.addEventListener(\"click\", (e: Event) => {\r\n const initDate = new DaraDate(parser(this.todayDate, DEFAULT_FORMAT.date) || new Date());\r\n this.currentDate.setYear(initDate.getYear());\r\n this.currentDate.setMonth(initDate.getMonth() - 1);\r\n this.currentDate.setDate(initDate.getDate());\r\n this.changeViewMode(this.initMode);\r\n });\r\n }\r\n\r\n private isTimeMode(): boolean {\r\n return this._viewMode === DateViewMode.time || this._viewMode === DateViewMode.datetime;\r\n }\r\n\r\n /**\r\n * \uC2DC\uAC04 \uBD84 \uC124\uC815 \uC774\uBCA4\uD2B8 \uCC98\uB9AC.\r\n *\r\n * @public\r\n */\r\n public initTimeEvent() {\r\n if (!this.isTimeMode()) return;\r\n\r\n let hh = this.currentDate.format(\"HH\");\r\n\r\n const hourInputEle = this.datetimeElement.querySelector(\".ddtp-hour\") as HTMLInputElement;\r\n const hourRangeEle = this.datetimeElement.querySelector(\".ddtp-hour-range\") as HTMLInputElement;\r\n hourInputEle.value = hh;\r\n hourRangeEle.value = hh;\r\n\r\n hourInputEle.addEventListener(\"input\", (e: Event) => {\r\n const targetElement = e.target as HTMLInputElement;\r\n const addVal = utils.pad(targetElement.value, 2);\r\n hourInputEle.value = addVal;\r\n hourRangeEle.value = addVal;\r\n });\r\n\r\n hourRangeEle.addEventListener(\"input\", (e: Event) => {\r\n const targetElement = e.target as HTMLInputElement;\r\n hourInputEle.value = utils.pad(targetElement.value, 2);\r\n });\r\n\r\n let mm = this.currentDate.format(\"mm\");\r\n const minuteInputEle = this.datetimeElement.querySelector(\".ddtp-minute\") as HTMLInputElement;\r\n const minuteRangeEle = this.datetimeElement.querySelector(\".ddtp-minute-range\") as HTMLInputElement;\r\n\r\n minuteInputEle.value = mm;\r\n minuteRangeEle.value = mm;\r\n\r\n minuteInputEle.addEventListener(\"input\", (e: Event) => {\r\n const targetElement = e.target as HTMLInputElement;\r\n const addVal = utils.pad(targetElement.value, 2);\r\n minuteInputEle.value = addVal;\r\n minuteRangeEle.value = addVal;\r\n });\r\n\r\n minuteRangeEle.addEventListener(\"input\", (e: Event) => {\r\n const targetElement = e.target as HTMLInputElement;\r\n minuteInputEle.value = utils.pad(targetElement.value, 2);\r\n });\r\n\r\n this.datetimeElement.querySelector(\".time-select\")?.addEventListener(\"click\", (e: Event) => {\r\n this.currentDate.setHour(+hourInputEle.value);\r\n this.currentDate.setMinutes(+minuteInputEle.value);\r\n this.dateChangeEvent(e);\r\n });\r\n }\r\n\r\n /**\r\n * \uB0A0\uC9DC \uC774\uB3D9\r\n * @param moveMode // \uC55E\uB4A4 \uC774\uB3D9 prev, next\r\n * @returns\r\n */\r\n public moveDate(moveMode: string, e: Event) {\r\n if (this._viewMode === DateViewMode.date || this._viewMode === DateViewMode.datetime) {\r\n this.currentDate.setDate(1);\r\n this.currentDate.addMonth(\"prev\" === moveMode ? -1 : 1);\r\n this.dayDraw();\r\n return;\r\n }\r\n\r\n if (this._viewMode === DateViewMode.month) {\r\n this.currentDate.setDate(1);\r\n this.currentDate.addYear(\"prev\" === moveMode ? -1 : 1);\r\n this.monthDraw();\r\n return;\r\n }\r\n\r\n if (this._viewMode === DateViewMode.year) {\r\n this.currentDate.setDate(1);\r\n this.currentDate.addYear(\"prev\" === moveMode ? -16 : 16);\r\n this.yearDraw();\r\n }\r\n }\r\n\r\n /**\r\n * get date value\r\n *\r\n * @returns\r\n */\r\n public getDateValue() {\r\n return this.currentDate.format(this.dateFormat);\r\n }\r\n\r\n /**\r\n * \uC635\uC158 \uC14B\uD305\r\n * @static\r\n * @param {DateTimePickerOptions} options\r\n */\r\n static setOptions(options: DateTimePickerOptions) {\r\n DEFAULT_OPTIONS = Object.assign({}, DEFAULT_OPTIONS, options);\r\n }\r\n\r\n /**\r\n * \uB2EC\uB825 \uBCF4\uC774\uAE30 \uCC98\uB9AC.\r\n *\r\n * @returns\r\n */\r\n private show() {\r\n if (this.isVisible) {\r\n return;\r\n }\r\n this.isVisible = true;\r\n\r\n const docSize = getDocSize();\r\n this.datetimeElement.classList.remove(\"hide\");\r\n\r\n this.datetimeElement.classList.add(\"show\");\r\n\r\n const rect = this.targetElement.getBoundingClientRect();\r\n\r\n const scrollTop = window.scrollY || document.documentElement.scrollTop;\r\n const scrollLeft = window.scrollX || document.documentElement.scrollLeft;\r\n\r\n const offsetTop = rect.top + scrollTop;\r\n let top = offsetTop + this.targetElement.offsetHeight + 2;\r\n const left = rect.left + scrollLeft;\r\n\r\n if (top + this.datetimeElement.offsetHeight > docSize.clientHeight) {\r\n const newTop = offsetTop - (this.datetimeElement.offsetHeight + 2);\r\n top = newTop > 0 ? newTop : top;\r\n }\r\n\r\n this.datetimeElement.setAttribute(\"style\", `top:${top}px;left:${left}px;z-index:${this.options.zIndex}`);\r\n\r\n document.addEventListener(\"click\", this._documentClickEvent);\r\n }\r\n\r\n /**\r\n * \uB2EC\uB825 \uC228\uAE30\uAE30\r\n */\r\n private hide() {\r\n this.isVisible = false;\r\n\r\n if (this.options.onClose) {\r\n if (this.options.onClose() === false) {\r\n return;\r\n }\r\n }\r\n\r\n this.datetimeElement.classList.remove(\"show\");\r\n\r\n this.datetimeElement.classList.add(\"hide\");\r\n\r\n document.removeEventListener(\"click\", this._documentClickEvent);\r\n }\r\n\r\n /**\r\n * \uBC14\uD0D5 \uD074\uB9AD\uC2DC \uCE98\uB9B0\uB354 \uC228\uAE40 \uCC98\uB9AC.\r\n *\r\n * @param e\r\n */\r\n private _documentClickEvent = (e: Event) => {\r\n if (this.isVisible && e.target != this.targetElement && !utils.closestElement(e.target as HTMLElement, this.datetimeElement)) {\r\n this.hide();\r\n }\r\n };\r\n\r\n /**\r\n * \uD0C0\uCF13 \uC774\uBCA4\uD2B8 \uCC98\uB9AC.\r\n */\r\n private initTargetEvent() {\r\n if (this.targetElement) {\r\n this.targetElement.addEventListener(\"click\", (e: Event) => {\r\n this.show();\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * \uB0A0\uC9DC \uBCC0\uACBD\uD6C4 \uC774\uBCA4\uD2B8\r\n */\r\n private afterChangeDatepicker() {\r\n const formatValue = this.currentDate.format(this.dateFormat);\r\n\r\n if (this.options.afterChangeDatepicker && utils.isFunction(this.options.afterChangeDatepicker)) {\r\n this.options.afterChangeDatepicker(formatValue, this.viewMode);\r\n }\r\n }\r\n\r\n /**\r\n * \uB0A0\uC9DC \uBCC0\uACBD \uC804 \uC774\uBCA4\uD2B8.\r\n * @returns void\r\n */\r\n private beforeChangeDatepicker() {\r\n const formatValue = this.currentDate.format(this.dateFormat);\r\n\r\n if (this.options.beforeChangeDatepicker && utils.isFunction(this.options.beforeChangeDatepicker)) {\r\n const reval = this.options.beforeChangeDatepicker(formatValue, (result: boolean) => {\r\n if (result === false) {\r\n return;\r\n }\r\n\r\n this.refresh(false);\r\n });\r\n\r\n if (reval === false) {\r\n return;\r\n }\r\n\r\n this.refresh(false);\r\n return;\r\n }\r\n\r\n this.refresh(false);\r\n }\r\n\r\n private dateChangeEvent(e: Event) {\r\n const formatValue = this.currentDate.format(this.dateFormat);\r\n\r\n if (this.options.onSelect) {\r\n if (this.options.onSelect(formatValue, this.viewMode, e) === false) {\r\n return;\r\n }\r\n }\r\n\r\n if (this.isInput) {\r\n this.targetElement.setAttribute(\"value\", formatValue);\r\n }\r\n\r\n if (!this.options.inline && this.options.autoClose) {\r\n this.hide();\r\n }\r\n }\r\n\r\n /**\r\n * datepicker template \uADF8\uB9AC\uAE30\r\n */\r\n private createDatetimeTemplate() {\r\n const showMonthAfterYear = this.options.showMonthAfterYear;\r\n\r\n let datetimeTemplate = `<div class=\"ddtp-datetime ${this.options.isRTL ? \"rtl\" : \"\"}\" view-mode=\"${this._viewMode}\">\r\n\t\t\t<div class=\"ddtp-header\">\r\n <span class=\"${showMonthAfterYear ? \"ddtp-header-year\" : \"ddtp-header-month\"}\"></span>\r\n <span class=\"${showMonthAfterYear ? \"ddtp-header-month\" : \"ddtp-header-year\"}\"></span>\r\n\r\n <span class=\"ddtp-date-move\"> \r\n <a href=\"javascript:;\" class=\"ddtp-move-btn prev\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\" fill=\"#000000\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z\"/></svg>\r\n </a>\r\n <a href=\"javascript:;\" class=\"ddtp-move-btn next\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\" fill=\"#000000\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"/></svg>\r\n </a> \r\n </span>\r\n\t\t\t</div>\r\n <div class=\"ddtp-body\">\r\n <table class=\"ddtp-days\">\r\n <thead class=\"ddtp-day-header\">\r\n <tr>\t\t\r\n <td class=\"ddtp-day-label ${DAY_STYLE_CLASS[this.dayOrder[0]]}\">${Lanauage.getWeeksMessage(this.dayOrder[0])}</td>\t\t\r\n <td class=\"ddtp-day-label ${DAY_STYLE_CLASS[this.dayOrder[1]]}\">${Lanauage.getWeeksMessage(this.dayOrder[1])}</td>\t\t\r\n <td class=\"ddtp-day-label ${DAY_STYLE_CLASS[this.dayOrder[2]]}\">${Lanauage.getWeeksMessage(this.dayOrder[2])}</td>\t\t\r\n <td class=\"ddtp-day-label ${DAY_STYLE_CLASS[this.dayOrder[3]]}\">${Lanauage.getWeeksMessage(this.dayOrder[3])}</td>\t\t\r\n <td class=\"ddtp-day-label ${DAY_STYLE_CLASS[this.dayOrder[4]]}\">${Lanauage.getWeeksMessage(this.dayOrder[4])}</td>\t\t\r\n <td class=\"ddtp-day-label ${DAY_STYLE_CLASS[this.dayOrder[5]]}\">${Lanauage.getWeeksMessage(this.dayOrder[5])}</td>\t\t\r\n <td class=\"ddtp-day-label ${DAY_STYLE_CLASS[this.dayOrder[6]]}\">${Lanauage.getWeeksMessage(this.dayOrder[6])}</td>\t\t\r\n </tr>\r\n </thead>\r\n <tbody class=\"ddtp-day-body\">\r\n </tbody>\r\n \r\n <tfoot class=\"ddtp-day-footer\">\r\n <td colspan=\"7\">\r\n <div style=\"text-align:center;margin-top: 5px;${this.options.enableTodayBtn ? \"\" : \"display:none;\"}\"><button type=\"button\" class=\"time-today\">${Lanauage.getMessage(\"today\")}</button></div>\r\n <div class=\"footer-tooltip\"></div>\r\n </td>\r\n </tfoot>\r\n </table>\r\n\r\n <div class=\"ddtp-times\">\r\n <div class=\"time-container\">\r\n <div class=\"ddtp-time\">\r\n <span>H: </span><input type=\"number\" class=\"ddtp-hour\" min=\"0\" max=\"23\">\r\n <input type=\"range\" min=\"0\" max=\"23\" class=\"ddtp-hour-range\">\r\n </div>\r\n <div class=\"ddtp-time\">\r\n <span>M: </span><input type=\"number\" class=\"ddtp-minute\" min=\"0\" max=\"59\">\r\n <input type=\"range\" min=\"0\" max=\"59\" class=\"ddtp-minute-range\">\r\n </div>\r\n </div>\r\n <div class=\"time-btn\">\r\n <button type=\"button\" class=\"time-select\">${Lanauage.getMessage(\"ok\")}</button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"ddtp-months\">\r\n </div>\r\n\r\n <div class=\"ddtp-years\">\r\n </div>\r\n </div>\r\n </div>`;\r\n\r\n this.datetimeElement.innerHTML = datetimeTemplate;\r\n }\r\n\r\n public refresh(beforeChangeDatepickerCheck?: boolean) {\r\n if (this._viewMode === DateViewMode.date || this._viewMode === DateViewMode.datetime) {\r\n this.dayDraw(beforeChangeDatepickerCheck);\r\n return;\r\n }\r\n\r\n if (this._viewMode === DateViewMode.month) {\r\n this.monthDraw(beforeChangeDatepickerCheck);\r\n return;\r\n }\r\n\r\n if (this._viewMode === DateViewMode.year) {\r\n this.yearDraw(beforeChangeDatepickerCheck);\r\n }\r\n }\r\n\r\n /**\r\n * \uB144 \uB2EC\uB825 \uADF8\uB9AC\uAE30\r\n */\r\n private yearDraw(beforeChangeDatepickerCheck?: boolean) {\r\n const currentYear = this.currentDate.format(\"YYYY\");\r\n\r\n if (beforeChangeDatepickerCheck !== false && this.initMode == DateViewMode.year) {\r\n this.beforeChangeDatepicker();\r\n return;\r\n }\r\n\r\n const startYear = +currentYear - 8;\r\n\r\n (this.datetimeElement.querySelector(\".ddtp-header-year\") as Element).textContent = `${startYear} ~ ${startYear + 15}`;\r\n\r\n const beforeDrawDateFlag = utils.isFunction(this.options.beforeDrawDate);\r\n const beforeDrawDateFn = beforeDrawDateFlag ? this.options.beforeDrawDate : false;\r\n\r\n const calHTML: string[] = [];\r\n for (let i = 0; i < 16; i++) {\r\n const year = startYear + i;\r\n\r\n const disabled = this.isYearDisabled(year);\r\n\r\n let addStylceClass = disabled ? \" disabled\" : \"\";\r\n\r\n let tooltip = \"\";\r\n if (beforeDrawDateFlag && beforeDrawDateFn) {\r\n const reval = beforeDrawDateFn({ mode: this._viewMode, date: year });\r\n addStylceClass += reval.style ? \" \" + reval.style : \"\";\r\n tooltip = reval.tooltip;\r\n tooltip = tooltip ? `title=\"${tooltip}\"` : \"\";\r\n }\r\n\r\n calHTML.push(`<div class=\"ddtp-year ${addStylceClass}\" data-year=\"${year}\" ${tooltip}>${year}</div>`);\r\n }\r\n (this.datetimeElement.querySelector(\".ddtp-years\") as Element).innerHTML = calHTML.join(\"\");\r\n\r\n if (this.initMode == DateViewMode.year) {\r\n this.afterChangeDatepicker();\r\n }\r\n\r\n this.datetimeElement.querySelectorAll(\".ddtp-year\")?.forEach((yearEle) => {\r\n yearEle.addEventListener(\"click\", (e: Event) => {\r\n const targetEle = e.target as Element;\r\n\r\n if (targetEle) {\r\n const year = targetEle.getAttribute(\"data-year\");\r\n\r\n if (year) {\r\n const numYear = +year;\r\n\r\n if (this.isYearDisabled(numYear)) {\r\n return;\r\n }\r\n\r\n if (this.initMode == DateViewMode.year) {\r\n if (this.isYearDisabled(numYear)) {\r\n return;\r\n }\r\n this.currentDate.setYear(numYear);\r\n this.dateChangeEvent(e);\r\n return;\r\n }\r\n\r\n this.currentDate.setYear(numYear);\r\n this.viewMode = this.initMode;\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * \uC6D4 \uB2EC\uB825 \uADF8\uB9AC\uAE30\r\n */\r\n private monthDraw(beforeChangeDatepickerCheck?: boolean) {\r\n if (beforeChangeDatepickerCheck !== false && this.initMode == DateViewMode.month) {\r\n this.beforeChangeDatepicker();\r\n return;\r\n }\r\n\r\n const year = this.currentDate.format(\"YYYY\");\r\n (this.datetimeElement.querySelector(\".ddtp-header-year\") as Element).textContent = `${year}`;\r\n\r\n const monthElements = this.datetimeElement.querySelectorAll(\".ddtp-months > .ddtp-month\");\r\n\r\n if (monthElements.length > 0) {\r\n if (this.isYearDisabled(+year)) {\r\n monthElements.forEach((monthEle) => {\r\n if (!monthEle.classList.contains(\"disabled\")) {\r\n monthEle.classList.add(\"disabled\");\r\n }\r\n });\r\n return;\r\n }\r\n\r\n monthElements.forEach((monthEle, idx) => {\r\n if (this.isMonthDisabled(+year, idx)) {\r\n if (!monthEle.classList.contains(\"disabled\")) {\r\n monthEle.classList.add(\"disabled\");\r\n }\r\n } else {\r\n monthEle.classList.remove(\"disabled\");\r\n }\r\n });\r\n\r\n if (this.initMode == DateViewMode.month) {\r\n this.afterChangeDatepicker();\r\n }\r\n\r\n return;\r\n }\r\n\r\n (this.datetimeElement.querySelector(\".ddtp-header-month\") as Element).textContent = this.currentDate.format(\"MMMM\");\r\n\r\n const beforeDrawDateFlag = utils.isFunction(this.options.beforeDrawDate);\r\n const beforeDrawDateFn = beforeDrawDateFlag ? this.options.beforeDrawDate : false;\r\n\r\n const calHTML: string[] = [];\r\n for (let i = 0; i < 12; i++) {\r\n const disabled = this.isMonthDisabled(+year, i);\r\n\r\n let addStylceClass = disabled ? \" disabled\" : \"\";\r\n let tooltip = \"\";\r\n if (beforeDrawDateFlag && beforeDrawDateFn) {\r\n const reval = beforeDrawDateFn({ mode: this._viewMode, date: year + \"/\" + (i + 1) });\r\n addStylceClass += reval.style ? \" \" + reval.style : \"\";\r\n tooltip = reval.tooltip;\r\n tooltip = tooltip ? `title=\"${tooltip}\"` : \"\";\r\n }\r\n\r\n calHTML.push(`<div class=\"ddtp-month ${addStylceClass}\" data-month=\"${i}\" ${tooltip}>${Lanauage.getMonthsMessage(i, \"abbr\")}</div>`);\r\n }\r\n (this.datetimeElement.querySelector(\".ddtp-months\") as Element).innerHTML = calHTML.join(\"\");\r\n\r\n if (this.initMode == DateViewMode.month) {\r\n this.afterChangeDatepicker();\r\n }\r\n\r\n this.datetimeElement.querySelectorAll(\".ddtp-month\")?.forEach((monthEle) => {\r\n monthEle.addEventListener(\"click\", (e: Event) => {\r\n const targetEle = e.target as Element;\r\n\r\n if (targetEle) {\r\n const month = targetEle.getAttribute(\"data-month\");\r\n\r\n if (month) {\r\n if (this.isMonthDisabled(this.currentDate.getYear(), +month)) {\r\n return false;\r\n }\r\n\r\n if (this.initMode == DateViewMode.month) {\r\n this.currentDate.setMonth(+month);\r\n this.dateChangeEvent(e);\r\n return;\r\n }\r\n this.currentDate.setMonth(+month);\r\n this.viewMode = this.initMode;\r\n this.dayDraw();\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * \uB0A0\uC9DC \uADF8\uB9AC\uAE30\r\n */\r\n private dayDraw(beforeChangeDatepickerCheck?: boolean) {\r\n if (beforeChangeDatepickerCheck !== false && (this.initMode == DateViewMode.date || this.initMode == DateViewMode.datetime)) {\r\n this.beforeChangeDatepicker();\r\n return;\r\n }\r\n\r\n let monthFirstDate = this.currentDate.clone();\r\n const currentMonth = monthFirstDate.getMonth();\r\n monthFirstDate.setDate(1);\r\n\r\n (this.datetimeElement.querySelector(\".ddtp-header-year\") as Element).textContent = monthFirstDate.format(\"YYYY\");\r\n (this.datetimeElement.querySelector(\".ddtp-header-month\") as Element).textContent = monthFirstDate.format(\"MMMM\");\r\n\r\n let day = monthFirstDate.getDay();\r\n\r\n day = day - this.dayOrder[0];\r\n\r\n if (day >= 0) {\r\n monthFirstDate.addDate(-day);\r\n } else {\r\n monthFirstDate.addDate(-(7 + day));\r\n }\r\n\r\n const beforeDrawDateFlag = utils.isFunction(this.options.beforeDrawDate);\r\n const beforeDrawDateFn = beforeDrawDateFlag ? this.options.beforeDrawDate : false;\r\n\r\n const calHTML = [];\r\n for (let i = 0; i < 42; i++) {\r\n let dateItem;\r\n if (i == 0) {\r\n dateItem = monthFirstDate;\r\n } else {\r\n dateItem = monthFirstDate.clone().addDate(i);\r\n }\r\n\r\n const dateItemFormat = dateItem.format(DEFAULT_FORMAT.date);\r\n\r\n if (i % 7 == 0) {\r\n calHTML.push((i == 0 ? \"\" : \"</tr>\") + \"<tr>\");\r\n }\r\n\r\n let disabled = this.isDayDisabled(dateItem);\r\n\r\n let addStylceClass = DAY_STYLE_CLASS[this.dayOrder[i % 7]];\r\n const dateItemMonth = dateItem.getMonth();\r\n\r\n if (dateItemMonth != currentMonth) {\r\n if (dateItemMonth < currentMonth) {\r\n addStylceClass += dateItemMonth == 1 ? \" new\" : \" old\";\r\n } else {\r\n addStylceClass += currentMonth == 1 && dateItemMonth == 12 ? \" old\" : \" new\";\r\n }\r\n }\r\n\r\n addStylceClass += this.todayDate == dateItemFormat ? \" today\" : \"\";\r\n addStylceClass += disabled ? \" disabled\" : \"\";\r\n\r\n let tooltip = \"\";\r\n if (beforeDrawDateFlag && beforeDrawDateFn) {\r\n const reval = beforeDrawDateFn({ mode: this._viewMode, item: dateItem, date: dateItem.format(this.dateFormat) });\r\n addStylceClass += reval.style ? \" \" + reval.style : \"\";\r\n\r\n addStylceClass += reval.check ? \" event\" : \"\";\r\n tooltip = reval.tooltip;\r\n tooltip = tooltip ? `title=\"${tooltip}\"` : \"\";\r\n }\r\n\r\n calHTML.push(`<td class=\"ddtp-day ${addStylceClass}\" data-day=\"${dateItem.format(\"M,D\")}\" ${tooltip}>`);\r\n calHTML.push(`<span>${dateItem.format(\"d\")}</span>`);\r\n calHTML.push(\"</td>\");\r\n }\r\n\r\n calHTML.push(\"</tr>\");\r\n\r\n (this.datetimeElement.querySelector(\".ddtp-day-body\") as Element).innerHTML = calHTML.join(\"\");\r\n\r\n if (this.initMode == DateViewMode.date || this.initMode == DateViewMode.datetime) {\r\n this.afterChangeDatepicker();\r\n }\r\n }\r\n\r\n private isDayDisabled(dateItem: DaraDate) {\r\n if ((this.minDate != -1 && this.minDate > dateItem.getTime()) || (this.maxDate != -1 && this.maxDate < dateItem.getTime())) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private isYearDisabled(year: number) {\r\n if ((this.minYear != -1 && this.minYear > year) || (this.maxYear != -1 && this.maxYear < year)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private isMonthDisabled(year: number, month: number) {\r\n if (this.isYearDisabled(year)) {\r\n return true;\r\n }\r\n\r\n let yearMonth = +(year + utils.pad(month, 2));\r\n\r\n if ((this.minMonth != -1 && this.minMonth > yearMonth) || (this.maxMonth != -1 && this.maxMonth < yearMonth)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public static setMessage(message: Message) {\r\n Lanauage.setDefaultMessage(message);\r\n }\r\n}\r\n\r\nfunction getDocSize() {\r\n return {\r\n clientHeight: Math.max(document.documentElement.clientHeight, window.innerHeight || 0),\r\n clientWidth: Math.max(document.documentElement.clientWidth, window.innerWidth || 0),\r\n };\r\n}\r\n", "@charset \"UTF-8\";\n.daracl-datetime-hidden {\n visibility: visible;\n width: 0px;\n height: 0px;\n z-index: 1000;\n}\n\n.daracl-datetime-wrapper {\n --color: #34495e;\n --light: #ffffff;\n --success: #0abf30;\n --error: #e24d4c;\n --warning: #e9bd0c;\n --info: #3498db;\n --background-color: #ffffff;\n --sunday: #f00d0d;\n --border-color: #d3d2d2;\n --select-background-color: #0abf30;\n --button-hover-color: #d4d4d48a;\n --disabled-background-color: #f1f1f18a;\n --today-bg: #a9d5ff;\n}\n\nbody.dark .daracl-datetime-wrapper,\n.daracl-datetime-wrapper.dark {\n --color: #d0d6e1;\n --light: #ffffff;\n --success: #0abf30;\n --error: #e24d4c;\n --warning: #e9bd0c;\n --info: #3498db;\n --background-color: #070d19;\n --sunday: #f00d0d;\n --border-color: #6e7380;\n --today-bg: #5660d9;\n --today-color: #5660d9;\n --select-background-color: #ffffff;\n --button-hover-color: #31316c;\n --disabled-background-color: #818181;\n}\n\n.daracl-datetime-wrapper {\n z-index: 1000;\n display: none;\n}\n.daracl-datetime-wrapper *,\n.daracl-datetime-wrapper *::before,\n.daracl-datetime-wrapper *::after {\n box-sizing: content-box;\n color: var(--color);\n}\n.daracl-datetime-wrapper.layer {\n position: absolute;\n}\n.daracl-datetime-wrapper input {\n background-color: transparent;\n}\n.daracl-datetime-wrapper.show {\n display: block;\n animation: fadeIn 0.5s;\n animation-fill-mode: forwards;\n}\n.daracl-datetime-wrapper.hide {\n animation: fadeOut 0.5s;\n animation-fill-mode: forwards;\n}\n.daracl-datetime-wrapper.embed {\n display: block;\n}\n.daracl-datetime-wrapper .sun > span {\n color: var(--sunday);\n}\n.daracl-datetime-wrapper .ddtp-datetime {\n border-radius: 4px;\n padding: 10px;\n width: 235px;\n background-color: var(--background-color);\n color: var(--color);\n box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12);\n}\n.daracl-datetime-wrapper .ddtp-datetime.rtl {\n direction: rtl;\n}\n.daracl-datetime-wrapper .ddtp-datetime.rtl .ddtp-header .ddtp-header-year,\n.daracl-datetime-wrapper .ddtp-datetime.rtl .ddtp-header .ddtp-header-month {\n float: right;\n}\n.daracl-datetime-wrapper .ddtp-datetime.rtl .ddtp-header .ddtp-date-move {\n float: left;\n}\n.daracl-datetime-wrapper .ddtp-datetime.rtl .ddtp-body .ddtp-times .time-container {\n display: block;\n}\n.daracl-datetime-wrapper .ddtp-datetime.rtl .ddtp-body .ddtp-times > .time-btn {\n left: 0px;\n right: auto;\n}\n.daracl-datetime-wrapper .ddtp-datetime[view-mode=date] .ddtp-body > .ddtp-days {\n display: block;\n}\n.daracl-datetime-wrapper .ddtp-datetime[view-mode=datetime] .ddtp-body > .ddtp-times,\n.daracl-datetime-wrapper .ddtp-datetime[view-mode=datetime] .ddtp-body > .ddtp-days {\n display: block;\n}\n.daracl-datetime-wrapper .ddtp-datetime[view-mode=time] .ddtp-body > .ddtp-times {\n display: block;\n}\n.daracl-datetime-wrapper .ddtp-datetime[view-mode=time] .ddtp-header {\n display: none;\n}\n.daracl-datetime-wrapper .ddtp-datetime[view-mode=year] .ddtp-body > .ddtp-years {\n display: flex;\n}\n.daracl-datetime-wrapper .ddtp-datetime[view-mode=year] .ddtp-header-month {\n display: none;\n}\n.daracl-datetime-wrapper .ddtp-datetime[view-mode=month] .ddtp-body > .ddtp-months {\n display: flex;\n}\n.daracl-datetime-wrapper .ddtp-datetime[view-mode=month] .ddtp-header-month {\n display: none;\n}\n.daracl-datetime-wrapper .ddtp-header {\n padding: 2px 5px 10px;\n line-height: 25px;\n height: 25px;\n vertical-align: middle;\n}\n.daracl-datetime-wrapper .ddtp-header .ddtp-header-year {\n font-weight: bold;\n margin: 0px 10px 0px 0px;\n cursor: pointer;\n}\n.daracl-datetime-wrapper .ddtp-header .ddtp-header-month {\n font-weight: bold;\n margin: 0px 10px 0px 0px;\n vertical-align: top;\n cursor: pointer;\n}\n.daracl-datetime-wrapper .ddtp-header .ddtp-date-move {\n margin-left: auto;\n vertical-align: top;\n float: right;\n direction: ltr;\n}\n.daracl-datetime-wrapper .ddtp-header .ddtp-date-move .ddtp-move-btn {\n text-decoration: none;\n font-weight: bold;\n display: inline-block;\n height: 24px;\n}\n.daracl-datetime-wrapper .ddtp-header .ddtp-date-move .ddtp-move-btn > svg {\n fill: var(--color);\n}\n.daracl-datetime-wrapper .ddtp-header .ddtp-date-move .ddtp-move-btn:hover {\n background-color: var(--button-hover-color);\n}\n.daracl-datetime-wrapper .ddtp-header .ddtp-date-move::after {\n content: \"\";\n clear: both;\n}\n.daracl-datetime-wrapper .ddtp-body {\n margin: -2px -10px;\n font-size: 13px;\n}\n.daracl-datetime-wrapper .ddtp-body > * {\n display: none;\n}\n.daracl-datetime-wrapper .ddtp-body button {\n display: block;\n width: 100%;\n margin-bottom: 7px;\n padding: 3px 0px;\n border-radius: 4px;\n border-color: var(--border-color);\n border-width: 1px;\n border-style: solid;\n background-color: var(--background-color);\n}\n.daracl-datetime-wrapper .ddtp-body button:hover {\n background-color: var(--button-hover-color);\n}\n.daracl-datetime-wrapper .ddtp-body .time-today:hover {\n background-color: var(--button-hover-color);\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-days {\n letter-spacing: 0px;\n border-collapse: separate;\n border-spacing: 0px;\n margin: 2px 10px;\n width: inherit;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-days .ddtp-day-label {\n font-weight: bold;\n width: 35px;\n padding: 2px 5px;\n text-align: center;\n line-height: initial;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-days .ddtp-day {\n position: relative;\n text-align: center;\n padding: 7px;\n cursor: pointer;\n line-height: initial;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-days .ddtp-day.event::after {\n content: \"\u2022\";\n color: #f78536;\n font-size: 1.4em;\n position: absolute;\n left: 2px;\n z-index: 10;\n top: -7px;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-days .ddtp-day:before {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n display: block;\n width: 30px;\n height: 30px;\n background-color: var(--select-background-color);\n border-radius: 50%;\n opacity: 0;\n z-index: 0;\n transition: opacity 0.2s ease-in;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-days .ddtp-day:active:before, .daracl-datetime-wrapper .ddtp-body .ddtp-days .ddtp-day:hover:before {\n opacity: 0.7;\n transition: opacity 0.2s ease-out;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-days .ddtp-day.today > span {\n z-index: 2;\n position: relative;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-days .ddtp-day.today:before {\n background-color: var(--today-bg);\n z-index: 1;\n opacity: 1;\n transition: opacity 0.2s ease-out;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-days .ddtp-day.select:before {\n background-color: var(--select-background-color);\n opacity: 0.5;\n transition: opacity 0.2s ease-out;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-days .ddtp-day.old, .daracl-datetime-wrapper .ddtp-body .ddtp-days .ddtp-day.new {\n opacity: 0.5;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-days .ddtp-day.disabled {\n background-color: var(--disabled-background-color);\n opacity: 0.5;\n cursor: auto;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-days .ddtp-day.disabled:before {\n background-color: transparent;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-times {\n margin: 2px 15px;\n position: relative;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-times > .time-container {\n width: calc(100% - 60px);\n display: inline-block;\n height: 60px;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-times input[type=number] {\n -moz-appearance: textfield;\n appearance: textfield;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-times input[type=number]::-webkit-inner-spin-button, .daracl-datetime-wrapper .ddtp-body .ddtp-times input[type=number]::-webkit-outer-spin-button {\n -webkit-appearance: none;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-times > .time-btn {\n position: absolute;\n top: 9px;\n width: 55px;\n right: 0px;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-times > .time-btn > .time-select {\n height: 40px;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-times .ddtp-time {\n display: table-row;\n width: 160px;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-times .ddtp-time > * {\n margin-top: 5px;\n display: table-cell;\n line-height: 20px;\n vertical-align: middle;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-times .ddtp-time > span {\n width: 20px;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-times .ddtp-time > input[type=number] {\n width: 45px;\n margin-right: 5px;\n padding-left: 0px;\n border-radius: 4px;\n border-color: var(--border-color);\n border-width: 1px;\n text-align: center;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-times .ddtp-time > input[type=range] {\n width: calc(100% - 60px);\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-months {\n flex-direction: row;\n flex-wrap: wrap;\n justify-content: space-between;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-months > .ddtp-month {\n position: relative;\n flex: 1 0 30%;\n margin-bottom: 8px;\n line-height: 50px;\n text-align: center;\n cursor: pointer;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-months > .ddtp-month:before {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n display: block;\n width: 50px;\n height: 50px;\n background-color: var(--select-background-color);\n border-radius: 50%;\n opacity: 0;\n z-index: 0;\n transition: opacity 0.2s ease-in;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-months > .ddtp-month:active:before, .daracl-datetime-wrapper .ddtp-body .ddtp-months > .ddtp-month:hover:before {\n opacity: 0.5;\n transition: opacity 0.2s ease-out;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-months > .ddtp-month.disabled {\n background-color: var(--disabled-background-color);\n opacity: 0.5;\n cursor: auto;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-months > .ddtp-month.disabled:before {\n background-color: transparent;\n}\n.daracl-datetime-wrapper .ddtp-years {\n flex-direction: row;\n flex-wrap: wrap;\n justify-content: space-between;\n}\n.daracl-datetime-wrapper .ddtp-years > .ddtp-year {\n position: relative;\n flex: 1 0 25%;\n margin-bottom: 8px;\n line-height: 50px;\n text-align: center;\n cursor: pointer;\n}\n.daracl-datetime-wrapper .ddtp-years > .ddtp-year:before {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n display: block;\n width: 50px;\n height: 50px;\n background-color: var(--select-background-color);\n border-radius: 50%;\n opacity: 0;\n z-index: 0;\n transition: opacity 0.2s ease-in;\n}\n.daracl-datetime-wrapper .ddtp-years > .ddtp-year:active:before, .daracl-datetime-wrapper .ddtp-years > .ddtp-year:hover:before {\n opacity: 0.5;\n transition: opacity 0.2s ease-out;\n}\n.daracl-datetime-wrapper .ddtp-years > .ddtp-year.disabled {\n background-color: var(--disabled-background-color);\n opacity: 0.5;\n cursor: auto;\n}\n.daracl-datetime-wrapper .ddtp-years > .ddtp-year.disabled:before {\n background-color: transparent;\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes fadeOut {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VSb290IjoiRDpcXDAzLm9wZW5zb3VyY2VzXFxkYXJhLWRhdGV0aW1lcGlja2VyXFxzdHlsZSIsInNvdXJjZXMiOlsiZGFyYWNsLmRhdGV0aW1lcGlja2VyLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUdGO0FBQUE7RUFFRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7O0FBRUE7QUFBQTtBQUFBO0VBR0U7RUFDQTs7QUFHRjtFQUNFOztBQUdGO0VBQ0U7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBOztBQUlGO0VBQ0U7O0FBSUE7RUFDRTs7QUFJSjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFOztBQUdFO0FBQUE7RUFFRTs7QUFHRjtFQUNFOztBQUtGO0VBQ0U7O0FBRUY7RUFDRTtFQUNBOztBQUtOO0VBQ0U7O0FBSUE7QUFBQTtFQUVFOztBQUtGO0VBQ0U7O0FBR0Y7RUFDRTs7QUFLRjtFQUNFOztBQUdGO0VBQ0U7O0FBS0Y7RUFDRTs7QUFHRjtFQUNFOztBQUtOO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTtFQUNBO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTs7QUFHRjtFQUNFOztBQUlKO0VBQ0U7RUFDQTs7QUFLTjtFQUNFO0VBQ0E7O0FBRUE7RUFDRTs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFOztBQUtGO0VBQ0U7O0FBSUo7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUdGO0VBRUU7RUFDQTs7QUFJQTtFQUNFO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTs7QUFJSjtFQUNFO0VBQ0E7RUFDQTs7QUFHRjtFQUVFOztBQUdGO0VBQ0U7RUFDQTtFQUNBOztBQUVBO0VBQ0U7O0FBTVI7RUFDRTtFQUNBOztBQUVBO0VBQ0U7RUFDQTtFQUNBOztBQUdGO0VBQ0U7RUFDQTs7QUFFQTtFQUVFOztBQUlKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7O0FBQ0E7RUFDRTs7QUFJSjtFQUNFO0VBQ0E7O0FBRUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTs7QUFHRjtFQUNFOztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBR0Y7RUFDRTs7QUFLTjtFQUNFO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUdGO0VBRUU7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7RUFDQTs7QUFFQTtFQUNFOztBQU9WO0VBQ0U7RUFDQTtFQUNBOztBQUVBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBR0Y7RUFFRTtFQUNBOztBQUdGO0VBQ0U7RUFDQTtFQUNBOztBQUVBO0VBQ0U7OztBQU9WO0VBQ0U7SUFDRTs7RUFHRjtJQUNFOzs7QUFJSjtFQUNFO0lBQ0U7O0VBR0Y7SUFDRSIsInNvdXJjZXNDb250ZW50IjpbIi5kYXJhY2wtZGF0ZXRpbWUtaGlkZGVuIHtcclxuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xyXG4gIHdpZHRoOiAwcHg7XHJcbiAgaGVpZ2h0OiAwcHg7XHJcbiAgei1pbmRleDogMTAwMDtcclxufVxyXG5cclxuLmRhcmFjbC1kYXRldGltZS13cmFwcGVyIHtcclxuICAtLWNvbG9yOiAjMzQ0OTVlO1xyXG4gIC0tbGlnaHQ6ICNmZmZmZmY7XHJcbiAgLS1zdWNjZXNzOiAjMGFiZjMwO1xyXG4gIC0tZXJyb3I6ICNlMjRkNGM7XHJcbiAgLS13YXJuaW5nOiAjZTliZDBjO1xyXG4gIC0taW5mbzogIzM0OThkYjtcclxuICAtLWJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XHJcbiAgLS1zdW5kYXk6ICNmMDBkMGQ7XHJcbiAgLS1ib3JkZXItY29sb3I6ICNkM2QyZDI7XHJcbiAgLS1zZWxlY3QtYmFja2dyb3VuZC1jb2xvcjogIzBhYmYzMDtcclxuICAtLWJ1dHRvbi1ob3Zlci1jb2xvcjogI2Q0ZDRkNDhhO1xyXG4gIC0tZGlzYWJsZWQtYmFja2dyb3VuZC1jb2xvcjogI2YxZjFmMThhO1xyXG4gIC0tdG9kYXktYmc6ICNhOWQ1ZmY7XHJcbn1cclxuXHJcbmJvZHkuZGFyayAuZGFyYWNsLWRhdGV0aW1lLXdyYXBwZXIsXHJcbi5kYXJhY2wtZGF0ZXRpbWUtd3JhcHBlci5kYXJrIHtcclxuICAtLWNvbG9yOiAjZDBkNmUxO1xyXG4gIC0tbGlnaHQ6ICNmZmZmZmY7XHJcbiAgLS1zdWNjZXNzOiAjMGFiZjMwO1xyXG4gIC0tZXJyb3I6ICNlMjRkNGM7XHJcbiAgLS13YXJuaW5nOiAjZTliZDBjO1xyXG4gIC0taW5mbzogIzM0OThkYjtcclxuICAtLWJhY2tncm91bmQtY29sb3I6ICMwNzBkMTk7XHJcbiAgLS1zdW5kYXk6ICNmMDBkMGQ7XHJcbiAgLS1ib3JkZXItY29sb3I6ICM2ZTczODA7XHJcbiAgLS10b2RheS1iZzogIzU2NjBkOTtcclxuICAtLXRvZGF5LWNvbG9yOiAjNTY2MGQ5O1xyXG4gIC0tc2VsZWN0LWJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XHJcbiAgLS1idXR0b24taG92ZXItY29sb3I6ICMzMTMxNmM7XHJcbiAgLS1kaXNhYmxlZC1iYWNrZ3JvdW5kLWNvbG9yOiAjODE4MTgxO1xyXG59XHJcblxyXG4uZGFyYWNsLWRhdGV0aW1lLXdyYXBwZXIge1xyXG4gIHotaW5kZXg6IDEwMDA7XHJcbiAgZGlzcGxheTogbm9uZTtcclxuXHJcbiAgKixcclxuICAqOjpiZWZvcmUsXHJcbiAgKjo6YWZ0ZXIge1xyXG4gICAgYm94LXNpemluZzogY29udGVudC1ib3g7XHJcbiAgICBjb2xvcjogdmFyKC0tY29sb3IpO1xyXG4gIH1cclxuXHJcbiAgJi5sYXllciB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgfVxyXG5cclxuICBpbnB1dCB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuICB9XHJcblxyXG4gICYuc2hvdyB7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIGFuaW1hdGlvbjogZmFkZUluIDAuNXM7XHJcbiAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBmb3J3YXJkcztcclxuICB9XHJcblxyXG4gICYuaGlkZSB7XHJcbiAgICBhbmltYXRpb246IGZhZGVPdXQgMC41cztcclxuICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzO1xyXG4gICAgLy9hbmltYXRpb246IGRhcmFUb2FzdEhpZGUgMC4zcyBlYXNlIGZvcndhcmRzO1xyXG4gIH1cclxuXHJcbiAgJi5lbWJlZCB7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICB9XHJcblxyXG4gIC5zdW4ge1xyXG4gICAgJiA+IHNwYW4ge1xyXG4gICAgICBjb2xvcjogdmFyKC0tc3VuZGF5KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5kZHRwLWRhdGV0aW1lIHtcclxuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICAgIHBhZGRpbmc6IDEwcHg7XHJcbiAgICB3aWR0aDogMjM1cHg7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1iYWNrZ3JvdW5kLWNvbG9yKTtcclxuICAgIGNvbG9yOiB2YXIoLS1jb2xvcik7XHJcbiAgICBib3gtc2hhZG93OiAwcHggNXB4IDVweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDhweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggM3B4IDE0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XHJcblxyXG4gICAgJi5ydGwge1xyXG4gICAgICBkaXJlY3Rpb246IHJ0bDtcclxuXHJcbiAgICAgIC5kZHRwLWhlYWRlciB7XHJcbiAgICAgICAgLmRkdHAtaGVhZGVyLXllYXIsXHJcbiAgICAgICAgLmRkdHAtaGVhZGVyLW1vbnRoIHtcclxuICAgICAgICAgIGZsb2F0OiByaWdodDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5kZHRwLWRhdGUtbW92ZSB7XHJcbiAgICAgICAgICBmbG9hdDogbGVmdDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5kZHRwLWJvZHkgLmRkdHAtdGltZXMge1xyXG4gICAgICAgIC50aW1lLWNvbnRhaW5lciB7XHJcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICB9XHJcbiAgICAgICAgJiA+IC50aW1lLWJ0biB7XHJcbiAgICAgICAgICBsZWZ0OiAwcHg7XHJcbiAgICAgICAgICByaWdodDogYXV0bztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAmW3ZpZXctbW9kZT1cImRhdGVcIl0gLmRkdHAtYm9keSA+IC5kZHRwLWRheXMge1xyXG4gICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIH1cclxuXHJcbiAgICAmW3ZpZXctbW9kZT1cImRhdGV0aW1lXCJdIHtcclxuICAgICAgLmRkdHAtYm9keSA+IC5kZHRwLXRpbWVzLFxyXG4gICAgICAuZGR0cC1ib2R5ID4gLmRkdHAtZGF5cyB7XHJcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAmW3ZpZXctbW9kZT1cInRpbWVcIl0ge1xyXG4gICAgICAuZGR0cC1ib2R5ID4gLmRkdHAtdGltZXMge1xyXG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAuZGR0cC1oZWFkZXIge1xyXG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAmW3ZpZXctbW9kZT1cInllYXJcIl0ge1xyXG4gICAgICAuZGR0cC1ib2R5ID4gLmRkdHAteWVhcnMge1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5kZHRwLWhlYWRlci1tb250aCB7XHJcbiAgICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICZbdmlldy1tb2RlPVwibW9udGhcIl0ge1xyXG4gICAgICAuZGR0cC1ib2R5ID4gLmRkdHAtbW9udGhzIHtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAuZGR0cC1oZWFkZXItbW9udGgge1xyXG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5kZHRwLWhlYWRlciB7XHJcbiAgICBwYWRkaW5nOiAycHggNXB4IDEwcHg7XHJcbiAgICBsaW5lLWhlaWdodDogMjVweDtcclxuICAgIGhlaWdodDogMjVweDtcclxuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcblxyXG4gICAgLmRkdHAtaGVhZGVyLXllYXIge1xyXG4gICAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgICAgbWFyZ2luOiAwcHggMTBweCAwcHggMHB4O1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICB9XHJcblxyXG4gICAgLmRkdHAtaGVhZGVyLW1vbnRoIHtcclxuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgIG1hcmdpbjogMHB4IDEwcHggMHB4IDBweDtcclxuICAgICAgdmVydGljYWwtYWxpZ246IHRvcDtcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgfVxyXG5cclxuICAgIC5kZHRwLWRhdGUtbW92ZSB7XHJcbiAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xyXG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xyXG4gICAgICBmbG9hdDogcmlnaHQ7XHJcbiAgICAgIGRpcmVjdGlvbjogbHRyO1xyXG5cclxuICAgICAgLmRkdHAtbW92ZS1idG4ge1xyXG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgICAgaGVpZ2h0OiAyNHB4O1xyXG5cclxuICAgICAgICA+IHN2ZyB7XHJcbiAgICAgICAgICBmaWxsOiB2YXIoLS1jb2xvcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmOmhvdmVyIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ob3Zlci1jb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmOjphZnRlciB7XHJcbiAgICAgICAgY29udGVudDogXCJcIjtcclxuICAgICAgICBjbGVhcjogYm90aDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmRkdHAtYm9keSB7XHJcbiAgICBtYXJnaW46IC0ycHggLTEwcHg7XHJcbiAgICBmb250LXNpemU6IDEzcHg7XHJcblxyXG4gICAgPiAqIHtcclxuICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgIH1cclxuXHJcbiAgICBidXR0b24ge1xyXG4gICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDdweDtcclxuICAgICAgcGFkZGluZzogM3B4IDBweDtcclxuICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gICAgICBib3JkZXItY29sb3I6IHZhcigtLWJvcmRlci1jb2xvcik7XHJcbiAgICAgIGJvcmRlci13aWR0aDogMXB4O1xyXG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1iYWNrZ3JvdW5kLWNvbG9yKTtcclxuXHJcbiAgICAgICY6aG92ZXIge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ob3Zlci1jb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAudGltZS10b2RheSB7XHJcbiAgICAgICY6aG92ZXIge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ob3Zlci1jb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuZGR0cC1kYXlzIHtcclxuICAgICAgbGV0dGVyLXNwYWNpbmc6IDBweDtcclxuICAgICAgYm9yZGVyLWNvbGxhcHNlOiBzZXBhcmF0ZTtcclxuICAgICAgYm9yZGVyLXNwYWNpbmc6IDBweDtcclxuICAgICAgbWFyZ2luOiAycHggMTBweDtcclxuICAgICAgd2lkdGg6IGluaGVyaXQ7XHJcblxyXG4gICAgICAuZGR0cC1kYXktbGFiZWwge1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgICAgIHdpZHRoOiAzNXB4O1xyXG4gICAgICAgIHBhZGRpbmc6IDJweCA1cHg7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICAgIGxpbmUtaGVpZ2h0OiBpbml0aWFsO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAuZGR0cC1kYXkge1xyXG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgICAgcGFkZGluZzogN3B4O1xyXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgICBsaW5lLWhlaWdodDogaW5pdGlhbDtcclxuXHJcbiAgICAgICAgJi5ldmVudDo6YWZ0ZXIge1xyXG4gICAgICAgICAgY29udGVudDogXCLigKJcIjtcclxuICAgICAgICAgIGNvbG9yOiAjZjc4NTM2O1xyXG4gICAgICAgICAgZm9udC1zaXplOiAxLjRlbTtcclxuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICAgIGxlZnQ6IDJweDtcclxuICAgICAgICAgIHotaW5kZXg6IDEwO1xyXG4gICAgICAgICAgdG9wOiAtN3B4O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJjpiZWZvcmUge1xyXG4gICAgICAgICAgY29udGVudDogXCJcIjtcclxuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICAgIHRvcDogNTAlO1xyXG4gICAgICAgICAgbGVmdDogNTAlO1xyXG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XHJcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICAgIHdpZHRoOiAzMHB4O1xyXG4gICAgICAgICAgaGVpZ2h0OiAzMHB4O1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2VsZWN0LWJhY2tncm91bmQtY29sb3IpO1xyXG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gICAgICAgICAgb3BhY2l0eTogMDtcclxuICAgICAgICAgIHotaW5kZXg6IDA7XHJcbiAgICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgZWFzZS1pbjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICY6YWN0aXZlOmJlZm9yZSxcclxuICAgICAgICAmOmhvdmVyOmJlZm9yZSB7XHJcbiAgICAgICAgICBvcGFjaXR5OiAwLjc7XHJcbiAgICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgZWFzZS1vdXQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmLnRvZGF5IHtcclxuICAgICAgICAgID4gc3BhbiB7XHJcbiAgICAgICAgICAgIHotaW5kZXg6IDI7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAmOmJlZm9yZSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRvZGF5LWJnKTtcclxuICAgICAgICAgICAgei1pbmRleDogMTtcclxuICAgICAgICAgICAgb3BhY2l0eTogMTtcclxuICAgICAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGVhc2Utb3V0O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi5zZWxlY3Q6YmVmb3JlIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXNlbGVjdC1iYWNrZ3JvdW5kLWNvbG9yKTtcclxuICAgICAgICAgIG9wYWNpdHk6IDAuNTtcclxuICAgICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycyBlYXNlLW91dDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYub2xkLFxyXG4gICAgICAgICYubmV3IHtcclxuICAgICAgICAgIG9wYWNpdHk6IDAuNTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYuZGlzYWJsZWQge1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZGlzYWJsZWQtYmFja2dyb3VuZC1jb2xvcik7XHJcbiAgICAgICAgICBvcGFjaXR5OiAwLjU7XHJcbiAgICAgICAgICBjdXJzb3I6IGF1dG87XHJcblxyXG4gICAgICAgICAgJjpiZWZvcmUge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuZGR0cC10aW1lcyB7XHJcbiAgICAgIG1hcmdpbjogMnB4IDE1cHg7XHJcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHJcbiAgICAgID4gLnRpbWUtY29udGFpbmVyIHtcclxuICAgICAgICB3aWR0aDogY2FsYygxMDAlIC0gNjBweCk7XHJcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICAgIGhlaWdodDogNjBweDtcclxuICAgICAgfVxyXG5cclxuICAgICAgaW5wdXRbdHlwZT1cIm51bWJlclwiXSB7XHJcbiAgICAgICAgLW1vei1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7XHJcbiAgICAgICAgYXBwZWFyYW5jZTogdGV4dGZpZWxkO1xyXG5cclxuICAgICAgICAmOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxyXG4gICAgICAgICY6Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24ge1xyXG4gICAgICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgPiAudGltZS1idG4ge1xyXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICB0b3A6IDlweDtcclxuICAgICAgICB3aWR0aDogNTVweDtcclxuICAgICAgICByaWdodDogMHB4O1xyXG4gICAgICAgID4gLnRpbWUtc2VsZWN0IHtcclxuICAgICAgICAgIGhlaWdodDogNDBweDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5kZHRwLXRpbWUge1xyXG4gICAgICAgIGRpc3BsYXk6IHRhYmxlLXJvdztcclxuICAgICAgICB3aWR0aDogMTYwcHg7XHJcblxyXG4gICAgICAgID4gKiB7XHJcbiAgICAgICAgICBtYXJnaW4tdG9wOiA1cHg7XHJcbiAgICAgICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xyXG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDIwcHg7XHJcbiAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgPiBzcGFuIHtcclxuICAgICAgICAgIHdpZHRoOiAyMHB4O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgPiBpbnB1dFt0eXBlPVwibnVtYmVyXCJdIHtcclxuICAgICAgICAgIHdpZHRoOiA0NXB4O1xyXG4gICAgICAgICAgbWFyZ2luLXJpZ2h0OiA1cHg7XHJcbiAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDBweDtcclxuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tYm9yZGVyLWNvbG9yKTtcclxuICAgICAgICAgIGJvcmRlci13aWR0aDogMXB4O1xyXG4gICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgPiBpbnB1dFt0eXBlPVwicmFuZ2VcIl0ge1xyXG4gICAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDYwcHgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5kZHRwLW1vbnRocyB7XHJcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XHJcbiAgICAgIGZsZXgtd3JhcDogd3JhcDtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG5cclxuICAgICAgPiAuZGR0cC1tb250aCB7XHJcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgIGZsZXg6IDEgMCAzMCU7XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4O1xyXG4gICAgICAgIGxpbmUtaGVpZ2h0OiA1MHB4O1xyXG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcblxyXG4gICAgICAgICY6YmVmb3JlIHtcclxuICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XHJcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgICB0b3A6IDUwJTtcclxuICAgICAgICAgIGxlZnQ6IDUwJTtcclxuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xyXG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgICB3aWR0aDogNTBweDtcclxuICAgICAgICAgIGhlaWdodDogNTBweDtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXNlbGVjdC1iYWNrZ3JvdW5kLWNvbG9yKTtcclxuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuICAgICAgICAgIG9wYWNpdHk6IDA7XHJcbiAgICAgICAgICB6LWluZGV4OiAwO1xyXG4gICAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGVhc2UtaW47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmOmFjdGl2ZTpiZWZvcmUsXHJcbiAgICAgICAgJjpob3ZlcjpiZWZvcmUge1xyXG4gICAgICAgICAgb3BhY2l0eTogMC41O1xyXG4gICAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGVhc2Utb3V0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi5kaXNhYmxlZCB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1kaXNhYmxlZC1iYWNrZ3JvdW5kLWNvbG9yKTtcclxuICAgICAgICAgIG9wYWNpdHk6IDAuNTtcclxuICAgICAgICAgIGN1cnNvcjogYXV0bztcclxuXHJcbiAgICAgICAgICAmOmJlZm9yZSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmRkdHAteWVhcnMge1xyXG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcclxuICAgIGZsZXgtd3JhcDogd3JhcDtcclxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuXHJcbiAgICA+IC5kZHRwLXllYXIge1xyXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgIGZsZXg6IDEgMCAyNSU7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDhweDtcclxuICAgICAgbGluZS1oZWlnaHQ6IDUwcHg7XHJcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG5cclxuICAgICAgJjpiZWZvcmUge1xyXG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XHJcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgIHRvcDogNTAlO1xyXG4gICAgICAgIGxlZnQ6IDUwJTtcclxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcclxuICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICB3aWR0aDogNTBweDtcclxuICAgICAgICBoZWlnaHQ6IDUwcHg7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2VsZWN0LWJhY2tncm91bmQtY29sb3IpO1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuICAgICAgICBvcGFjaXR5OiAwO1xyXG4gICAgICAgIHotaW5kZXg6IDA7XHJcbiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGVhc2UtaW47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICY6YWN0aXZlOmJlZm9yZSxcclxuICAgICAgJjpob3ZlcjpiZWZvcmUge1xyXG4gICAgICAgIG9wYWNpdHk6IDAuNTtcclxuICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgZWFzZS1vdXQ7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICYuZGlzYWJsZWQge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWRpc2FibGVkLWJhY2tncm91bmQtY29sb3IpO1xyXG4gICAgICAgIG9wYWNpdHk6IDAuNTtcclxuICAgICAgICBjdXJzb3I6IGF1dG87XHJcblxyXG4gICAgICAgICY6YmVmb3JlIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuQGtleWZyYW1lcyBmYWRlSW4ge1xyXG4gIGZyb20ge1xyXG4gICAgb3BhY2l0eTogMDtcclxuICB9XHJcblxyXG4gIHRvIHtcclxuICAgIG9wYWNpdHk6IDE7XHJcbiAgfVxyXG59XHJcblxyXG5Aa2V5ZnJhbWVzIGZhZGVPdXQge1xyXG4gIGZyb20ge1xyXG4gICAgb3BhY2l0eTogMTtcclxuICB9XHJcblxyXG4gIHRvIHtcclxuICAgIG9wYWNpdHk6IDA7XHJcbiAgfVxyXG59XHJcbiJdfQ== */", "import DaraDateTimePicker from \"./DateTimePicker\";\r\n\r\nimport \"../style/daracl.datetimepicker.scss\";\r\n\r\nexport = DaraDateTimePicker;\r\n", "import { FormField } from \"@t/FormField\";\r\nimport Render from \"./Render\";\r\nimport { stringValidator } from \"src/rule/stringValidator\";\r\nimport { resetRowElementStyleClass, invalidMessage } from \"src/util/validUtils\";\r\nimport DaraForm from \"src/DaraForm\";\r\nimport DateTimePicker from \"@daracl/datetimepicker\";\r\n\r\nimport * as utils from \"src/util/utils\";\r\n\r\nexport default class DateRender extends Render {\r\n private element: HTMLInputElement;\r\n private dateObj: any;\r\n\r\n constructor(field: FormField, rowElement: HTMLElement, daraForm: DaraForm) {\r\n super(daraForm, field, rowElement);\r\n\r\n this.mounted();\r\n this.setDefaultOption();\r\n this.setDefaultInfo();\r\n }\r\n\r\n mounted() {\r\n let dateOnSelectEvent: any;\r\n this.field.customOptions = Object.assign({}, this.field.customOptions);\r\n if (typeof this.field.customOptions.onSelect !== \"undefined\") {\r\n dateOnSelectEvent = typeof this.field.customOptions.onSelect;\r\n }\r\n\r\n if (utils.isUndefined(this.field.customOptions.mode)) {\r\n if (this.field.renderType == \"datemonth\" || this.field.renderType == \"datehour\") {\r\n this.field.customOptions.mode = this.field.renderType.replace(\"date\", \"\");\r\n } else {\r\n this.field.customOptions.mode = this.field.renderType;\r\n }\r\n }\r\n\r\n this.field.customOptions.onSelect = (dt: any, e: Event) => {\r\n if (dateOnSelectEvent) {\r\n dateOnSelectEvent.call(null, dt, e);\r\n }\r\n\r\n this.setValue(dt);\r\n\r\n this.valid();\r\n };\r\n\r\n this.dateObj = new DateTimePicker(this.element, this.field.customOptions, {} as any);\r\n }\r\n\r\n createField() {\r\n const field = this.field;\r\n\r\n const fieldContainerElement = this.rowElement.querySelector(\".df-field-container\") as HTMLElement;\r\n\r\n fieldContainerElement.innerHTML = `\r\n <div class=\"df-field\">\r\n <input type=\"text\" name=\"${field.$xssName}\" class=\"form-field text help-icon\" autocomplete=\"off\" readonly/>\r\n </div>\r\n ${Render.getDescriptionTemplate(field)}\r\n <div class=\"help-message\"></div>\r\n `;\r\n\r\n this.element = fieldContainerElement.querySelector(`[name=\"${field.$xssName}\"]`) as HTMLInputElement;\r\n }\r\n\r\n getValue() {\r\n return this.element.value;\r\n }\r\n\r\n setValue(value: any, changeCheckFlag?: boolean): void {\r\n if (changeCheckFlag !== false && this.changeEventCall(this.field, null, this, value) === false) {\r\n this.element.value = this.field.$value;\r\n return;\r\n }\r\n\r\n this.field.$value = value;\r\n this.element.value = value;\r\n }\r\n\r\n reset() {\r\n this.setDefaultInfo();\r\n this.setDisabled(false);\r\n resetRowElementStyleClass(this.rowElement);\r\n }\r\n\r\n getElement(): HTMLInputElement {\r\n return this.element;\r\n }\r\n\r\n valid(): any {\r\n const validResult = stringValidator(this.getValue(), this.field);\r\n\r\n invalidMessage(this.field, this.rowElement, validResult);\r\n\r\n return validResult;\r\n }\r\n}\r\n", "import { FieldStyle, FormField } from \"@t/FormField\";\r\nimport * as utils from \"./utils\";\r\nimport { FIELD_POSITION_STYLE, ALIGN } from \"src/constants\";\r\nimport { FormOptions } from \"@t/FormOptions\";\r\n\r\nexport default {\r\n /**\r\n * field style \uCC98\uB9AC\r\n *\r\n * @param formOptions FormOptions\r\n * @param field FormField\r\n * @param beforeField FormField\r\n * @returns FieldStyle\r\n */\r\n fieldStyle(formOptions: FormOptions, field: FormField, beforeField?: FormField | null, isLabelHide?: boolean): FieldStyle {\r\n const fieldStyle = {\r\n rowStyleClass: field.orientation === \"horizontal\" ? \"horizontal\" : \"vertical\",\r\n fieldClass: \"\",\r\n fieldStyle: \"\",\r\n labelClass: \"\",\r\n labelStyle: \"\",\r\n labelAlignClass: \"\",\r\n valueClass: \"\",\r\n valueStyle: \"\",\r\n tabAlignClass: \"\",\r\n };\r\n\r\n const defaultLabelWidth = beforeField?.style?.labelWidth ?? formOptions.style.labelWidth ?? \"3\";\r\n let defaultValueWidth = beforeField?.style?.valueWidth ?? formOptions.style.valueWidth ?? \"9\";\r\n const position = beforeField?.style?.position ?? formOptions.style.position;\r\n\r\n const width = field.style?.width;\r\n const positionArr = FIELD_POSITION_STYLE[field.style?.position] ?? FIELD_POSITION_STYLE[position] ?? FIELD_POSITION_STYLE.top;\r\n\r\n fieldStyle.fieldClass = `${positionArr[0]} ${field.style?.customClass || \"\"}`;\r\n if (width) {\r\n if (utils.isNumber(width)) {\r\n fieldStyle.fieldClass += utils.isNumber(width) ? ` col-xs-${width}` : \"\";\r\n } else {\r\n fieldStyle.fieldStyle = utils.isNumber(width) ? \"\" : `width:${width};`;\r\n }\r\n }\r\n\r\n fieldStyle.tabAlignClass = \"tab-al-\" + ([\"right\", \"center\"].includes(field.style?.tabAlign) ? field.style.tabAlign : \"left\");\r\n\r\n const labelWidth = field.style?.labelWidth || defaultLabelWidth;\r\n fieldStyle.labelAlignClass = positionArr[1];\r\n\r\n if (!isLabelHide && labelWidth && ![\"top\", \"bottom\"].includes(positionArr[0])) {\r\n if (utils.isNumber(labelWidth)) {\r\n const labelWidthValue = +labelWidth;\r\n defaultValueWidth = 12 - labelWidthValue;\r\n fieldStyle.labelClass = `col-xs-${labelWidthValue}`;\r\n fieldStyle.valueClass = fieldStyle.labelStyle ? \"col-full\" : `col-xs-${defaultValueWidth}`;\r\n } else {\r\n fieldStyle.labelStyle = `width:${labelWidth};`;\r\n }\r\n }\r\n\r\n const valueWidth = field.style?.valueWidth || defaultValueWidth;\r\n if (isLabelHide && ![\"left\", \"right\"].includes(positionArr[0])) {\r\n fieldStyle.valueClass = \"col-full\";\r\n } else {\r\n if (valueWidth && ![\"top\", \"bottom\"].includes(positionArr[0])) {\r\n if (utils.isNumber(valueWidth)) {\r\n fieldStyle.valueClass = fieldStyle.labelStyle ? \"col-full\" : `col-xs-${valueWidth}`;\r\n } else {\r\n fieldStyle.valueStyle = `width:${valueWidth};`;\r\n }\r\n } else {\r\n fieldStyle.valueClass = fieldStyle.labelStyle ? \"col-full\" : \"\";\r\n }\r\n }\r\n\r\n fieldStyle.fieldClass = spaceReplace(fieldStyle.fieldClass);\r\n fieldStyle.labelClass = spaceReplace(fieldStyle.labelClass);\r\n fieldStyle.valueClass = spaceReplace(fieldStyle.valueClass);\r\n\r\n return fieldStyle;\r\n },\r\n};\r\n\r\nfunction spaceReplace(str: string): string {\r\n return str.replace(/\\s+/g, \" \").trim();\r\n}\r\n", "import { FieldStyle, FormField } from \"@t/FormField\";\r\nimport Render from \"./Render\";\r\nimport { invalidMessage } from \"src/util/validUtils\";\r\nimport { stringValidator } from \"src/rule/stringValidator\";\r\nimport DaraForm from \"src/DaraForm\";\r\nimport FormTemplate from \"src/FormTemplate\";\r\nimport styleUtils from \"src/util/styleUtils\";\r\nimport { FormOptions } from \"@t/FormOptions\";\r\nimport * as utils from \"src/util/utils\";\r\n\r\nexport default class TabRender extends Render {\r\n private customFunction;\r\n private tabContainerElement: HTMLElement;\r\n constructor(field: FormField, rowElement: HTMLElement, daraForm: DaraForm) {\r\n super(daraForm, field, rowElement);\r\n\r\n if (field.renderer) {\r\n this.customFunction = field.renderer;\r\n } else {\r\n this.customFunction = {} as any;\r\n }\r\n\r\n this.mounted();\r\n }\r\n\r\n mounted() {\r\n if (this.customFunction.mounted) {\r\n (this.customFunction.mounted as any).call(this, this.field, this.rowElement);\r\n }\r\n\r\n this.tabContainerElement.querySelectorAll(\".tab-item\").forEach((tabItem) => {\r\n tabItem.addEventListener(\"click\", (e: any) => {\r\n this.clickEventHandler(tabItem, e);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * tab item click\r\n *\r\n * @param {Element} tabItem\r\n * @param {*} evt\r\n */\r\n private clickEventHandler(tabItem: Element, evt: any) {\r\n this.setActive(tabItem.getAttribute(\"data-tab-id\") ?? \"\");\r\n }\r\n\r\n public setActive(tabId: string): void {\r\n const tabItem = this.tabContainerElement.querySelector(`[data-tab-id=\"${tabId}\"]`);\r\n\r\n if (!tabItem) return;\r\n\r\n if (!tabItem.classList.contains(\"active\")) {\r\n for (let item of tabItem?.parentElement?.children ?? []) {\r\n item.classList.remove(\"active\");\r\n }\r\n tabItem.classList.add(\"active\");\r\n }\r\n\r\n const tabPanel = this.rowElement.querySelector(`[tab-panel-id=\"${tabId}\"]`);\r\n\r\n if (!tabPanel?.classList.contains(\"active\")) {\r\n for (let item of tabPanel?.parentElement?.children ?? []) {\r\n item.classList.remove(\"active\");\r\n }\r\n\r\n tabPanel?.classList.add(\"active\");\r\n }\r\n }\r\n\r\n static isDataRender(): boolean {\r\n return false;\r\n }\r\n\r\n static isChildrenCreate(): boolean {\r\n return false;\r\n }\r\n\r\n /**\r\n * tab template\r\n *\r\n * @param {FormField} field\r\n * @param {FormTemplate} formTemplate\r\n * @param {FormOptions} options\r\n * @returns {string} template string\r\n */\r\n\r\n createField() {\r\n const field = this.field;\r\n\r\n const formTemplate = this.daraForm.formTemplate;\r\n const options = this.daraForm.getOptions();\r\n\r\n const fieldContainerElement = this.rowElement.querySelector(\".df-field-container\") as HTMLElement;\r\n\r\n //tab \uC774\uBCA4\uD2B8 \uCC98\uB9AC \uD560\uAC83.\r\n let fieldStyle = styleUtils.fieldStyle(options, field);\r\n\r\n fieldContainerElement.innerHTML = `\r\n <div class=\"df-field \">\r\n <div class=\"tab-header ${fieldStyle.tabAlignClass}\"></div>\r\n </div>\r\n <div class=\"df-tab-body\"></div>\r\n `;\r\n\r\n if (field.children) {\r\n let firstFlag = true;\r\n\r\n const formOptions = this.getForm().getOptions();\r\n\r\n let fieldStyle: FieldStyle = styleUtils.fieldStyle(formOptions, field, null, formTemplate.isLabelHide(field));\r\n\r\n for (const childField of field.children) {\r\n childField.$parent = field;\r\n formTemplate.addRowFieldInfo(childField);\r\n let id = childField.$key;\r\n\r\n let tabTemplate = `<span class=\"tab-item ${firstFlag ? \"active\" : \"\"}\" data-tab-id=\"${id}\"><a href=\"javascript:;\">${childField.label}</a></span>`;\r\n\r\n let tabBodyTemplate = `<div class=\"tab-panel ${firstFlag ? \"active\" : \"\"}\" tab-panel-id=\"${id}\">${Render.getDescriptionTemplate(childField)}\r\n <div class=\"tab-group\"></div>\r\n </div>`;\r\n\r\n const tabElement = utils.templateToElement(tabTemplate);\r\n const tabBodyElement = utils.templateToElement(tabBodyTemplate);\r\n\r\n firstFlag = false;\r\n if (tabElement) {\r\n fieldContainerElement.querySelector(\".tab-header\")?.appendChild(tabElement);\r\n }\r\n\r\n if (tabBodyElement) {\r\n fieldContainerElement.querySelector(\".df-tab-body\")?.appendChild(tabBodyElement);\r\n\r\n if (childField.children) {\r\n let tabFormOptions = {\r\n style: {\r\n width: formOptions.style.width ?? \"100%\",\r\n labelWidth: formOptions.style.labelWidth ?? 3,\r\n valueWidth: formOptions.style.valueWidth ?? 9,\r\n position: formOptions.style.position ?? \"left-right\",\r\n },\r\n useTypeValue: formOptions.useTypeValue,\r\n autoCreate: false,\r\n notValidMessage: \"This form is not valid.\",\r\n fields: [],\r\n } as FormOptions;\r\n\r\n childField.$tabForm = new DaraForm(document.createElement(\"div\"), tabFormOptions);\r\n\r\n childField.$instance = new (childField.$renderType as any)(childField, tabBodyElement?.querySelector(\".tab-group\"), childField.$tabForm);\r\n\r\n childField.$tabForm.formTemplate.childTemplate(childField, fieldStyle);\r\n }\r\n }\r\n }\r\n\r\n this.tabContainerElement = fieldContainerElement;\r\n }\r\n }\r\n\r\n getValue(): any {\r\n if (this.customFunction.getValue) {\r\n return (this.customFunction.getValue as any).call(this, this.field, this.rowElement);\r\n }\r\n\r\n let allTabValue = {} as any;\r\n\r\n let useTypeValue = this.getForm().getOptions().useTypeValue;\r\n\r\n for (const childField of this.field.children) {\r\n const childFieldValue = childField.$tabForm?.getValue(false);\r\n if (useTypeValue) {\r\n allTabValue[childField.$validName] = childFieldValue;\r\n } else {\r\n for (let [key, value] of Object.entries(childFieldValue)) {\r\n allTabValue[key] = value;\r\n }\r\n }\r\n }\r\n return allTabValue;\r\n }\r\n\r\n setValue(value: any): void {\r\n for (const childField of this.field.children) {\r\n let tabChildValue = value[childField.$validName];\r\n\r\n if (tabChildValue) {\r\n childField.$tabForm?.setValue(tabChildValue);\r\n }\r\n }\r\n }\r\n\r\n reset() {}\r\n\r\n getElement(): Element {\r\n return this.rowElement;\r\n }\r\n\r\n valid(): any {\r\n if (this.customFunction.valid) {\r\n const validResult = (this.customFunction.valid as any).call(this, this.field, this.rowElement);\r\n\r\n invalidMessage(this.field, this.rowElement, validResult);\r\n\r\n return;\r\n }\r\n\r\n const field = this.field;\r\n\r\n for (const childField of field.children) {\r\n const validResult = childField.$tabForm?.validForm();\r\n\r\n if (validResult && validResult.length > 0) {\r\n const firstItem = validResult[0];\r\n\r\n if (firstItem.message) {\r\n firstItem.message = \"[\" + this.field.label + \"] \" + firstItem.message;\r\n\r\n return firstItem;\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n focus(): void {}\r\n}\r\n", "import { FieldStyle, FormField } from \"@t/FormField\";\r\nimport Render from \"./Render\";\r\nimport { invalidMessage, resetRowElementStyleClass } from \"src/util/validUtils\";\r\nimport DaraForm from \"src/DaraForm\";\r\nimport * as utils from \"src/util/utils\";\r\nimport { stringValidator } from \"src/rule/stringValidator\";\r\nimport styleUtils from \"src/util/styleUtils\";\r\nimport FormTemplate from \"src/FormTemplate\";\r\nimport { FormOptions } from \"@t/FormOptions\";\r\nimport { NumberKeyMap } from \"@t/DataMap\";\r\n\r\nlet $$idx = 0;\r\n\r\nexport default class GridRender extends Render {\r\n private customFunction;\r\n private gridForm;\r\n private allAddRowInfo = {} as NumberKeyMap;\r\n\r\n constructor(field: FormField, rowElement: HTMLElement, daraForm: DaraForm) {\r\n super(daraForm, field, rowElement);\r\n\r\n if (field.renderer) {\r\n this.customFunction = field.renderer;\r\n } else {\r\n this.customFunction = {} as any;\r\n }\r\n\r\n const gridFormOptions = {\r\n style: {\r\n width: \"100%\",\r\n labelWidth: 3,\r\n valueWidth: 9,\r\n position: \"left-right\",\r\n },\r\n autoCreate: false,\r\n notValidMessage: \"This form is not valid.\",\r\n fields: [],\r\n } as FormOptions;\r\n\r\n this.gridForm = new DaraForm(document.createElement(\"div\"), gridFormOptions);\r\n\r\n this.mounted();\r\n this.setDefaultOption();\r\n this.setDefaultInfo();\r\n }\r\n\r\n mounted() {\r\n this.addRow();\r\n\r\n if (this.customFunction.mounted) {\r\n (this.customFunction.mounted as any).call(this, this.field, this.rowElement);\r\n }\r\n\r\n this.rowElement.querySelector(\".df-grid-add-row-btn\")?.addEventListener(\"click\", (evt) => {\r\n this.addRow();\r\n });\r\n }\r\n\r\n static isDataRender(): boolean {\r\n return false;\r\n }\r\n\r\n static isChildrenCreate(): boolean {\r\n return false;\r\n }\r\n\r\n createField() {\r\n const field = this.field;\r\n\r\n const fieldContainerElement = this.rowElement.querySelector(\".df-field-container\") as HTMLElement;\r\n\r\n let theadTemplate = [];\r\n let colgroupTemplate = [];\r\n let addBtnTemplate = [];\r\n addBtnTemplate.push(\"\");\r\n\r\n if (field.children) {\r\n colgroupTemplate.push(\"<colgroup>\");\r\n\r\n theadTemplate.push(\"<tr>\");\r\n\r\n colgroupTemplate.push(`<col style=\"width:38px\">`);\r\n theadTemplate.push(\"<th>\");\r\n if (field.gridOptions?.disableAddButton !== true) {\r\n theadTemplate.push(`<button type=\"button\" class=\"df-btn df-grid-add-row-btn\" title=\"Add\"><i class=\"df-icon df-add-icon\"></i></button>`);\r\n }\r\n theadTemplate.push(\"</th>\");\r\n\r\n for (const childField of field.children) {\r\n colgroupTemplate.push(`<col style=\"width:${childField.style?.width ?? \"*\"}\">`);\r\n theadTemplate.push(`<th class=\"df-grid-header\">${childField.label}</th>`);\r\n }\r\n colgroupTemplate.push(\"</colgroup>\");\r\n theadTemplate.push(\"</tr>\");\r\n }\r\n\r\n fieldContainerElement.innerHTML = `\r\n <div class=\"df-grid-field\">\r\n ${addBtnTemplate.join(\"\")}\r\n <div class=\"df-grid-container ${field.style?.position ?? \"\"}\" style=\"height:${field.gridOptions?.height ?? \"auto\"};\">\r\n <table class=\"df-grid\">${colgroupTemplate.join(\"\")}<thead>${theadTemplate.join(\"\")}</thead><tbody></tbody></table>\r\n </div>\r\n </div>\r\n `;\r\n }\r\n\r\n /**\r\n * add row\r\n */\r\n addRow(valueItem?: any): void {\r\n let rowTemplate = [];\r\n\r\n const options = this.daraForm.getOptions();\r\n const formTemplate = this.gridForm.formTemplate;\r\n const parentName = this.field.$xssName;\r\n\r\n ++$$idx;\r\n let addColumns = [];\r\n rowTemplate.push(`<tr class=\"grid-row\">`);\r\n\r\n rowTemplate.push(\"<td>\");\r\n if (this.field.gridOptions?.disableRemoveButton !== true) {\r\n rowTemplate.push(`<button type=\"button\" data-row-idx=\"${$$idx}\" class=\"df-btn df-grid-row-remove\"><i class=\"df-icon df-remove-icon\"></i></button>`);\r\n }\r\n rowTemplate.push(\"</td>\");\r\n\r\n for (const childField of this.field.children) {\r\n let fieldStyle: FieldStyle = styleUtils.fieldStyle(options, childField, null, true);\r\n\r\n let columnField = utils.merge({}, childField) as FormField;\r\n\r\n addColumns.push(columnField);\r\n columnField.$orgin = childField;\r\n columnField.name = columnField.name + \"_\" + $$idx;\r\n columnField.$xssName = parentName + \"_\" + utils.getXssFieldName(columnField);\r\n\r\n formTemplate.addRowFieldInfo(columnField);\r\n\r\n rowTemplate.push(`<td id=\"${columnField.$xssName}\"><div class=\"df-field-container ${columnField.required ? \"required\" : \"\"} \" style=\"${fieldStyle.valueStyle}\"></div></td>`);\r\n }\r\n rowTemplate.push(\"</tr>\");\r\n\r\n this.allAddRowInfo[$$idx] = addColumns;\r\n\r\n const addRowElement = utils.templateToElement(rowTemplate.join(\"\"));\r\n\r\n if (addRowElement) {\r\n this.rowElement.querySelector(\"tbody\")?.append(addRowElement);\r\n\r\n addRowElement.querySelector(\".df-grid-row-remove\")?.addEventListener(\"click\", (evt) => {\r\n this.removeRow(evt);\r\n });\r\n }\r\n\r\n valueItem = valueItem ?? {};\r\n for (let columnField of addColumns) {\r\n columnField.$instance = new (columnField.$renderType as any)(columnField, addRowElement?.querySelector(`#${columnField.$xssName}`), this.gridForm);\r\n\r\n if (valueItem[columnField.$orgin.name]) {\r\n columnField.$instance.setValue(valueItem[columnField.$orgin.name]);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * remove row\r\n *\r\n * @param evt event\r\n */\r\n removeRow(evt: Event): void {\r\n const target = evt.target as Element;\r\n\r\n const rowElement = target.closest(\"tr\");\r\n\r\n if (rowElement) {\r\n if (rowElement.parentElement?.childElementCount == 1) return;\r\n\r\n let rowIdx = (evt.currentTarget as Element)?.getAttribute(\"data-row-idx\") || \"-1\";\r\n\r\n this.removeFieldInfo(rowIdx);\r\n rowElement.remove();\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * @param rowIdx row index\r\n */\r\n removeFieldInfo(rowIdx?: string) {\r\n let removeFieldArrs = [] as any;\r\n if (utils.isEmpty(rowIdx)) {\r\n for (let key in this.allAddRowInfo) {\r\n removeFieldArrs = removeFieldArrs.concat(this.allAddRowInfo[key]);\r\n }\r\n this.allAddRowInfo = {} as NumberKeyMap;\r\n } else if (rowIdx) {\r\n const rowIdxNum = parseInt(rowIdx, 10);\r\n removeFieldArrs = removeFieldArrs.concat(this.allAddRowInfo[rowIdxNum]);\r\n delete this.allAddRowInfo[rowIdxNum];\r\n }\r\n\r\n for (let columnField of removeFieldArrs) {\r\n this.gridForm.getFieldInfoMap().removeFieldInfo(columnField.name);\r\n }\r\n }\r\n\r\n allRemoveRow(): void {\r\n this.rowElement.querySelector(\"tbody\")?.replaceChildren();\r\n this.removeFieldInfo();\r\n }\r\n\r\n getValue() {\r\n if (this.customFunction.getValue) {\r\n return (this.customFunction.getValue as any).call(this, this.field, this.rowElement);\r\n }\r\n let result = [];\r\n const children = this.field.children;\r\n const childrenLength = children.length;\r\n for (let idx in this.allAddRowInfo) {\r\n const rowColumns = this.allAddRowInfo[idx];\r\n\r\n let rowInfo = {} as any;\r\n for (let childIdx = 0; childIdx < childrenLength; childIdx++) {\r\n let childField = children[childIdx];\r\n rowInfo[childField.name] = this.gridForm.getFieldValue(rowColumns[childIdx].name); // rowColumns[childIdx].$instance.getValue();\r\n }\r\n\r\n result.push(rowInfo);\r\n }\r\n return result;\r\n }\r\n\r\n setValue(value: any): void {\r\n this.field.$value = value;\r\n\r\n let valueArr: any[] = [];\r\n if (Array.isArray(value)) {\r\n valueArr = value;\r\n } else {\r\n if (utils.isPlainObject(value)) {\r\n valueArr.push(value);\r\n }\r\n }\r\n\r\n this.allRemoveRow();\r\n\r\n for (let valueItem of valueArr) {\r\n this.addRow(valueItem);\r\n }\r\n }\r\n\r\n reset() {\r\n this.setDefaultInfo();\r\n resetRowElementStyleClass(this.rowElement);\r\n }\r\n\r\n getElement() {\r\n if (this.customFunction.getElement) {\r\n return (this.customFunction.getElement as any).call(this, this.field, this.rowElement);\r\n }\r\n return null;\r\n }\r\n\r\n valid(): any {\r\n if (this.customFunction.valid) {\r\n const validResult = (this.customFunction.valid as any).call(this, this.field, this.rowElement);\r\n\r\n invalidMessage(this.field, this.rowElement, validResult);\r\n\r\n return;\r\n }\r\n\r\n const validResult = this.gridForm.validForm();\r\n\r\n if (validResult.length > 0) {\r\n const firstItem = validResult[0];\r\n\r\n if (firstItem.message) {\r\n firstItem.message = \"[\" + this.field.label + \"] \" + firstItem.message;\r\n\r\n return firstItem;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n focus(): void {}\r\n}\r\n", "import NumberRender from \"src/renderer/NumberRender\";\r\nimport TextAreaRender from \"src/renderer/TextAreaRender\";\r\nimport DropdownRender from \"src/renderer/DropdownRender\";\r\nimport TextRender from \"src/renderer/TextRender\";\r\nimport CheckboxRender from \"src/renderer/CheckboxRender\";\r\nimport RadioRender from \"src/renderer/RadioRender\";\r\nimport PasswordRender from \"src/renderer/PasswordRender\";\r\nimport FileRender from \"src/renderer/FileRender\";\r\nimport CustomRender from \"./renderer/CustomRender\";\r\nimport GroupRender from \"./renderer/GroupRender\";\r\nimport HiddenRender from \"./renderer/HiddenRender\";\r\nimport ButtonRender from \"./renderer/ButtonRender\";\r\nimport RangeRender from \"./renderer/RangeRender\";\r\nimport DateRender from \"./renderer/DateRender\";\r\nimport TabRender from \"./renderer/TabRender\";\r\nimport GridRender from \"./renderer/GridRender\";\r\n\r\nexport type FORM_MODE = \"new\" | \"modify\" | \"view\";\r\n\r\nexport const RULES = {\r\n NAN: \"nan\",\r\n MIN: \"minimum\",\r\n EXCLUSIVE_MIN: \"exclusiveMinimum\",\r\n MAX: \"maximum\",\r\n EXCLUSIVE_MAX: \"exclusiveMaximum\",\r\n MIN_LENGTH: \"minLength\",\r\n MAX_LENGTH: \"maxLength\",\r\n BETWEEN: \"between\",\r\n BETWEEN_EXCLUSIVE_MIN: \"betweenExclusiveMin\",\r\n BETWEEN_EXCLUSIVE_MAX: \"betweenExclusiveMax\",\r\n BETWEEN_EXCLUSIVE_MINMAX: \"betweenExclusiveMinMax\",\r\n REGEXP: \"regexp\",\r\n REQUIRED: \"required\",\r\n VALIDATOR: \"validator\",\r\n} as const;\r\n\r\nexport const FIELD_PREFIX = \"dff\"; // daracl form field\r\n\r\nexport const RENDER_TEMPLATE: any = {\r\n number: NumberRender,\r\n textarea: TextAreaRender,\r\n dropdown: DropdownRender,\r\n checkbox: CheckboxRender,\r\n radio: RadioRender,\r\n text: TextRender,\r\n password: PasswordRender,\r\n file: FileRender,\r\n custom: CustomRender,\r\n group: GroupRender,\r\n hidden: HiddenRender,\r\n button: ButtonRender,\r\n range: RangeRender,\r\n datehour: DateRender,\r\n datemonth: DateRender,\r\n date: DateRender,\r\n datetime: DateRender,\r\n tab: TabRender,\r\n grid: GridRender,\r\n};\r\n\r\nexport const ALIGN = {\r\n left: \"left\",\r\n center: \"center\",\r\n right: \"right\",\r\n} as const;\r\n\r\nexport type TEXT_ALIGN_TYPE = (typeof ALIGN)[keyof typeof ALIGN];\r\n\r\nexport type RENDER_TYPE = \"number\" | \"text\" | \"file\" | \"textarea\" | \"dropdown\" | \"radio\" | \"checkbox\" | \"date\" | \"datetime\" | \"dateyear\" | \"datemonth\" | \"datehour\" | \"group\" | \"custom\";\r\n\r\nexport type REGEXP_TYPE = \"email\" | \"url\" | \"alpha\" | \"alpha-num\";\r\n\r\nexport type PASSWORD_TYPE = \"number\" | \"upper\" | \"upper-special\" | \"upper-special-number\"; // \uC22B\uC790 | \uB300\uBB38\uC790 \uD3EC\uD568, \uB300\uBB38\uC790 \uD2B9\uC218\uBB38\uC790 \uD3EC\uD568, \uB300\uBB38\uC790 \uD2B9\uC218\uBB38\uC790 \uC22B\uC790\r\n\r\nexport type FIELD_POSITION = \"top\" | \"left\" | \"left-left\" | \"left-right\" | \"right\" | \"right-left\" | \"right-right\" | \"bottom\";\r\n\r\nexport type ORIENTATION_TYPE = \"horizontal\" | \"vertical\";\r\n\r\ninterface StringArrayMap {\r\n [key: string]: string[];\r\n}\r\n\r\nexport const FIELD_POSITION_STYLE: StringArrayMap = {\r\n \"top-left\": [\"top\", \"txt-left\"],\r\n \"top-center\": [\"top\", \"txt-center\"],\r\n \"top-right\": [\"top\", \"txt-right\"],\r\n \"left-left\": [\"\", \"txt-left\"],\r\n \"left-center\": [\"\", \"txt-center\"],\r\n \"left-right\": [\"\", \"txt-right\"],\r\n \"right-right\": [\"right\", \"txt-right\"],\r\n \"right-center\": [\"right\", \"txt-center\"],\r\n \"right-left\": [\"right\", \"txt-left\"],\r\n \"bottom-left\": [\"bottom\", \"txt-left\"],\r\n \"bottom-center\": [\"bottom\", \"txt-center\"],\r\n \"bottom-right\": [\"bottom\", \"txt-right\"],\r\n};\r\nFIELD_POSITION_STYLE[\"top\"] = FIELD_POSITION_STYLE[\"top-left\"];\r\nFIELD_POSITION_STYLE[\"right\"] = FIELD_POSITION_STYLE[\"right-right\"];\r\nFIELD_POSITION_STYLE[\"left\"] = FIELD_POSITION_STYLE[\"left-left\"];\r\nFIELD_POSITION_STYLE[\"bottom\"] = FIELD_POSITION_STYLE[\"bottom-left\"];\r\n", "import { Message } from \"@t/Message\";\r\nimport { FormField } from \"../types/FormField\";\r\nimport { ValidResult } from \"@t/ValidResult\";\r\nimport { RULES } from \"src/constants\";\r\n\r\nlet localeMessage: Message = {\r\n required: \"{label} \uD544\uC218 \uC785\uB825\uC0AC\uD56D\uC785\uB2C8\uB2E4.\",\r\n fileButton: \"\uD30C\uC77C\uCC3E\uAE30\",\r\n selection: \"\uC120\uD0DD\",\r\n string: {\r\n minLength: \"{minLength} \uAE00\uC790 \uC774\uC0C1\uC73C\uB85C \uC785\uB825\uD558\uC138\uC694.\",\r\n maxLength: \"{maxLength} \uAE00\uC790 \uC774\uD558\uB85C \uC785\uB825\uD558\uC138\uC694.\",\r\n between: \"{minLength} ~ {maxLength} \uC0AC\uC774\uC758 \uAE00\uC790\uB97C \uC785\uB825\uD558\uC138\uC694.\",\r\n },\r\n number: {\r\n nan: \"\uC22B\uC790\uB9CC \uC785\uB825 \uAC00\uB2A5 \uD569\uB2C8\uB2E4.\",\r\n minimum: \"{minimum} \uAC12\uACFC \uAC19\uAC70\uB098 \uCEE4\uC57C \uD569\uB2C8\uB2E4\",\r\n exclusiveMinimum: \"{minimum} \uBCF4\uB2E4 \uCEE4\uC57C \uD569\uB2C8\uB2E4\",\r\n maximum: \"{maximum} \uAC12\uACFC \uAC19\uAC70\uB098 \uC791\uC544\uC57C \uD569\uB2C8\uB2E4\",\r\n exclusiveMaximum: \"{maximum} \uBCF4\uB2E4 \uC791\uC544\uC57C \uD569\uB2C8\uB2E4.\",\r\n between: \"{minimum}~{maximum} \uC0AC\uC774\uC758 \uAC12\uC744 \uC785\uB825\uD558\uC138\uC694.\",\r\n betweenExclusiveMin: \"{minimum} \uBCF4\uB2E4 \uD06C\uACE0 {maximum} \uBCF4\uB2E4 \uAC19\uAC70\uB098 \uC791\uC544\uC57C \uD569\uB2C8\uB2E4\",\r\n betweenExclusiveMax: \"{minimum} \uBCF4\uB2E4 \uAC19\uAC70\uB098 \uD06C\uACE0 {maximum} \uBCF4\uB2E4 \uC791\uC544\uC57C \uD569\uB2C8\uB2E4\",\r\n betweenExclusiveMinMax: \"{minimum} \uBCF4\uB2E4 \uD06C\uACE0 {maximum} \uBCF4\uB2E4 \uC791\uC544\uC57C \uD569\uB2C8\uB2E4\",\r\n },\r\n regexp: {\r\n mobile: \"\uD578\uB4DC\uD3F0 \uBC88\uD638\uAC00 \uC720\uD6A8\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.\",\r\n email: \"\uC774\uBA54\uC77C\uC774 \uC720\uD6A8\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.\",\r\n url: \"URL\uC774 \uC720\uD6A8\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.\",\r\n alpha: \"\uC601\uBB38\uB9CC \uC785\uB825 \uAC00\uB2A5 \uD569\uB2C8\uB2E4.\",\r\n \"alpha-num\": \"\uC601\uBB38\uACFC \uC22B\uC790\uB9CC \uC785\uB825 \uAC00\uB2A5 \uD569\uB2C8\uB2E4.\",\r\n number: \"\uC22B\uC790\uB9CC \uC785\uB825 \uAC00\uB2A5 \uD569\uB2C8\uB2E4.\",\r\n variable: \"\uAC12\uC774 \uC720\uD6A8\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.\",\r\n \"number-char\": \"\uC22B\uC790, \uBB38\uC790 \uAC01\uAC01 \uD558\uB098 \uC774\uC0C1 \uD3EC\uD568 \uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4.\",\r\n \"upper-char\": \"\uB300\uBB38\uC790\uAC00 \uD558\uB098 \uC774\uC0C1 \uD3EC\uD568 \uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4.\",\r\n \"upper-char-special\": \"\uB300\uBB38\uC790,\uC18C\uBB38\uC790,\uD2B9\uC218\uBB38\uC790 \uAC01\uAC01 \uD558\uB098 \uC774\uC0C1 \uD3EC\uD568 \uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4.\",\r\n \"upper-char-special-number\": \"\uB300\uBB38\uC790,\uC18C\uBB38\uC790,\uD2B9\uC218\uBB38\uC790,\uC22B\uC790 \uAC01\uAC01 \uD558\uB098 \uC774\uC0C1 \uD3EC\uD568 \uB418\uC5B4\uC57C\uD569\uB2C8\uB2E4.\",\r\n },\r\n};\r\n\r\n/**\r\n * validation \uBA54\uC2DC\uC9C0 \uCC98\uB9AC.\r\n *\r\n * @class Language\r\n * @typedef {Language}\r\n */\r\nclass Language {\r\n private lang: Message = localeMessage;\r\n\r\n /**\r\n * \uB2E4\uAD6D\uC5B4 \uBA54\uC2DC\uC9C0 \uB4F1\uB85D\r\n *\r\n * @public\r\n * @param {?Message} [lang] \uB465\uB85D\uD560 \uBA54\uC2DC\uC9C0\r\n */\r\n public set(lang?: Message) {\r\n this.lang = Object.assign({}, localeMessage, lang);\r\n }\r\n\r\n /**\r\n * \uBA54\uC2DC\uC9C0 \uC5BB\uAE30\r\n *\r\n * @public\r\n * @param {string} messageKey \uBA54\uC2DC\uC9C0 \uD0A4\r\n * @returns {*}\r\n */\r\n public getMessage(messageKey: string): any {\r\n return (this.lang as any)[messageKey];\r\n }\r\n\r\n /**\r\n * ValidResult \uAC12\uC744 \uBA54\uC2DC\uC9C0\uB85C \uBCC0\uACBD.\r\n *\r\n * @public\r\n * @param {FormField} field\r\n * @param {ValidResult} validResult\r\n * @returns {string[]}\r\n */\r\n public validMessage(field: FormField, validResult: ValidResult): string[] {\r\n let messageFormat = \"\";\r\n\r\n let messageFormats: string[] = [];\r\n\r\n if (validResult.regexp) {\r\n messageFormat = (this.lang.regexp as any)[validResult.regexp];\r\n messageFormats.push(messageFormat);\r\n }\r\n\r\n (validResult.constraint ?? []).forEach((constraint) => {\r\n if (constraint === RULES.REQUIRED) {\r\n messageFormat = message(this.lang.required, field);\r\n messageFormats.push(messageFormat);\r\n }\r\n\r\n if (field.renderType == \"number\" || field.renderType == \"range\") {\r\n messageFormat = (this.lang.number as any)[constraint];\r\n messageFormats.push(messageFormat);\r\n } else {\r\n messageFormat = (this.lang.string as any)[constraint];\r\n messageFormats.push(messageFormat);\r\n }\r\n });\r\n\r\n const reMessage: string[] = [];\r\n\r\n const msgParam = Object.assign({}, { name: field.name, label: field.label }, field.rule);\r\n messageFormats.forEach((msgFormat) => {\r\n if (msgFormat) {\r\n reMessage.push(message(msgFormat, msgParam));\r\n }\r\n });\r\n\r\n if (validResult.validator) {\r\n reMessage.push(validResult.validator.message);\r\n }\r\n\r\n return reMessage;\r\n }\r\n}\r\n\r\nfunction message(msgFormat: string, msgParam: any): string {\r\n return msgFormat.replace(/\\{{1,1}([A-Za-z0-9_.]*)\\}{1,1}/g, (match, key) => {\r\n return typeof msgParam[key] !== \"undefined\" ? msgParam[key] : match;\r\n });\r\n}\r\n\r\nexport default new Language();\r\n", "import { FormField } from \"@t/FormField\";\r\n\r\nimport Render from \"../renderer/Render\";\r\nimport { RENDER_TEMPLATE } from \"../constants\";\r\nimport * as utils from \"./utils\";\r\n\r\nexport const getRenderer = (field: FormField): Render => {\r\n let render;\r\n if (field.renderType) {\r\n render = RENDER_TEMPLATE[field.renderType];\r\n }\r\n\r\n if (render && (render.isDataRender() === false || !utils.isUndefined(field.name))) {\r\n return render;\r\n }\r\n\r\n if (utils.isUndefined(field.name)) {\r\n if (field.children) {\r\n return RENDER_TEMPLATE[\"group\"];\r\n } else {\r\n return RENDER_TEMPLATE[\"hidden\"];\r\n }\r\n }\r\n\r\n return RENDER_TEMPLATE[\"text\"];\r\n};\r\n", "import { FIELD_PREFIX } from \"src/constants\";\r\nimport { FormField } from \"./types/FormField\";\r\nimport { ValidResult } from \"./types/ValidResult\";\r\nimport { getRenderer } from \"./util/renderFactory\";\r\nimport Lanauage from \"./util/Lanauage\";\r\nimport * as utils from \"./util/utils\";\r\nimport DaraForm from \"./DaraForm\";\r\n\r\ninterface NumberFieldMap {\r\n [key: string]: FormField;\r\n}\r\n\r\ninterface StringNumberMap {\r\n [key: string]: string;\r\n}\r\n\r\nexport default class FieldInfoMap {\r\n private fieldIdx = 0;\r\n\r\n private allFieldInfo: NumberFieldMap = {};\r\n\r\n private keyNameMap: StringNumberMap = {};\r\n\r\n private conditionFields: string[] = [];\r\n\r\n private fieldPrefix;\r\n\r\n private form;\r\n\r\n constructor(selector: string, form: DaraForm) {\r\n this.fieldPrefix = `${FIELD_PREFIX}_${utils.getHashCode(selector)}`;\r\n this.form = form;\r\n }\r\n\r\n /**\r\n * add Field \uC815\uBCF4\r\n *\r\n * @public\r\n * @param {FormField} field \uD3FC\uD544\uB4DC \uC815\uBCF4\r\n */\r\n public addField(field: FormField) {\r\n utils.replaceXssField(field);\r\n this.fieldIdx += 1;\r\n field.$key = `${this.fieldPrefix}_${this.fieldIdx}`;\r\n field.$validName = field.name ?? field.label;\r\n this.keyNameMap[field.$validName] = field.$key;\r\n this.allFieldInfo[field.$key] = field;\r\n field.$renderType = getRenderer(field);\r\n\r\n if (field.conditional) {\r\n this.conditionFields.push(field.$key);\r\n }\r\n }\r\n\r\n /**\r\n * \uD544\uB4DC\uBA85\uC73C\uB85C \uD544\uB4DC \uC815\uBD80 \uAD6C\uD558\uAE30\r\n *\r\n * @public\r\n * @param {string} fieldName \uD544\uB4DC\uBA85\r\n * @returns {FormField}\r\n */\r\n public getFieldName(fieldName: string): FormField {\r\n return this.allFieldInfo[this.keyNameMap[fieldName]];\r\n }\r\n\r\n /**\r\n * \uD544\uB4DC \uD0A4\uB85C \uC815\uBCF4 \uAD6C\uD558\uAE30\r\n *\r\n * @public\r\n * @param {string} fieldKey\r\n * @returns {FormField}\r\n */\r\n public get(fieldKey: string): FormField {\r\n return this.allFieldInfo[fieldKey];\r\n }\r\n\r\n /**\r\n * \uD544\uB4DC\uBA85 \uC788\uB294\uC9C0 \uC5EC\uBD80 \uCCB4\uD06C.\r\n *\r\n * @public\r\n * @param {string} fieldName \uD544\uB4DC\uBA85\r\n * @returns {boolean}\r\n */\r\n public hasFieldName(fieldName: string): boolean {\r\n if (this.keyNameMap[fieldName] && this.allFieldInfo[this.keyNameMap[fieldName]]) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * \uBAA8\uB4E0 \uD544\uB4DC \uC815\uBCF4\r\n *\r\n * @public\r\n * @returns {NumberFieldMap}\r\n */\r\n public getAllFieldInfo(): NumberFieldMap {\r\n return this.allFieldInfo;\r\n }\r\n\r\n /**\r\n * \uD544\uB4DC \uC815\uBCF4 \uB9F5\uC5D0\uC11C \uC9C0\uC6B0\uAE30\r\n *\r\n * @public\r\n * @param {string} fieldName\r\n */\r\n public removeFieldInfo(fieldName: string) {\r\n delete this.allFieldInfo[this.keyNameMap[fieldName]];\r\n }\r\n\r\n /**\r\n * \uBAA8\uB4E0 \uD544\uB4DC\uAC12 \uAD6C\uD558\uAE30\r\n *\r\n * @public\r\n * @param {boolean} validationCheck\r\n * @returns {*}\r\n */\r\n public getAllFieldValue(formValue: any, validationCheck: boolean) {\r\n const useTypeValue = this.form.getOptions().useTypeValue;\r\n\r\n if (validationCheck !== true) {\r\n for (let [key, fieldInfo] of Object.entries(this.allFieldInfo)) {\r\n formValue = addFormValue(formValue, fieldInfo, useTypeValue);\r\n }\r\n return formValue;\r\n }\r\n\r\n return new Promise((resolve, reject) => {\r\n for (let [key, fieldInfo] of Object.entries(this.allFieldInfo)) {\r\n if (!fieldInfo.$instance.isEnableView()) {\r\n continue;\r\n }\r\n\r\n let fieldValid = this.getFieldValidation(fieldInfo, true);\r\n\r\n if (fieldValid !== true) {\r\n reject(new Error(fieldValid.message, { cause: fieldValid }));\r\n return;\r\n }\r\n\r\n formValue = addFormValue(formValue, fieldInfo, useTypeValue);\r\n }\r\n\r\n resolve(formValue);\r\n });\r\n }\r\n\r\n public getFormDataValue(formValue: any, validationCheck: boolean) {\r\n if (validationCheck !== true) {\r\n let reval = new FormData();\r\n\r\n for (let [key, value] of Object.entries(formValue)) {\r\n reval.set(key, value as any);\r\n }\r\n\r\n for (let [key, fieldInfo] of Object.entries(this.allFieldInfo)) {\r\n addFieldFormData(reval, fieldInfo, fieldInfo.$instance.getValue());\r\n }\r\n\r\n return reval;\r\n }\r\n\r\n return new Promise((resolve, reject) => {\r\n let reval = new FormData();\r\n\r\n for (let [key, value] of Object.entries(formValue)) {\r\n reval.set(key, value as any);\r\n }\r\n\r\n for (let [key, fieldInfo] of Object.entries(this.allFieldInfo)) {\r\n if (!fieldInfo.$instance.isEnableView()) {\r\n continue;\r\n }\r\n\r\n let fieldValid = this.getFieldValidation(fieldInfo, true);\r\n\r\n if (fieldValid !== true) {\r\n reject(new Error(fieldValid.message, { cause: fieldValid }));\r\n return;\r\n }\r\n\r\n addFieldFormData(reval, fieldInfo, fieldInfo.$instance.getValue());\r\n }\r\n\r\n resolve(reval);\r\n });\r\n }\r\n\r\n /**\r\n *\r\n *\r\n * @param field\r\n * @returns\r\n */\r\n public isConditionFieldCheck(field: FormField) {\r\n let parent = field;\r\n\r\n while (typeof parent !== \"undefined\") {\r\n if (!this.isConditionField(parent)) {\r\n return false;\r\n }\r\n\r\n parent = parent.$parent;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * field \uD65C\uC131 \uBE44\uD65C\uC131\uD654 \uC5EC\uBD80.\r\n *\r\n * @param field form field\r\n * @returns\r\n */\r\n public isConditionField(field: FormField) {\r\n if (!this.conditionFields.includes(field.$key)) {\r\n return true;\r\n }\r\n\r\n let condFlag = false;\r\n\r\n if (field.conditional.custom) {\r\n condFlag = field.conditional.custom.call(null, field);\r\n } else {\r\n if (field.conditional.field) {\r\n const condField = this.getFieldName(field.conditional.field);\r\n\r\n if (condField) {\r\n if (field.conditional.eq == condField.$instance.getValue()) {\r\n condFlag = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return condFlag;\r\n }\r\n\r\n /**\r\n * \uCEEC\uB7FC \uB85C\uC6B0 \uBCF4\uC774\uACE0 \uC548\uBCF4\uC774\uAE30 \uCCB4\uD06C.\r\n *\r\n * @public\r\n */\r\n public conditionCheck() {\r\n this.conditionFields.forEach((fieldKey) => {\r\n const fieldInfo = this.allFieldInfo[fieldKey];\r\n\r\n let condFlag = this.isConditionField(fieldInfo);\r\n\r\n if (condFlag) {\r\n fieldInfo.$instance.show();\r\n } else {\r\n fieldInfo.$instance.hide();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * field validation check\r\n *\r\n * @param fieldInfo FormField\r\n * @returns boolean true or ValidResult\r\n */\r\n public getFieldValidation(fieldInfo: FormField, focusFlag: boolean | undefined) {\r\n if (!this.isConditionFieldCheck(fieldInfo)) {\r\n return true;\r\n }\r\n\r\n const renderInfo = fieldInfo.$instance;\r\n let fieldValid = renderInfo.valid();\r\n\r\n if (fieldValid === true) return true;\r\n\r\n if (focusFlag) {\r\n renderInfo.focus();\r\n }\r\n fieldValid = fieldValid as ValidResult;\r\n if (utils.isUndefined(fieldValid.message)) {\r\n fieldValid.message = Lanauage.validMessage(fieldInfo, fieldValid)[0];\r\n }\r\n\r\n return fieldValid;\r\n }\r\n}\r\n\r\n/**\r\n * add form value\r\n * @param formData {Object} return Object value\r\n * @param fieldInfo {FormField} field info\r\n * @param fieldValue {any} form value\r\n */\r\nfunction addFormValue(formData: any, fieldInfo: FormField, useTypeValue?: boolean) {\r\n if (utils.ignoreValueField(fieldInfo)) {\r\n return formData;\r\n }\r\n\r\n const fieldValue = fieldInfo.$instance.getValue();\r\n\r\n if (fieldInfo.renderType === \"file\") {\r\n const uploadFiles = fieldValue[\"uploadFile\"];\r\n\r\n formData[fieldInfo.$validName] = uploadFiles;\r\n formData[fieldInfo.$validName + \"RemoveIds\"] = fieldValue[\"removeIds\"];\r\n } else {\r\n if (useTypeValue !== true) {\r\n if (utils.isTabType(fieldInfo)) {\r\n for (let [key, value] of Object.entries(fieldValue)) {\r\n formData[key] = value;\r\n }\r\n } else {\r\n if (!utils.isEmpty(fieldInfo.name)) {\r\n formData[fieldInfo.name] = fieldValue;\r\n }\r\n }\r\n } else {\r\n formData[fieldInfo.$validName] = fieldValue;\r\n }\r\n }\r\n\r\n return formData;\r\n}\r\n\r\nfunction addFieldFormData(formData: FormData, fieldInfo: FormField, useTypeValue?: boolean) {\r\n if (utils.ignoreValueField(fieldInfo)) {\r\n return formData;\r\n }\r\n\r\n const fieldValue = fieldInfo.$instance.getValue();\r\n\r\n if (fieldInfo.renderType === \"file\") {\r\n const uploadFiles = fieldValue[\"uploadFile\"];\r\n formData.delete(fieldInfo.$validName);\r\n for (let uploadFile of uploadFiles) {\r\n formData.append(fieldInfo.$validName, uploadFile);\r\n }\r\n\r\n formData.set(fieldInfo.$validName + \"RemoveIds\", fieldValue[\"removeIds\"]);\r\n } else {\r\n if (useTypeValue !== true) {\r\n if (utils.isTabType(fieldInfo)) {\r\n for (let [key, value] of Object.entries(fieldValue)) {\r\n formData.set(key, value as any);\r\n }\r\n } else {\r\n if (!utils.isEmpty(fieldInfo.name)) {\r\n formData.set(fieldInfo.$validName, fieldValue);\r\n }\r\n }\r\n } else {\r\n formData.set(fieldInfo.$validName, fieldValue);\r\n }\r\n }\r\n\r\n return formData;\r\n}\r\n", "import { FormOptions } from \"@t/FormOptions\";\r\nimport { FieldStyle, FormField } from \"@t/FormField\";\r\nimport * as utils from \"./util/utils\";\r\nimport FieldInfoMap from \"src/FieldInfoMap\";\r\n\r\nimport styleUtils from \"./util/styleUtils\";\r\nimport DaraForm from \"./DaraForm\";\r\nimport TabRender from \"./renderer/TabRender\";\r\nimport GridRender from \"./renderer/GridRender\";\r\n\r\n/**\r\n * form template\r\n *\r\n * @class FormTemplate\r\n * @typedef {FormTemplate}\r\n */\r\nexport default class FormTemplate {\r\n private readonly options: FormOptions;\r\n private readonly formElement;\r\n\r\n private fieldInfoMap;\r\n\r\n private daraform: DaraForm;\r\n\r\n private addRowFields: string[] = [];\r\n\r\n constructor(daraform: DaraForm, formElement: Element, fieldInfoMap: FieldInfoMap) {\r\n this.daraform = daraform;\r\n this.options = daraform.getOptions();\r\n this.formElement = formElement;\r\n\r\n this.fieldInfoMap = fieldInfoMap;\r\n }\r\n\r\n /**\r\n * field row \uCD94\uAC00.\r\n *\r\n * @param field\r\n */\r\n public addRow(field: FormField) {\r\n if (this.checkHiddenField(field)) {\r\n return;\r\n }\r\n\r\n this.addRowFields = [];\r\n\r\n this.addRowTemplate(field);\r\n }\r\n\r\n /**\r\n * \uADF8\uB8F9 \uD15C\uD50C\uB9BF\r\n *\r\n * @param {FormField} field\r\n * @returns {string} row template\r\n */\r\n public addRowTemplate(field: FormField): void {\r\n let labelHideFlag = this.isLabelHide(field);\r\n\r\n let fieldStyle: FieldStyle = styleUtils.fieldStyle(this.options, field, null, labelHideFlag);\r\n\r\n this.addRowFieldInfo(field);\r\n\r\n const rowElement = utils.templateToElement(`\r\n <div class=\"df-row form-group ${fieldStyle.fieldClass}\" id=\"${field.$key}\">\r\n ${labelHideFlag ? \"\" : `<div class=\"df-label ${fieldStyle.labelClass} ${fieldStyle.labelAlignClass}\" title=\"${field.label ?? \"\"}\" style=\"${fieldStyle.labelStyle}\">${this.getLabelTemplate(field)}</div>`}\r\n\r\n <div class=\"df-field-container ${fieldStyle.valueClass} ${field.required ? \"required\" : \"\"}\" style=\"${fieldStyle.valueStyle}\"></div>\r\n </div>\r\n `);\r\n\r\n if (rowElement) {\r\n this.createField(field, rowElement);\r\n this.formElement.append(rowElement);\r\n\r\n if (field.children) {\r\n this.childTemplate(field, fieldStyle);\r\n }\r\n }\r\n }\r\n\r\n public createField(field: FormField, element: Element): void {\r\n field.$instance = new (field.$renderType as any)(field, element, this.daraform);\r\n }\r\n\r\n /**\r\n * child template\r\n *\r\n * @param {FormField} field\r\n * @param {FieldStyle} parentFieldStyle\r\n * @returns {*}\r\n */\r\n public childTemplate(field: FormField, parentFieldStyle: FieldStyle): void {\r\n let beforeField: FormField = null as any;\r\n let firstFlag = true;\r\n let isEmptyLabel = false;\r\n\r\n if (!(field.$renderType as any).isChildrenCreate()) {\r\n return;\r\n }\r\n\r\n const rowElement = document.createElement(\"div\");\r\n rowElement.classList.add(\"df-row\", parentFieldStyle.rowStyleClass ?? \"\");\r\n\r\n let idx = 0;\r\n\r\n for (const childField of field.children) {\r\n if (utils.isEmpty(childField)) {\r\n throw new Error(`parent field :[${field.$validName}], children index ${idx}, empty [${childField}]`);\r\n }\r\n\r\n childField.$parent = field;\r\n ++idx;\r\n\r\n if (this.checkHiddenField(childField)) {\r\n continue;\r\n }\r\n\r\n this.addRowFieldInfo(childField);\r\n\r\n if (firstFlag) {\r\n beforeField = childField;\r\n }\r\n\r\n let labelHideFlag = this.isLabelHide(childField);\r\n\r\n let childFieldStyle;\r\n\r\n let labelTemplate = \"\";\r\n if (labelHideFlag) {\r\n childFieldStyle = styleUtils.fieldStyle(this.options, childField, beforeField, !isEmptyLabel);\r\n labelTemplate = isEmptyLabel ? `<span class=\"df-label empty ${childFieldStyle.labelClass}\" style=\"${childFieldStyle.labelStyle}\"></span>` : \"\";\r\n } else {\r\n childFieldStyle = styleUtils.fieldStyle(this.options, childField, beforeField, false);\r\n labelTemplate = `<span class=\"df-label ${childFieldStyle.labelClass} ${childFieldStyle.labelAlignClass}\" title=\"${childField.label ?? \"\"}\" style=\"${childFieldStyle.labelStyle}\">${this.getLabelTemplate(childField)}</span>`;\r\n }\r\n\r\n const groupElement = utils.templateToElement(`<div class=\"form-group ${childFieldStyle.fieldClass}\" style=\"${childFieldStyle.fieldStyle}\" id=\"${childField.$key}\">\r\n ${labelTemplate}\r\n <span class=\"df-field-container ${childFieldStyle.valueClass} ${childField.required ? \"required\" : \"\"}\" style=\"${childFieldStyle.valueStyle}\"></span>\r\n </div>`);\r\n\r\n if (groupElement) {\r\n this.createField(childField, groupElement);\r\n rowElement.append(groupElement);\r\n\r\n if (childField.children) {\r\n this.childTemplate(childField, childField.children ? childFieldStyle : parentFieldStyle);\r\n }\r\n }\r\n if (!labelHideFlag) {\r\n isEmptyLabel = true;\r\n }\r\n\r\n firstFlag = false;\r\n }\r\n\r\n field.$instance.addChildField(rowElement);\r\n }\r\n\r\n /**\r\n * label template\r\n *\r\n * @param {FormField} field form field\r\n * @returns {string} template string\r\n */\r\n public getLabelTemplate(field: FormField) {\r\n const requiredTemplate = field.required ? `<span class=\"required\"></span>` : \"\";\r\n const tooltipTemplate = utils.isBlank(field.tooltip) ? \"\" : `<span class=\"df-tooltip\">?<span class=\"tooltip\">${field.tooltip}</span></span>`;\r\n\r\n return `${field.label ?? \"\"} ${tooltipTemplate} ${requiredTemplate}`;\r\n }\r\n\r\n /**\r\n * label \uC228\uAE40 \uC5EC\uBD80\r\n *\r\n * @param field formfield\r\n * @returns\r\n */\r\n public isLabelHide(field: FormField): boolean {\r\n return field.style?.labelHide || utils.isUndefined(field.label);\r\n }\r\n\r\n public checkHiddenField(field: FormField) {\r\n if (utils.isHiddenField(field)) {\r\n this.fieldInfoMap.addField(field);\r\n field.$instance = new (field.$renderType as any)(field, null, this.daraform);\r\n\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * add row file map\r\n *\r\n * @param {FormField} field\r\n */\r\n public addRowFieldInfo(field: FormField) {\r\n if (!utils.isBlank(field.name) && this.fieldInfoMap.hasFieldName(field.name)) {\r\n throw new Error(`Duplicate field name \"${field.name}\"`);\r\n }\r\n\r\n this.fieldInfoMap.addField(field);\r\n this.addRowFields.push(field.$key);\r\n }\r\n}\r\n", "import { FormOptions } from \"@t/FormOptions\";\r\nimport { FormField } from \"@t/FormField\";\r\nimport * as utils from \"./util/utils\";\r\nimport { ValidResult } from \"@t/ValidResult\";\r\nimport { Message } from \"@t/Message\";\r\nimport Lanauage from \"./util/Lanauage\";\r\nimport { stringValidator } from \"./rule/stringValidator\";\r\nimport { numberValidator } from \"./rule/numberValidator\";\r\nimport { regexpValidator } from \"./rule/regexpValidator\";\r\nimport FieldInfoMap from \"src/FieldInfoMap\";\r\nimport FormTemplate from \"./FormTemplate\";\r\nimport { FORM_MODE } from \"./constants\";\r\n\r\ndeclare const APP_VERSION: string;\r\n\r\nconst defaultOptions = {\r\n style: {\r\n width: \"100%\",\r\n labelWidth: 3,\r\n valueWidth: 9,\r\n position: \"left-right\",\r\n },\r\n mode: \"new\",\r\n useTypeValue: true,\r\n autoCreate: true,\r\n notValidMessage: \"This form is not valid.\",\r\n fields: [],\r\n} as FormOptions;\r\n\r\ninterface FieldMap {\r\n [key: string]: FormField;\r\n}\r\n\r\ninterface DaraFormMap {\r\n [key: string]: DaraForm;\r\n}\r\n\r\n// all instance\r\nconst allInstance: DaraFormMap = {};\r\n\r\nconst SEQ_ATTR_KEY = \"data-form-uid\";\r\n\r\nlet DARA_FORM_SEQ = 0;\r\n/**\r\n * DaraForm class\r\n *\r\n * @class DaraForm\r\n * @typedef {DaraForm}\r\n */\r\nexport default class DaraForm {\r\n public static VERSION = `${APP_VERSION}`;\r\n\r\n private readonly options;\r\n\r\n private orginFormStyleClass;\r\n\r\n private selector: string;\r\n private formElement: Element;\r\n\r\n private fieldInfoMap: FieldInfoMap;\r\n\r\n private formValue: any = {};\r\n\r\n public formTemplate: FormTemplate;\r\n\r\n constructor(formElement: Element, options: FormOptions, message?: Message) {\r\n this.options = utils.merge({}, defaultOptions, options) as FormOptions;\r\n\r\n Lanauage.set(message);\r\n\r\n if (formElement) {\r\n this.orginFormStyleClass = formElement.className;\r\n formElement.classList.add(\"daracl-form\");\r\n\r\n this.selector = `df_${++DARA_FORM_SEQ}`;\r\n formElement.setAttribute(\"name\", this.selector);\r\n formElement.setAttribute(SEQ_ATTR_KEY, this.selector);\r\n\r\n if (this.options.style.width) {\r\n formElement.setAttribute(\"style\", `width:${this.options.style.width};`);\r\n }\r\n\r\n this.formElement = formElement;\r\n this.changeMode(this.options.mode ?? \"new\");\r\n this.createForm(this.options.fields);\r\n\r\n if (this.options.autoCreate !== false) {\r\n allInstance[this.selector] = this;\r\n }\r\n } else {\r\n throw new Error(`${formElement} form selector not found`);\r\n }\r\n }\r\n\r\n public static create(formElement: Element, options: FormOptions, message?: Message): DaraForm {\r\n return new DaraForm(formElement, options, message);\r\n }\r\n\r\n public static setMessage(message: Message): void {\r\n Lanauage.set(message);\r\n }\r\n\r\n private createForm(fields: FormField[]) {\r\n this.fieldInfoMap = new FieldInfoMap(this.selector, this);\r\n //this.formElement.innerHTML = \"\";\r\n this.formTemplate = new FormTemplate(this, this.formElement, this.fieldInfoMap);\r\n\r\n if (this.options.autoCreate === false) {\r\n return;\r\n }\r\n\r\n fields.forEach((field) => {\r\n this.formTemplate.addRow(field);\r\n });\r\n this.conditionCheck();\r\n\r\n if (this.options.onMounted) {\r\n this.options.onMounted.call(this);\r\n }\r\n }\r\n\r\n /**\r\n * change mode\r\n *\r\n * @param mode form_mode default new\r\n */\r\n public changeMode = (mode: FORM_MODE): void => {\r\n this.options.mode = mode;\r\n this.formElement.setAttribute(\"data-df-mode\", mode);\r\n };\r\n\r\n /**\r\n * \uD3FC \uB370\uC774\uD130 reset\r\n */\r\n public resetForm = () => {\r\n const fieldMap = this.fieldInfoMap.getAllFieldInfo();\r\n for (const seq in fieldMap) {\r\n const fieldInfo = fieldMap[seq];\r\n const renderInfo = fieldInfo.$instance;\r\n\r\n if (renderInfo && typeof renderInfo.reset === \"function\") {\r\n renderInfo.reset();\r\n }\r\n }\r\n this.formValue = {};\r\n this.conditionCheck();\r\n };\r\n\r\n /**\r\n * field \uAC12 reset\r\n * @param fieldName \uD544\uB4DC\uBA85\r\n */\r\n public resetField = (fieldName: string) => {\r\n this.fieldInfoMap.getFieldName(fieldName).$instance.reset();\r\n this.formValue[fieldName] = \"\";\r\n this.conditionCheck();\r\n };\r\n\r\n /**\r\n * \uD544\uB4DC element \uC5BB\uAE30\r\n *\r\n * @param {string} fieldName\r\n * @returns {*}\r\n */\r\n public getFieldElement(fieldName: string) {\r\n const field = this.fieldInfoMap.getFieldName(fieldName);\r\n\r\n if (field?.$instance) {\r\n return field.$instance.getElement();\r\n }\r\n\r\n return null;\r\n }\r\n\r\n public getField(fieldName: string): FormField {\r\n return this.fieldInfoMap.getFieldName(fieldName);\r\n }\r\n\r\n /**\r\n * field \uAC12 \uC5BB\uAE30\r\n *\r\n * @param fieldName \uD544\uB4DC\uBA85\r\n * @returns\r\n */\r\n public getFieldValue = (fieldName: string) => {\r\n const field = this.fieldInfoMap.getFieldName(fieldName);\r\n\r\n if (field) {\r\n return field.$instance.getValue();\r\n }\r\n return null;\r\n };\r\n\r\n /**\r\n * \uD3FC \uD544\uB4DC \uAC12 \uC5BB\uAE30\r\n * @param isValid \uD3FC \uC720\uD6A8\uC131 \uAC80\uC0AC \uC5EC\uBD80 default:false|undefined true\uC77C\uACBD\uC6B0 \uAC80\uC0AC.\r\n * @returns\r\n */\r\n public getValue = (isValid: boolean): any => {\r\n return this.fieldInfoMap.getAllFieldValue(this.formValue, isValid);\r\n };\r\n\r\n public getFormDataValue = (isValid: boolean): any => {\r\n return this.fieldInfoMap.getFormDataValue(this.formValue, isValid);\r\n };\r\n\r\n /**\r\n * \uD3FC \uD544\uB4DC value \uC14B\uD305\r\n * @param values\r\n */\r\n public setValue = (values: any, dataClear?: boolean | undefined) => {\r\n if (dataClear !== false) {\r\n this.resetForm();\r\n }\r\n\r\n Object.keys(values).forEach((fieldName) => {\r\n this._setFieldValue(fieldName, values[fieldName]);\r\n });\r\n this.conditionCheck();\r\n };\r\n\r\n public setFieldValue = (fieldName: string, value: any) => {\r\n this._setFieldValue(fieldName, value);\r\n this.conditionCheck();\r\n };\r\n\r\n private _setFieldValue(fieldName: string, value: any) {\r\n this.formValue[fieldName] = value;\r\n const fieldInfo = this.fieldInfoMap.getFieldName(fieldName);\r\n\r\n if (fieldInfo) {\r\n fieldInfo.$instance.setValue(value);\r\n }\r\n }\r\n\r\n public setFieldItems = (fieldName: string, values: any) => {\r\n const field = this.fieldInfoMap.getFieldName(fieldName);\r\n\r\n if (field) {\r\n return field.$instance.setValueItems(values);\r\n }\r\n };\r\n\r\n /**\r\n * field \uCD94\uAC00\r\n *\r\n * @param {FormField} field\r\n */\r\n public addField = (field: FormField) => {\r\n this.options.fields.push(field);\r\n this.formTemplate.addRow(field);\r\n this.conditionCheck();\r\n };\r\n\r\n /**\r\n * field \uC81C\uAC70\r\n *\r\n * @param {string} fieldName\r\n */\r\n public removeField = (fieldName: string) => {\r\n const element = this.getFieldElement(fieldName);\r\n\r\n if (element != null) {\r\n element.closest(\".df-row\")?.remove();\r\n }\r\n\r\n this.fieldInfoMap.removeFieldInfo(fieldName);\r\n };\r\n\r\n /**\r\n * \uD3FC \uC720\uD6A8\uC131 \uAC80\uC99D \uC5EC\uBD80\r\n *\r\n * @returns {boolean}\r\n */\r\n public isValidForm = (): boolean => {\r\n const result = this.validForm();\r\n\r\n return result.length < 1;\r\n };\r\n\r\n /**\r\n * \uC720\uD6A8\uC131 \uAC80\uC99D \uD3FC \uAC80\uC99D\uC5EC\uBD80 \uB9AC\uD134\r\n *\r\n * @returns {any[]}\r\n */\r\n public validForm = (): any[] => {\r\n let validResult = [] as any;\r\n let autoFocusFlag = this.options.autoFocus !== false;\r\n let firstFlag = true;\r\n\r\n const fieldMap = this.fieldInfoMap.getAllFieldInfo();\r\n for (const fieldKey in fieldMap) {\r\n const fieldInfo = fieldMap[fieldKey];\r\n\r\n let fieldValid = this.fieldInfoMap.getFieldValidation(fieldInfo, autoFocusFlag);\r\n\r\n if (fieldValid !== true) {\r\n autoFocusFlag = false;\r\n\r\n if (utils.isGridType(fieldInfo)) {\r\n validResult = validResult.concat(fieldValid);\r\n } else {\r\n if (firstFlag) {\r\n this.validTabCheck(fieldInfo);\r\n firstFlag = false;\r\n }\r\n validResult.push(fieldValid);\r\n }\r\n }\r\n }\r\n\r\n return validResult;\r\n };\r\n\r\n private validTabCheck(fieldInfo: FormField) {\r\n if (fieldInfo.$parent) {\r\n if (fieldInfo.$parent.renderType == \"tab\") {\r\n fieldInfo.$parent.$instance.setActive(fieldInfo.$key);\r\n }\r\n this.validTabCheck(fieldInfo.$parent);\r\n }\r\n }\r\n\r\n public isValidField = (fieldName: string): boolean => {\r\n const fieldInfo = this.fieldInfoMap.getFieldName(fieldName);\r\n\r\n if (utils.isUndefined(fieldInfo)) {\r\n throw new Error(`Field name [${fieldName}] not found`);\r\n }\r\n\r\n const renderInfo = fieldInfo.$instance;\r\n if (renderInfo) {\r\n return renderInfo.valid() === true;\r\n }\r\n\r\n return true;\r\n };\r\n\r\n /**\r\n * \uC124\uC815 \uC635\uC158 \uC5BB\uAE30\r\n */\r\n public getOptions = () => {\r\n return this.options;\r\n };\r\n\r\n public conditionCheck() {\r\n this.fieldInfoMap.conditionCheck();\r\n }\r\n\r\n public setFieldDisabled(fieldName: string, flag: boolean) {\r\n const fieldInfo = this.fieldInfoMap.getFieldName(fieldName);\r\n fieldInfo.$instance.setDisabled(flag);\r\n }\r\n\r\n /**\r\n * \uC124\uBA85 \uCD94\uAC00\r\n *\r\n * @public\r\n * @param {string} fieldName\r\n * @param {string} desc\r\n */\r\n public setFieldDescription(fieldName: string, desc: string) {\r\n const fieldInfo = this.fieldInfoMap.getFieldName(fieldName);\r\n fieldInfo.$instance.setDescription(desc);\r\n }\r\n\r\n public destroy = () => {\r\n this.formElement.className = this.orginFormStyleClass;\r\n this.formElement.replaceChildren();\r\n\r\n for (const key in this) {\r\n if (utils.hasOwnProp(this, key)) {\r\n delete this[key];\r\n delete allInstance[this.selector];\r\n }\r\n }\r\n };\r\n\r\n public static validator = {\r\n string: (value: string, field: FormField) => {\r\n return stringValidator(value, field);\r\n },\r\n number: (value: string, field: FormField) => {\r\n return numberValidator(value, field);\r\n },\r\n regexp: (value: string, field: FormField) => {\r\n let result: ValidResult = { name: field.name, constraint: [] };\r\n return regexpValidator(value, field, result);\r\n },\r\n };\r\n\r\n public static instance(ele: Element | String) {\r\n let element;\r\n if (utils.isString(ele)) {\r\n element = document.querySelector(ele);\r\n } else {\r\n element = ele;\r\n }\r\n element = element as Element;\r\n let selector = element.getAttribute(SEQ_ATTR_KEY);\r\n\r\n if (utils.isUndefined(selector) || utils.isBlank(selector)) {\r\n const keys = Object.keys(allInstance);\r\n if (keys.length > 1) {\r\n throw new Error(`selector empty : [${selector}]`);\r\n }\r\n selector = keys[0];\r\n\r\n return allInstance[selector];\r\n }\r\n }\r\n /**\r\n * \uBAA8\uB4E0 field \uC5BB\uAE30\r\n */\r\n public getFields = (): any[] => {\r\n return this.options.fields;\r\n };\r\n\r\n /**\r\n * field setting\r\n * @param fields\r\n */\r\n public setFields = (fields: any[]) => {\r\n this.options.fields = fields;\r\n this.createForm(fields);\r\n };\r\n\r\n public getFieldInfoMap() {\r\n return this.fieldInfoMap;\r\n }\r\n}\r\n", "@charset \"UTF-8\";\n.daracl-form {\n --border-color: #dfe1e5;\n --color-danger: #d9534f;\n --background-danger: #d9534f;\n --font-color: #686868;\n --font-hover-color: #3a3d41;\n --invalid-font-color: #ff4136;\n --invalid-border-color: #ffb6b4;\n --invalid-background-color: #fdd;\n --button-bg: #f6f6f6;\n --button-bg-hover: #ebebeb;\n --tab-bg: #f6f6f6;\n --tab-bg-hover: #ebebeb;\n --tooltip-background: #3e3e3e;\n --tooltip-color: #fff;\n --field-margin-top: 10px;\n --input-bg: #fff;\n --input-color: #212529;\n --input-disabled-bg: #ebebeb;\n --bg-grid-header: #f1f1f1;\n}\n\nbody.dark .daracl-form,\n.daracl-form.dark {\n --border-color: #41444c;\n --color-danger: #d9534f;\n --background-danger: #d9534f;\n --font-color: #b9bdc1;\n --font-hover-color: #f5f3f3;\n --invalid-font-color: #ff4136;\n --invalid-border-color: #ffb6b4;\n --invalid-background-color: #fdd;\n --button-bg: #435ebe;\n --button-bg-hover: #3950a2;\n --tab-bg: #23418f;\n --tab-bg-hover: #516db1;\n --tooltip-background: #3e3e3e;\n --tooltip-color: #fff;\n --field-margin-top: 10px;\n --input-bg: transparent;\n --input-color: #c6cddb;\n --input-disabled-bg: #878787;\n --bg-grid-header: #878787;\n}\n\n.daracl-form {\n padding: 0px;\n margin-top: 10px;\n color: var(--font-color);\n}\n.daracl-form *,\n.daracl-form ::after,\n.daracl-form ::before {\n box-sizing: border-box;\n}\n.daracl-form .txt-left {\n text-align: left;\n}\n.daracl-form .txt-center {\n text-align: center;\n}\n.daracl-form .txt-right {\n text-align: right;\n}\n.daracl-form[data-df-mode=view] .form-field {\n border-width: 0px;\n border-color: transparent;\n border-color: transparent;\n outline: initial;\n}\n.daracl-form[data-df-mode=view] .form-field:focus-visible, .daracl-form[data-df-mode=view] .form-field:focus {\n border-width: 0px;\n}\n.daracl-form .df-hidden {\n max-height: 0vh !important;\n width: 0px;\n visibility: collapse;\n display: none !important;\n padding: 0px !important;\n margin: 0px !important;\n}\n.daracl-form input,\n.daracl-form select,\n.daracl-form textarea {\n background-color: transparent;\n color: var(--font-color);\n}\n.daracl-form input[disabled],\n.daracl-form select[disabled],\n.daracl-form textarea[disabled] {\n background-color: var(--input-disabled-bg);\n opacity: 0.8;\n}\n.daracl-form .df-label {\n position: relative;\n font-weight: 700;\n vertical-align: top;\n padding: 5px 15px 0px 0px;\n overflow: initial;\n white-space: nowrap;\n text-overflow: ellipsis;\n word-break: break-all;\n}\n.daracl-form .df-label .required {\n color: var(--color-danger);\n}\n.daracl-form .df-label .required::after {\n content: \"*\";\n vertical-align: middle;\n}\n.daracl-form .df-label .df-tooltip {\n visibility: visible;\n color: var(--tooltip-color);\n background: var(--tooltip-background);\n width: 16px;\n height: 16px;\n border-radius: 8px;\n text-align: center;\n line-height: 16px;\n margin: 0 5px;\n font-size: 12px;\n cursor: help;\n position: relative;\n display: inline-block;\n}\n.daracl-form .df-label .df-tooltip .tooltip {\n display: none;\n text-align: initial;\n background: var(--tooltip-background);\n border-radius: 5px;\n color: var(--tooltip-color);\n padding: 10px 5px;\n position: absolute;\n z-index: 2;\n left: -10px;\n min-width: max-content;\n text-shadow: none;\n cursor: default;\n}\n.daracl-form .df-label .df-tooltip:hover .tooltip {\n display: block;\n}\n.daracl-form .form-field {\n border: 1px solid var(--border-color);\n display: block;\n width: 100%;\n padding: 0.375rem 0.75rem;\n font-weight: 400;\n line-height: 1.5;\n border-radius: 4px;\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n background-color: var(--input-bg);\n background-clip: padding-box;\n color: var(--input-color);\n}\n.daracl-form .form-field[type=radio], .daracl-form .form-field[type=checkbox] {\n width: 14px;\n display: inline;\n min-height: 0px;\n padding: 0px;\n margin: 0px;\n vertical-align: middle;\n}\n.daracl-form .form-field.dropdown {\n appearance: none;\n -webkit-appearance: none;\n -moz-appearance: none;\n}\n.daracl-form .form-field.textarea {\n padding-right: 0px;\n}\n.daracl-form .form-field[type=number] {\n padding-right: 3px;\n}\n.daracl-form .form-field.file {\n display: none;\n}\n.daracl-form .form-field.range {\n padding: 0px;\n}\n.daracl-form .df-row {\n display: -ms-flexbox;\n display: -webkit-box;\n display: flex;\n -ms-flex: 0 1 auto;\n -webkit-box-flex: 0;\n flex: 0 1 auto;\n -ms-flex-direction: row;\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n flex-direction: row;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n}\n.daracl-form .df-row.vertical {\n display: block;\n}\n.daracl-form .df-row.horizontal {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n}\n.daracl-form .df-row.horizontal > .form-group > .empty {\n display: none !important;\n}\n.daracl-form .df-row.top {\n flex-direction: column;\n}\n.daracl-form .df-row.top > div {\n max-width: 100% !important;\n}\n.daracl-form .df-row.right {\n -ms-flex-direction: row-reverse !important;\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: reverse !important;\n flex-direction: row-reverse !important;\n}\n.daracl-form .df-row.bottom {\n flex-direction: column-reverse !important;\n}\n.daracl-form .df-row.bottom > div {\n max-width: 100% !important;\n}\n.daracl-form .col-xs-1 {\n flex-basis: 8.33333333%;\n -webkit-box-flex: 0;\n -ms-flex: 0 0 8.33333333%;\n flex: 0 0 8.33333333%;\n max-width: 8.33333333%;\n}\n.daracl-form .col-xs-2 {\n flex-basis: 16.66666667%;\n -webkit-box-flex: 0;\n -ms-flex: 0 0 16.66666667%;\n flex: 0 0 16.66666667%;\n max-width: 16.66666667%;\n}\n.daracl-form .col-xs-3 {\n flex-basis: 25%;\n -webkit-box-flex: 0;\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%;\n}\n.daracl-form .col-xs-4 {\n flex-basis: 33.33333333%;\n -webkit-box-flex: 0;\n -ms-flex: 0 0 33.33333333%;\n flex: 0 0 33.33333333%;\n max-width: 33.33333333%;\n}\n.daracl-form .col-xs-5 {\n flex-basis: 41.66666667%;\n -webkit-box-flex: 0;\n -ms-flex: 0 0 41.66666667%;\n flex: 0 0 41.66666667%;\n max-width: 41.66666667%;\n}\n.daracl-form .col-xs-6 {\n flex-basis: 50%;\n -webkit-box-flex: 0;\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%;\n}\n.daracl-form .col-xs-7 {\n flex-basis: 58.33333333%;\n -webkit-box-flex: 0;\n -ms-flex: 0 0 58.33333333%;\n flex: 0 0 58.33333333%;\n max-width: 58.33333333%;\n}\n.daracl-form .col-xs-8 {\n flex-basis: 66.66666667%;\n -webkit-box-flex: 0;\n -ms-flex: 0 0 66.66666667%;\n flex: 0 0 66.66666667%;\n max-width: 66.66666667%;\n}\n.daracl-form .col-xs-9 {\n flex-basis: 75%;\n -webkit-box-flex: 0;\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%;\n}\n.daracl-form .col-xs-10 {\n flex-basis: 83.33333333%;\n -webkit-box-flex: 0;\n -ms-flex: 0 0 83.33333333%;\n flex: 0 0 83.33333333%;\n max-width: 83.33333333%;\n}\n.daracl-form .col-xs-11 {\n flex-basis: 91.66666667%;\n -webkit-box-flex: 0;\n -ms-flex: 0 0 91.66666667%;\n flex: 0 0 91.66666667%;\n max-width: 91.66666667%;\n}\n.daracl-form .col-xs-12 {\n flex-basis: 100%;\n -webkit-box-flex: 0;\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%;\n}\n.daracl-form .align-items-center {\n -webkit-box-align: center !important;\n -ms-flex-align: center !important;\n align-items: center !important;\n}\n.daracl-form .col-xs {\n -webkit-flex-grow: 1;\n -ms-flex-positive: 1;\n -webkit-box-flex: 1;\n flex-grow: 1;\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n max-width: 100%;\n}\n.daracl-form .col-auto {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n}\n.daracl-form .col-fix {\n flex: none;\n}\n.daracl-form .col-full {\n flex: 1;\n overflow: auto;\n}\n.daracl-form .df-field-container {\n overflow: initial;\n position: relative;\n}\n.daracl-form .df-field-container > .df-row {\n margin-top: -10px;\n}\n.daracl-form .df-field-container > div + .df-row {\n margin-top: 0px;\n}\n.daracl-form .df-field-container .df-field {\n position: relative;\n margin-right: 10px;\n}\n.daracl-form .df-field-container .df-field .range-num {\n clear: both;\n display: block;\n width: 100%;\n text-align: left;\n}\n.daracl-form .df-field-container .df-field .file-wrapper {\n border: 1px solid var(--border-color);\n text-align: center;\n display: block;\n width: 100%;\n padding: 0.375rem 0.75rem;\n font-weight: 400;\n line-height: 1.5;\n background-clip: padding-box;\n border-radius: 4px;\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n.daracl-form .daracl-file-list .file-icon {\n width: 20px;\n height: 20px;\n display: inline-block;\n vertical-align: middle;\n cursor: pointer;\n}\n.daracl-form .daracl-file-list .file-icon:hover {\n background-color: var(--button-bg-hover);\n}\n.daracl-form .daracl-file-list .file-icon.download {\n background-image: url(\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiBoZWlnaHQ9IjIwcHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjIwcHgiIGZpbGw9IiMwMDAwMDAiPjxnPjxyZWN0IGZpbGw9Im5vbmUiIGhlaWdodD0iMjQiIHdpZHRoPSIyNCIvPjwvZz48Zz48cGF0aCBkPSJNMTgsMTV2M0g2di0zSDR2M2MwLDEuMSwwLjksMiwyLDJoMTJjMS4xLDAsMi0wLjksMi0ydi0zSDE4eiBNMTcsMTFsLTEuNDEtMS40MUwxMywxMi4xN1Y0aC0ydjguMTdMOC40MSw5LjU5TDcsMTFsNSw1IEwxNywxMXoiLz48L2c+PC9zdmc+\");\n}\n.daracl-form .daracl-file-list .file-icon.remove {\n background-image: url(\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjBweCIgZmlsbD0iIzAwMDAwMCI+PHBhdGggZD0iTTAgMGgyNHYyNEgwVjB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTE2IDl2MTBIOFY5aDhtLTEuNS02aC01bC0xIDFINXYyaDE0VjRoLTMuNWwtMS0xek0xOCA3SDZ2MTJjMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjd6Ii8+PC9zdmc+\");\n}\n.daracl-form .daracl-file-list .file-name {\n text-overflow: ellipsis;\n white-space: nowrap;\n word-wrap: normal;\n overflow: hidden;\n display: inline-block;\n vertical-align: middle;\n width: calc(100% - 55px);\n}\n.daracl-form .field-group .field.vertical > * {\n display: block;\n}\n.daracl-form .tab-header {\n list-style: none;\n margin: 0px;\n padding: 0px;\n display: flex;\n line-height: 1.3;\n width: 100%;\n border-bottom: 1px solid var(--border-color);\n}\n.daracl-form .tab-header.tab-al-left {\n justify-content: left;\n}\n.daracl-form .tab-header.tab-al-right {\n justify-content: right;\n}\n.daracl-form .tab-header.tab-al-center {\n justify-content: center;\n}\n.daracl-form .tab-header > .tab-item {\n list-style: none;\n float: left;\n position: relative;\n top: 0;\n margin: 1px 0.4em 0 0;\n padding: 0;\n white-space: nowrap;\n}\n.daracl-form .tab-header > .tab-item.active a {\n color: var(--font-hover-color);\n background-color: var(--tab-bg);\n}\n.daracl-form .tab-header > .tab-item a {\n border-top-left-radius: calc(0.45rem - 1px);\n border-top-right-radius: calc(0.45rem - 1px);\n border: 1px solid transparent;\n border-bottom-width: 0;\n float: left;\n padding: 0.5em 1em;\n text-decoration: none;\n color: var(--font-color);\n height: 30px;\n line-height: 15px;\n}\n.daracl-form .tab-header > .tab-item a:hover {\n background-color: var(--tab-bg-hover);\n border: 1px solid var(--border-color);\n border-bottom-width: 0;\n}\n.daracl-form .df-tab-body .tab-panel {\n display: none;\n}\n.daracl-form .df-tab-body .tab-panel.active {\n display: block;\n}\n.daracl-form .df-btn {\n padding: 5px 10px;\n border-radius: calc(0.45rem - 1px);\n border: 1px solid var(--border-color);\n background-color: var(--button-bg);\n cursor: pointer;\n transition: background-color 0.3s;\n}\n.daracl-form .df-btn:hover {\n color: var(--font-hover-color);\n background-color: var(--button-bg-hover);\n}\n.daracl-form .df-icon {\n display: inline-block;\n width: 21px; /* \uC544\uC774\uCF58\uC758 \uB108\uBE44 \uC124\uC815 */\n height: 21px; /* \uC544\uC774\uCF58\uC758 \uB192\uC774 \uC124\uC815 */\n vertical-align: middle;\n}\n.daracl-form .df-add-icon {\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='20px' viewBox='0 -960 960 960' width='20px' fill='%235f6368'%3E%3Cpath d='M431-431H220.78v-98H431v-210.22h98V-529h210.22v98H529v210.22h-98V-431Z'/%3E%3C/svg%3E\");\n}\n.daracl-form .df-remove-icon {\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='20px' viewBox='0 -960 960 960' width='20px' fill='%235f6368'%3E%3Cpath d='M291-221.91 221.91-291l189-189-189-189L291-738.09l189 189 189-189L738.09-669l-189 189 189 189L669-221.91l-189-189-189 189Z'/%3E%3C/svg%3E\");\n}\n.daracl-form .form-group {\n display: -ms-flexbox;\n display: -webkit-box;\n display: flex;\n -ms-flex-direction: row;\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n flex-direction: row;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n margin-top: var(--field-margin-top);\n margin-bottom: 0px;\n margin-right: 0px !important;\n margin-left: 0px !important;\n}\n.daracl-form .form-group:last-child {\n margin-bottom: 0px;\n}\n.daracl-form .form-group.top {\n flex-direction: column;\n}\n.daracl-form .form-group.top > div {\n max-width: 100% !important;\n}\n.daracl-form .form-group.right {\n -ms-flex-direction: row-reverse !important;\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: reverse !important;\n flex-direction: row-reverse !important;\n}\n.daracl-form .form-group.bottom {\n flex-direction: column-reverse !important;\n}\n.daracl-form .form-group.bottom > div {\n max-width: 100% !important;\n}\n.daracl-form .form-group .help-message {\n display: none;\n}\n.daracl-form .form-group .help-icon {\n background-repeat: no-repeat;\n background-position-y: center;\n}\n.daracl-form .form-group .help-icon.form-field {\n background-position-x: calc(100% - 15px);\n}\n.daracl-form .form-group .help-icon.daracl-icon {\n display: none;\n position: absolute;\n z-index: 1;\n top: 0px;\n right: 0px;\n height: 100%;\n width: 20px;\n margin-right: 15px;\n}\n.daracl-form .form-group.invalid .form-field {\n border-color: var(--invalid-border-color);\n outline-color: var(--invalid-border-color);\n}\n.daracl-form .form-group.invalid > .df-field-container.required > .df-field .help-icon {\n display: block;\n background-image: url(\"data:image/svg+xml; base64, PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgLTk2MCA5NjAgOTYwIiB3aWR0aD0iMjAiPjxwYXRoIGQ9Im0yNDktMjA3LTQyLTQyIDIzMS0yMzEtMjMxLTIzMSA0Mi00MiAyMzEgMjMxIDIzMS0yMzEgNDIgNDItMjMxIDIzMSAyMzEgMjMxLTQyIDQyLTIzMS0yMzEtMjMxIDIzMVoiIHN0eWxlPSImIzEwOyAgICBmaWxsOiAjZmY3MzczOyYjMTA7Ii8+PC9zdmc+\");\n}\n.daracl-form .form-group.invalid .help-message {\n display: block;\n color: var(--invalid-font-color);\n}\n.daracl-form .form-group.valid > .df-field-container.required > .df-field .help-icon {\n display: block;\n background-image: url(\"data:image/svg+xml; base64, PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgLTk2MCA5NjAgOTYwIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHN0eWxlPSImIzEwOyAgICBmaWxsOiAjMTlhOTc0OyYjMTA7Ij48cGF0aCBkPSJNMzc4LTI0NiAxNTQtNDcwbDQzLTQzIDE4MSAxODEgMzg0LTM4NCA0MyA0My00MjcgNDI3WiIvPjwvc3ZnPg==\");\n}\n.daracl-form .form-group .file-label {\n border: 1px solid var(--border-color);\n display: inline;\n width: 100%;\n padding: 3px 15px;\n line-height: 1;\n background-clip: padding-box;\n border-radius: 4px;\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n.daracl-form .form-group .file-label:hover {\n background-color: var(--button-bg-hover);\n}\n.daracl-form .df-grid-field {\n margin-right: 10px;\n}\n.daracl-form .df-grid-field .df-grid-btn-area {\n border: 1px solid var(--border-color);\n padding: 3px;\n}\n.daracl-form .df-grid-field .df-grid-container {\n width: 100%;\n height: auto;\n overflow-y: auto;\n border: 1px solid var(--border-color);\n}\n.daracl-form .df-grid-field .df-grid-container .df-btn {\n padding: 3px 5px;\n}\n.daracl-form .df-grid-field .df-grid-container .df-grid {\n width: 100%;\n border-top-width: 0px;\n border-collapse: collapse;\n}\n.daracl-form .df-grid-field .df-grid-container .df-grid > thead th {\n position: sticky;\n top: 0px;\n z-index: 10;\n border-bottom: 1px solid var(--border-color);\n background-color: var(--bg-grid-header);\n text-align: center;\n}\n.daracl-form .df-grid-field .df-grid-container .df-grid .help-message {\n display: none;\n}\n.daracl-form .df-grid-field .df-grid-container .df-grid td,\n.daracl-form .df-grid-field .df-grid-container .df-grid th {\n padding: 3px 5px;\n}\n.daracl-form .df-grid-field .df-grid-container .df-grid .help-icon {\n background-repeat: no-repeat;\n background-position-y: center;\n}\n.daracl-form .df-grid-field .df-grid-container .df-grid .help-icon.form-field {\n background-position-x: calc(100% - 15px);\n}\n.daracl-form .df-grid-field .df-grid-container .df-grid .help-icon.daracl-icon {\n display: none;\n position: absolute;\n z-index: 1;\n top: 0px;\n right: 0px;\n height: 100%;\n width: 20px;\n margin-right: 15px;\n}\n.daracl-form .df-grid-field .df-grid-container .df-grid .grid-column {\n position: relative;\n}\n.daracl-form .df-grid-field .df-grid-container .df-grid .invalid .form-field {\n border-color: var(--invalid-border-color);\n outline-color: var(--invalid-border-color);\n}\n.daracl-form .df-grid-field .df-grid-container .df-grid .invalid > .grid-column.required .df-field .help-icon {\n display: block;\n background-image: url(\"data:image/svg+xml; base64, PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgLTk2MCA5NjAgOTYwIiB3aWR0aD0iMjAiPjxwYXRoIGQ9Im0yNDktMjA3LTQyLTQyIDIzMS0yMzEtMjMxLTIzMSA0Mi00MiAyMzEgMjMxIDIzMS0yMzEgNDIgNDItMjMxIDIzMSAyMzEgMjMxLTQyIDQyLTIzMS0yMzEtMjMxIDIzMVoiIHN0eWxlPSImIzEwOyAgICBmaWxsOiAjZmY3MzczOyYjMTA7Ii8+PC9zdmc+\");\n}\n.daracl-form .df-grid-field .df-grid-container .df-grid .invalid .help-message {\n display: block;\n position: absolute;\n border: 1px solid var(--invalid-border-color);\n border-color: var(--invalid-border-color) transparent transparent transparent;\n top: calc(100% + 6px);\n left: 50%;\n transform: translateX(-50%);\n min-width: 270px;\n padding: 5px 5px;\n border-radius: 0.4rem;\n z-index: 2;\n background-color: var(--invalid-background-color);\n color: var(--invalid-font-color);\n}\n.daracl-form .df-grid-field .df-grid-container .df-grid .invalid .help-message::after {\n content: \"\";\n position: absolute;\n top: 0;\n left: 50%;\n width: 0;\n height: 0;\n border: 7px solid transparent;\n border-bottom-color: var(--invalid-border-color);\n border-top: 0;\n border-left: 0;\n margin-left: -3.5px;\n margin-top: -7px;\n}\n.daracl-form .df-grid-field .df-grid-container .df-grid .valid > .grid-column.required .df-field .help-icon {\n display: block;\n background-image: url(\"data:image/svg+xml; base64, PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgLTk2MCA5NjAgOTYwIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHN0eWxlPSImIzEwOyAgICBmaWxsOiAjMTlhOTc0OyYjMTA7Ij48cGF0aCBkPSJNMzc4LTI0NiAxNTQtNDcwbDQzLTQzIDE4MSAxODEgMzg0LTM4NCA0MyA0My00MjcgNDI3WiIvPjwvc3ZnPg==\");\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VSb290IjoiRDpcXDAzLm9wZW5zb3VyY2VzXFxkYXJhLWZvcm1cXHN0eWxlIiwic291cmNlcyI6WyJkYXJhY2wuZm9ybS5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUF5QkE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7QUFBQTtFQUVFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTs7QUFFQTtBQUFBO0FBQUE7RUFHRTs7QUFJQTtFQUNFOztBQUdGO0VBQ0U7O0FBR0Y7RUFDRTs7QUFLRjtFQUNFO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBRUU7O0FBS047RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBR0Y7QUFBQTtBQUFBO0VBR0U7RUFDQTs7QUFDQTtBQUFBO0FBQUE7RUFDRTtFQUNBOztBQUlKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFDQTs7QUFFQTtFQU1FOztBQUxBO0VBQ0U7RUFDQTs7QUFNSjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUdGO0VBQ0U7O0FBS047RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBRUU7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUdGO0VBQ0U7RUFDQTtFQUNBOztBQUdGO0VBQ0U7O0FBR0Y7RUFDRTs7QUFHRjtFQUNFOztBQUdGO0VBQ0U7O0FBSUo7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTs7QUE5UE47RUFDRTs7QUFDQTtFQUNFOztBQUlKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7O0FBR0Y7RUFDRTs7QUFDQTtFQUNFOztBQXVQRjtFQUNFLFlBNVFFO0VBNlFGO0VBQ0E7RUFDQTtFQUNBLFdBaFJFOztBQTJRSjtFQUNFLFlBNVFFO0VBNlFGO0VBQ0E7RUFDQTtFQUNBLFdBaFJFOztBQTJRSjtFQUNFLFlBNVFFO0VBNlFGO0VBQ0E7RUFDQTtFQUNBLFdBaFJFOztBQTJRSjtFQUNFLFlBNVFFO0VBNlFGO0VBQ0E7RUFDQTtFQUNBLFdBaFJFOztBQTJRSjtFQUNFLFlBNVFFO0VBNlFGO0VBQ0E7RUFDQTtFQUNBLFdBaFJFOztBQTJRSjtFQUNFLFlBNVFFO0VBNlFGO0VBQ0E7RUFDQTtFQUNBLFdBaFJFOztBQTJRSjtFQUNFLFlBNVFFO0VBNlFGO0VBQ0E7RUFDQTtFQUNBLFdBaFJFOztBQTJRSjtFQUNFLFlBNVFFO0VBNlFGO0VBQ0E7RUFDQTtFQUNBLFdBaFJFOztBQTJRSjtFQUNFLFlBNVFFO0VBNlFGO0VBQ0E7RUFDQTtFQUNBLFdBaFJFOztBQTJRSjtFQUNFLFlBNVFFO0VBNlFGO0VBQ0E7RUFDQTtFQUNBLFdBaFJFOztBQTJRSjtFQUNFLFlBNVFFO0VBNlFGO0VBQ0E7RUFDQTtFQUNBLFdBaFJFOztBQTJRSjtFQUNFLFlBNVFFO0VBNlFGO0VBQ0E7RUFDQTtFQUNBLFdBaFJFOztBQW9STjtFQUNFO0VBQ0E7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFHRjtFQUNFOztBQUdGO0VBQ0U7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7O0FBQ0E7RUFDRTs7QUFHRjtFQUNFOztBQUVGO0VBQ0U7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7RUFDQTtFQUNBOztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBTUo7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0U7O0FBR0Y7RUFDRTs7QUFHRjtFQUNFOztBQUlKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBTUE7RUFDRTs7QUFLTjtFQUNFO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFDQTtFQUNBOztBQUdFO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUlKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBR0U7RUFDRTtFQUNBOztBQUlKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTtFQUNBO0VBQ0E7O0FBT047RUFDRTs7QUFFQTtFQUNFOztBQUtOO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBOztBQUVBO0VBQ0U7RUFDQTs7QUFJSjtFQUNFO0VBQ0E7RUFDQTtFQUNBOztBQUdGO0VBQ0U7O0FBR0Y7RUFDRTs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0U7O0FBamZKO0VBQ0U7O0FBQ0E7RUFDRTs7QUFJSjtFQUNFO0VBQ0E7RUFDQTtFQUNBOztBQUdGO0VBQ0U7O0FBQ0E7RUFDRTs7QUFxZUY7RUFDRTs7QUFHRjtFQUNFO0VBQ0E7O0FBRUE7RUFDRTs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBS0Y7RUFDRTtFQUNBOztBQUdGO0VBQ0U7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7O0FBTUE7RUFDRTtFQUNBOztBQUtOO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFOztBQUlOO0VBQ0U7O0FBQ0E7RUFDRTtFQUNBOztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTs7QUFHRjtFQUNFO0VBQ0E7RUFDQTs7QUFHRTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFJSjtFQUNFOztBQUdGO0FBQUE7RUFFRTs7QUFHRjtFQUNFO0VBQ0E7O0FBRUE7RUFDRTs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBSUo7RUFDRTs7QUFJQTtFQUNFO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBOztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBQ0E7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBT0Y7RUFDRTtFQUNBIiwic291cmNlc0NvbnRlbnQiOlsiJHNpemVzOiA4LjMzMzMzMzMzJSwgMTYuNjY2NjY2NjclLCAyNSUsIDMzLjMzMzMzMzMzJSwgNDEuNjY2NjY2NjclLCA1MCUsIDU4LjMzMzMzMzMzJSwgNjYuNjY2NjY2NjclLCA3NSUsIDgzLjMzMzMzMzMzJSwgOTEuNjY2NjY2NjclLCAxMDAlO1xyXG5cclxuQG1peGluIHJvd0ZsZXgoKSB7XHJcbiAgJi50b3Age1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgID4gZGl2IHtcclxuICAgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLnJpZ2h0IHtcclxuICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDtcclxuICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbCAhaW1wb3J0YW50O1xyXG4gICAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiByZXZlcnNlICFpbXBvcnRhbnQ7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDtcclxuICB9XHJcblxyXG4gICYuYm90dG9tIHtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZSAhaW1wb3J0YW50O1xyXG4gICAgPiBkaXYge1xyXG4gICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi5kYXJhY2wtZm9ybSB7XHJcbiAgLS1ib3JkZXItY29sb3I6ICNkZmUxZTU7XHJcbiAgLS1jb2xvci1kYW5nZXI6ICNkOTUzNGY7XHJcbiAgLS1iYWNrZ3JvdW5kLWRhbmdlcjogI2Q5NTM0ZjtcclxuICAtLWZvbnQtY29sb3I6ICM2ODY4Njg7XHJcbiAgLS1mb250LWhvdmVyLWNvbG9yOiAjM2EzZDQxO1xyXG4gIC0taW52YWxpZC1mb250LWNvbG9yOiAjZmY0MTM2O1xyXG4gIC0taW52YWxpZC1ib3JkZXItY29sb3I6ICNmZmI2YjQ7XHJcbiAgLS1pbnZhbGlkLWJhY2tncm91bmQtY29sb3I6ICNmZGQ7XHJcbiAgLS1idXR0b24tYmc6ICNmNmY2ZjY7XHJcbiAgLS1idXR0b24tYmctaG92ZXI6ICNlYmViZWI7XHJcbiAgLS10YWItYmc6ICNmNmY2ZjY7XHJcbiAgLS10YWItYmctaG92ZXI6ICNlYmViZWI7XHJcbiAgLS10b29sdGlwLWJhY2tncm91bmQ6ICMzZTNlM2U7XHJcbiAgLS10b29sdGlwLWNvbG9yOiAjZmZmO1xyXG4gIC0tZmllbGQtbWFyZ2luLXRvcDogMTBweDtcclxuICAtLWlucHV0LWJnOiAjZmZmO1xyXG4gIC0taW5wdXQtY29sb3I6ICMyMTI1Mjk7XHJcbiAgLS1pbnB1dC1kaXNhYmxlZC1iZzogI2ViZWJlYjtcclxuICAtLWJnLWdyaWQtaGVhZGVyOiAjZjFmMWYxO1xyXG59XHJcblxyXG5ib2R5LmRhcmsgLmRhcmFjbC1mb3JtLFxyXG4uZGFyYWNsLWZvcm0uZGFyayB7XHJcbiAgLS1ib3JkZXItY29sb3I6ICM0MTQ0NGM7XHJcbiAgLS1jb2xvci1kYW5nZXI6ICNkOTUzNGY7XHJcbiAgLS1iYWNrZ3JvdW5kLWRhbmdlcjogI2Q5NTM0ZjtcclxuICAtLWZvbnQtY29sb3I6ICNiOWJkYzE7XHJcbiAgLS1mb250LWhvdmVyLWNvbG9yOiAjZjVmM2YzO1xyXG4gIC0taW52YWxpZC1mb250LWNvbG9yOiAjZmY0MTM2O1xyXG4gIC0taW52YWxpZC1ib3JkZXItY29sb3I6ICNmZmI2YjQ7XHJcbiAgLS1pbnZhbGlkLWJhY2tncm91bmQtY29sb3I6ICNmZGQ7XHJcbiAgLS1idXR0b24tYmc6ICM0MzVlYmU7XHJcbiAgLS1idXR0b24tYmctaG92ZXI6ICMzOTUwYTI7XHJcbiAgLS10YWItYmc6ICMyMzQxOGY7XHJcbiAgLS10YWItYmctaG92ZXI6ICM1MTZkYjE7XHJcbiAgLS10b29sdGlwLWJhY2tncm91bmQ6ICMzZTNlM2U7XHJcbiAgLS10b29sdGlwLWNvbG9yOiAjZmZmO1xyXG4gIC0tZmllbGQtbWFyZ2luLXRvcDogMTBweDtcclxuICAtLWlucHV0LWJnOiB0cmFuc3BhcmVudDtcclxuICAtLWlucHV0LWNvbG9yOiAjYzZjZGRiO1xyXG4gIC0taW5wdXQtZGlzYWJsZWQtYmc6ICM4Nzg3ODc7XHJcbiAgLS1iZy1ncmlkLWhlYWRlcjogIzg3ODc4NztcclxufVxyXG5cclxuLmRhcmFjbC1mb3JtIHtcclxuICBwYWRkaW5nOiAwcHg7XHJcbiAgbWFyZ2luLXRvcDogMTBweDtcclxuICBjb2xvcjogdmFyKC0tZm9udC1jb2xvcik7XHJcblxyXG4gICosXHJcbiAgOjphZnRlcixcclxuICA6OmJlZm9yZSB7XHJcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gIH1cclxuXHJcbiAgLnR4dCB7XHJcbiAgICAmLWxlZnQge1xyXG4gICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG4gICAgfVxyXG5cclxuICAgICYtY2VudGVyIHtcclxuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgfVxyXG5cclxuICAgICYtcmlnaHQge1xyXG4gICAgICB0ZXh0LWFsaWduOiByaWdodDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZbZGF0YS1kZi1tb2RlPVwidmlld1wiXSB7XHJcbiAgICAuZm9ybS1maWVsZCB7XHJcbiAgICAgIGJvcmRlci13aWR0aDogMHB4O1xyXG4gICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xyXG4gICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xyXG4gICAgICBvdXRsaW5lOiBpbml0aWFsO1xyXG5cclxuICAgICAgJjpmb2N1cy12aXNpYmxlLFxyXG4gICAgICAmOmZvY3VzIHtcclxuICAgICAgICBib3JkZXItd2lkdGg6IDBweDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmRmLWhpZGRlbiB7XHJcbiAgICBtYXgtaGVpZ2h0OiAwdmggIWltcG9ydGFudDtcclxuICAgIHdpZHRoOiAwcHg7XHJcbiAgICB2aXNpYmlsaXR5OiBjb2xsYXBzZTtcclxuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcclxuICAgIHBhZGRpbmc6IDBweCAhaW1wb3J0YW50O1xyXG4gICAgbWFyZ2luOiAwcHggIWltcG9ydGFudDtcclxuICB9XHJcblxyXG4gIGlucHV0LFxyXG4gIHNlbGVjdCxcclxuICB0ZXh0YXJlYSB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuICAgIGNvbG9yOiB2YXIoLS1mb250LWNvbG9yKTtcclxuICAgICZbZGlzYWJsZWRdIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taW5wdXQtZGlzYWJsZWQtYmcpO1xyXG4gICAgICBvcGFjaXR5OiAwLjg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuZGYtbGFiZWwge1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcclxuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XHJcbiAgICBwYWRkaW5nOiA1cHggMTVweCAwcHggMHB4O1xyXG4gICAgb3ZlcmZsb3c6IGluaXRpYWw7XHJcbiAgICAvLyDtmZXsnbjtlaDqsoMuXHJcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbiAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XHJcblxyXG4gICAgLnJlcXVpcmVkIHtcclxuICAgICAgJjo6YWZ0ZXIge1xyXG4gICAgICAgIGNvbnRlbnQ6IFwiKlwiO1xyXG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbG9yOiB2YXIoLS1jb2xvci1kYW5nZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIC5kZi10b29sdGlwIHtcclxuICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcclxuICAgICAgY29sb3I6IHZhcigtLXRvb2x0aXAtY29sb3IpO1xyXG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10b29sdGlwLWJhY2tncm91bmQpO1xyXG4gICAgICB3aWR0aDogMTZweDtcclxuICAgICAgaGVpZ2h0OiAxNnB4O1xyXG4gICAgICBib3JkZXItcmFkaXVzOiA4cHg7XHJcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgbGluZS1oZWlnaHQ6IDE2cHg7XHJcbiAgICAgIG1hcmdpbjogMCA1cHg7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcclxuICAgICAgY3Vyc29yOiBoZWxwO1xyXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHJcbiAgICAgIC50b29sdGlwIHtcclxuICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgICAgIHRleHQtYWxpZ246IGluaXRpYWw7XHJcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdG9vbHRpcC1iYWNrZ3JvdW5kKTtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7XHJcbiAgICAgICAgY29sb3I6IHZhcigtLXRvb2x0aXAtY29sb3IpO1xyXG4gICAgICAgIHBhZGRpbmc6IDEwcHggNXB4O1xyXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICB6LWluZGV4OiAyO1xyXG4gICAgICAgIGxlZnQ6IC0xMHB4O1xyXG4gICAgICAgIG1pbi13aWR0aDogbWF4LWNvbnRlbnQ7XHJcbiAgICAgICAgdGV4dC1zaGFkb3c6IG5vbmU7XHJcbiAgICAgICAgY3Vyc29yOiBkZWZhdWx0O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmOmhvdmVyIC50b29sdGlwIHtcclxuICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmZvcm0tZmllbGQge1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBwYWRkaW5nOiAwLjM3NXJlbSAwLjc1cmVtO1xyXG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcclxuICAgIGxpbmUtaGVpZ2h0OiAxLjU7XHJcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XHJcbiAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJveC1zaGFkb3cgMC4xNXMgZWFzZS1pbi1vdXQ7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1pbnB1dC1iZyk7XHJcbiAgICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xyXG4gICAgY29sb3I6IHZhcigtLWlucHV0LWNvbG9yKTtcclxuXHJcbiAgICAmW3R5cGU9XCJyYWRpb1wiXSxcclxuICAgICZbdHlwZT1cImNoZWNrYm94XCJdIHtcclxuICAgICAgd2lkdGg6IDE0cHg7XHJcbiAgICAgIGRpc3BsYXk6IGlubGluZTtcclxuICAgICAgbWluLWhlaWdodDogMHB4O1xyXG4gICAgICBwYWRkaW5nOiAwcHg7XHJcbiAgICAgIG1hcmdpbjogMHB4O1xyXG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG4gICAgfVxyXG5cclxuICAgICYuZHJvcGRvd24ge1xyXG4gICAgICBhcHBlYXJhbmNlOiBub25lO1xyXG4gICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XHJcbiAgICAgIC1tb3otYXBwZWFyYW5jZTogbm9uZTtcclxuICAgIH1cclxuXHJcbiAgICAmLnRleHRhcmVhIHtcclxuICAgICAgcGFkZGluZy1yaWdodDogMHB4O1xyXG4gICAgfVxyXG5cclxuICAgICZbdHlwZT1cIm51bWJlclwiXSB7XHJcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDNweDtcclxuICAgIH1cclxuXHJcbiAgICAmLmZpbGUge1xyXG4gICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgfVxyXG5cclxuICAgICYucmFuZ2Uge1xyXG4gICAgICBwYWRkaW5nOiAwcHg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuZGYtcm93IHtcclxuICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xyXG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgLW1zLWZsZXg6IDAgMSBhdXRvO1xyXG4gICAgLXdlYmtpdC1ib3gtZmxleDogMDtcclxuICAgIGZsZXg6IDAgMSBhdXRvO1xyXG4gICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3c7XHJcbiAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7XHJcbiAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XHJcbiAgICAtbXMtZmxleC13cmFwOiB3cmFwO1xyXG4gICAgZmxleC13cmFwOiB3cmFwO1xyXG5cclxuICAgICYudmVydGljYWwge1xyXG4gICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIH1cclxuXHJcbiAgICAmLmhvcml6b250YWwge1xyXG4gICAgICAtd2Via2l0LWJveC1mbGV4OiAwO1xyXG4gICAgICAtbXMtZmxleDogMCAwIGF1dG87XHJcbiAgICAgIGZsZXg6IDAgMCBhdXRvO1xyXG4gICAgICB3aWR0aDogYXV0bztcclxuICAgICAgbWF4LXdpZHRoOiBub25lO1xyXG5cclxuICAgICAgPiAuZm9ybS1ncm91cCA+IC5lbXB0eSB7XHJcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQGluY2x1ZGUgcm93RmxleCgpO1xyXG4gIH1cclxuXHJcbiAgQGVhY2ggJHNpemUgaW4gJHNpemVzIHtcclxuICAgICRpOiBpbmRleCgkc2l6ZXMsICRzaXplKTtcclxuICAgICRjbGFzc05hbWU6IFwiLmNvbC14cy0jeyRpfVwiO1xyXG4gICAgI3skY2xhc3NOYW1lfSB7XHJcbiAgICAgIGZsZXgtYmFzaXM6ICRzaXplO1xyXG4gICAgICAtd2Via2l0LWJveC1mbGV4OiAwO1xyXG4gICAgICAtbXMtZmxleDogMCAwICRzaXplO1xyXG4gICAgICBmbGV4OiAwIDAgJHNpemU7XHJcbiAgICAgIG1heC13aWR0aDogJHNpemU7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuYWxpZ24taXRlbXMtY2VudGVyIHtcclxuICAgIC13ZWJraXQtYm94LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDtcclxuICAgIC1tcy1mbGV4LWFsaWduOiBjZW50ZXIgIWltcG9ydGFudDtcclxuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXIgIWltcG9ydGFudDtcclxuICB9XHJcblxyXG4gIC5jb2wteHMge1xyXG4gICAgLXdlYmtpdC1mbGV4LWdyb3c6IDE7XHJcbiAgICAtbXMtZmxleC1wb3NpdGl2ZTogMTtcclxuICAgIC13ZWJraXQtYm94LWZsZXg6IDE7XHJcbiAgICBmbGV4LWdyb3c6IDE7XHJcbiAgICAtbXMtZmxleC1wcmVmZXJyZWQtc2l6ZTogMDtcclxuICAgIGZsZXgtYmFzaXM6IDA7XHJcbiAgICBtYXgtd2lkdGg6IDEwMCU7XHJcbiAgfVxyXG5cclxuICAuY29sLWF1dG8ge1xyXG4gICAgLXdlYmtpdC1ib3gtZmxleDogMDtcclxuICAgIC1tcy1mbGV4OiAwIDAgYXV0bztcclxuICAgIGZsZXg6IDAgMCBhdXRvO1xyXG4gICAgd2lkdGg6IGF1dG87XHJcbiAgICBtYXgtd2lkdGg6IG5vbmU7XHJcbiAgfVxyXG5cclxuICAuY29sLWZpeCB7XHJcbiAgICBmbGV4OiBub25lO1xyXG4gIH1cclxuXHJcbiAgLmNvbC1mdWxsIHtcclxuICAgIGZsZXg6IDE7XHJcbiAgICBvdmVyZmxvdzogYXV0bztcclxuICB9XHJcblxyXG4gIC5kZi1maWVsZC1jb250YWluZXIge1xyXG4gICAgb3ZlcmZsb3c6IGluaXRpYWw7XHJcbiAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICA+IC5kZi1yb3cge1xyXG4gICAgICBtYXJnaW4tdG9wOiAtMTBweDtcclxuICAgIH1cclxuXHJcbiAgICA+IGRpdiArIC5kZi1yb3cge1xyXG4gICAgICBtYXJnaW4tdG9wOiAwcHg7XHJcbiAgICB9XHJcbiAgICAuZGYtZmllbGQge1xyXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgIG1hcmdpbi1yaWdodDogMTBweDtcclxuXHJcbiAgICAgIC5yYW5nZS1udW0ge1xyXG4gICAgICAgIGNsZWFyOiBib3RoO1xyXG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5maWxlLXdyYXBwZXIge1xyXG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgIHBhZGRpbmc6IDAuMzc1cmVtIDAuNzVyZW07XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IDQwMDtcclxuICAgICAgICBsaW5lLWhlaWdodDogMS41O1xyXG4gICAgICAgIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gICAgICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAwLjE1cyBlYXNlLWluLW91dDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmRhcmFjbC1maWxlLWxpc3Qge1xyXG4gICAgLmZpbGUtaWNvbiB7XHJcbiAgICAgIHdpZHRoOiAyMHB4O1xyXG4gICAgICBoZWlnaHQ6IDIwcHg7XHJcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG5cclxuICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWJnLWhvdmVyKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi5kb3dubG9hZCB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sO2Jhc2U2NCxQSE4yWnlCNGJXeHVjejBpYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2TWpBd01DOXpkbWNpSUdWdVlXSnNaUzFpWVdOclozSnZkVzVrUFNKdVpYY2dNQ0F3SURJMElESTBJaUJvWldsbmFIUTlJakl3Y0hnaUlIWnBaWGRDYjNnOUlqQWdNQ0F5TkNBeU5DSWdkMmxrZEdnOUlqSXdjSGdpSUdacGJHdzlJaU13TURBd01EQWlQanhuUGp4eVpXTjBJR1pwYkd3OUltNXZibVVpSUdobGFXZG9kRDBpTWpRaUlIZHBaSFJvUFNJeU5DSXZQand2Wno0OFp6NDhjR0YwYUNCa1BTSk5NVGdzTVRWMk0wZzJkaTB6U0RSMk0yTXdMREV1TVN3d0xqa3NNaXd5TERKb01USmpNUzR4TERBc01pMHdMamtzTWkweWRpMHpTREU0ZWlCTk1UY3NNVEZzTFRFdU5ERXRNUzQwTVV3eE15d3hNaTR4TjFZMGFDMHlkamd1TVRkTU9DNDBNU3c1TGpVNVREY3NNVEZzTlN3MUlFd3hOeXd4TVhvaUx6NDhMMmMrUEM5emRtYytcIik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICYucmVtb3ZlIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUI0Yld4dWN6MGlhSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZNakF3TUM5emRtY2lJR2hsYVdkb2REMGlNakJ3ZUNJZ2RtbGxkMEp2ZUQwaU1DQXdJREkwSURJMElpQjNhV1IwYUQwaU1qQndlQ0lnWm1sc2JEMGlJekF3TURBd01DSStQSEJoZEdnZ1pEMGlUVEFnTUdneU5IWXlORWd3VmpCNklpQm1hV3hzUFNKdWIyNWxJaTgrUEhCaGRHZ2daRDBpVFRFMklEbDJNVEJJT0ZZNWFEaHRMVEV1TlMwMmFDMDFiQzB4SURGSU5YWXlhREUwVmpSb0xUTXVOV3d0TVMweGVrMHhPQ0EzU0RaMk1USmpNQ0F4TGpFdU9TQXlJRElnTW1nNFl6RXVNU0F3SURJdExqa2dNaTB5VmpkNklpOCtQQzl6ZG1jK1wiKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5maWxlLW5hbWUge1xyXG4gICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcclxuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuICAgICAgd29yZC13cmFwOiBub3JtYWw7XHJcbiAgICAgIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDU1cHgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmZpZWxkLWdyb3VwIHtcclxuICAgIC5maWVsZC52ZXJ0aWNhbCB7XHJcbiAgICAgID4gKiB7XHJcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC50YWItaGVhZGVyIHtcclxuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XHJcbiAgICBtYXJnaW46IDBweDtcclxuICAgIHBhZGRpbmc6IDBweDtcclxuXHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgbGluZS1oZWlnaHQ6IDEuMztcclxuICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7XHJcblxyXG4gICAgJi50YWItYWwge1xyXG4gICAgICAmLWxlZnQge1xyXG4gICAgICAgIGp1c3RpZnktY29udGVudDogbGVmdDtcclxuICAgICAgfVxyXG4gICAgICAmLXJpZ2h0IHtcclxuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHJpZ2h0O1xyXG4gICAgICB9XHJcbiAgICAgICYtY2VudGVyIHtcclxuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgID4gLnRhYi1pdGVtIHtcclxuICAgICAgbGlzdC1zdHlsZTogbm9uZTtcclxuICAgICAgZmxvYXQ6IGxlZnQ7XHJcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgdG9wOiAwO1xyXG4gICAgICBtYXJnaW46IDFweCAwLjRlbSAwIDA7XHJcbiAgICAgIHBhZGRpbmc6IDA7XHJcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XHJcblxyXG4gICAgICAmLmFjdGl2ZSB7XHJcbiAgICAgICAgYSB7XHJcbiAgICAgICAgICBjb2xvcjogdmFyKC0tZm9udC1ob3Zlci1jb2xvcik7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10YWItYmcpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgYSB7XHJcbiAgICAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogY2FsYygwLjQ1cmVtIC0gMXB4KTtcclxuICAgICAgICBib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogY2FsYygwLjQ1cmVtIC0gMXB4KTtcclxuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB0cmFuc3BhcmVudDtcclxuICAgICAgICBib3JkZXItYm90dG9tLXdpZHRoOiAwO1xyXG4gICAgICAgIGZsb2F0OiBsZWZ0O1xyXG4gICAgICAgIHBhZGRpbmc6IDAuNWVtIDFlbTtcclxuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XHJcbiAgICAgICAgY29sb3I6IHZhcigtLWZvbnQtY29sb3IpO1xyXG4gICAgICAgIGhlaWdodDogMzBweDtcclxuICAgICAgICBsaW5lLWhlaWdodDogMTVweDtcclxuXHJcbiAgICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS10YWItYmctaG92ZXIpO1xyXG4gICAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTtcclxuICAgICAgICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDA7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuZGYtdGFiLWJvZHkge1xyXG4gICAgLnRhYi1wYW5lbCB7XHJcbiAgICAgIGRpc3BsYXk6IG5vbmU7XHJcblxyXG4gICAgICAmLmFjdGl2ZSB7XHJcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5kZi1idG4ge1xyXG4gICAgcGFkZGluZzogNXB4IDEwcHg7XHJcbiAgICBib3JkZXItcmFkaXVzOiBjYWxjKDAuNDVyZW0gLSAxcHgpO1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1iZyk7XHJcblxyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzO1xyXG5cclxuICAgICY6aG92ZXIge1xyXG4gICAgICBjb2xvcjogdmFyKC0tZm9udC1ob3Zlci1jb2xvcik7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1iZy1ob3Zlcik7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuZGYtaWNvbiB7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICB3aWR0aDogMjFweDsgLyog7JWE7J207L2Y7J2YIOuEiOu5hCDshKTsoJUgKi9cclxuICAgIGhlaWdodDogMjFweDsgLyog7JWE7J207L2Y7J2YIOuGkuydtCDshKTsoJUgKi9cclxuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgfVxyXG5cclxuICAuZGYtYWRkLWljb24ge1xyXG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIGhlaWdodD0nMjBweCcgdmlld0JveD0nMCAtOTYwIDk2MCA5NjAnIHdpZHRoPScyMHB4JyBmaWxsPSclMjM1ZjYzNjgnJTNFJTNDcGF0aCBkPSdNNDMxLTQzMUgyMjAuNzh2LTk4SDQzMXYtMjEwLjIyaDk4Vi01MjloMjEwLjIydjk4SDUyOXYyMTAuMjJoLTk4Vi00MzFaJy8lM0UlM0Mvc3ZnJTNFXCIpO1xyXG4gIH1cclxuXHJcbiAgLmRmLXJlbW92ZS1pY29uIHtcclxuICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbCwlM0NzdmcgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnJyBoZWlnaHQ9JzIwcHgnIHZpZXdCb3g9JzAgLTk2MCA5NjAgOTYwJyB3aWR0aD0nMjBweCcgZmlsbD0nJTIzNWY2MzY4JyUzRSUzQ3BhdGggZD0nTTI5MS0yMjEuOTEgMjIxLjkxLTI5MWwxODktMTg5LTE4OS0xODlMMjkxLTczOC4wOWwxODkgMTg5IDE4OS0xODlMNzM4LjA5LTY2OWwtMTg5IDE4OSAxODkgMTg5TDY2OS0yMjEuOTFsLTE4OS0xODktMTg5IDE4OVonLyUzRSUzQy9zdmclM0VcIik7XHJcbiAgfVxyXG5cclxuICAuZm9ybS1ncm91cCB7XHJcbiAgICBkaXNwbGF5OiAtbXMtZmxleGJveDtcclxuICAgIGRpc3BsYXk6IC13ZWJraXQtYm94O1xyXG4gICAgZGlzcGxheTogZmxleDtcclxuICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93O1xyXG4gICAgLXdlYmtpdC1ib3gtb3JpZW50OiBob3Jpem9udGFsO1xyXG4gICAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiBub3JtYWw7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xyXG4gICAgLW1zLWZsZXgtd3JhcDogd3JhcDtcclxuICAgIGZsZXgtd3JhcDogd3JhcDtcclxuICAgIG1hcmdpbi10b3A6IHZhcigtLWZpZWxkLW1hcmdpbi10b3ApO1xyXG4gICAgbWFyZ2luLWJvdHRvbTogMHB4O1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAwcHggIWltcG9ydGFudDtcclxuICAgIG1hcmdpbi1sZWZ0OiAwcHggIWltcG9ydGFudDtcclxuXHJcbiAgICAmOmxhc3QtY2hpbGQge1xyXG4gICAgICBtYXJnaW4tYm90dG9tOiAwcHg7XHJcbiAgICB9XHJcblxyXG4gICAgQGluY2x1ZGUgcm93RmxleCgpO1xyXG5cclxuICAgIC5oZWxwLW1lc3NhZ2Uge1xyXG4gICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgfVxyXG5cclxuICAgIC5oZWxwLWljb24ge1xyXG4gICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xyXG4gICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uLXk6IGNlbnRlcjtcclxuXHJcbiAgICAgICYuZm9ybS1maWVsZCB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbi14OiBjYWxjKDEwMCUgLSAxNXB4KTtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi5kYXJhY2wtaWNvbiB7XHJcbiAgICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgei1pbmRleDogMTtcclxuICAgICAgICB0b3A6IDBweDtcclxuICAgICAgICByaWdodDogMHB4O1xyXG4gICAgICAgIGhlaWdodDogMTAwJTtcclxuICAgICAgICB3aWR0aDogMjBweDtcclxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDE1cHg7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAmLmludmFsaWQge1xyXG4gICAgICAuZm9ybS1maWVsZCB7XHJcbiAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1pbnZhbGlkLWJvcmRlci1jb2xvcik7XHJcbiAgICAgICAgb3V0bGluZS1jb2xvcjogdmFyKC0taW52YWxpZC1ib3JkZXItY29sb3IpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICA+IC5kZi1maWVsZC1jb250YWluZXIucmVxdWlyZWQgPiAuZGYtZmllbGQgLmhlbHAtaWNvbiB7XHJcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sOyBiYXNlNjQsIFBITjJaeUI0Yld4dWN6MGlhSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZNakF3TUM5emRtY2lJR2hsYVdkb2REMGlNakFpSUhacFpYZENiM2c5SWpBZ0xUazJNQ0E1TmpBZ09UWXdJaUIzYVdSMGFEMGlNakFpUGp4d1lYUm9JR1E5SW0weU5Ea3RNakEzTFRReUxUUXlJREl6TVMweU16RXRNak14TFRJek1TQTBNaTAwTWlBeU16RWdNak14SURJek1TMHlNekVnTkRJZ05ESXRNak14SURJek1TQXlNekVnTWpNeExUUXlJRFF5TFRJek1TMHlNekV0TWpNeElESXpNVm9pSUhOMGVXeGxQU0ltSXpFd095QWdJQ0JtYVd4c09pQWpabVkzTXpjek95WWpNVEE3SWk4K1BDOXpkbWMrXCIpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAuaGVscC1tZXNzYWdlIHtcclxuICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICBjb2xvcjogdmFyKC0taW52YWxpZC1mb250LWNvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICYudmFsaWQge1xyXG4gICAgICA+IC5kZi1maWVsZC1jb250YWluZXIucmVxdWlyZWQge1xyXG4gICAgICAgID4gLmRmLWZpZWxkIC5oZWxwLWljb24ge1xyXG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7IGJhc2U2NCwgUEhOMlp5QjRiV3h1Y3owaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1qQXdNQzl6ZG1jaUlIWnBaWGRDYjNnOUlqQWdMVGsyTUNBNU5qQWdPVFl3SWlCM2FXUjBhRDBpTWpBaUlHaGxhV2RvZEQwaU1qQWlJSE4wZVd4bFBTSW1JekV3T3lBZ0lDQm1hV3hzT2lBak1UbGhPVGMwT3lZak1UQTdJajQ4Y0dGMGFDQmtQU0pOTXpjNExUSTBOaUF4TlRRdE5EY3diRFF6TFRReklERTRNU0F4T0RFZ016ZzBMVE00TkNBME15QTBNeTAwTWpjZ05ESTNXaUl2UGp3dmMzWm5QZz09XCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5maWxlLWxhYmVsIHtcclxuICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTtcclxuICAgICAgZGlzcGxheTogaW5saW5lO1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgcGFkZGluZzogM3B4IDE1cHg7XHJcbiAgICAgIGxpbmUtaGVpZ2h0OiAxO1xyXG4gICAgICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xyXG4gICAgICBib3JkZXItcmFkaXVzOiA0cHg7XHJcbiAgICAgIHRyYW5zaXRpb246IGJvcmRlci1jb2xvciAwLjE1cyBlYXNlLWluLW91dCwgYm94LXNoYWRvdyAwLjE1cyBlYXNlLWluLW91dDtcclxuXHJcbiAgICAgICY6aG92ZXIge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1iZy1ob3Zlcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgLmRmLWdyaWQtZmllbGQge1xyXG4gICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xyXG4gICAgLmRmLWdyaWQtYnRuLWFyZWEge1xyXG4gICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpO1xyXG4gICAgICBwYWRkaW5nOiAzcHg7XHJcbiAgICB9XHJcblxyXG4gICAgLmRmLWdyaWQtY29udGFpbmVyIHtcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIGhlaWdodDogYXV0bztcclxuICAgICAgb3ZlcmZsb3cteTogYXV0bztcclxuICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTtcclxuXHJcbiAgICAgIC5kZi1idG4ge1xyXG4gICAgICAgIHBhZGRpbmc6IDNweCA1cHg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5kZi1ncmlkIHtcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgICBib3JkZXItdG9wLXdpZHRoOiAwcHg7XHJcbiAgICAgICAgYm9yZGVyLWNvbGxhcHNlOiBjb2xsYXBzZTtcclxuXHJcbiAgICAgICAgPiB0aGVhZCB7XHJcbiAgICAgICAgICB0aCB7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiBzdGlja3k7XHJcbiAgICAgICAgICAgIHRvcDogMHB4O1xyXG4gICAgICAgICAgICB6LWluZGV4OiAxMDtcclxuICAgICAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJnLWdyaWQtaGVhZGVyKTtcclxuICAgICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLmhlbHAtbWVzc2FnZSB7XHJcbiAgICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGQsXHJcbiAgICAgICAgdGgge1xyXG4gICAgICAgICAgcGFkZGluZzogM3B4IDVweDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5oZWxwLWljb24ge1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDtcclxuICAgICAgICAgIGJhY2tncm91bmQtcG9zaXRpb24teTogY2VudGVyO1xyXG5cclxuICAgICAgICAgICYuZm9ybS1maWVsZCB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtcG9zaXRpb24teDogY2FsYygxMDAlIC0gMTVweCk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgJi5kYXJhY2wtaWNvbiB7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICAgICAgei1pbmRleDogMTtcclxuICAgICAgICAgICAgdG9wOiAwcHg7XHJcbiAgICAgICAgICAgIHJpZ2h0OiAwcHg7XHJcbiAgICAgICAgICAgIGhlaWdodDogMTAwJTtcclxuICAgICAgICAgICAgd2lkdGg6IDIwcHg7XHJcbiAgICAgICAgICAgIG1hcmdpbi1yaWdodDogMTVweDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5ncmlkLWNvbHVtbiB7XHJcbiAgICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuaW52YWxpZCB7XHJcbiAgICAgICAgICAuZm9ybS1maWVsZCB7XHJcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0taW52YWxpZC1ib3JkZXItY29sb3IpO1xyXG4gICAgICAgICAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS1pbnZhbGlkLWJvcmRlci1jb2xvcik7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgPiAuZ3JpZC1jb2x1bW4ucmVxdWlyZWQgLmRmLWZpZWxkIC5oZWxwLWljb24ge1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sOyBiYXNlNjQsIFBITjJaeUI0Yld4dWN6MGlhSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZNakF3TUM5emRtY2lJR2hsYVdkb2REMGlNakFpSUhacFpYZENiM2c5SWpBZ0xUazJNQ0E1TmpBZ09UWXdJaUIzYVdSMGFEMGlNakFpUGp4d1lYUm9JR1E5SW0weU5Ea3RNakEzTFRReUxUUXlJREl6TVMweU16RXRNak14TFRJek1TQTBNaTAwTWlBeU16RWdNak14SURJek1TMHlNekVnTkRJZ05ESXRNak14SURJek1TQXlNekVnTWpNeExUUXlJRFF5TFRJek1TMHlNekV0TWpNeElESXpNVm9pSUhOMGVXeGxQU0ltSXpFd095QWdJQ0JtYVd4c09pQWpabVkzTXpjek95WWpNVEE3SWk4K1BDOXpkbWMrXCIpO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgIC5oZWxwLW1lc3NhZ2Uge1xyXG4gICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1pbnZhbGlkLWJvcmRlci1jb2xvcik7XHJcbiAgICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0taW52YWxpZC1ib3JkZXItY29sb3IpIHRyYW5zcGFyZW50IHRyYW5zcGFyZW50IHRyYW5zcGFyZW50O1xyXG4gICAgICAgICAgICB0b3A6IGNhbGMoMTAwJSArIDZweCk7XHJcbiAgICAgICAgICAgIGxlZnQ6IDUwJTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xyXG4gICAgICAgICAgICBtaW4td2lkdGg6IDI3MHB4O1xyXG4gICAgICAgICAgICBwYWRkaW5nOiA1cHggNXB4O1xyXG4gICAgICAgICAgICBib3JkZXItcmFkaXVzOiAwLjRyZW07XHJcbiAgICAgICAgICAgIHotaW5kZXg6IDI7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWludmFsaWQtYmFja2dyb3VuZC1jb2xvcik7XHJcbiAgICAgICAgICAgIGNvbG9yOiB2YXIoLS1pbnZhbGlkLWZvbnQtY29sb3IpO1xyXG4gICAgICAgICAgICAmOjphZnRlciB7XHJcbiAgICAgICAgICAgICAgY29udGVudDogXCJcIjtcclxuICAgICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgICAgICAgdG9wOiAwO1xyXG4gICAgICAgICAgICAgIGxlZnQ6IDUwJTtcclxuICAgICAgICAgICAgICB3aWR0aDogMDtcclxuICAgICAgICAgICAgICBoZWlnaHQ6IDA7XHJcbiAgICAgICAgICAgICAgYm9yZGVyOiA3cHggc29saWQgdHJhbnNwYXJlbnQ7XHJcbiAgICAgICAgICAgICAgYm9yZGVyLWJvdHRvbS1jb2xvcjogdmFyKC0taW52YWxpZC1ib3JkZXItY29sb3IpO1xyXG4gICAgICAgICAgICAgIGJvcmRlci10b3A6IDA7XHJcbiAgICAgICAgICAgICAgYm9yZGVyLWxlZnQ6IDA7XHJcbiAgICAgICAgICAgICAgbWFyZ2luLWxlZnQ6IC0zLjVweDtcclxuICAgICAgICAgICAgICBtYXJnaW4tdG9wOiAtN3B4O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAudmFsaWQge1xyXG4gICAgICAgICAgPiAuZ3JpZC1jb2x1bW4ucmVxdWlyZWQge1xyXG4gICAgICAgICAgICAuZGYtZmllbGQgLmhlbHAtaWNvbiB7XHJcbiAgICAgICAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgICAgICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sOyBiYXNlNjQsIFBITjJaeUI0Yld4dWN6MGlhSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZNakF3TUM5emRtY2lJSFpwWlhkQ2IzZzlJakFnTFRrMk1DQTVOakFnT1RZd0lpQjNhV1IwYUQwaU1qQWlJR2hsYVdkb2REMGlNakFpSUhOMGVXeGxQU0ltSXpFd095QWdJQ0JtYVd4c09pQWpNVGxoT1RjME95WWpNVEE3SWo0OGNHRjBhQ0JrUFNKTk16YzRMVEkwTmlBeE5UUXRORGN3YkRRekxUUXpJREU0TVNBeE9ERWdNemcwTFRNNE5DQTBNeUEwTXkwME1qY2dOREkzV2lJdlBqd3ZjM1puUGc9PVwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG4iXX0= */", "@charset \"UTF-8\";\n.daracl-datetime-hidden {\n visibility: visible;\n width: 0px;\n height: 0px;\n z-index: 1000;\n}\n\n.daracl-datetime-wrapper {\n --color: #34495e;\n --light: #ffffff;\n --success: #0abf30;\n --error: #e24d4c;\n --warning: #e9bd0c;\n --info: #3498db;\n --background-color: #ffffff;\n --sunday: #f00d0d;\n --border-color: #d3d2d2;\n --select-background-color: #0abf30;\n --button-hover-color: #d4d4d48a;\n --disabled-background-color: #f1f1f18a;\n --today-bg: #a9d5ff;\n}\n\nbody.dark .daracl-datetime-wrapper,\n.daracl-datetime-wrapper.dark {\n --color: #d0d6e1;\n --light: #ffffff;\n --success: #0abf30;\n --error: #e24d4c;\n --warning: #e9bd0c;\n --info: #3498db;\n --background-color: #070d19;\n --sunday: #f00d0d;\n --border-color: #6e7380;\n --today-bg: #5660d9;\n --today-color: #5660d9;\n --select-background-color: #ffffff;\n --button-hover-color: #31316c;\n --disabled-background-color: #818181;\n}\n\n.daracl-datetime-wrapper {\n z-index: 1000;\n display: none;\n}\n.daracl-datetime-wrapper *,\n.daracl-datetime-wrapper *::before,\n.daracl-datetime-wrapper *::after {\n box-sizing: content-box;\n color: var(--color);\n}\n.daracl-datetime-wrapper.layer {\n position: absolute;\n}\n.daracl-datetime-wrapper input {\n background-color: transparent;\n}\n.daracl-datetime-wrapper.show {\n display: block;\n animation: fadeIn 0.5s;\n animation-fill-mode: forwards;\n}\n.daracl-datetime-wrapper.hide {\n animation: fadeOut 0.5s;\n animation-fill-mode: forwards;\n}\n.daracl-datetime-wrapper.embed {\n display: block;\n}\n.daracl-datetime-wrapper .sun > span {\n color: var(--sunday);\n}\n.daracl-datetime-wrapper .ddtp-datetime {\n border-radius: 4px;\n padding: 10px;\n width: 235px;\n background-color: var(--background-color);\n color: var(--color);\n box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12);\n}\n.daracl-datetime-wrapper .ddtp-datetime.rtl {\n direction: rtl;\n}\n.daracl-datetime-wrapper .ddtp-datetime.rtl .ddtp-header .ddtp-header-year,\n.daracl-datetime-wrapper .ddtp-datetime.rtl .ddtp-header .ddtp-header-month {\n float: right;\n}\n.daracl-datetime-wrapper .ddtp-datetime.rtl .ddtp-header .ddtp-date-move {\n float: left;\n}\n.daracl-datetime-wrapper .ddtp-datetime.rtl .ddtp-body .ddtp-times .time-container {\n display: block;\n}\n.daracl-datetime-wrapper .ddtp-datetime.rtl .ddtp-body .ddtp-times > .time-btn {\n left: 0px;\n right: auto;\n}\n.daracl-datetime-wrapper .ddtp-datetime[view-mode=date] .ddtp-body > .ddtp-days {\n display: block;\n}\n.daracl-datetime-wrapper .ddtp-datetime[view-mode=datetime] .ddtp-body > .ddtp-times,\n.daracl-datetime-wrapper .ddtp-datetime[view-mode=datetime] .ddtp-body > .ddtp-days {\n display: block;\n}\n.daracl-datetime-wrapper .ddtp-datetime[view-mode=time] .ddtp-body > .ddtp-times {\n display: block;\n}\n.daracl-datetime-wrapper .ddtp-datetime[view-mode=time] .ddtp-header {\n display: none;\n}\n.daracl-datetime-wrapper .ddtp-datetime[view-mode=year] .ddtp-body > .ddtp-years {\n display: flex;\n}\n.daracl-datetime-wrapper .ddtp-datetime[view-mode=year] .ddtp-header-month {\n display: none;\n}\n.daracl-datetime-wrapper .ddtp-datetime[view-mode=month] .ddtp-body > .ddtp-months {\n display: flex;\n}\n.daracl-datetime-wrapper .ddtp-datetime[view-mode=month] .ddtp-header-month {\n display: none;\n}\n.daracl-datetime-wrapper .ddtp-header {\n padding: 2px 5px 10px;\n line-height: 25px;\n height: 25px;\n vertical-align: middle;\n}\n.daracl-datetime-wrapper .ddtp-header .ddtp-header-year {\n font-weight: bold;\n margin: 0px 10px 0px 0px;\n cursor: pointer;\n}\n.daracl-datetime-wrapper .ddtp-header .ddtp-header-month {\n font-weight: bold;\n margin: 0px 10px 0px 0px;\n vertical-align: top;\n cursor: pointer;\n}\n.daracl-datetime-wrapper .ddtp-header .ddtp-date-move {\n margin-left: auto;\n vertical-align: top;\n float: right;\n direction: ltr;\n}\n.daracl-datetime-wrapper .ddtp-header .ddtp-date-move .ddtp-move-btn {\n text-decoration: none;\n font-weight: bold;\n display: inline-block;\n height: 24px;\n}\n.daracl-datetime-wrapper .ddtp-header .ddtp-date-move .ddtp-move-btn > svg {\n fill: var(--color);\n}\n.daracl-datetime-wrapper .ddtp-header .ddtp-date-move .ddtp-move-btn:hover {\n background-color: var(--button-hover-color);\n}\n.daracl-datetime-wrapper .ddtp-header .ddtp-date-move::after {\n content: \"\";\n clear: both;\n}\n.daracl-datetime-wrapper .ddtp-body {\n margin: -2px -10px;\n font-size: 13px;\n}\n.daracl-datetime-wrapper .ddtp-body > * {\n display: none;\n}\n.daracl-datetime-wrapper .ddtp-body button {\n display: block;\n width: 100%;\n margin-bottom: 7px;\n padding: 3px 0px;\n border-radius: 4px;\n border-color: var(--border-color);\n border-width: 1px;\n border-style: solid;\n background-color: var(--background-color);\n}\n.daracl-datetime-wrapper .ddtp-body button:hover {\n background-color: var(--button-hover-color);\n}\n.daracl-datetime-wrapper .ddtp-body .time-today:hover {\n background-color: var(--button-hover-color);\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-days {\n letter-spacing: 0px;\n border-collapse: separate;\n border-spacing: 0px;\n margin: 2px 10px;\n width: inherit;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-days .ddtp-day-label {\n font-weight: bold;\n width: 35px;\n padding: 2px 5px;\n text-align: center;\n line-height: initial;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-days .ddtp-day {\n position: relative;\n text-align: center;\n padding: 7px;\n cursor: pointer;\n line-height: initial;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-days .ddtp-day.event::after {\n content: \"\u2022\";\n color: #f78536;\n font-size: 1.4em;\n position: absolute;\n left: 2px;\n z-index: 10;\n top: -7px;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-days .ddtp-day:before {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n display: block;\n width: 30px;\n height: 30px;\n background-color: var(--select-background-color);\n border-radius: 50%;\n opacity: 0;\n z-index: 0;\n transition: opacity 0.2s ease-in;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-days .ddtp-day:active:before, .daracl-datetime-wrapper .ddtp-body .ddtp-days .ddtp-day:hover:before {\n opacity: 0.7;\n transition: opacity 0.2s ease-out;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-days .ddtp-day.today > span {\n z-index: 2;\n position: relative;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-days .ddtp-day.today:before {\n background-color: var(--today-bg);\n z-index: 1;\n opacity: 1;\n transition: opacity 0.2s ease-out;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-days .ddtp-day.select:before {\n background-color: var(--select-background-color);\n opacity: 0.5;\n transition: opacity 0.2s ease-out;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-days .ddtp-day.old, .daracl-datetime-wrapper .ddtp-body .ddtp-days .ddtp-day.new {\n opacity: 0.5;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-days .ddtp-day.disabled {\n background-color: var(--disabled-background-color);\n opacity: 0.5;\n cursor: auto;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-days .ddtp-day.disabled:before {\n background-color: transparent;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-times {\n margin: 2px 15px;\n position: relative;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-times > .time-container {\n width: calc(100% - 60px);\n display: inline-block;\n height: 60px;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-times input[type=number] {\n -moz-appearance: textfield;\n appearance: textfield;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-times input[type=number]::-webkit-inner-spin-button, .daracl-datetime-wrapper .ddtp-body .ddtp-times input[type=number]::-webkit-outer-spin-button {\n -webkit-appearance: none;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-times > .time-btn {\n position: absolute;\n top: 9px;\n width: 55px;\n right: 0px;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-times > .time-btn > .time-select {\n height: 40px;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-times .ddtp-time {\n display: table-row;\n width: 160px;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-times .ddtp-time > * {\n margin-top: 5px;\n display: table-cell;\n line-height: 20px;\n vertical-align: middle;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-times .ddtp-time > span {\n width: 20px;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-times .ddtp-time > input[type=number] {\n width: 45px;\n margin-right: 5px;\n padding-left: 0px;\n border-radius: 4px;\n border-color: var(--border-color);\n border-width: 1px;\n text-align: center;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-times .ddtp-time > input[type=range] {\n width: calc(100% - 60px);\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-months {\n flex-direction: row;\n flex-wrap: wrap;\n justify-content: space-between;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-months > .ddtp-month {\n position: relative;\n flex: 1 0 30%;\n margin-bottom: 8px;\n line-height: 50px;\n text-align: center;\n cursor: pointer;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-months > .ddtp-month:before {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n display: block;\n width: 50px;\n height: 50px;\n background-color: var(--select-background-color);\n border-radius: 50%;\n opacity: 0;\n z-index: 0;\n transition: opacity 0.2s ease-in;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-months > .ddtp-month:active:before, .daracl-datetime-wrapper .ddtp-body .ddtp-months > .ddtp-month:hover:before {\n opacity: 0.5;\n transition: opacity 0.2s ease-out;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-months > .ddtp-month.disabled {\n background-color: var(--disabled-background-color);\n opacity: 0.5;\n cursor: auto;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-months > .ddtp-month.disabled:before {\n background-color: transparent;\n}\n.daracl-datetime-wrapper .ddtp-years {\n flex-direction: row;\n flex-wrap: wrap;\n justify-content: space-between;\n}\n.daracl-datetime-wrapper .ddtp-years > .ddtp-year {\n position: relative;\n flex: 1 0 25%;\n margin-bottom: 8px;\n line-height: 50px;\n text-align: center;\n cursor: pointer;\n}\n.daracl-datetime-wrapper .ddtp-years > .ddtp-year:before {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n display: block;\n width: 50px;\n height: 50px;\n background-color: var(--select-background-color);\n border-radius: 50%;\n opacity: 0;\n z-index: 0;\n transition: opacity 0.2s ease-in;\n}\n.daracl-datetime-wrapper .ddtp-years > .ddtp-year:active:before, .daracl-datetime-wrapper .ddtp-years > .ddtp-year:hover:before {\n opacity: 0.5;\n transition: opacity 0.2s ease-out;\n}\n.daracl-datetime-wrapper .ddtp-years > .ddtp-year.disabled {\n background-color: var(--disabled-background-color);\n opacity: 0.5;\n cursor: auto;\n}\n.daracl-datetime-wrapper .ddtp-years > .ddtp-year.disabled:before {\n background-color: transparent;\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes fadeOut {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VSb290IjoiRDpcXDAzLm9wZW5zb3VyY2VzXFxkYXJhLWZvcm1cXG5vZGVfbW9kdWxlc1xcQGRhcmFjbFxcZGF0ZXRpbWVwaWNrZXJcXHN0eWxlIiwic291cmNlcyI6WyJkYXJhY2wuZGF0ZXRpbWVwaWNrZXIuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7QUFBQTtFQUVFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTs7QUFFQTtBQUFBO0FBQUE7RUFHRTtFQUNBOztBQUdGO0VBQ0U7O0FBR0Y7RUFDRTs7QUFHRjtFQUNFO0VBQ0E7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7O0FBSUY7RUFDRTs7QUFJQTtFQUNFOztBQUlKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0U7O0FBR0U7QUFBQTtFQUVFOztBQUdGO0VBQ0U7O0FBS0Y7RUFDRTs7QUFFRjtFQUNFO0VBQ0E7O0FBS047RUFDRTs7QUFJQTtBQUFBO0VBRUU7O0FBS0Y7RUFDRTs7QUFHRjtFQUNFOztBQUtGO0VBQ0U7O0FBR0Y7RUFDRTs7QUFLRjtFQUNFOztBQUdGO0VBQ0U7O0FBS047RUFDRTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBOztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFOztBQUdGO0VBQ0U7O0FBSUo7RUFDRTtFQUNBOztBQUtOO0VBQ0U7RUFDQTs7QUFFQTtFQUNFOztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0U7O0FBS0Y7RUFDRTs7QUFJSjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBR0Y7RUFFRTtFQUNBOztBQUlBO0VBQ0U7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBOztBQUlKO0VBQ0U7RUFDQTtFQUNBOztBQUdGO0VBRUU7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTs7QUFNUjtFQUNFO0VBQ0E7O0FBRUE7RUFDRTtFQUNBO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBOztBQUVBO0VBRUU7O0FBSUo7RUFDRTtFQUNBO0VBQ0E7RUFDQTs7QUFDQTtFQUNFOztBQUlKO0VBQ0U7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7RUFDQTtFQUNBOztBQUdGO0VBQ0U7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFHRjtFQUNFOztBQUtOO0VBQ0U7RUFDQTtFQUNBOztBQUVBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBR0Y7RUFFRTtFQUNBOztBQUdGO0VBQ0U7RUFDQTtFQUNBOztBQUVBO0VBQ0U7O0FBT1Y7RUFDRTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFHRjtFQUVFO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTs7O0FBT1Y7RUFDRTtJQUNFOztFQUdGO0lBQ0U7OztBQUlKO0VBQ0U7SUFDRTs7RUFHRjtJQUNFIiwic291cmNlc0NvbnRlbnQiOlsiLmRhcmFjbC1kYXRldGltZS1oaWRkZW4ge1xyXG4gIHZpc2liaWxpdHk6IHZpc2libGU7XHJcbiAgd2lkdGg6IDBweDtcclxuICBoZWlnaHQ6IDBweDtcclxuICB6LWluZGV4OiAxMDAwO1xyXG59XHJcblxyXG4uZGFyYWNsLWRhdGV0aW1lLXdyYXBwZXIge1xyXG4gIC0tY29sb3I6ICMzNDQ5NWU7XHJcbiAgLS1saWdodDogI2ZmZmZmZjtcclxuICAtLXN1Y2Nlc3M6ICMwYWJmMzA7XHJcbiAgLS1lcnJvcjogI2UyNGQ0YztcclxuICAtLXdhcm5pbmc6ICNlOWJkMGM7XHJcbiAgLS1pbmZvOiAjMzQ5OGRiO1xyXG4gIC0tYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcclxuICAtLXN1bmRheTogI2YwMGQwZDtcclxuICAtLWJvcmRlci1jb2xvcjogI2QzZDJkMjtcclxuICAtLXNlbGVjdC1iYWNrZ3JvdW5kLWNvbG9yOiAjMGFiZjMwO1xyXG4gIC0tYnV0dG9uLWhvdmVyLWNvbG9yOiAjZDRkNGQ0OGE7XHJcbiAgLS1kaXNhYmxlZC1iYWNrZ3JvdW5kLWNvbG9yOiAjZjFmMWYxOGE7XHJcbiAgLS10b2RheS1iZzogI2E5ZDVmZjtcclxufVxyXG5cclxuYm9keS5kYXJrIC5kYXJhY2wtZGF0ZXRpbWUtd3JhcHBlcixcclxuLmRhcmFjbC1kYXRldGltZS13cmFwcGVyLmRhcmsge1xyXG4gIC0tY29sb3I6ICNkMGQ2ZTE7XHJcbiAgLS1saWdodDogI2ZmZmZmZjtcclxuICAtLXN1Y2Nlc3M6ICMwYWJmMzA7XHJcbiAgLS1lcnJvcjogI2UyNGQ0YztcclxuICAtLXdhcm5pbmc6ICNlOWJkMGM7XHJcbiAgLS1pbmZvOiAjMzQ5OGRiO1xyXG4gIC0tYmFja2dyb3VuZC1jb2xvcjogIzA3MGQxOTtcclxuICAtLXN1bmRheTogI2YwMGQwZDtcclxuICAtLWJvcmRlci1jb2xvcjogIzZlNzM4MDtcclxuICAtLXRvZGF5LWJnOiAjNTY2MGQ5O1xyXG4gIC0tdG9kYXktY29sb3I6ICM1NjYwZDk7XHJcbiAgLS1zZWxlY3QtYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcclxuICAtLWJ1dHRvbi1ob3Zlci1jb2xvcjogIzMxMzE2YztcclxuICAtLWRpc2FibGVkLWJhY2tncm91bmQtY29sb3I6ICM4MTgxODE7XHJcbn1cclxuXHJcbi5kYXJhY2wtZGF0ZXRpbWUtd3JhcHBlciB7XHJcbiAgei1pbmRleDogMTAwMDtcclxuICBkaXNwbGF5OiBub25lO1xyXG5cclxuICAqLFxyXG4gICo6OmJlZm9yZSxcclxuICAqOjphZnRlciB7XHJcbiAgICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcclxuICAgIGNvbG9yOiB2YXIoLS1jb2xvcik7XHJcbiAgfVxyXG5cclxuICAmLmxheWVyIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB9XHJcblxyXG4gIGlucHV0IHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG4gIH1cclxuXHJcbiAgJi5zaG93IHtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgYW5pbWF0aW9uOiBmYWRlSW4gMC41cztcclxuICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzO1xyXG4gIH1cclxuXHJcbiAgJi5oaWRlIHtcclxuICAgIGFuaW1hdGlvbjogZmFkZU91dCAwLjVzO1xyXG4gICAgYW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7XHJcbiAgICAvL2FuaW1hdGlvbjogZGFyYVRvYXN0SGlkZSAwLjNzIGVhc2UgZm9yd2FyZHM7XHJcbiAgfVxyXG5cclxuICAmLmVtYmVkIHtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gIH1cclxuXHJcbiAgLnN1biB7XHJcbiAgICAmID4gc3BhbiB7XHJcbiAgICAgIGNvbG9yOiB2YXIoLS1zdW5kYXkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmRkdHAtZGF0ZXRpbWUge1xyXG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gICAgcGFkZGluZzogMTBweDtcclxuICAgIHdpZHRoOiAyMzVweDtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJhY2tncm91bmQtY29sb3IpO1xyXG4gICAgY29sb3I6IHZhcigtLWNvbG9yKTtcclxuICAgIGJveC1zaGFkb3c6IDBweCA1cHggNXB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggOHB4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCAzcHggMTRweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcclxuXHJcbiAgICAmLnJ0bCB7XHJcbiAgICAgIGRpcmVjdGlvbjogcnRsO1xyXG5cclxuICAgICAgLmRkdHAtaGVhZGVyIHtcclxuICAgICAgICAuZGR0cC1oZWFkZXIteWVhcixcclxuICAgICAgICAuZGR0cC1oZWFkZXItbW9udGgge1xyXG4gICAgICAgICAgZmxvYXQ6IHJpZ2h0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLmRkdHAtZGF0ZS1tb3ZlIHtcclxuICAgICAgICAgIGZsb2F0OiBsZWZ0O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLmRkdHAtYm9keSAuZGR0cC10aW1lcyB7XHJcbiAgICAgICAgLnRpbWUtY29udGFpbmVyIHtcclxuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgIH1cclxuICAgICAgICAmID4gLnRpbWUtYnRuIHtcclxuICAgICAgICAgIGxlZnQ6IDBweDtcclxuICAgICAgICAgIHJpZ2h0OiBhdXRvO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICZbdmlldy1tb2RlPVwiZGF0ZVwiXSAuZGR0cC1ib2R5ID4gLmRkdHAtZGF5cyB7XHJcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgfVxyXG5cclxuICAgICZbdmlldy1tb2RlPVwiZGF0ZXRpbWVcIl0ge1xyXG4gICAgICAuZGR0cC1ib2R5ID4gLmRkdHAtdGltZXMsXHJcbiAgICAgIC5kZHRwLWJvZHkgPiAuZGR0cC1kYXlzIHtcclxuICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICZbdmlldy1tb2RlPVwidGltZVwiXSB7XHJcbiAgICAgIC5kZHRwLWJvZHkgPiAuZGR0cC10aW1lcyB7XHJcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5kZHRwLWhlYWRlciB7XHJcbiAgICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICZbdmlldy1tb2RlPVwieWVhclwiXSB7XHJcbiAgICAgIC5kZHRwLWJvZHkgPiAuZGR0cC15ZWFycyB7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgfVxyXG5cclxuICAgICAgLmRkdHAtaGVhZGVyLW1vbnRoIHtcclxuICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgJlt2aWV3LW1vZGU9XCJtb250aFwiXSB7XHJcbiAgICAgIC5kZHRwLWJvZHkgPiAuZGR0cC1tb250aHMge1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5kZHRwLWhlYWRlci1tb250aCB7XHJcbiAgICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmRkdHAtaGVhZGVyIHtcclxuICAgIHBhZGRpbmc6IDJweCA1cHggMTBweDtcclxuICAgIGxpbmUtaGVpZ2h0OiAyNXB4O1xyXG4gICAgaGVpZ2h0OiAyNXB4O1xyXG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuXHJcbiAgICAuZGR0cC1oZWFkZXIteWVhciB7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgICBtYXJnaW46IDBweCAxMHB4IDBweCAwcHg7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIH1cclxuXHJcbiAgICAuZGR0cC1oZWFkZXItbW9udGgge1xyXG4gICAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgICAgbWFyZ2luOiAwcHggMTBweCAwcHggMHB4O1xyXG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICB9XHJcblxyXG4gICAgLmRkdHAtZGF0ZS1tb3ZlIHtcclxuICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XHJcbiAgICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XHJcbiAgICAgIGZsb2F0OiByaWdodDtcclxuICAgICAgZGlyZWN0aW9uOiBsdHI7XHJcblxyXG4gICAgICAuZGR0cC1tb3ZlLWJ0biB7XHJcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgICAgICBoZWlnaHQ6IDI0cHg7XHJcblxyXG4gICAgICAgID4gc3ZnIHtcclxuICAgICAgICAgIGZpbGw6IHZhcigtLWNvbG9yKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICY6aG92ZXIge1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWhvdmVyLWNvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICY6OmFmdGVyIHtcclxuICAgICAgICBjb250ZW50OiBcIlwiO1xyXG4gICAgICAgIGNsZWFyOiBib3RoO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuZGR0cC1ib2R5IHtcclxuICAgIG1hcmdpbjogLTJweCAtMTBweDtcclxuICAgIGZvbnQtc2l6ZTogMTNweDtcclxuXHJcbiAgICA+ICoge1xyXG4gICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgfVxyXG5cclxuICAgIGJ1dHRvbiB7XHJcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgbWFyZ2luLWJvdHRvbTogN3B4O1xyXG4gICAgICBwYWRkaW5nOiAzcHggMHB4O1xyXG4gICAgICBib3JkZXItcmFkaXVzOiA0cHg7XHJcbiAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tYm9yZGVyLWNvbG9yKTtcclxuICAgICAgYm9yZGVyLXdpZHRoOiAxcHg7XHJcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJhY2tncm91bmQtY29sb3IpO1xyXG5cclxuICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWhvdmVyLWNvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC50aW1lLXRvZGF5IHtcclxuICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWhvdmVyLWNvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5kZHRwLWRheXMge1xyXG4gICAgICBsZXR0ZXItc3BhY2luZzogMHB4O1xyXG4gICAgICBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlO1xyXG4gICAgICBib3JkZXItc3BhY2luZzogMHB4O1xyXG4gICAgICBtYXJnaW46IDJweCAxMHB4O1xyXG4gICAgICB3aWR0aDogaW5oZXJpdDtcclxuXHJcbiAgICAgIC5kZHRwLWRheS1sYWJlbCB7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgICAgd2lkdGg6IDM1cHg7XHJcbiAgICAgICAgcGFkZGluZzogMnB4IDVweDtcclxuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6IGluaXRpYWw7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5kZHRwLWRheSB7XHJcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgICBwYWRkaW5nOiA3cHg7XHJcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICAgIGxpbmUtaGVpZ2h0OiBpbml0aWFsO1xyXG5cclxuICAgICAgICAmLmV2ZW50OjphZnRlciB7XHJcbiAgICAgICAgICBjb250ZW50OiBcIuKAolwiO1xyXG4gICAgICAgICAgY29sb3I6ICNmNzg1MzY7XHJcbiAgICAgICAgICBmb250LXNpemU6IDEuNGVtO1xyXG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgICAgbGVmdDogMnB4O1xyXG4gICAgICAgICAgei1pbmRleDogMTA7XHJcbiAgICAgICAgICB0b3A6IC03cHg7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmOmJlZm9yZSB7XHJcbiAgICAgICAgICBjb250ZW50OiBcIlwiO1xyXG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgICAgdG9wOiA1MCU7XHJcbiAgICAgICAgICBsZWZ0OiA1MCU7XHJcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcclxuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgICAgd2lkdGg6IDMwcHg7XHJcbiAgICAgICAgICBoZWlnaHQ6IDMwcHg7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zZWxlY3QtYmFja2dyb3VuZC1jb2xvcik7XHJcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XHJcbiAgICAgICAgICBvcGFjaXR5OiAwO1xyXG4gICAgICAgICAgei1pbmRleDogMDtcclxuICAgICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycyBlYXNlLWluO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJjphY3RpdmU6YmVmb3JlLFxyXG4gICAgICAgICY6aG92ZXI6YmVmb3JlIHtcclxuICAgICAgICAgIG9wYWNpdHk6IDAuNztcclxuICAgICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycyBlYXNlLW91dDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYudG9kYXkge1xyXG4gICAgICAgICAgPiBzcGFuIHtcclxuICAgICAgICAgICAgei1pbmRleDogMjtcclxuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICY6YmVmb3JlIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdG9kYXktYmcpO1xyXG4gICAgICAgICAgICB6LWluZGV4OiAxO1xyXG4gICAgICAgICAgICBvcGFjaXR5OiAxO1xyXG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgZWFzZS1vdXQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmLnNlbGVjdDpiZWZvcmUge1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2VsZWN0LWJhY2tncm91bmQtY29sb3IpO1xyXG4gICAgICAgICAgb3BhY2l0eTogMC41O1xyXG4gICAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGVhc2Utb3V0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi5vbGQsXHJcbiAgICAgICAgJi5uZXcge1xyXG4gICAgICAgICAgb3BhY2l0eTogMC41O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi5kaXNhYmxlZCB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1kaXNhYmxlZC1iYWNrZ3JvdW5kLWNvbG9yKTtcclxuICAgICAgICAgIG9wYWNpdHk6IDAuNTtcclxuICAgICAgICAgIGN1cnNvcjogYXV0bztcclxuXHJcbiAgICAgICAgICAmOmJlZm9yZSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5kZHRwLXRpbWVzIHtcclxuICAgICAgbWFyZ2luOiAycHggMTVweDtcclxuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG5cclxuICAgICAgPiAudGltZS1jb250YWluZXIge1xyXG4gICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLSA2MHB4KTtcclxuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgICAgaGVpZ2h0OiA2MHB4O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpbnB1dFt0eXBlPVwibnVtYmVyXCJdIHtcclxuICAgICAgICAtbW96LWFwcGVhcmFuY2U6IHRleHRmaWVsZDtcclxuICAgICAgICBhcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7XHJcblxyXG4gICAgICAgICY6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sXHJcbiAgICAgICAgJjo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiB7XHJcbiAgICAgICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICA+IC50aW1lLWJ0biB7XHJcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgIHRvcDogOXB4O1xyXG4gICAgICAgIHdpZHRoOiA1NXB4O1xyXG4gICAgICAgIHJpZ2h0OiAwcHg7XHJcbiAgICAgICAgPiAudGltZS1zZWxlY3Qge1xyXG4gICAgICAgICAgaGVpZ2h0OiA0MHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLmRkdHAtdGltZSB7XHJcbiAgICAgICAgZGlzcGxheTogdGFibGUtcm93O1xyXG4gICAgICAgIHdpZHRoOiAxNjBweDtcclxuXHJcbiAgICAgICAgPiAqIHtcclxuICAgICAgICAgIG1hcmdpbi10b3A6IDVweDtcclxuICAgICAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XHJcbiAgICAgICAgICBsaW5lLWhlaWdodDogMjBweDtcclxuICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICA+IHNwYW4ge1xyXG4gICAgICAgICAgd2lkdGg6IDIwcHg7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICA+IGlucHV0W3R5cGU9XCJudW1iZXJcIl0ge1xyXG4gICAgICAgICAgd2lkdGg6IDQ1cHg7XHJcbiAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDVweDtcclxuICAgICAgICAgIHBhZGRpbmctbGVmdDogMHB4O1xyXG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1ib3JkZXItY29sb3IpO1xyXG4gICAgICAgICAgYm9yZGVyLXdpZHRoOiAxcHg7XHJcbiAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICA+IGlucHV0W3R5cGU9XCJyYW5nZVwiXSB7XHJcbiAgICAgICAgICB3aWR0aDogY2FsYygxMDAlIC0gNjBweCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLmRkdHAtbW9udGhzIHtcclxuICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcclxuICAgICAgZmxleC13cmFwOiB3cmFwO1xyXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcblxyXG4gICAgICA+IC5kZHRwLW1vbnRoIHtcclxuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgICAgZmxleDogMSAwIDMwJTtcclxuICAgICAgICBtYXJnaW4tYm90dG9tOiA4cHg7XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6IDUwcHg7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuXHJcbiAgICAgICAgJjpiZWZvcmUge1xyXG4gICAgICAgICAgY29udGVudDogXCJcIjtcclxuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICAgIHRvcDogNTAlO1xyXG4gICAgICAgICAgbGVmdDogNTAlO1xyXG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XHJcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICAgIHdpZHRoOiA1MHB4O1xyXG4gICAgICAgICAgaGVpZ2h0OiA1MHB4O1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2VsZWN0LWJhY2tncm91bmQtY29sb3IpO1xyXG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gICAgICAgICAgb3BhY2l0eTogMDtcclxuICAgICAgICAgIHotaW5kZXg6IDA7XHJcbiAgICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgZWFzZS1pbjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICY6YWN0aXZlOmJlZm9yZSxcclxuICAgICAgICAmOmhvdmVyOmJlZm9yZSB7XHJcbiAgICAgICAgICBvcGFjaXR5OiAwLjU7XHJcbiAgICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgZWFzZS1vdXQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmLmRpc2FibGVkIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWRpc2FibGVkLWJhY2tncm91bmQtY29sb3IpO1xyXG4gICAgICAgICAgb3BhY2l0eTogMC41O1xyXG4gICAgICAgICAgY3Vyc29yOiBhdXRvO1xyXG5cclxuICAgICAgICAgICY6YmVmb3JlIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuZGR0cC15ZWFycyB7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xyXG4gICAgZmxleC13cmFwOiB3cmFwO1xyXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG5cclxuICAgID4gLmRkdHAteWVhciB7XHJcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgZmxleDogMSAwIDI1JTtcclxuICAgICAgbWFyZ2luLWJvdHRvbTogOHB4O1xyXG4gICAgICBsaW5lLWhlaWdodDogNTBweDtcclxuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcblxyXG4gICAgICAmOmJlZm9yZSB7XHJcbiAgICAgICAgY29udGVudDogXCJcIjtcclxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgdG9wOiA1MCU7XHJcbiAgICAgICAgbGVmdDogNTAlO1xyXG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xyXG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgIHdpZHRoOiA1MHB4O1xyXG4gICAgICAgIGhlaWdodDogNTBweDtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zZWxlY3QtYmFja2dyb3VuZC1jb2xvcik7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gICAgICAgIG9wYWNpdHk6IDA7XHJcbiAgICAgICAgei1pbmRleDogMDtcclxuICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgZWFzZS1pbjtcclxuICAgICAgfVxyXG5cclxuICAgICAgJjphY3RpdmU6YmVmb3JlLFxyXG4gICAgICAmOmhvdmVyOmJlZm9yZSB7XHJcbiAgICAgICAgb3BhY2l0eTogMC41O1xyXG4gICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycyBlYXNlLW91dDtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi5kaXNhYmxlZCB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZGlzYWJsZWQtYmFja2dyb3VuZC1jb2xvcik7XHJcbiAgICAgICAgb3BhY2l0eTogMC41O1xyXG4gICAgICAgIGN1cnNvcjogYXV0bztcclxuXHJcbiAgICAgICAgJjpiZWZvcmUge1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5Aa2V5ZnJhbWVzIGZhZGVJbiB7XHJcbiAgZnJvbSB7XHJcbiAgICBvcGFjaXR5OiAwO1xyXG4gIH1cclxuXHJcbiAgdG8ge1xyXG4gICAgb3BhY2l0eTogMTtcclxuICB9XHJcbn1cclxuXHJcbkBrZXlmcmFtZXMgZmFkZU91dCB7XHJcbiAgZnJvbSB7XHJcbiAgICBvcGFjaXR5OiAxO1xyXG4gIH1cclxuXHJcbiAgdG8ge1xyXG4gICAgb3BhY2l0eTogMDtcclxuICB9XHJcbn1cclxuIl19 */", "import DaraForm from \"./DaraForm\";\r\n\r\nimport \"../style/daracl.form.scss\";\r\n\r\nimport \"@daracl/datetimepicker/style/daracl.datetimepicker.scss\";\r\n\r\nexport = DaraForm;\r\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { FormField } from \"@t/FormField\";\r\n\r\nconst xssFilter = {\r\n \"&\": \"&amp;\",\r\n \"<\": \"&lt;\",\r\n \">\": \"&gt;\",\r\n '\"': \"&quot;\",\r\n \"'\": \"&#39;\",\r\n} as any;\r\n\r\nexport const replaceXss = (inputText: string): string => {\r\n let returnText = inputText;\r\n if (returnText) {\r\n Object.keys(xssFilter).forEach((key) => {\r\n returnText = returnText.replaceAll(key, xssFilter[key]);\r\n });\r\n }\r\n return returnText;\r\n};\r\n\r\nexport const hasOwnProp = (obj: any, key: string): boolean => {\r\n return obj.hasOwnProperty(key);\r\n};\r\n\r\nexport const unReplace = (inputText: string): string => {\r\n let returnText = inputText;\r\n\r\n if (returnText) {\r\n Object.keys(xssFilter).forEach((key) => {\r\n returnText = returnText.replaceAll(xssFilter[key], key);\r\n });\r\n }\r\n return returnText;\r\n};\r\n\r\nexport const unFieldName = (fieldName: string): string => {\r\n if (fieldName) {\r\n return unReplace(fieldName).replaceAll('\"', '\\\\\"');\r\n }\r\n return \"\";\r\n};\r\nexport const isBlank = (value: any): boolean => {\r\n if (value === null) return true;\r\n if (value === \"\") return true;\r\n if (typeof value === \"undefined\") return true;\r\n if (typeof value === \"string\" && (value === \"\" || value.replace(/\\s/g, \"\") === \"\")) return true;\r\n\r\n return false;\r\n};\r\n\r\nexport const isUndefined = (value: any): value is undefined => {\r\n return typeof value === \"undefined\";\r\n};\r\n\r\nexport const isFunction = (value: any): boolean => {\r\n return typeof value === \"function\";\r\n};\r\n\r\nexport const isString = (value: any): value is string => {\r\n return typeof value === \"string\";\r\n};\r\nexport const isNumber = (value: any): value is number => {\r\n if (isBlank(value)) {\r\n return false;\r\n }\r\n value = +value;\r\n return !isNaN(value);\r\n};\r\n\r\nexport const isArray = (value: any): value is Array<any> => {\r\n return Array.isArray(value);\r\n};\r\n\r\n/**\r\n * \uAC12\uC788\uB294\uC9C0 \uC5EC\uBD80 \uCCB4\uD06C.\r\n *\r\n * @param {*} value\r\n * @returns {boolean}\r\n */\r\nexport const isEmpty = (value: any): boolean => isUndefined(value) || value == null; //_isEmpty(value);\r\n\r\n/**\r\n * tab render type check\r\n *\r\n * @param {FormField} field\r\n * @returns {boolean} tab type \uC778\uC9C0 \uC5EC\uBD80\r\n */\r\nexport const isTabType = (field: FormField): boolean => {\r\n return field && field.renderType === \"tab\";\r\n};\r\n/**\r\n * grid render type check\r\n *\r\n * @param {FormField} field\r\n * @returns {boolean} grid type \uC778\uC9C0 \uC5EC\uBD80\r\n */\r\nexport const isGridType = (field: FormField): boolean => {\r\n return field && field.renderType === \"grid\";\r\n};\r\nexport const replaceXssField = (field: FormField): FormField => {\r\n field.$xssName = getXssFieldName(field);\r\n\r\n field.label = replaceXss(field.label);\r\n return field;\r\n};\r\n\r\n/**\r\n * \uAC12\uC744 \uBB34\uC2DC\uD558\uB294 \uD544\uB4DC\r\n *\r\n * @param field formField\r\n * @returns\r\n */\r\nexport const ignoreValueField = (field: FormField): boolean => {\r\n return isGridType(field.$parent) || isTabType(field.$parent);\r\n};\r\n\r\n/**\r\n * grid field name xss repalce\r\n *\r\n * @param {FormField} field\r\n * @returns {string} replace \uB41C field name\r\n */\r\nexport const getXssFieldName = (field: FormField): string => {\r\n if (isUndefined(field.$xssName)) {\r\n let returnText = field.name;\r\n if (returnText) {\r\n Object.keys(xssFilter).forEach((key) => {\r\n returnText = returnText.replaceAll(key, \"_\");\r\n });\r\n }\r\n\r\n return \"df_\" + returnText;\r\n }\r\n\r\n return field.$xssName;\r\n};\r\n\r\nexport const getHashCode = (str: string) => {\r\n let hash = 0;\r\n if (str.length == 0) return hash;\r\n for (let i = 0; i < str.length; i++) {\r\n let tmpChar = str.charCodeAt(i);\r\n hash = (hash << 5) - hash + tmpChar;\r\n hash = hash & hash;\r\n }\r\n return String(hash).replaceAll(/-/g, \"_\");\r\n};\r\n\r\nexport const isHiddenField = (field: FormField): boolean => {\r\n if (field.renderType === \"hidden\") {\r\n return true;\r\n }\r\n return false;\r\n};\r\n\r\nexport const templateToElement = (htmlTemplate: string): Element | null => {\r\n const template = document.createElement(\"template\");\r\n template.innerHTML = htmlTemplate;\r\n return template.content.firstElementChild;\r\n};\r\n\r\nexport function isPlainObject(obj: any) {\r\n // \uAC1D\uCCB4\uAC00 \uC544\uB2CC \uACBD\uC6B0 \uB610\uB294 null\uC778 \uACBD\uC6B0 false \uBC18\uD658\r\n if (typeof obj !== \"object\" || obj === null) {\r\n return false;\r\n }\r\n\r\n // \uD504\uB85C\uD1A0\uD0C0\uC785 \uCCB4\uC778\uC744 \uB530\uB77C Object \uC0DD\uC131\uC790\uB97C \uCC3E\uC74C\r\n let proto = obj;\r\n while (Object.getPrototypeOf(proto) !== null) {\r\n proto = Object.getPrototypeOf(proto);\r\n }\r\n\r\n // Object \uC0DD\uC131\uC790\uC758 prototype\uACFC \uAC19\uC73C\uBA74 Plain Object\uB85C \uD310\uB2E8\r\n return Object.getPrototypeOf(obj) === proto;\r\n}\r\n\r\nfunction isObject(value: any) {\r\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\r\n}\r\n\r\nfunction isDate(value: any) {\r\n return value instanceof Date && !isNaN(value.valueOf());\r\n}\r\n\r\n/**\r\n * object merge\r\n * \r\n * @example\r\n ```\r\n merge({},{aaa:'bbb',ccc:'ddd'},{bbb:'bbb','aaa':'aaa'})) -> {\"aaa\": \"aaa\", \"bbb\": \"bbb\", \"ccc\": \"ddd\"}\r\n ```\r\n * @param {...any[]} value\r\n * @returns {object}\r\n */\r\nexport const merge = (...value: any[]): any => {\r\n let reval = value[0];\r\n\r\n if (!isPlainObject(reval) || isEmpty(reval)) {\r\n return reval;\r\n }\r\n\r\n let i = 1;\r\n if (Object.keys(reval).length > 0) {\r\n i = 0;\r\n reval = isArray(reval) ? [] : {};\r\n }\r\n const argLen = value.length;\r\n for (; i < argLen; i += 1) {\r\n cloneDeep(reval, value[i]);\r\n }\r\n\r\n return reval;\r\n};\r\n\r\nfunction trim(s: string): string {\r\n return s.replace(/^\\s+|\\s+$/g, \"\");\r\n}\r\n\r\nfunction cloneDeep(dst: any, src: any): any {\r\n if (isObject(src)) {\r\n return cloneObjectDeep(dst, src);\r\n }\r\n\r\n if (isArray(src)) {\r\n return cloneArrayDeep(dst, src);\r\n }\r\n\r\n if (isDate(src)) {\r\n return new src.constructor(src);\r\n }\r\n return src;\r\n}\r\n\r\n/*eslint no-param-reassign: \"error\"*/\r\nfunction cloneObjectDeep(dst: any, src: any): object {\r\n if (isFunction(src)) {\r\n return src;\r\n }\r\n\r\n for (const key of Object.keys(src)) {\r\n const val = (src as any)[key];\r\n\r\n if (isUndefined(val)) {\r\n continue;\r\n }\r\n\r\n if (val === null) {\r\n dst[key] = val;\r\n } else if (isFunction(val)) {\r\n dst[key] = val;\r\n } else if (isEmpty(dst[key])) {\r\n dst[key] = cloneDeep(isArray(val) ? [] : {}, val);\r\n } else if (!isObject(val)) {\r\n dst[key] = val;\r\n } else {\r\n cloneDeep(dst[key], val);\r\n }\r\n }\r\n return dst;\r\n}\r\n\r\nfunction cloneArrayDeep(dst: any, src: any[]) {\r\n const isObj = isPlainObject(dst);\r\n\r\n for (let i = 0; i < src.length; i += 1) {\r\n const val = src[i];\r\n let newVal;\r\n\r\n if (val == null) {\r\n newVal = val;\r\n } else {\r\n newVal = cloneDeep(isArray(val) ? [] : {}, val);\r\n }\r\n\r\n if (isObj) {\r\n (dst as any)[i] = newVal;\r\n } else {\r\n dst.push(newVal);\r\n }\r\n }\r\n return dst;\r\n}\r\n", "import { FormField } from \"@t/FormField\";\r\nimport { ValidResult } from \"@t/ValidResult\";\r\nimport DaraForm from \"src/DaraForm\";\r\nimport * as utils from \"src/util/utils\";\r\n\r\nexport default abstract class Render {\r\n protected daraForm;\r\n protected rowElement;\r\n protected field;\r\n\r\n private enableView: boolean = true;\r\n\r\n constructor(form: DaraForm, field: FormField, rowElement: HTMLElement) {\r\n this.daraForm = form;\r\n this.field = field;\r\n this.rowElement = rowElement;\r\n this.createField();\r\n\r\n if (field.tooltip) rowElement.querySelector(\".df-tooltip\")?.setAttribute(\"tooltip\", field.tooltip);\r\n }\r\n\r\n public setDefaultInfo() {\r\n if (utils.isUndefined(this.field.defaultValue)) {\r\n this.setValue(\"\", false);\r\n } else {\r\n this.setValue(this.field.defaultValue, false);\r\n }\r\n\r\n if (!utils.isUndefined(this.field.placeholder)) {\r\n const ele = this.getElement();\r\n if (ele instanceof Element) {\r\n ele.setAttribute(\"placeholder\", this.field.placeholder);\r\n }\r\n }\r\n }\r\n\r\n public setDefaultOption() {\r\n this.setDisabled(this.field.disabled ?? false);\r\n }\r\n\r\n public addChildField(element: Element) {\r\n this.rowElement.querySelector(\".df-field-container\")?.append(element);\r\n }\r\n\r\n static isDataRender(): boolean {\r\n return true;\r\n }\r\n\r\n static isChildrenCreate(): boolean {\r\n return true;\r\n }\r\n\r\n public getForm(): DaraForm {\r\n return this.daraForm;\r\n }\r\n\r\n public abstract mounted(): void;\r\n public abstract getValue(): any;\r\n public abstract setValue(value: any, changeCheckFlag?: boolean): void;\r\n public abstract reset(): void;\r\n public abstract getElement(): any;\r\n public abstract valid(): ValidResult | boolean;\r\n public abstract createField(): void;\r\n\r\n public setValueItems(value: any): void {}\r\n\r\n public static getDescriptionTemplate(field: FormField): string {\r\n return field.description ? `<div class=\"df-description\">${field.description}</div>` : \"\";\r\n }\r\n\r\n public changeEventCall(field: FormField, e: Event | null, rederInfo: Render, fieldValue: any): boolean | undefined {\r\n if (field.onChange) {\r\n let changeInfo: any = {\r\n field: field,\r\n evt: e,\r\n oldValue: field.$value,\r\n value: fieldValue,\r\n };\r\n\r\n if (field.listItem?.list) {\r\n let valuesItem = [];\r\n const valueKey = Render.valuesValueKey(field);\r\n\r\n for (let val of field.listItem.list) {\r\n let changeVal = val[valueKey];\r\n if (utils.isString(fieldValue)) {\r\n if (changeVal == fieldValue) {\r\n valuesItem.push(val);\r\n break;\r\n }\r\n } else if (utils.isArray(fieldValue)) {\r\n if (fieldValue.includes(changeVal)) {\r\n valuesItem.push(val);\r\n }\r\n }\r\n }\r\n\r\n changeInfo.valueItems = valuesItem;\r\n }\r\n\r\n if (changeInfo.oldValue != changeInfo.value && field.onChange.call(null, changeInfo) === false) {\r\n rederInfo.setValue(field.$value, false);\r\n return false;\r\n }\r\n\r\n field.$value = changeInfo.value;\r\n }\r\n\r\n this.daraForm.conditionCheck();\r\n }\r\n\r\n public focus() {\r\n this.getElement().focus();\r\n }\r\n\r\n public isEnableView() {\r\n return this.enableView;\r\n }\r\n\r\n public show() {\r\n this.enableView = true;\r\n this.rowElement.classList.remove(\"df-hidden\");\r\n }\r\n\r\n public hide() {\r\n this.enableView = false;\r\n if (!this.rowElement.classList.contains(\"df-hidden\")) {\r\n this.rowElement.classList.add(\"df-hidden\");\r\n }\r\n }\r\n\r\n /**\r\n * \uC124\uBA85 \uCD94\uAC00\r\n *\r\n * @public\r\n * @param {string} desc\r\n */\r\n public setDescription(desc: string) {\r\n const descEle = this.rowElement.querySelector(\".df-description\");\r\n if (descEle) {\r\n descEle.innerHTML = desc;\r\n } else {\r\n const fieldEle = this.rowElement.querySelector(\".df-field\");\r\n if (fieldEle) {\r\n const parser = new DOMParser();\r\n this.field.description = desc;\r\n const descEle = parser.parseFromString(Render.getDescriptionTemplate(this.field), \"text/html\").querySelector(\".df-description\");\r\n\r\n if (descEle) fieldEle.parentNode?.insertBefore(descEle, fieldEle.nextSibling);\r\n }\r\n }\r\n }\r\n\r\n public setActive(id: string): void {\r\n //console.log(\"parent\");\r\n }\r\n\r\n public setDisabled(flag: boolean) {\r\n const ele = this.getElement();\r\n if (ele instanceof HTMLElement) {\r\n if (flag === false) {\r\n this.getElement().removeAttribute(\"disabled\");\r\n } else {\r\n this.getElement().setAttribute(\"disabled\", true);\r\n }\r\n }\r\n }\r\n\r\n public commonValidator() {\r\n //this.field.diff\r\n }\r\n\r\n public static valuesValueKey(field: FormField): string {\r\n return field.listItem?.valueField ? field.listItem.valueField : \"value\";\r\n }\r\n\r\n public static valuesLabelKey(field: FormField): string {\r\n return field.listItem?.labelField ? field.listItem.labelField : \"label\";\r\n }\r\n\r\n public static valuesLabelValue(label: string, val: any) {\r\n let replaceFlag = false;\r\n const resultValue = label.replace(/\\{\\{([A-Za-z0-9_.]*)\\}\\}/g, (match, key) => {\r\n replaceFlag = true;\r\n return val[key] || \"\";\r\n });\r\n\r\n if (replaceFlag) {\r\n return resultValue;\r\n }\r\n\r\n return val[label] || \"\";\r\n }\r\n}\r\n", "import { FormField } from \"@t/FormField\";\r\nimport { ValidResult } from \"@t/ValidResult\";\r\n\r\nconst regexp = {\r\n mobile: /^\\d{3}-\\d{3,4}-\\d{4}$/,\r\n email: /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$/,\r\n url: /^(?:(?:https?|HTTPS?|ftp|FTP):\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?!(?:10|127)(?:\\.\\d{1,3}){3})(?!(?:169\\.254|192\\.168)(?:\\.\\d{1,3}){2})(?!172\\.(?:1[6-9]|2\\d|3[0-1])(?:\\.\\d{1,3}){2})(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(?:(?:[a-zA-Z\\u00a1-\\uffff0-9]-*)*[a-zA-Z\\u00a1-\\uffff0-9]+)(?:\\.(?:[a-zA-Z\\u00a1-\\uffff0-9]-*)*[a-zA-Z\\u00a1-\\uffff0-9]+)*(?:\\.(?:[a-zA-Z\\u00a1-\\uffff]{2,}))\\.?)(?::\\d{2,5})?(?:[/?#]\\S*)?$/,\r\n number: /\\d$/,\r\n alpha: /^[a-zA-Z]+$/,\r\n \"alpha-num\": /^[a-zA-Z0-9]+$/,\r\n variable: /^[a-zA-Z0-9_$][a-zA-Z0-9_$]*$/,\r\n \"number-char\": /^(?=.*[A-Za-z])(?=.*\\d)[A-Za-z\\d]/,\r\n \"upper-char\": /^(?=.*?[A-Z])(?=.*?[a-z])/,\r\n \"upper-char-special\": /^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[#?!@$%^&*-])/,\r\n \"upper-char-special-number\": /^(?=.*[A-Za-z])(?=.*\\d)(?=.*[@$!%*#?&])[A-Za-z\\d@$!%*#?&]/,\r\n};\r\n\r\n/**\r\n * \uC815\uADDC\uC2DD \uC720\uD6A8\uC131 \uCCB4\uD06C.\r\n *\r\n * @param {string} value\r\n * @param {FormField} field\r\n * @param {(ValidResult | undefined)} result\r\n * @returns {ValidResult}\r\n */\r\nexport const regexpValidator = (value: string, field: FormField, result: ValidResult): ValidResult => {\r\n if (!field.$instance.isEnableView()) {\r\n return { name: field.name, constraint: [] };\r\n }\r\n\r\n if (typeof result === \"undefined\") {\r\n result = { name: field.name, constraint: [] };\r\n }\r\n\r\n const regexpType = field.regexpType;\r\n\r\n if (regexpType) {\r\n if (!regexp[regexpType].test(value)) {\r\n result.regexp = regexpType;\r\n return result;\r\n }\r\n }\r\n\r\n return result;\r\n};\r\n", "import { FormField } from \"@t/FormField\";\r\nimport { ValidResult } from \"@t/ValidResult\";\r\nimport { regexpValidator } from \"./regexpValidator\";\r\nimport * as utils from \"src/util/utils\";\r\n\r\n/**\r\n * validator , regexp \uCCB4\uD06C .\r\n *\r\n * @param {string} value field value\r\n * @param {FormField} field field \uC815\uBCF4\r\n * @param {ValidResult} result\r\n * @returns {(ValidResult | boolean)}\r\n */\r\nexport const validator = (value: string, field: FormField, result: ValidResult): ValidResult | boolean => {\r\n if (field.validator) {\r\n result.validator = field.validator(field, value);\r\n if (typeof result.validator === \"object\") {\r\n return result;\r\n }\r\n }\r\n\r\n result = regexpValidator(value, field, result);\r\n\r\n if (result.regexp) {\r\n return result;\r\n }\r\n\r\n if (field.different) {\r\n const diffFieldName = field.different.field;\r\n const diffField = field.$instance.getForm().getField(diffFieldName);\r\n\r\n if (!utils.isEmpty(diffField) && field.$instance.getValue() == diffField.$instance.getValue()) {\r\n result.message = field.different.message;\r\n return result;\r\n }\r\n }\r\n\r\n if (field.identical) {\r\n const diffFieldName = field.identical.field;\r\n const diffField = field.$instance.getForm().getField(diffFieldName);\r\n\r\n if (!utils.isEmpty(diffField) && field.$instance.getValue() != diffField.$instance.getValue()) {\r\n result.message = field.identical.message;\r\n return result;\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n", "import { FormField } from \"@t/FormField\";\r\nimport { ValidResult } from \"@t/ValidResult\";\r\nimport { RULES } from \"src/constants\";\r\nimport { validator } from \"./validator\";\r\nimport * as utils from \"src/util/utils\";\r\n\r\n/**\r\n * \uC22B\uC790 \uC720\uD6A8\uC131 \uCCB4\uD06C\r\n *\r\n * @param {string} value\r\n * @param {FormField} field\r\n * @returns {(ValidResult | boolean)}\r\n */\r\nexport const numberValidator = (value: string, field: FormField): ValidResult | boolean => {\r\n if (!field.$instance.isEnableView()) {\r\n return true;\r\n }\r\n\r\n const result: ValidResult = { name: field.name, constraint: [] };\r\n const numValue = Number(value);\r\n\r\n if (field.required && utils.isBlank(value)) {\r\n result.constraint.push(RULES.REQUIRED);\r\n return result;\r\n }\r\n\r\n if (!utils.isNumber(value)) {\r\n result.constraint.push(RULES.NAN);\r\n return result;\r\n }\r\n\r\n if (validator(value, field, result) !== true) {\r\n return result;\r\n }\r\n\r\n const rule = field.rule;\r\n if (rule) {\r\n const isMinimum = utils.isNumber(rule.minimum),\r\n isMaximum = utils.isNumber(rule.maximum);\r\n\r\n let minRule = false,\r\n minExclusive = false,\r\n maxRule = false,\r\n maxExclusive = false;\r\n\r\n if (isMinimum) {\r\n if (rule.exclusiveMinimum && numValue <= rule.minimum) {\r\n minExclusive = true;\r\n } else if (numValue < rule.minimum) {\r\n minRule = true;\r\n }\r\n }\r\n\r\n if (isMaximum) {\r\n if (rule.exclusiveMaximum && numValue >= rule.maximum) {\r\n maxExclusive = true;\r\n } else if (numValue > rule.maximum) {\r\n maxRule = true;\r\n }\r\n }\r\n\r\n if (isMinimum && isMaximum && (minRule || minExclusive || maxRule || maxExclusive)) {\r\n if (rule.exclusiveMinimum && rule.exclusiveMaximum && (minExclusive || maxExclusive)) {\r\n result.constraint.push(RULES.BETWEEN_EXCLUSIVE_MINMAX);\r\n } else if (minExclusive) {\r\n result.constraint.push(RULES.BETWEEN_EXCLUSIVE_MIN);\r\n } else if (maxExclusive) {\r\n result.constraint.push(RULES.BETWEEN_EXCLUSIVE_MAX);\r\n } else {\r\n result.constraint.push(RULES.BETWEEN);\r\n }\r\n } else {\r\n if (minExclusive) {\r\n result.constraint.push(RULES.EXCLUSIVE_MIN);\r\n }\r\n\r\n if (maxExclusive) {\r\n result.constraint.push(RULES.EXCLUSIVE_MAX);\r\n }\r\n\r\n if (minRule) {\r\n result.constraint.push(RULES.MIN);\r\n }\r\n\r\n if (maxRule) {\r\n result.constraint.push(RULES.MAX);\r\n }\r\n }\r\n }\r\n\r\n if (result.constraint.length > 0) {\r\n return result;\r\n }\r\n\r\n return true;\r\n};\r\n", "import { FormField } from \"@t/FormField\";\r\nimport { ValidResult } from \"@t/ValidResult\";\r\nimport Lanauage from \"./Lanauage\";\r\n\r\nexport const invalidMessage = (field: FormField, rowElement: Element, validResult: ValidResult | boolean) => {\r\n if (validResult === true) {\r\n rowElement.classList.remove(\"invalid\");\r\n\r\n if (!rowElement.classList.contains(\"valid\")) {\r\n rowElement.classList.add(\"valid\");\r\n }\r\n\r\n const helpMessageElement = rowElement.querySelector(\".help-message\");\r\n if (helpMessageElement) {\r\n helpMessageElement.innerHTML = \"\";\r\n }\r\n\r\n return;\r\n }\r\n\r\n rowElement.classList.remove(\"valid\");\r\n\r\n if (!rowElement.classList.contains(\"invalid\")) {\r\n rowElement.classList.add(\"invalid\");\r\n }\r\n\r\n if (validResult !== false) {\r\n const message: string[] = Lanauage.validMessage(field, validResult);\r\n\r\n if (validResult.message) {\r\n message.push(validResult.message);\r\n }\r\n\r\n const helpMessageElement = rowElement.querySelector(\".help-message\");\r\n if (helpMessageElement && message.length > 0) {\r\n const msgHtml: string[] = [];\r\n message.forEach((item) => {\r\n msgHtml.push(`<div>${item}</div>`);\r\n });\r\n helpMessageElement.innerHTML = msgHtml.join(\"\");\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * remove row element style class\r\n *\r\n * @param {Element} rowElement\r\n */\r\nexport const resetRowElementStyleClass = (rowElement: Element) => {\r\n rowElement.classList.remove(\"invalid\");\r\n rowElement.classList.remove(\"valid\");\r\n};\r\n", "import { FormField } from \"@t/FormField\";\r\nimport Render from \"src/renderer/Render\";\r\nimport * as utils from \"src/util/utils\";\r\n\r\nexport const inputEvent = (field: FormField, element: Element, renderInfo: Render) => {\r\n element.addEventListener(\"input\", (e: Event) => {\r\n customChangeEventCall(field, e, renderInfo, renderInfo.getValue());\r\n renderInfo.valid();\r\n });\r\n};\r\n\r\nexport const numberInputEvent = (field: FormField, element: HTMLInputElement, renderInfo: Render) => {\r\n element.addEventListener(\"keyup\", (e: any) => {\r\n const val = e.target.value;\r\n\r\n if (!utils.isNumber(val)) {\r\n element.value = val.replace(/[^0-9\\.\\-\\+]/g, \"\");\r\n e.preventDefault();\r\n }\r\n customChangeEventCall(field, e, renderInfo, renderInfo.getValue());\r\n renderInfo.valid();\r\n });\r\n\r\n /*\r\n element.addEventListener('input', (e: any) => {\r\n customChangeEventCall(field, e, renderInfo);\r\n renderInfo.valid();\r\n })\r\n */\r\n};\r\n\r\nexport const dropdownChangeEvent = (field: FormField, element: Element, renderInfo: Render) => {\r\n element.addEventListener(\"change\", (e: any) => {\r\n customChangeEventCall(field, e, renderInfo, renderInfo.getValue());\r\n renderInfo.valid();\r\n });\r\n};\r\n\r\nexport const customChangeEventCall = (field: FormField, e: Event, renderInfo: Render, value: any) => {\r\n renderInfo.changeEventCall(field, e, renderInfo, value);\r\n};\r\n", "import { FormField } from \"@t/FormField\";\r\nimport Render from \"./Render\";\r\nimport { numberValidator } from \"src/rule/numberValidator\";\r\nimport { resetRowElementStyleClass, invalidMessage } from \"src/util/validUtils\";\r\nimport { numberInputEvent } from \"src/event/renderEvents\";\r\nimport DaraForm from \"src/DaraForm\";\r\n\r\nexport default class NumberRender extends Render {\r\n private element: HTMLInputElement;\r\n\r\n constructor(field: FormField, rowElement: HTMLElement, daraForm: DaraForm) {\r\n super(daraForm, field, rowElement);\r\n\r\n this.mounted();\r\n this.setDefaultOption();\r\n this.setDefaultInfo();\r\n }\r\n\r\n mounted() {\r\n numberInputEvent(this.field, this.element, this);\r\n }\r\n\r\n createField() {\r\n const field = this.field;\r\n\r\n const fieldContainerElement = this.rowElement.querySelector(\".df-field-container\") as HTMLElement;\r\n\r\n fieldContainerElement.innerHTML = `\r\n <div class=\"df-field\">\r\n <input type=\"text\" name=\"${field.$xssName}\" class=\"form-field number help-icon\" />\r\n </div> \r\n ${Render.getDescriptionTemplate(field)}\r\n <div class=\"help-message\"></div>\r\n `;\r\n this.element = fieldContainerElement.querySelector(`[name=\"${field.$xssName}\"]`) as HTMLInputElement;\r\n }\r\n\r\n getValue() {\r\n return this.element.value;\r\n }\r\n\r\n setValue(value: any, changeCheckFlag?: boolean): void {\r\n if (changeCheckFlag !== false && this.changeEventCall(this.field, null, this, value) === false) {\r\n this.element.value = this.field.$value;\r\n return;\r\n }\r\n this.field.$value = value;\r\n this.element.value = value;\r\n }\r\n\r\n reset() {\r\n this.setDefaultInfo();\r\n this.setDisabled(false);\r\n resetRowElementStyleClass(this.rowElement);\r\n }\r\n\r\n getElement(): HTMLElement {\r\n return this.element;\r\n }\r\n\r\n valid(): any {\r\n const validResult = numberValidator(this.getValue(), this.field);\r\n\r\n invalidMessage(this.field, this.rowElement, validResult);\r\n\r\n return validResult;\r\n }\r\n}\r\n", "import { FormField } from \"@t/FormField\";\r\nimport { ValidResult } from \"@t/ValidResult\";\r\nimport { RULES } from \"src/constants\";\r\nimport * as utils from \"src/util/utils\";\r\nimport { validator } from \"./validator\";\r\n\r\n/**\r\n * string validator\r\n *\r\n * @param {string} value\r\n * @param {FormField} field\r\n * @returns {(ValidResult | boolean)}\r\n */\r\nexport const stringValidator = (value: string, field: FormField): ValidResult | boolean => {\r\n if (!field.$instance.isEnableView()) {\r\n return true;\r\n }\r\n\r\n let result: ValidResult = { name: field.name, constraint: [] };\r\n\r\n if (field.required && utils.isBlank(value)) {\r\n result.constraint.push(RULES.REQUIRED);\r\n return result;\r\n }\r\n const validResult = validator(value, field, result);\r\n if (validResult !== true) {\r\n return validResult;\r\n }\r\n\r\n const rule = field.rule;\r\n\r\n if (rule) {\r\n const valueLength = value.length;\r\n\r\n const isMinNumber = utils.isNumber(rule.minLength),\r\n isMaxNumber = utils.isNumber(rule.maxLength);\r\n\r\n let minRule = false,\r\n maxRule = false;\r\n if (isMinNumber && valueLength < rule.minLength) {\r\n minRule = true;\r\n }\r\n if (isMaxNumber && valueLength > rule.maxLength) {\r\n maxRule = true;\r\n }\r\n\r\n if (isMinNumber && isMaxNumber && (minRule || maxRule)) {\r\n result.constraint.push(RULES.BETWEEN);\r\n } else {\r\n if (minRule) {\r\n result.constraint.push(RULES.MIN_LENGTH);\r\n }\r\n\r\n if (maxRule) {\r\n result.constraint.push(RULES.MAX_LENGTH);\r\n }\r\n }\r\n if (result.constraint.length > 0) {\r\n return result;\r\n }\r\n }\r\n\r\n return true;\r\n};\r\n", "import { FormField } from \"@t/FormField\";\r\nimport Render from \"./Render\";\r\nimport { stringValidator } from \"src/rule/stringValidator\";\r\nimport { resetRowElementStyleClass, invalidMessage } from \"src/util/validUtils\";\r\nimport { inputEvent } from \"src/event/renderEvents\";\r\nimport DaraForm from \"src/DaraForm\";\r\n\r\nexport default class TextAreaRender extends Render {\r\n private element: HTMLTextAreaElement;\r\n\r\n constructor(field: FormField, rowElement: HTMLElement, daraForm: DaraForm) {\r\n super(daraForm, field, rowElement);\r\n\r\n this.mounted();\r\n this.setDefaultOption();\r\n this.setDefaultInfo();\r\n }\r\n\r\n mounted() {\r\n inputEvent(this.field, this.element, this);\r\n }\r\n\r\n createField() {\r\n const field = this.field;\r\n\r\n const fieldContainerElement = this.rowElement.querySelector(\".df-field-container\") as HTMLElement;\r\n\r\n let rows = field.customOptions?.rows;\r\n rows = +rows > 0 ? rows : 3;\r\n\r\n fieldContainerElement.innerHTML = `\r\n <div class=\"df-field\">\r\n <textarea name=\"${field.$xssName}\" rows=\"${rows}\" class=\"form-field textarea help-icon\"></textarea>\r\n </div> \r\n ${Render.getDescriptionTemplate(field)}\r\n <div class=\"help-message\"></div>\r\n `;\r\n\r\n this.element = fieldContainerElement.querySelector(`[name=\"${field.$xssName}\"]`) as HTMLTextAreaElement;\r\n }\r\n\r\n getValue() {\r\n return this.element.value;\r\n }\r\n\r\n setValue(value: any, changeCheckFlag?: boolean): void {\r\n if (changeCheckFlag !== false && this.changeEventCall(this.field, null, this, value) === false) {\r\n this.element.value = this.field.$value;\r\n return;\r\n }\r\n this.field.$value = value;\r\n this.element.value = value;\r\n }\r\n\r\n reset() {\r\n this.setDefaultInfo();\r\n this.setDisabled(false);\r\n resetRowElementStyleClass(this.rowElement);\r\n }\r\n\r\n getElement(): HTMLElement {\r\n return this.element;\r\n }\r\n\r\n valid(): any {\r\n const validResult = stringValidator(this.getValue(), this.field);\r\n\r\n invalidMessage(this.field, this.rowElement, validResult);\r\n\r\n return validResult;\r\n }\r\n}\r\n", "import { FormField, ValuesInfo } from \"@t/FormField\";\r\nimport Render from \"./Render\";\r\nimport { ValidResult } from \"@t/ValidResult\";\r\nimport { RULES } from \"src/constants\";\r\nimport { resetRowElementStyleClass, invalidMessage } from \"src/util/validUtils\";\r\nimport { dropdownChangeEvent } from \"src/event/renderEvents\";\r\nimport DaraForm from \"src/DaraForm\";\r\nimport * as utils from \"src/util/utils\";\r\nimport Lanauage from \"src/util/Lanauage\";\r\n\r\nexport default class DropdownRender extends Render {\r\n private element: HTMLSelectElement;\r\n private defaultSelected;\r\n\r\n constructor(field: FormField, rowElement: HTMLElement, daraForm: DaraForm) {\r\n super(daraForm, field, rowElement);\r\n\r\n let initDefaultValue = \"\";\r\n\r\n if (!utils.isUndefined(field.defaultValue)) {\r\n initDefaultValue = field.defaultValue;\r\n }\r\n\r\n const valueKey = DropdownRender.valuesValueKey(field);\r\n let initDefaultValueFlag = false;\r\n this.field.listItem?.list?.forEach((item) => {\r\n let itemValue = item[valueKey];\r\n if (item.selected) {\r\n this.defaultSelected = itemValue;\r\n }\r\n if (itemValue == initDefaultValue) {\r\n initDefaultValueFlag = true;\r\n }\r\n });\r\n\r\n if (initDefaultValueFlag) {\r\n this.defaultSelected = initDefaultValue;\r\n } else if (!this.defaultSelected) {\r\n if (field.customOptions?.disableDefaultOption === true) {\r\n this.defaultSelected = this.field.listItem?.list?.length > 0 ? this.field.listItem.list[0][valueKey] || \"\" : \"\";\r\n }\r\n }\r\n\r\n if (utils.isUndefined(this.defaultSelected)) {\r\n this.defaultSelected = \"\";\r\n }\r\n\r\n this.mounted();\r\n this.setDefaultOption();\r\n this.setValue(this.defaultSelected, false);\r\n }\r\n\r\n mounted() {\r\n dropdownChangeEvent(this.field, this.element, this);\r\n }\r\n\r\n createField() {\r\n const field = this.field;\r\n\r\n const fieldContainerElement = this.rowElement.querySelector(\".df-field-container\") as HTMLElement;\r\n\r\n let template = ` <div class=\"df-field\"><select name=\"${field.$xssName}\" class=\"form-field dropdown\">\r\n ${this.dropdownValuesTemplate(field)}\r\n </select> <i class=\"help-icon\"></i></div>\r\n ${Render.getDescriptionTemplate(field)}\r\n <div class=\"help-message\"></div>\r\n `;\r\n fieldContainerElement.innerHTML = template;\r\n\r\n this.element = fieldContainerElement.querySelector(`[name=\"${field.$xssName}\"]`) as HTMLSelectElement;\r\n }\r\n\r\n public setValueItems(items: any): void {\r\n if (this.field.listItem) {\r\n this.field.listItem.list = items;\r\n } else {\r\n this.field.listItem = {\r\n list: items,\r\n } as ValuesInfo;\r\n }\r\n this.element.innerHTML = this.dropdownValuesTemplate(this.field);\r\n\r\n if (!utils.isBlank(this.field.$value)) {\r\n const currentValue = this.field.$value;\r\n this.field.$value = \"\";\r\n this.setValue(currentValue);\r\n }\r\n }\r\n\r\n getValue() {\r\n return this.element.value;\r\n }\r\n\r\n setValue(value: any, changeCheckFlag?: boolean): void {\r\n if (changeCheckFlag !== false && this.changeEventCall(this.field, null, this, value) === false) {\r\n this.element.value = this.field.$value;\r\n return;\r\n }\r\n this.field.$value = value;\r\n this.element.value = value;\r\n }\r\n\r\n reset() {\r\n this.setValue(this.defaultSelected, false);\r\n this.setDisabled(false);\r\n resetRowElementStyleClass(this.rowElement);\r\n }\r\n\r\n getElement(): HTMLElement {\r\n return this.element;\r\n }\r\n\r\n valid(): any {\r\n const value = this.getValue();\r\n\r\n let validResult: ValidResult | boolean = true;\r\n\r\n if (this.field.required) {\r\n if (value.length < 1) {\r\n validResult = { name: this.field.name, constraint: [] };\r\n validResult.constraint.push(RULES.REQUIRED);\r\n }\r\n }\r\n\r\n invalidMessage(this.field, this.rowElement, validResult);\r\n\r\n return validResult;\r\n }\r\n\r\n public dropdownValuesTemplate(field: FormField) {\r\n const labelKey = Render.valuesLabelKey(field);\r\n const valueKey = Render.valuesValueKey(field);\r\n let template = \"\";\r\n\r\n if (field.customOptions?.disableDefaultOption !== true) {\r\n template += `<option value=\"\">${Lanauage.getMessage(\"selection\")}</option>`;\r\n }\r\n field.listItem?.list?.forEach((val) => {\r\n const attr = `${val.selected ? \"selected\" : \"\"} ${val.disabled ? \"disabled\" : \"\"}`;\r\n if (utils.isUndefined(val[valueKey]) && val.label) {\r\n template += `<option value=\"${val.value || \"\"}\" ${attr}>${val.label}</option>`;\r\n } else {\r\n template += `<option value=\"${val[valueKey]}\" ${attr}>${Render.valuesLabelValue(labelKey, val)}</option>`;\r\n }\r\n });\r\n\r\n return template;\r\n }\r\n}\r\n", "import { FormField } from \"@t/FormField\";\r\nimport Render from \"./Render\";\r\nimport { stringValidator } from \"src/rule/stringValidator\";\r\nimport { resetRowElementStyleClass, invalidMessage } from \"src/util/validUtils\";\r\nimport { inputEvent } from \"src/event/renderEvents\";\r\nimport DaraForm from \"src/DaraForm\";\r\n\r\nexport default class TextRender extends Render {\r\n private element: HTMLInputElement;\r\n\r\n constructor(field: FormField, rowElement: HTMLElement, daraForm: DaraForm) {\r\n super(daraForm, field, rowElement);\r\n this.mounted();\r\n this.setDefaultOption();\r\n this.setDefaultInfo();\r\n }\r\n\r\n mounted() {\r\n inputEvent(this.field, this.element, this);\r\n }\r\n\r\n createField() {\r\n const field = this.field;\r\n\r\n const fieldContainerElement = this.rowElement.querySelector(\".df-field-container\") as HTMLElement;\r\n\r\n fieldContainerElement.innerHTML = `\r\n <div class=\"df-field\">\r\n <input type=\"text\" name=\"${field.$xssName}\" class=\"form-field text help-icon\" />\r\n </div>\r\n ${Render.getDescriptionTemplate(field)}\r\n <div class=\"help-message\"></div>\r\n `;\r\n\r\n this.element = fieldContainerElement.querySelector(`[name=\"${field.$xssName}\"]`) as HTMLInputElement;\r\n }\r\n\r\n getValue() {\r\n return this.element.value;\r\n }\r\n\r\n setValue(value: any, changeCheckFlag?: boolean): void {\r\n if (changeCheckFlag !== false && this.changeEventCall(this.field, null, this, value) === false) {\r\n this.element.value = this.field.$value;\r\n return;\r\n }\r\n this.field.$value = value;\r\n this.element.value = value;\r\n }\r\n\r\n reset() {\r\n this.setDefaultInfo();\r\n this.setDisabled(false);\r\n resetRowElementStyleClass(this.rowElement);\r\n }\r\n\r\n getElement(): HTMLInputElement {\r\n return this.element;\r\n }\r\n\r\n valid(): any {\r\n const validResult = stringValidator(this.getValue(), this.field);\r\n\r\n invalidMessage(this.field, this.rowElement, validResult);\r\n\r\n return validResult;\r\n }\r\n}\r\n", "import { FormField, ValuesInfo } from \"@t/FormField\";\r\nimport Render from \"./Render\";\r\nimport * as utils from \"src/util/utils\";\r\nimport { ValidResult } from \"@t/ValidResult\";\r\nimport { RULES } from \"src/constants\";\r\nimport { resetRowElementStyleClass, invalidMessage } from \"src/util/validUtils\";\r\nimport { customChangeEventCall } from \"src/event/renderEvents\";\r\nimport DaraForm from \"src/DaraForm\";\r\n\r\nexport default class CheckboxRender extends Render {\r\n private defaultCheckValue: any[] = [];\r\n\r\n constructor(field: FormField, rowElement: HTMLElement, daraForm: DaraForm) {\r\n super(daraForm, field, rowElement);\r\n\r\n this.defaultCheckValue = [];\r\n let initDefaultValue = [] as any;\r\n if (!utils.isUndefined(field.defaultValue)) {\r\n if (utils.isArray(field.defaultValue)) {\r\n initDefaultValue = field.defaultValue;\r\n } else {\r\n initDefaultValue = [field.defaultValue];\r\n }\r\n }\r\n\r\n const valueKey = CheckboxRender.valuesValueKey(field);\r\n\r\n if (utils.isUndefined(this.field.listItem)) {\r\n this.setValueItems([{ label: \"\", value: \"Y\" }]);\r\n }\r\n\r\n let initDefaultValueFlag = false;\r\n this.field.listItem?.list?.forEach((item) => {\r\n let itemValue = item[valueKey];\r\n if (item.selected) {\r\n this.defaultCheckValue.push(itemValue ? itemValue : true);\r\n }\r\n if (initDefaultValue.includes(itemValue)) {\r\n initDefaultValueFlag = true;\r\n }\r\n });\r\n\r\n this.defaultCheckValue = initDefaultValueFlag ? initDefaultValue : this.defaultCheckValue;\r\n\r\n this.mounted();\r\n this.setDefaultOption();\r\n this.setValue(this.defaultCheckValue, false);\r\n }\r\n\r\n public mounted() {\r\n this.initEvent();\r\n }\r\n\r\n public initEvent() {\r\n const checkboxes = this.rowElement.querySelectorAll(this.getSelector());\r\n\r\n checkboxes.forEach((ele) => {\r\n ele.addEventListener(\"change\", (e: Event) => {\r\n customChangeEventCall(this.field, e, this, this.getValue());\r\n this.valid();\r\n });\r\n });\r\n }\r\n\r\n public getSelector() {\r\n return `input[type=\"checkbox\"][name=\"${this.field.$xssName}\"]`;\r\n }\r\n\r\n createField() {\r\n const field = this.field;\r\n\r\n const fieldContainerElement = this.rowElement.querySelector(\".df-field-container\") as HTMLElement;\r\n\r\n const templates: string[] = [];\r\n const fieldName = field.$xssName;\r\n\r\n const labelKey = Render.valuesLabelKey(field);\r\n const valueKey = Render.valuesValueKey(field);\r\n\r\n templates.push(` <div class=\"df-field\"><div class=\"field-group\">`);\r\n field.listItem?.list?.forEach((val) => {\r\n const checkVal = val[valueKey];\r\n templates.push(`\r\n <span class=\"field ${field.listItem.orientation == \"vertical\" ? \"vertical\" : \"horizontal\"}\">\r\n <label>\r\n <input type=\"checkbox\" name=\"${fieldName}\" value=\"${checkVal ? utils.replaceXss(checkVal) : \"\"}\" class=\"form-field checkbox\" ${val.selected ? \"checked\" : \"\"} ${val.disabled ? \"disabled\" : \"\"} />\r\n ${Render.valuesLabelValue(labelKey, val)}\r\n </label>\r\n </span>\r\n `);\r\n });\r\n templates.push(`<i class=\"daracl-icon help-icon\"></i></div></div> ${Render.getDescriptionTemplate(field)}<div class=\"help-message\"></div>`);\r\n\r\n fieldContainerElement.innerHTML = templates.join(\"\");\r\n }\r\n\r\n public setValueItems(items: any): void {\r\n const containerEle = this.rowElement.querySelector(\".df-field-container\");\r\n if (containerEle) {\r\n if (this.field.listItem) {\r\n this.field.listItem.list = items;\r\n } else {\r\n this.field.listItem = {\r\n list: items,\r\n } as ValuesInfo;\r\n }\r\n\r\n this.createField();\r\n\r\n if (!utils.isBlank(this.field.$value)) {\r\n const currentValue = this.field.$value;\r\n this.field.$value = \"\";\r\n this.setValue(currentValue);\r\n }\r\n }\r\n }\r\n\r\n getValue() {\r\n const checkboxes = this.rowElement.querySelectorAll(this.getSelector());\r\n\r\n if (checkboxes.length > 1) {\r\n const checkValue: any[] = [];\r\n checkboxes.forEach((ele) => {\r\n const checkEle = ele as HTMLInputElement;\r\n if (checkEle.checked) {\r\n checkValue.push(checkEle.value);\r\n }\r\n });\r\n return checkValue;\r\n } else {\r\n const checkElement = this.rowElement.querySelector(`[name=\"${this.field.$xssName}\"]`) as HTMLInputElement;\r\n\r\n if (checkElement?.checked) {\r\n return checkElement.value ? checkElement.value : true;\r\n }\r\n\r\n return checkElement.value ? \"\" : false;\r\n }\r\n }\r\n\r\n setValue(value: any, changeCheckFlag?: boolean): void {\r\n if (changeCheckFlag !== false && this.changeEventCall(this.field, null, this, value) === false) {\r\n value = this.field.$value;\r\n }\r\n\r\n this.field.$value = value;\r\n if (value === true) {\r\n (this.rowElement.querySelector(`[name=\"${this.field.$xssName}\"]`) as HTMLInputElement).checked = true;\r\n return;\r\n }\r\n\r\n if (value === false) {\r\n (this.rowElement.querySelector(`[name=\"${this.field.$xssName}\"]`) as HTMLInputElement).checked = false;\r\n return;\r\n }\r\n\r\n let valueArr: any[] = [];\r\n if (Array.isArray(value)) {\r\n valueArr = value;\r\n } else {\r\n valueArr.push(value);\r\n }\r\n\r\n const checkboxes = this.rowElement.querySelectorAll(this.getSelector());\r\n\r\n checkboxes.forEach((ele) => {\r\n (ele as HTMLInputElement).checked = false;\r\n });\r\n\r\n valueArr.forEach((val) => {\r\n const ele = this.rowElement.querySelector(`[name=\"${this.field.$xssName}\"][value=\"${val}\"]`) as HTMLInputElement;\r\n if (ele) ele.checked = true;\r\n });\r\n }\r\n\r\n reset() {\r\n if (this.field.listItem?.list?.length == 1 && this.defaultCheckValue.length == 1) {\r\n this.setValue(true, false);\r\n } else {\r\n this.setValue(this.defaultCheckValue, false);\r\n }\r\n this.setDisabled(false);\r\n resetRowElementStyleClass(this.rowElement);\r\n }\r\n\r\n getElement(): any {\r\n return this.rowElement.querySelectorAll(`[name=\"${this.field.$xssName}\"]`);\r\n }\r\n\r\n public focus() {\r\n const elements = this.getElement();\r\n\r\n if (elements && elements.length > 0) {\r\n this.getElement()[0].focus();\r\n }\r\n }\r\n\r\n valid(): any {\r\n const value = this.getValue();\r\n\r\n let validResult: ValidResult | boolean = true;\r\n\r\n if (this.field.required && utils.isArray(value)) {\r\n if ((value as any[]).length < 1) {\r\n validResult = { name: this.field.name, constraint: [] };\r\n validResult.constraint.push(RULES.REQUIRED);\r\n }\r\n }\r\n\r\n invalidMessage(this.field, this.rowElement, validResult);\r\n\r\n return validResult;\r\n }\r\n}\r\n", "import { FormField, ValuesInfo } from \"@t/FormField\";\r\nimport Render from \"./Render\";\r\nimport { ValidResult } from \"@t/ValidResult\";\r\nimport { RULES } from \"src/constants\";\r\nimport { resetRowElementStyleClass, invalidMessage } from \"src/util/validUtils\";\r\nimport { customChangeEventCall } from \"src/event/renderEvents\";\r\nimport DaraForm from \"src/DaraForm\";\r\nimport * as utils from \"src/util/utils\";\r\n\r\nexport default class RadioRender extends Render {\r\n private defaultCheckValue;\r\n\r\n constructor(field: FormField, rowElement: HTMLElement, daraForm: DaraForm) {\r\n super(daraForm, field, rowElement);\r\n\r\n this.defaultCheckValue = \"\";\r\n let initDefaultValue = [] as any;\r\n if (!utils.isUndefined(field.defaultValue)) {\r\n initDefaultValue = field.defaultValue;\r\n }\r\n\r\n const valueKey = RadioRender.valuesValueKey(field);\r\n let initDefaultValueFlag = false;\r\n this.field.listItem?.list?.forEach((item) => {\r\n let itemValue = item[valueKey];\r\n if (item.selected) {\r\n this.defaultCheckValue = itemValue;\r\n }\r\n\r\n if (initDefaultValue == itemValue) {\r\n initDefaultValueFlag = true;\r\n }\r\n });\r\n\r\n // \uCC98\uB9AC \uD560\uAC83.\r\n\r\n if (initDefaultValueFlag) {\r\n this.defaultCheckValue = initDefaultValue;\r\n } else if (!this.defaultCheckValue) {\r\n this.defaultCheckValue = this.field.listItem?.list?.length > 0 ? this.field.listItem?.list[0][valueKey] : \"\";\r\n }\r\n\r\n this.mounted();\r\n this.setDefaultOption();\r\n this.setValue(this.defaultCheckValue, false);\r\n }\r\n\r\n public mounted() {\r\n this.initEvent();\r\n }\r\n\r\n public initEvent() {\r\n const checkboxes = this.rowElement.querySelectorAll(this.getSelector());\r\n\r\n checkboxes.forEach((ele) => {\r\n ele.addEventListener(\"change\", (e: Event) => {\r\n customChangeEventCall(this.field, e, this, this.getValue());\r\n\r\n this.valid();\r\n });\r\n });\r\n }\r\n\r\n public getSelector() {\r\n return `input[type=\"radio\"][name=\"${this.field.$xssName}\"]`;\r\n }\r\n\r\n createField() {\r\n const field = this.field;\r\n\r\n const fieldContainerElement = this.rowElement.querySelector(\".df-field-container\") as HTMLElement;\r\n\r\n const templates: string[] = [];\r\n const fieldName = field.$xssName;\r\n\r\n const labelKey = Render.valuesLabelKey(field);\r\n const valueKey = Render.valuesValueKey(field);\r\n\r\n templates.push(`<div class=\"df-field\"><div class=\"field-group\">`);\r\n\r\n field.listItem?.list?.forEach((val) => {\r\n const radioVal = val[valueKey];\r\n\r\n templates.push(\r\n `<span class=\"field ${field.orientation == \"vertical\" ? \"vertical\" : \"horizontal\"}\">\r\n <label>\r\n <input type=\"radio\" name=\"${fieldName}\" value=\"${radioVal}\" class=\"form-field radio\" ${val.selected ? \"checked\" : \"\"} ${val.disabled ? \"disabled\" : \"\"}/>\r\n ${Render.valuesLabelValue(labelKey, val)}\r\n </label>\r\n </span>\r\n `\r\n );\r\n });\r\n templates.push(`<i class=\"daracl-icon help-icon\"></i></div></div>\r\n ${Render.getDescriptionTemplate(field)}\r\n <div class=\"help-message\"></div>\r\n `);\r\n\r\n fieldContainerElement.innerHTML = templates.join(\"\");\r\n\r\n this.initEvent();\r\n }\r\n\r\n public setValueItems(items: any): void {\r\n const containerEle = this.rowElement.querySelector(\".df-field-container\");\r\n if (containerEle) {\r\n if (this.field.listItem) {\r\n this.field.listItem.list = items;\r\n } else {\r\n this.field.listItem = {\r\n list: items,\r\n } as ValuesInfo;\r\n }\r\n\r\n this.createField();\r\n\r\n if (!utils.isBlank(this.field.$value)) {\r\n const currentValue = this.field.$value;\r\n this.field.$value = \"\";\r\n this.setValue(currentValue);\r\n }\r\n }\r\n }\r\n\r\n getValue() {\r\n return (this.rowElement.querySelector(`[name=\"${this.field.$xssName}\"]:checked`) as HTMLInputElement)?.value;\r\n }\r\n\r\n setValue(value: any, changeCheckFlag?: boolean): void {\r\n if (changeCheckFlag !== false && this.changeEventCall(this.field, null, this, value) === false) {\r\n value = this.field.$value;\r\n }\r\n\r\n this.field.$value = value;\r\n if (value === true) {\r\n (this.rowElement.querySelector(`[name=\"${this.field.$xssName}\"]`) as HTMLInputElement).checked = true;\r\n return;\r\n }\r\n\r\n if (value === false) {\r\n (this.rowElement.querySelector(`[name=\"${this.field.$xssName}\"]`) as HTMLInputElement).checked = false;\r\n return;\r\n }\r\n\r\n const elements = this.rowElement.querySelectorAll(this.getSelector());\r\n\r\n elements.forEach((ele) => {\r\n let radioEle = ele as HTMLInputElement;\r\n if (radioEle.value == value) {\r\n radioEle.checked = true;\r\n } else {\r\n radioEle.checked = false;\r\n }\r\n });\r\n }\r\n\r\n reset() {\r\n this.setValue(this.defaultCheckValue, false);\r\n this.setDisabled(false);\r\n resetRowElementStyleClass(this.rowElement);\r\n }\r\n\r\n getElement(): any {\r\n return this.rowElement.querySelectorAll(this.getSelector());\r\n }\r\n\r\n public focus() {\r\n const elements = this.getElement();\r\n\r\n if (elements && elements.length > 0) {\r\n this.getElement()[0].focus();\r\n }\r\n }\r\n\r\n valid(): any {\r\n const value = this.getValue();\r\n\r\n let validResult: ValidResult | boolean = true;\r\n\r\n if (this.field.required) {\r\n if (utils.isBlank(value)) {\r\n validResult = { name: this.field.name, constraint: [] };\r\n validResult.constraint.push(RULES.REQUIRED);\r\n }\r\n }\r\n\r\n invalidMessage(this.field, this.rowElement, validResult);\r\n\r\n return validResult;\r\n }\r\n}\r\n", "import { FormField } from \"@t/FormField\";\r\nimport Render from \"./Render\";\r\nimport { stringValidator } from \"src/rule/stringValidator\";\r\nimport { resetRowElementStyleClass, invalidMessage } from \"src/util/validUtils\";\r\nimport { inputEvent } from \"src/event/renderEvents\";\r\nimport DaraForm from \"src/DaraForm\";\r\n\r\nexport default class PasswordRender extends Render {\r\n private element: HTMLInputElement;\r\n\r\n constructor(field: FormField, rowElement: HTMLElement, daraForm: DaraForm) {\r\n super(daraForm, field, rowElement);\r\n\r\n this.mounted();\r\n this.setDefaultOption();\r\n this.setDefaultInfo();\r\n }\r\n\r\n mounted() {\r\n inputEvent(this.field, this.element, this);\r\n }\r\n\r\n createField() {\r\n const field = this.field;\r\n\r\n const fieldContainerElement = this.rowElement.querySelector(\".df-field-container\") as HTMLElement;\r\n\r\n fieldContainerElement.innerHTML = `\r\n <div class=\"df-field\">\r\n <input type=\"password\" name=\"${field.$xssName}\" class=\"form-field password help-icon\" autocomplete=\"off\" />\r\n </div>\r\n ${Render.getDescriptionTemplate(field)}\r\n <div class=\"help-message\"></div>\r\n `;\r\n\r\n this.element = fieldContainerElement.querySelector(`[name=\"${field.$xssName}\"]`) as HTMLInputElement;\r\n }\r\n\r\n getValue() {\r\n return this.element.value;\r\n }\r\n\r\n setValue(value: any, changeCheckFlag?: boolean): void {\r\n if (changeCheckFlag !== false && this.changeEventCall(this.field, null, this, value) === false) {\r\n this.element.value = this.field.$value;\r\n return;\r\n }\r\n this.field.$value = value;\r\n this.element.value = value;\r\n }\r\n\r\n reset() {\r\n this.setDefaultInfo();\r\n this.setDisabled(false);\r\n resetRowElementStyleClass(this.rowElement);\r\n }\r\n\r\n getElement(): HTMLElement {\r\n return this.element;\r\n }\r\n\r\n valid(): any {\r\n const validResult = stringValidator(this.getValue(), this.field);\r\n\r\n invalidMessage(this.field, this.rowElement, validResult);\r\n\r\n return validResult;\r\n }\r\n}\r\n", "import { FileInfo, FormField } from \"@t/FormField\";\r\nimport { ValidResult } from \"@t/ValidResult\";\r\nimport { RULES } from \"src/constants\";\r\n\r\n/**\r\n * file validator\r\n *\r\n * @param {HTMLInputElement} element\r\n * @param {FormField} field\r\n * @param {FileInfo[]} fileList\r\n * @returns {(ValidResult | boolean)}\r\n */\r\nexport const fileValidator = (element: HTMLInputElement, field: FormField, fileList: FileInfo[]): ValidResult | boolean => {\r\n const result: ValidResult = { name: field.name, constraint: [] };\r\n\r\n if (field.required && fileList.length < 1) {\r\n result.constraint.push(RULES.REQUIRED);\r\n return result;\r\n }\r\n\r\n if (result.constraint.length > 0) {\r\n return result;\r\n }\r\n\r\n return true;\r\n};\r\n", "import { FileInfo, FormField } from \"@t/FormField\";\r\nimport Render from \"./Render\";\r\nimport { resetRowElementStyleClass, invalidMessage } from \"src/util/validUtils\";\r\nimport { fileValidator } from \"src/rule/fileValidator\";\r\nimport Lanauage from \"src/util/Lanauage\";\r\nimport { customChangeEventCall } from \"src/event/renderEvents\";\r\nimport DaraForm from \"src/DaraForm\";\r\nimport * as utils from \"src/util/utils\";\r\n\r\nexport default class FileRender extends Render {\r\n private element: HTMLInputElement;\r\n private removeIds: any[] = [];\r\n private uploadFiles: any = {};\r\n private fileList: any[] = [];\r\n private fileSeq = 0;\r\n\r\n constructor(field: FormField, rowElement: HTMLElement, daraForm: DaraForm) {\r\n super(daraForm, field, rowElement);\r\n\r\n this.element = rowElement.querySelector(`[name=\"${field.$xssName}\"]`) as HTMLInputElement;\r\n this.fileList = field.listItem?.list || [];\r\n this.mounted();\r\n this.setDefaultOption();\r\n }\r\n\r\n mounted() {\r\n this.element.addEventListener(\"change\", (e: Event) => {\r\n const files = (e.target as HTMLInputElement)?.files;\r\n\r\n if (files) {\r\n let fileList = [];\r\n for (let item of files) {\r\n fileList.push(item);\r\n }\r\n this.addFiles(fileList);\r\n }\r\n customChangeEventCall(this.field, e, this, this.fileList);\r\n this.valid();\r\n });\r\n\r\n this.fileList.forEach((file) => {\r\n file.$seq = this.fileSeq += 1;\r\n });\r\n\r\n this.setFileList(this.fileList);\r\n }\r\n\r\n createField() {\r\n const field = this.field;\r\n\r\n const fieldContainerElement = this.rowElement.querySelector(\".df-field-container\") as HTMLElement;\r\n\r\n fieldContainerElement.innerHTML = `\r\n <div class=\"df-field\">\r\n <span class=\"file-wrapper\">\r\n <label class=\"file-label\">\r\n <input type=\"file\" name=\"${field.$xssName}\" class=\"form-field file\" multiple />\r\n ${Lanauage.getMessage(\"fileButton\")}\r\n </label>\r\n <i class=\"daracl-icon help-icon\"></i>\r\n </span>\r\n </div>\r\n ${Render.getDescriptionTemplate(field)}\r\n <div class=\"daracl-file-list\"></div>\r\n <div class=\"help-message\"></div>\r\n `;\r\n\r\n this.element = fieldContainerElement.querySelector(`[name=\"${field.$xssName}\"]`) as HTMLInputElement;\r\n }\r\n\r\n addFiles(files: any[]) {\r\n let addFlag = false;\r\n\r\n const newFiles: FileInfo[] = [];\r\n\r\n for (let item of files) {\r\n const fileCheckList = this.fileList.filter((fileItem) => fileItem.fileName == item.name && fileItem.fileSize == item.size && fileItem.lastModified == item.lastModified);\r\n\r\n if (fileCheckList.length > 0) continue;\r\n this.fileSeq += 1;\r\n this.uploadFiles[this.fileSeq] = item;\r\n\r\n let newFileInfo = {\r\n fileName: item.name,\r\n $seq: this.fileSeq,\r\n fileSize: item.size,\r\n lastModified: item.lastModified,\r\n } as FileInfo;\r\n\r\n newFiles.push(newFileInfo);\r\n addFlag = true;\r\n }\r\n if (addFlag) {\r\n this.setFileList(newFiles);\r\n this.fileList.push(...newFiles);\r\n }\r\n }\r\n\r\n private setFileList(fileList: FileInfo[], initFlag?: boolean | undefined) {\r\n const fileListElement = this.rowElement.querySelector(\".daracl-file-list\");\r\n\r\n if (fileListElement) {\r\n if (initFlag === true) {\r\n fileListElement.innerHTML = \"\";\r\n }\r\n\r\n const fileTemplateHtml: string[] = [];\r\n\r\n fileList.forEach((file) => {\r\n fileTemplateHtml.push(`\r\n <div class=\"file-item\" data-seq=\"${file.$seq}\">\r\n ${file.fileId ? '<span class=\"file-icon download\"></span>' : '<span class=\"file-icon\"></span>'} <span class=\"file-icon remove\"></span>\r\n <span class=\"file-name\">${file.fileName}</span > \r\n </div>`);\r\n });\r\n\r\n fileListElement.insertAdjacentHTML(\"beforeend\", fileTemplateHtml.join(\"\"));\r\n\r\n fileList.forEach((item) => {\r\n this.removeFileEvent(item, fileListElement);\r\n this.downloadFileEvent(item, fileListElement);\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * \uD30C\uC77C \uB2E4\uC6B4\uB85C\uB4DC \uC774\uBCA4\uD2B8 \uCC98\uB9AC.\r\n *\r\n * @param item\r\n * @param fileListElement\r\n */\r\n private downloadFileEvent(item: FileInfo, fileListElement: Element) {\r\n const ele = fileListElement.querySelector(`[data-seq=\"${item.$seq}\"] .download`);\r\n if (ele) {\r\n ele.addEventListener(\"click\", (evt: Event) => {\r\n const fileItemElement = (evt.target as Element).closest(\".file-item\");\r\n\r\n if (fileItemElement) {\r\n const attrSeq = fileItemElement.getAttribute(\"data-seq\");\r\n if (attrSeq) {\r\n const seq = parseInt(attrSeq, 10);\r\n const idx = this.fileList.findIndex((v) => v.$seq === seq);\r\n\r\n const item = this.fileList[idx];\r\n\r\n if (item[\"url\"]) {\r\n location.href = item[\"url\"];\r\n return;\r\n }\r\n\r\n if (this.field.fileDownload) {\r\n this.field.fileDownload.call(null, { file: item, field: this.field });\r\n return;\r\n }\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * \uD30C\uC77C \uC0AD\uC81C \uCC98\uB9AC.\r\n *\r\n * @param item\r\n * @param fileListElement\r\n */\r\n private removeFileEvent(item: FileInfo, fileListElement: Element) {\r\n const ele = fileListElement.querySelector(`[data-seq=\"${item.$seq}\"] .remove`);\r\n if (ele) {\r\n ele.addEventListener(\"click\", (evt: Event) => {\r\n const fileItemElement = (evt.target as Element).closest(\".file-item\");\r\n\r\n if (fileItemElement) {\r\n const attrSeq = fileItemElement.getAttribute(\"data-seq\");\r\n if (attrSeq) {\r\n const seq = parseInt(attrSeq, 10);\r\n const removeIdx = this.fileList.findIndex((v) => v.$seq === seq);\r\n\r\n const removeItem = this.fileList[removeIdx];\r\n\r\n this.fileList.splice(removeIdx, 1);\r\n delete this.uploadFiles[seq];\r\n fileItemElement.remove();\r\n\r\n if (removeItem.fileId) {\r\n this.removeIds.push(removeItem.fileId);\r\n }\r\n }\r\n }\r\n this.valid();\r\n });\r\n }\r\n }\r\n\r\n getValue() {\r\n return {\r\n uploadFile: Object.values(this.uploadFiles),\r\n removeIds: this.removeIds,\r\n };\r\n }\r\n\r\n public setValueItems(value: any): void {\r\n this.fileList = [];\r\n this.uploadFiles = [];\r\n this.removeIds = [];\r\n for (let file of value) {\r\n file.$seq = this.fileSeq += 1;\r\n\r\n this.fileList.push(file);\r\n }\r\n\r\n this.setFileList(this.fileList, true);\r\n }\r\n\r\n setValue(value: any): void {\r\n if (utils.isArray(value)) {\r\n this.setValueItems(value);\r\n }\r\n this.element.value = \"\";\r\n }\r\n\r\n reset() {\r\n this.setValue(\"\");\r\n this.setValueItems([]);\r\n resetRowElementStyleClass(this.rowElement);\r\n }\r\n\r\n getElement(): HTMLInputElement {\r\n return this.element;\r\n }\r\n\r\n valid(): any {\r\n const validResult = fileValidator(this.element, this.field, this.fileList);\r\n\r\n invalidMessage(this.field, this.rowElement, validResult);\r\n\r\n return validResult;\r\n }\r\n}\r\n", "import { FormField } from \"@t/FormField\";\r\nimport Render from \"./Render\";\r\nimport { invalidMessage, resetRowElementStyleClass } from \"src/util/validUtils\";\r\nimport DaraForm from \"src/DaraForm\";\r\nimport * as utils from \"src/util/utils\";\r\nimport { stringValidator } from \"src/rule/stringValidator\";\r\n\r\nexport default class CustomRender extends Render {\r\n private customFunction;\r\n\r\n constructor(field: FormField, rowElement: HTMLElement, daraForm: DaraForm) {\r\n super(daraForm, field, rowElement);\r\n if (field.renderer) {\r\n this.customFunction = field.renderer;\r\n this.mounted();\r\n this.setDefaultOption();\r\n this.setDefaultInfo();\r\n } else {\r\n this.customFunction = {} as any;\r\n }\r\n }\r\n\r\n mounted() {\r\n if (this.customFunction.mounted) {\r\n (this.customFunction.mounted as any).call(this, this.field, this.rowElement);\r\n }\r\n }\r\n\r\n static isDataRender(): boolean {\r\n return false;\r\n }\r\n\r\n createField() {\r\n const field = this.field;\r\n\r\n const fieldTemplate = utils.isEmpty(field.template) ? \"\" : utils.isString(field.template) ? field.template : field.template();\r\n\r\n const fieldContainerElement = this.rowElement.querySelector(\".df-field-container\") as HTMLElement;\r\n\r\n fieldContainerElement.innerHTML = ` <div class=\"df-field\">\r\n ${fieldTemplate}\r\n </div>\r\n ${Render.getDescriptionTemplate(field)}\r\n <div class=\"help-message\"></div>`;\r\n }\r\n\r\n getValue() {\r\n if (this.customFunction.getValue) {\r\n return (this.customFunction.getValue as any).call(this, this.field, this.rowElement);\r\n }\r\n return \"\";\r\n }\r\n\r\n setValue(value: any, changeCheckFlag?: boolean): void {\r\n if (this.customFunction.setValue) {\r\n if (changeCheckFlag !== false && this.changeEventCall(this.field, null, this, value) === false) {\r\n value = this.field.$value;\r\n }\r\n (this.customFunction.setValue as any).call(this, value, this.field, this.rowElement);\r\n }\r\n\r\n this.field.$value = value;\r\n }\r\n\r\n reset() {\r\n this.setDefaultInfo();\r\n resetRowElementStyleClass(this.rowElement);\r\n }\r\n\r\n getElement() {\r\n if (this.customFunction.getElement) {\r\n return (this.customFunction.getElement as any).call(this, this.field, this.rowElement);\r\n }\r\n return null;\r\n }\r\n\r\n valid(): any {\r\n if (this.customFunction.valid) {\r\n const validResult = (this.customFunction.valid as any).call(this, this.field, this.rowElement);\r\n\r\n invalidMessage(this.field, this.rowElement, validResult);\r\n\r\n return;\r\n }\r\n const validResult = stringValidator(this.getValue(), this.field);\r\n\r\n invalidMessage(this.field, this.rowElement, validResult);\r\n\r\n return validResult;\r\n }\r\n\r\n /**\r\n * focus\r\n */\r\n focus(): void {\r\n if (this.customFunction.focus) {\r\n (this.customFunction.focus as any).call(this, this.field, this.rowElement);\r\n }\r\n }\r\n}\r\n", "import { FormField } from \"@t/FormField\";\r\nimport Render from \"./Render\";\r\nimport DaraForm from \"src/DaraForm\";\r\n\r\nexport default class GroupRender extends Render {\r\n constructor(field: FormField, rowElement: HTMLElement, daraForm: DaraForm) {\r\n super(daraForm, field, rowElement);\r\n }\r\n\r\n public mounted() {}\r\n\r\n static isDataRender(): boolean {\r\n return false;\r\n }\r\n\r\n createField() {\r\n return \"\";\r\n }\r\n\r\n getValue() {\r\n return null;\r\n }\r\n\r\n setValue(value: any): void {}\r\n\r\n reset() {}\r\n\r\n getElement(): HTMLElement {\r\n return this.rowElement;\r\n }\r\n\r\n valid(): any {\r\n return true;\r\n }\r\n\r\n public addChildField(element: Element) {\r\n let addContainer = this.rowElement.querySelector(\".df-field-container\");\r\n\r\n if (addContainer) {\r\n addContainer.append(element);\r\n } else {\r\n this.rowElement.append(element);\r\n }\r\n }\r\n\r\n focus(): void {}\r\n}\r\n", "import { FormField } from \"@t/FormField\";\r\nimport Render from \"./Render\";\r\nimport DaraForm from \"src/DaraForm\";\r\n\r\nexport default class HiddenRender extends Render {\r\n constructor(field: FormField, rowElement: HTMLElement, daraForm: DaraForm) {\r\n super(daraForm, field, rowElement);\r\n this.field.$value = field.defaultValue;\r\n }\r\n\r\n mounted() {}\r\n\r\n createField() {\r\n return ``;\r\n }\r\n\r\n getValue() {\r\n return this.field.$value;\r\n }\r\n\r\n setValue(value: any): void {\r\n this.field.$value = value;\r\n }\r\n\r\n reset() {\r\n this.setValue(this.field.defaultValue);\r\n }\r\n\r\n getElement() {\r\n return;\r\n }\r\n\r\n valid(): any {\r\n return true;\r\n }\r\n}\r\n", "import { FormField } from \"@t/FormField\";\r\nimport Render from \"./Render\";\r\nimport DaraForm from \"src/DaraForm\";\r\n\r\nexport default class ButtonRender extends Render {\r\n constructor(field: FormField, rowElement: HTMLElement, daraForm: DaraForm) {\r\n super(daraForm, field, rowElement);\r\n this.mounted();\r\n this.setDefaultOption();\r\n }\r\n\r\n mounted() {\r\n this.rowElement.querySelector(`#${this.field.$key}`)?.addEventListener(\"click\", (evt) => {\r\n if (this.field.onClick) {\r\n this.field.onClick.call(null, this.field);\r\n }\r\n });\r\n }\r\n\r\n static isDataRender(): boolean {\r\n return false;\r\n }\r\n\r\n createField() {\r\n const field = this.field;\r\n\r\n const fieldContainerElement = this.rowElement.querySelector(\".df-field-container\") as HTMLElement;\r\n\r\n fieldContainerElement.innerHTML = `\r\n <button type=\"button\" id=\"${field.$key}\" class=\"df-btn\">${field.label}</button> ${Render.getDescriptionTemplate(field)}\r\n `;\r\n }\r\n\r\n getValue() {\r\n return \"\";\r\n }\r\n\r\n setValue(value: any): void {}\r\n\r\n reset() {\r\n this.setDisabled(false);\r\n }\r\n\r\n getElement() {\r\n return null;\r\n }\r\n\r\n valid(): any {\r\n return true;\r\n }\r\n}\r\n", "import { FormField } from \"@t/FormField\";\r\nimport Render from \"./Render\";\r\nimport { numberValidator } from \"src/rule/numberValidator\";\r\nimport { resetRowElementStyleClass, invalidMessage } from \"src/util/validUtils\";\r\nimport { customChangeEventCall, numberInputEvent } from \"src/event/renderEvents\";\r\nimport DaraForm from \"src/DaraForm\";\r\n\r\nexport default class RangeRender extends Render {\r\n private element: HTMLInputElement;\r\n private rangeNumElement: Element;\r\n\r\n constructor(field: FormField, rowElement: HTMLElement, daraForm: DaraForm) {\r\n super(daraForm, field, rowElement);\r\n\r\n this.rangeNumElement = rowElement.querySelector(\".range-num\") as Element;\r\n\r\n this.mounted();\r\n this.setDefaultOption();\r\n this.setDefaultInfo();\r\n }\r\n\r\n mounted() {\r\n this.element.addEventListener(\"input\", (e: any) => {\r\n this.rangeNumElement.innerHTML = e.target.value;\r\n\r\n this.element.setAttribute(\"title\", e.target.value);\r\n customChangeEventCall(this.field, e, this, this.getValue());\r\n this.valid();\r\n });\r\n }\r\n\r\n createField() {\r\n const field = this.field;\r\n\r\n const fieldContainerElement = this.rowElement.querySelector(\".df-field-container\") as HTMLElement;\r\n\r\n fieldContainerElement.innerHTML = `\r\n <div class=\"df-field\">\r\n <span class=\"range-num\">${field.defaultValue ? field.defaultValue : 0}</span>\r\n <input type=\"range\" name=\"${field.$xssName}\" class=\"form-field range help-icon\" min=\"${field.rule.minimum}\" max=\"${field.rule.maximum}\"/>\r\n </div> \r\n ${Render.getDescriptionTemplate(field)}\r\n <div class=\"help-message\"></div>\r\n `;\r\n\r\n this.element = fieldContainerElement.querySelector(`[name=\"${field.$xssName}\"]`) as HTMLInputElement;\r\n }\r\n\r\n getValue() {\r\n return this.element.value;\r\n }\r\n\r\n setValue(value: any, changeCheckFlag?: boolean): void {\r\n if (changeCheckFlag !== false && this.changeEventCall(this.field, null, this, value) === false) {\r\n this.element.value = this.field.$value;\r\n return;\r\n }\r\n this.field.$value = value;\r\n this.element.value = value;\r\n }\r\n\r\n reset() {\r\n this.setDefaultInfo();\r\n this.setDisabled(false);\r\n resetRowElementStyleClass(this.rowElement);\r\n }\r\n\r\n getElement(): HTMLElement {\r\n return this.element;\r\n }\r\n\r\n valid(): any {\r\n const validResult = numberValidator(this.getValue(), this.field);\r\n\r\n invalidMessage(this.field, this.rowElement, validResult);\r\n\r\n return validResult;\r\n }\r\n}\r\n", "import { Message } from \"@t/Message\";\r\n\r\nlet localeMessage: Message = {\r\n year: \"Year\",\r\n month: \"Month\",\r\n day: \"Day\",\r\n am: \"AM\",\r\n pm: \"PM\",\r\n today: \"Today\",\r\n ok: \"Ok\",\r\n months: {\r\n full: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\r\n abbr: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"],\r\n },\r\n weeks: {\r\n full: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\r\n abbr: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\r\n },\r\n};\r\n\r\n/**\r\n * validation \uBA54\uC2DC\uC9C0 \uCC98\uB9AC.\r\n *\r\n * @class Language\r\n * @typedef {Language}\r\n */\r\nclass Language {\r\n private lang: Message = localeMessage;\r\n\r\n public setDefaultMessage(lang?: Message) {\r\n localeMessage = Object.assign(localeMessage, lang);\r\n }\r\n\r\n /**\r\n * \uB2E4\uAD6D\uC5B4 \uBA54\uC2DC\uC9C0 \uB4F1\uB85D\r\n *\r\n * @public\r\n * @param {?Message} [lang] \uB465\uB85D\uD560 \uBA54\uC2DC\uC9C0\r\n */\r\n public set(lang?: Message) {\r\n this.lang = Object.assign({}, localeMessage, lang);\r\n }\r\n\r\n /**\r\n * \uBA54\uC2DC\uC9C0 \uC5BB\uAE30\r\n *\r\n * @public\r\n * @param {string} messageKey \uBA54\uC2DC\uC9C0 \uD0A4\r\n * @returns {*}\r\n */\r\n public getMessage(messageKey: string): any {\r\n return (this.lang as any)[messageKey];\r\n }\r\n\r\n public getMonthsMessage(idx: number, mode: \"full\" | \"abbr\" = \"abbr\") {\r\n return (this.lang.months as any)[mode][idx] || \"\";\r\n }\r\n\r\n public getWeeksMessage(idx: number, mode: \"full\" | \"abbr\" = \"abbr\") {\r\n return (this.lang.weeks as any)[mode][idx] || \"\";\r\n }\r\n\r\n public getMonthsIdx(val: string, mode: \"full\" | \"abbr\" = \"abbr\"): number {\r\n return mode == \"full\" ? this.lang.months.full.indexOf(val) : this.lang.months.abbr.indexOf(val);\r\n }\r\n\r\n public getWeeksIdx(val: string, mode: \"full\" | \"abbr\" = \"abbr\"): number {\r\n return mode == \"full\" ? this.lang.weeks.full.indexOf(val) : this.lang.weeks.abbr.indexOf(val);\r\n }\r\n}\r\n\r\nfunction message(msgFormat: string, msgParam: any): string {\r\n return msgFormat.replace(/\\{{1,1}([A-Za-z0-9_.]*)\\}{1,1}/g, (match, key) => {\r\n return typeof msgParam[key] !== \"undefined\" ? msgParam[key] : match;\r\n });\r\n}\r\n\r\nexport default new Language();\r\n", "export const EXPRESSIONS_FORMAT = [\"YY\", \"YYYY\", \"MMMM\", \"MMM\", \"MM\", \"M\", \"dddd\", \"ddd\", \"dd\", \"d\", \"DD\", \"D\", \"S\", \"HH\", \"H\", \"hh\", \"h\", \"mm\", \"m\", \"ss\", \"s\", \"SSS\", \"zzzz\", \"zzz\", \"zz\", \"z\", \"a\", \"A\"];\r\n\r\nexport let MAX_CHAR_LENGTH = 0;\r\n\r\nexport let DEFAULT_FORMAT = {\r\n year: \"YYYY\",\r\n month: \"YYYY-MM\",\r\n date: \"YYYY-MM-DD\",\r\n time: \"HH:mm\",\r\n datetime: \"YYYY-MM-DD HH:mm\",\r\n};\r\n\r\nexport const DAY_STYLE_CLASS = [\"sun\", \"mon\", \"tue\", \"wed\", \"thu\", \"fri\", \"sat\"];\r\n\r\nexport enum DateViewMode {\r\n year = \"year\",\r\n month = \"month\",\r\n date = \"date\",\r\n datetime = \"datetime\",\r\n time = \"time\",\r\n}\r\n\r\nEXPRESSIONS_FORMAT.forEach((item) => {\r\n MAX_CHAR_LENGTH = Math.max(item.length, MAX_CHAR_LENGTH);\r\n});\r\n", "const xssFilter = {\r\n \"&\": \"&amp;\",\r\n \"<\": \"&lt;\",\r\n \">\": \"&gt;\",\r\n '\"': \"&quot;\",\r\n \"'\": \"&#39;\",\r\n} as any;\r\n\r\nexport default {\r\n replace(str: string): string {\r\n let returnText = str;\r\n if (returnText) {\r\n Object.keys(xssFilter).forEach((key) => {\r\n returnText = returnText.replaceAll(key, xssFilter[key]);\r\n });\r\n }\r\n return returnText;\r\n },\r\n\r\n unReplace(inputText: string): string {\r\n let returnText = inputText;\r\n\r\n if (returnText) {\r\n Object.keys(xssFilter).forEach((key) => {\r\n returnText = returnText.replaceAll(xssFilter[key], key);\r\n });\r\n }\r\n return returnText;\r\n },\r\n\r\n unFieldName(fieldName: string): string {\r\n if (fieldName) {\r\n return this.unReplace(fieldName).replaceAll('\"', '\\\\\"');\r\n }\r\n return \"\";\r\n },\r\n\r\n isBlank(value: any): boolean {\r\n if (value === null) return true;\r\n if (value === \"\") return true;\r\n if (typeof value === \"undefined\") return true;\r\n if (typeof value === \"string\" && (value === \"\" || value.replace(/\\s/g, \"\") === \"\")) return true;\r\n\r\n return false;\r\n },\r\n\r\n isUndefined(value: any): value is undefined {\r\n return typeof value === \"undefined\";\r\n },\r\n\r\n isFunction(value: any): boolean {\r\n return typeof value === \"function\";\r\n },\r\n\r\n isString(value: any): value is string {\r\n return typeof value === \"string\";\r\n },\r\n isNumber(value: any): value is number {\r\n if (this.isBlank(value)) {\r\n return false;\r\n }\r\n return !isNaN(value);\r\n },\r\n\r\n isArray(value: any) {\r\n return Array.isArray(value);\r\n },\r\n\r\n getHashCode(str: string) {\r\n let hash = 0;\r\n if (str.length == 0) return hash;\r\n for (let i = 0; i < str.length; i++) {\r\n let tmpChar = str.charCodeAt(i);\r\n hash = (hash << 5) - hash + tmpChar;\r\n hash = hash & hash;\r\n }\r\n return hash;\r\n },\r\n\r\n pad(str: any, length: number): string {\r\n str = String(str);\r\n while (str.length < length) {\r\n str = \"0\" + str;\r\n }\r\n return str;\r\n },\r\n\r\n closestElement(el: HTMLElement, checkElement: Element) {\r\n let currentEl: HTMLElement | null = el;\r\n while (currentEl) {\r\n if (currentEl == checkElement) {\r\n return true;\r\n }\r\n\r\n currentEl = currentEl.parentElement;\r\n }\r\n\r\n return false;\r\n },\r\n};\r\n", "import Lanauage from \"src/Lanauage\";\r\nimport { MAX_CHAR_LENGTH, EXPRESSIONS_FORMAT } from \"src/constants\";\r\nimport utils from \"src/util/utils\";\r\n\r\nexport default (date: Date, format: string) => {\r\n format = format || \"YYYY-MM-DD\";\r\n const len = format.length;\r\n\r\n let result = [];\r\n for (let i = 0; i < len; ) {\r\n let minLen = Math.min(MAX_CHAR_LENGTH, len - i);\r\n let j = minLen;\r\n for (; j > 0; j--) {\r\n const v = format.substring(i, i + j);\r\n if (EXPRESSIONS_FORMAT.includes(v)) {\r\n try {\r\n result.push(expressionsFunction[v](date));\r\n } catch (e) {\r\n console.log(EXPRESSIONS_FORMAT.includes(v), v, e);\r\n }\r\n break;\r\n }\r\n }\r\n\r\n if (j < 1) {\r\n result.push(format.substring(i, i + 1));\r\n i += 1;\r\n } else {\r\n i += j;\r\n }\r\n }\r\n\r\n return result.join(\"\");\r\n};\r\n\r\nconst expressionsFunction: any = {\r\n YY: (date: Date) => {\r\n return String(date.getFullYear()).slice(-2);\r\n },\r\n YYYY: (date: Date) => {\r\n return String(date.getFullYear());\r\n },\r\n M: (date: Date) => {\r\n return String(date.getMonth() + 1);\r\n },\r\n MM: (date: Date) => {\r\n return utils.pad(date.getMonth() + 1, 2);\r\n },\r\n MMM: (date: Date) => {\r\n return Lanauage.getMonthsMessage(date.getMonth());\r\n },\r\n MMMM: (date: Date) => {\r\n return Lanauage.getMonthsMessage(date.getMonth(), \"full\");\r\n },\r\n D: (date: Date) => {\r\n return String(date.getDate());\r\n },\r\n DD: (date: Date) => {\r\n return utils.pad(date.getDate(), 2);\r\n },\r\n d: (date: Date) => {\r\n return String(date.getDate());\r\n },\r\n dd: (date: Date) => {\r\n return utils.pad(date.getDate(), 2);\r\n },\r\n ddd: (date: Date) => {\r\n return Lanauage.getWeeksMessage(date.getDay());\r\n },\r\n dddd: (date: Date) => {\r\n return Lanauage.getWeeksMessage(date.getDay(), \"full\");\r\n },\r\n H: (date: Date) => {\r\n return String(date.getHours());\r\n },\r\n HH: (date: Date) => {\r\n return utils.pad(date.getHours(), 2);\r\n },\r\n h: (date: Date) => {\r\n return getH(date);\r\n },\r\n hh: (date: Date) => {\r\n return utils.pad(getH(date), 2);\r\n },\r\n a: (date: Date) => {\r\n return String(date.getFullYear()).slice(-2);\r\n },\r\n A: (date: Date) => {\r\n return getMeridiem(date, true, true);\r\n },\r\n m: (date: Date) => {\r\n return String(date.getMinutes());\r\n },\r\n mm: (date: Date) => {\r\n return utils.pad(date.getMinutes(), 2);\r\n },\r\n s: (date: Date) => {\r\n return String(date.getSeconds());\r\n },\r\n ss: (date: Date) => {\r\n return utils.pad(date.getSeconds(), 2);\r\n },\r\n SSS: (date: Date) => {\r\n return utils.pad(date.getMilliseconds(), 3);\r\n },\r\n};\r\n\r\nfunction getH(date: Date) {\r\n let hour = date.getHours();\r\n if (hour > 12) {\r\n hour -= 12;\r\n } else if (hour < 1) {\r\n hour = 12;\r\n }\r\n return hour;\r\n}\r\n\r\nfunction getMeridiem(date: Date, isUpper: boolean, isShort: boolean) {\r\n const hour = date.getHours();\r\n let m = hour < 12 ? \"am\" : \"pm\";\r\n\r\n m = Lanauage.getMessage(m);\r\n m = isUpper ? m.toUpperCase() : m;\r\n\r\n return m;\r\n}\r\n", "import Lanauage from \"src/Lanauage\";\r\nimport { DEFAULT_FORMAT, EXPRESSIONS_FORMAT, MAX_CHAR_LENGTH } from \"src/constants\";\r\n\r\ntype DateInfo = {\r\n year: number;\r\n month: number;\r\n day: number;\r\n hour: number;\r\n minute: number;\r\n second: number;\r\n millisecond: number;\r\n isPm: boolean;\r\n isH: boolean;\r\n timezoneOffset?: number | null;\r\n charIdx: number;\r\n};\r\n\r\nexport default (dateStr: string, format: string): Date | null => {\r\n if (dateStr.length > 1000) {\r\n return null;\r\n }\r\n\r\n format = format || DEFAULT_FORMAT.date;\r\n\r\n const dateInfo: DateInfo = {\r\n year: new Date().getFullYear(),\r\n month: 0,\r\n day: 1,\r\n hour: 0,\r\n minute: 0,\r\n second: 0,\r\n millisecond: 0,\r\n isPm: false,\r\n isH: false,\r\n charIdx: 0,\r\n };\r\n\r\n const len = format.length;\r\n let startIdx = 0;\r\n\r\n for (let i = 0; i < len; ) {\r\n let minLen = Math.min(MAX_CHAR_LENGTH, len - i);\r\n let j = minLen;\r\n for (; j > 0; j--) {\r\n const v = format.substring(i, i + j);\r\n if (EXPRESSIONS_FORMAT.includes(v)) {\r\n const expInfo = expressionsFunction[v];\r\n const val = matchFind(dateStr.substring(startIdx), expInfo[0]);\r\n expInfo[1](dateInfo, val);\r\n startIdx += val.length;\r\n break;\r\n }\r\n }\r\n\r\n if (j < 1) {\r\n i += 1;\r\n startIdx += 1;\r\n } else {\r\n i += j;\r\n }\r\n }\r\n\r\n if (dateInfo.hour != null && !dateInfo.isH) {\r\n if (dateInfo.isPm && +dateInfo.hour !== 12) {\r\n dateInfo.hour = +dateInfo.hour + 12;\r\n } else if (!dateInfo.isPm && +dateInfo.hour === 12) {\r\n dateInfo.hour = 0;\r\n }\r\n }\r\n\r\n let date: Date;\r\n\r\n date = new Date(dateInfo.year, dateInfo.month, dateInfo.day, dateInfo.hour, dateInfo.minute, dateInfo.second, dateInfo.millisecond);\r\n\r\n return date;\r\n};\r\n\r\n// match word\r\nconst matchFind = (val: string, regexp: RegExp) => {\r\n const match = regexp.exec(val);\r\n\r\n return match == null ? \"\" : match[0];\r\n};\r\n\r\n// number check regular expression\r\nconst digitsCheck: Record<string, RegExp> = {\r\n twoOptional: /\\d\\d?/,\r\n two: /\\d\\d/,\r\n three: /\\d{3}/,\r\n four: /\\d{4}/,\r\n};\r\n\r\n// word check regular expression\r\nconst word = /[^\\s]+/;\r\n\r\nconst expressionsFunction: Record<string, [RegExp, (dateInfo: DateInfo, val: string) => DateInfo]> = {\r\n YY: [\r\n digitsCheck[\"two\"],\r\n (dateInfo: DateInfo, val: string) => {\r\n dateInfo.year = +((\"\" + new Date().getFullYear()).substring(0, 2) + val);\r\n return dateInfo;\r\n },\r\n ],\r\n YYYY: [\r\n digitsCheck[\"four\"],\r\n (dateInfo: DateInfo, val: string) => {\r\n dateInfo.year = +val;\r\n return dateInfo;\r\n },\r\n ],\r\n M: [\r\n digitsCheck[\"twoOptional\"],\r\n (dateInfo: DateInfo, val: string) => {\r\n dateInfo.month = +val - 1;\r\n return dateInfo;\r\n },\r\n ],\r\n MM: [\r\n digitsCheck[\"two\"],\r\n (dateInfo: DateInfo, val: string) => {\r\n dateInfo.month = +val - 1;\r\n return dateInfo;\r\n },\r\n ],\r\n MMM: [\r\n word,\r\n (dateInfo: DateInfo, val: string) => {\r\n dateInfo.month = Lanauage.getMonthsIdx(val, \"abbr\");\r\n return dateInfo;\r\n },\r\n ],\r\n MMMM: [\r\n word,\r\n (dateInfo: DateInfo, val: string) => {\r\n dateInfo.month = Lanauage.getMonthsIdx(val, \"full\");\r\n return dateInfo;\r\n },\r\n ],\r\n D: [\r\n digitsCheck[\"twoOptional\"],\r\n (dateInfo: DateInfo, val: string) => {\r\n dateInfo.day = +val;\r\n return dateInfo;\r\n },\r\n ],\r\n DD: [\r\n digitsCheck[\"two\"],\r\n (dateInfo: DateInfo, val: string) => {\r\n dateInfo.day = +val;\r\n return dateInfo;\r\n },\r\n ],\r\n d: [\r\n digitsCheck[\"twoOptional\"],\r\n (dateInfo: DateInfo, val: string) => {\r\n dateInfo.day = +val;\r\n return dateInfo;\r\n },\r\n ],\r\n dd: [\r\n digitsCheck[\"two\"],\r\n (dateInfo: DateInfo, val: string) => {\r\n dateInfo.day = +val;\r\n return dateInfo;\r\n },\r\n ],\r\n ddd: [\r\n word,\r\n (dateInfo: DateInfo, val: string) => {\r\n return dateInfo;\r\n },\r\n ],\r\n dddd: [\r\n word,\r\n (dateInfo: DateInfo, val: string) => {\r\n return dateInfo;\r\n },\r\n ],\r\n H: [\r\n digitsCheck[\"twoOptional\"],\r\n (dateInfo: DateInfo, val: string) => {\r\n dateInfo.hour = +val;\r\n dateInfo.isH = true;\r\n return dateInfo;\r\n },\r\n ],\r\n HH: [\r\n digitsCheck[\"two\"],\r\n (dateInfo: DateInfo, val: string) => {\r\n dateInfo.hour = +val;\r\n dateInfo.isH = true;\r\n return dateInfo;\r\n },\r\n ],\r\n h: [\r\n digitsCheck[\"twoOptional\"],\r\n (dateInfo: DateInfo, val: string) => {\r\n dateInfo.hour = +val;\r\n return dateInfo;\r\n },\r\n ],\r\n hh: [\r\n digitsCheck[\"two\"],\r\n (dateInfo: DateInfo, val: string) => {\r\n dateInfo.hour = +val;\r\n return dateInfo;\r\n },\r\n ],\r\n a: [\r\n word,\r\n (dateInfo: DateInfo, val: string) => {\r\n if (Lanauage.getMessage(\"am\") != val.toLowerCase()) {\r\n dateInfo.isPm = true;\r\n }\r\n return dateInfo;\r\n },\r\n ],\r\n A: [\r\n word,\r\n (dateInfo: DateInfo, val: string) => {\r\n if (Lanauage.getMessage(\"am\") != val.toLowerCase()) {\r\n dateInfo.isPm = true;\r\n }\r\n return dateInfo;\r\n },\r\n ],\r\n m: [\r\n digitsCheck[\"twoOptional\"],\r\n (dateInfo: DateInfo, val: string) => {\r\n dateInfo.minute = +val;\r\n return dateInfo;\r\n },\r\n ],\r\n mm: [\r\n digitsCheck[\"two\"],\r\n (dateInfo: DateInfo, val: string) => {\r\n dateInfo.minute = +val;\r\n return dateInfo;\r\n },\r\n ],\r\n s: [\r\n digitsCheck[\"twoOptional\"],\r\n (dateInfo: DateInfo, val: string) => {\r\n dateInfo.second = +val;\r\n return dateInfo;\r\n },\r\n ],\r\n ss: [\r\n digitsCheck[\"two\"],\r\n (dateInfo: DateInfo, val: string) => {\r\n dateInfo.second = +val;\r\n return dateInfo;\r\n },\r\n ],\r\n SSS: [\r\n digitsCheck[\"three\"],\r\n (dateInfo: DateInfo, val: string) => {\r\n dateInfo.millisecond = +val;\r\n return dateInfo;\r\n },\r\n ],\r\n};\r\n", "import dateFormat from './format';\r\n\r\nexport default class DaraDate {\r\n\r\n private date;\r\n\r\n constructor(dt: Date) {\r\n this.date = dt;\r\n }\r\n\r\n public setYear(num: number) {\r\n this.date.setFullYear(num);\r\n return this;\r\n }\r\n\r\n public addYear(num: number) {\r\n this.date.setFullYear(this.date.getFullYear() + num);\r\n return this;\r\n }\r\n\r\n public addMonth(num: number) {\r\n this.date.setMonth(this.date.getMonth() + num);\r\n return this;\r\n }\r\n\r\n public setMonth(num: number) {\r\n this.date.setMonth(num);\r\n return this;\r\n }\r\n\r\n public setDate(num: number) {\r\n this.date.setDate(num);\r\n return this;\r\n }\r\n\r\n public addDate(num: number) {\r\n this.date.setDate(this.date.getDate() + num);\r\n return this;\r\n }\r\n\r\n public addWeek(num: number) {\r\n this.date.setDate(this.date.getDate() + (num * 7));\r\n return this;\r\n }\r\n\r\n public addHours(num: number) {\r\n this.date.setHours(this.date.getHours() + num);\r\n return this;\r\n }\r\n\r\n public setHour(num: number) {\r\n this.date.setHours(num);\r\n return this;\r\n }\r\n\r\n public addMinutes(num: number) {\r\n this.date.setMinutes(this.date.getMinutes() + num);\r\n return this;\r\n }\r\n\r\n public setMinutes(num: number) {\r\n this.date.setMinutes(num);\r\n return this;\r\n }\r\n\r\n public addSeconds(num: number) {\r\n this.date.setSeconds(this.date.getSeconds() + num);\r\n return this;\r\n }\r\n\r\n public addMilliseconds(num: number) {\r\n this.date.setMilliseconds(this.date.getMilliseconds() + num);\r\n return this;\r\n }\r\n\r\n public compare(date: Date) {\r\n\r\n if (this.date.valueOf() < date.valueOf()) {\r\n return -1;\r\n } else if (this.date.valueOf() > date.valueOf()) {\r\n return 1;\r\n }\r\n return 0;\r\n }\r\n\r\n public getYear() {\r\n return this.date.getFullYear();\r\n }\r\n\r\n public getMonth() {\r\n return this.date.getMonth() + 1;\r\n }\r\n\r\n public getDate() {\r\n return this.date.getDate();\r\n }\r\n\r\n public getDay() {\r\n return this.date.getDay();\r\n }\r\n\r\n public getTime() {\r\n return this.date.getTime();\r\n }\r\n\r\n public format(format: string): string {\r\n return dateFormat(this.date, format);\r\n }\r\n\r\n public clone() {\r\n return new DaraDate(new Date(this.date.valueOf()));\r\n }\r\n\r\n}", "import { DateTimePickerOptions } from \"@t/DateTimePickerOptions\";\r\nimport { Message } from \"@t/Message\";\r\nimport format from \"./format\";\r\nimport parser from \"./util/parser\";\r\nimport Lanauage from \"./Lanauage\";\r\nimport utils from \"./util/utils\";\r\nimport DaraDate from \"./DaraDate\";\r\nimport { DAY_STYLE_CLASS, DEFAULT_FORMAT, DateViewMode } from \"./constants\";\r\n\r\ndeclare const APP_VERSION: string;\r\n\r\nlet DEFAULT_OPTIONS: DateTimePickerOptions = {\r\n inline: false, // layer or innerhtml\r\n weekStartDay: 0,\r\n initialDate: \"\",\r\n autoClose: true,\r\n isRTL: false,\r\n mode: DateViewMode.date,\r\n enableTodayBtn: true,\r\n showMonthAfterYear: false,\r\n isPositionFixed: false,\r\n format: \"\",\r\n zIndex: 1000,\r\n minDate: \"\",\r\n maxDate: \"\",\r\n beforeDrawDate: (dt) => {\r\n return {\r\n check: false,\r\n style: \"\",\r\n tooltip: \"\",\r\n };\r\n },\r\n};\r\n\r\nfunction hiddenElement() {\r\n if (document.getElementById(\"hiddenDaraDatetimeElement\") == null) {\r\n document.querySelector(\"body\")?.insertAdjacentHTML(\"beforeend\", `<div id=\"hiddenDaraDatetimeElement\" class=\"daracl-datetime-hidden\"></div>`);\r\n }\r\n\r\n return document.getElementById(\"hiddenDaraDatetimeElement\");\r\n}\r\n\r\nlet daraDatetimeIdx = 0;\r\n\r\n/**\r\n * date timepicker\r\n *\r\n * @class DateTimePicker1\r\n * @typedef {DateTimePicker}\r\n */\r\nexport default class DateTimePicker {\r\n public static VERSION = `${APP_VERSION}`;\r\n public static format = format;\r\n public static parser = parser;\r\n\r\n private readonly options;\r\n\r\n private datetimeElement;\r\n\r\n private targetElement: HTMLElement;\r\n\r\n private currentDate: DaraDate;\r\n\r\n private dateFormat: string;\r\n\r\n private todayDate: string;\r\n\r\n private isInput: boolean = false;\r\n\r\n private isVisible = false;\r\n\r\n private _viewMode: DateViewMode;\r\n\r\n private initMode: DateViewMode;\r\n\r\n private hourInputEle: HTMLInputElement;\r\n\r\n private minuteInputEle: HTMLInputElement;\r\n\r\n private minDate: number;\r\n private maxDate: number;\r\n private minYear: number = -1;\r\n private maxYear: number = -1;\r\n private minMonth: number = -1;\r\n private maxMonth: number = -1;\r\n\r\n // \uC694\uC77C \uC21C\uC11C.\r\n private dayOrder: number[] = [0, 1, 2, 3, 4, 5, 6];\r\n\r\n constructor(selector: string | HTMLElement, options: DateTimePickerOptions, message: Message) {\r\n this.options = Object.assign({}, DEFAULT_OPTIONS, options);\r\n\r\n daraDatetimeIdx += 1;\r\n\r\n let selectorElement: HTMLElement;\r\n if (typeof selector === \"string\") {\r\n selectorElement = document.querySelector(selector) as HTMLElement;\r\n } else {\r\n selectorElement = selector;\r\n }\r\n\r\n if (!selectorElement) {\r\n throw new Error(`${selector} datetimepicker element not found`);\r\n }\r\n\r\n this._viewMode = Object.keys(DateViewMode).includes(this.options.mode) ? this.options.mode : DateViewMode.date;\r\n\r\n this.initMode = this._viewMode;\r\n\r\n Lanauage.set(message);\r\n\r\n if (this.initMode == DateViewMode.year) {\r\n this.dateFormat = this.options.format || DEFAULT_FORMAT.year;\r\n } else if (this.initMode == DateViewMode.month) {\r\n this.dateFormat = this.options.format || DEFAULT_FORMAT.month;\r\n } else if (this.initMode == DateViewMode.time) {\r\n this.dateFormat = this.options.format || DEFAULT_FORMAT.time;\r\n } else if (this.initMode == DateViewMode.datetime) {\r\n this.dateFormat = this.options.format || DEFAULT_FORMAT.datetime;\r\n } else {\r\n this.dateFormat = this.options.format || DEFAULT_FORMAT.date;\r\n }\r\n\r\n let viewDate: DaraDate;\r\n if (this.options.initialDate) {\r\n if (typeof this.options.initialDate === \"string\") {\r\n viewDate = new DaraDate(parser(this.options.initialDate, this.dateFormat) || new Date());\r\n } else {\r\n viewDate = new DaraDate(this.options.initialDate);\r\n }\r\n } else {\r\n viewDate = new DaraDate(new Date());\r\n this.options.initialDate = viewDate.format(this.dateFormat);\r\n }\r\n\r\n this.setWeekDays();\r\n\r\n this.todayDate = viewDate.format(DEFAULT_FORMAT.date);\r\n this.currentDate = viewDate;\r\n this.targetElement = selectorElement;\r\n\r\n this.minDate = this._minDate();\r\n this.maxDate = this._maxDate();\r\n\r\n if (this.options.inline) {\r\n this.datetimeElement = selectorElement;\r\n this.datetimeElement.className = `daracl-datetime-wrapper ddtp-${daraDatetimeIdx} embed`;\r\n } else {\r\n this.isInput = true;\r\n this.targetElement.setAttribute(\"value\", viewDate.format(this.dateFormat));\r\n\r\n const datetimeElement = document.createElement(\"div\");\r\n datetimeElement.className = `daracl-datetime-wrapper ddtp-${daraDatetimeIdx} layer`;\r\n datetimeElement.setAttribute(\"style\", `z-index:${this.options.zIndex};`);\r\n hiddenElement()?.appendChild(datetimeElement);\r\n\r\n this.datetimeElement = datetimeElement;\r\n\r\n this.initTargetEvent();\r\n }\r\n\r\n this.createDatetimeTemplate();\r\n\r\n if (this.isTimeMode()) {\r\n this.hourInputEle = this.datetimeElement.querySelector(\".ddtp-hour\") as HTMLInputElement;\r\n this.minuteInputEle = this.datetimeElement.querySelector(\".ddtp-minute\") as HTMLInputElement;\r\n } else {\r\n this.hourInputEle = {} as HTMLInputElement;\r\n this.minuteInputEle = {} as HTMLInputElement;\r\n }\r\n\r\n this.changeViewMode(this._viewMode);\r\n\r\n this.initHeaderEvent();\r\n\r\n this.initDateEvent();\r\n\r\n this.initTimeEvent();\r\n }\r\n setWeekDays() {\r\n let weekStartDay = this.options.weekStartDay;\r\n\r\n if (weekStartDay == 0) return;\r\n\r\n if (weekStartDay < 0 || weekStartDay > 6) {\r\n weekStartDay = 0;\r\n }\r\n\r\n for (let i = 0; i < 7; i++) {\r\n let day = weekStartDay + i;\r\n\r\n this.dayOrder[i] = day < 7 ? day : day - 7;\r\n }\r\n }\r\n\r\n public static create(selector: string | HTMLElement, options: DateTimePickerOptions, message: Message): DateTimePicker {\r\n return new DateTimePicker(selector, options, message);\r\n }\r\n\r\n /**\r\n * default date format setting\r\n * @example\r\n ```\r\n setDefaultFormat({\r\n year: \"YYYY\",\r\n month: \"YYYY-MM\",\r\n date: \"YYYY-MM-DD\",\r\n time: \"HH:mm\",\r\n datetime: \"YYYY-MM-DD HH:mm\",\r\n });\r\n ```\r\n * @public\r\n * @static\r\n * @param {*} dateFormat\r\n */\r\n public static setDefaultFormat(dateFormat: any) {\r\n Object.assign(DEFAULT_FORMAT, dateFormat);\r\n }\r\n\r\n private _minDate() {\r\n let minDate = this.options.minDate;\r\n\r\n if (minDate != \"\") {\r\n if (typeof minDate === \"string\") {\r\n const dt = parser(minDate, this.dateFormat);\r\n if (!dt) {\r\n return -1;\r\n }\r\n\r\n minDate = dt;\r\n }\r\n this.minYear = minDate.getFullYear();\r\n this.minMonth = +(this.minYear + utils.pad(minDate.getMonth(), 2));\r\n return new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate(), 0, 0).getTime();\r\n }\r\n return -1;\r\n }\r\n\r\n private _maxDate() {\r\n let maxDate = this.options.maxDate;\r\n\r\n if (maxDate != \"\") {\r\n if (typeof maxDate === \"string\") {\r\n const dt = parser(maxDate, this.dateFormat);\r\n if (!dt) {\r\n return -1;\r\n }\r\n\r\n maxDate = dt;\r\n }\r\n this.maxYear = maxDate.getFullYear();\r\n this.maxMonth = +(this.maxYear + utils.pad(maxDate.getMonth(), 2));\r\n return new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate(), 23, 59).getTime();\r\n }\r\n return -1;\r\n }\r\n\r\n public set viewMode(mode: DateViewMode) {\r\n if (this._viewMode === mode) {\r\n return;\r\n }\r\n\r\n this._viewMode = mode;\r\n\r\n this.changeViewMode(mode);\r\n }\r\n\r\n public get viewMode(): DateViewMode {\r\n return this._viewMode;\r\n }\r\n\r\n /**\r\n * \uBAA8\uB4DC change\r\n * @param mode\r\n */\r\n public changeViewMode(mode: DateViewMode) {\r\n this.datetimeElement.querySelector(\".ddtp-datetime\")?.setAttribute(\"view-mode\", mode);\r\n\r\n if (mode === \"year\") {\r\n this.yearDraw();\r\n } else if (mode === \"month\") {\r\n this.monthDraw();\r\n } else {\r\n this.dayDraw();\r\n }\r\n }\r\n\r\n /**\r\n * init header event\r\n *\r\n * @public\r\n */\r\n private initHeaderEvent() {\r\n const isRTL = this.options.isRTL;\r\n this.datetimeElement.querySelector(\".ddtp-move-btn.prev\")?.addEventListener(\"click\", (e: Event) => {\r\n this.moveDate(isRTL ? \"next\" : \"prev\", e);\r\n });\r\n\r\n this.datetimeElement.querySelector(\".ddtp-move-btn.next\")?.addEventListener(\"click\", (e: Event) => {\r\n this.moveDate(isRTL ? \"prev\" : \"next\", e);\r\n });\r\n\r\n this.datetimeElement.querySelector(\".ddtp-header-year\")?.addEventListener(\"click\", (e: Event) => {\r\n this.viewMode = DateViewMode.year;\r\n });\r\n\r\n this.datetimeElement.querySelector(\".ddtp-header-month\")?.addEventListener(\"click\", (e: Event) => {\r\n this.viewMode = DateViewMode.month;\r\n });\r\n }\r\n\r\n /**\r\n * \uB0A0\uC9DC \uB2EC\uB825 \uC774\uBCA4\uD2B8\uCC98\uB9AC.\r\n */\r\n private initDateEvent() {\r\n this.datetimeElement.querySelector(\".ddtp-day-body\")?.addEventListener(\"click\", (e: Event) => {\r\n const targetEle = e.target as Element;\r\n\r\n if (targetEle.classList.contains(\"ddtp-day\") || targetEle.closest(\".ddtp-day\")) {\r\n const selectDate = targetEle.getAttribute(\"data-day\") || \"1\";\r\n\r\n const mmDD = selectDate.split(\",\");\r\n\r\n this.currentDate.setMonth(+mmDD[0] - 1);\r\n this.currentDate.setDate(+mmDD[1]);\r\n\r\n if (this.isDayDisabled(this.currentDate)) {\r\n return;\r\n }\r\n\r\n this.datetimeElement.querySelector(\".select\")?.classList.remove(\"select\");\r\n\r\n targetEle.classList.add(\"select\");\r\n\r\n if (this.isTimeMode()) {\r\n this.currentDate.setHour(+this.hourInputEle.value);\r\n this.currentDate.setMinutes(+this.minuteInputEle.value);\r\n }\r\n\r\n this.dateChangeEvent(e);\r\n }\r\n });\r\n\r\n // today click\r\n this.datetimeElement.querySelector(\".time-today\")?.addEventListener(\"click\", (e: Event) => {\r\n const initDate = new DaraDate(parser(this.todayDate, DEFAULT_FORMAT.date) || new Date());\r\n this.currentDate.setYear(initDate.getYear());\r\n this.currentDate.setMonth(initDate.getMonth() - 1);\r\n this.currentDate.setDate(initDate.getDate());\r\n this.changeViewMode(this.initMode);\r\n });\r\n }\r\n\r\n private isTimeMode(): boolean {\r\n return this._viewMode === DateViewMode.time || this._viewMode === DateViewMode.datetime;\r\n }\r\n\r\n /**\r\n * \uC2DC\uAC04 \uBD84 \uC124\uC815 \uC774\uBCA4\uD2B8 \uCC98\uB9AC.\r\n *\r\n * @public\r\n */\r\n public initTimeEvent() {\r\n if (!this.isTimeMode()) return;\r\n\r\n let hh = this.currentDate.format(\"HH\");\r\n\r\n const hourInputEle = this.datetimeElement.querySelector(\".ddtp-hour\") as HTMLInputElement;\r\n const hourRangeEle = this.datetimeElement.querySelector(\".ddtp-hour-range\") as HTMLInputElement;\r\n hourInputEle.value = hh;\r\n hourRangeEle.value = hh;\r\n\r\n hourInputEle.addEventListener(\"input\", (e: Event) => {\r\n const targetElement = e.target as HTMLInputElement;\r\n const addVal = utils.pad(targetElement.value, 2);\r\n hourInputEle.value = addVal;\r\n hourRangeEle.value = addVal;\r\n });\r\n\r\n hourRangeEle.addEventListener(\"input\", (e: Event) => {\r\n const targetElement = e.target as HTMLInputElement;\r\n hourInputEle.value = utils.pad(targetElement.value, 2);\r\n });\r\n\r\n let mm = this.currentDate.format(\"mm\");\r\n const minuteInputEle = this.datetimeElement.querySelector(\".ddtp-minute\") as HTMLInputElement;\r\n const minuteRangeEle = this.datetimeElement.querySelector(\".ddtp-minute-range\") as HTMLInputElement;\r\n\r\n minuteInputEle.value = mm;\r\n minuteRangeEle.value = mm;\r\n\r\n minuteInputEle.addEventListener(\"input\", (e: Event) => {\r\n const targetElement = e.target as HTMLInputElement;\r\n const addVal = utils.pad(targetElement.value, 2);\r\n minuteInputEle.value = addVal;\r\n minuteRangeEle.value = addVal;\r\n });\r\n\r\n minuteRangeEle.addEventListener(\"input\", (e: Event) => {\r\n const targetElement = e.target as HTMLInputElement;\r\n minuteInputEle.value = utils.pad(targetElement.value, 2);\r\n });\r\n\r\n this.datetimeElement.querySelector(\".time-select\")?.addEventListener(\"click\", (e: Event) => {\r\n this.currentDate.setHour(+hourInputEle.value);\r\n this.currentDate.setMinutes(+minuteInputEle.value);\r\n this.dateChangeEvent(e);\r\n });\r\n }\r\n\r\n /**\r\n * \uB0A0\uC9DC \uC774\uB3D9\r\n * @param moveMode // \uC55E\uB4A4 \uC774\uB3D9 prev, next\r\n * @returns\r\n */\r\n public moveDate(moveMode: string, e: Event) {\r\n if (this._viewMode === DateViewMode.date || this._viewMode === DateViewMode.datetime) {\r\n this.currentDate.setDate(1);\r\n this.currentDate.addMonth(\"prev\" === moveMode ? -1 : 1);\r\n this.dayDraw();\r\n return;\r\n }\r\n\r\n if (this._viewMode === DateViewMode.month) {\r\n this.currentDate.setDate(1);\r\n this.currentDate.addYear(\"prev\" === moveMode ? -1 : 1);\r\n this.monthDraw();\r\n return;\r\n }\r\n\r\n if (this._viewMode === DateViewMode.year) {\r\n this.currentDate.setDate(1);\r\n this.currentDate.addYear(\"prev\" === moveMode ? -16 : 16);\r\n this.yearDraw();\r\n }\r\n }\r\n\r\n /**\r\n * get date value\r\n *\r\n * @returns\r\n */\r\n public getDateValue() {\r\n return this.currentDate.format(this.dateFormat);\r\n }\r\n\r\n /**\r\n * \uC635\uC158 \uC14B\uD305\r\n * @static\r\n * @param {DateTimePickerOptions} options\r\n */\r\n static setOptions(options: DateTimePickerOptions) {\r\n DEFAULT_OPTIONS = Object.assign({}, DEFAULT_OPTIONS, options);\r\n }\r\n\r\n /**\r\n * \uB2EC\uB825 \uBCF4\uC774\uAE30 \uCC98\uB9AC.\r\n *\r\n * @returns\r\n */\r\n private show() {\r\n if (this.isVisible) {\r\n return;\r\n }\r\n this.isVisible = true;\r\n\r\n const docSize = getDocSize();\r\n this.datetimeElement.classList.remove(\"hide\");\r\n\r\n this.datetimeElement.classList.add(\"show\");\r\n\r\n const rect = this.targetElement.getBoundingClientRect();\r\n\r\n const scrollTop = window.scrollY || document.documentElement.scrollTop;\r\n const scrollLeft = window.scrollX || document.documentElement.scrollLeft;\r\n\r\n const elementHeight = this.datetimeElement.offsetHeight;\r\n const targetElementHeight = this.targetElement.offsetHeight + 2;\r\n let left = rect.left + scrollLeft;\r\n\r\n let top = 0;\r\n\r\n if (this.options.isPositionFixed) {\r\n top = rect.top + targetElementHeight;\r\n left = rect.left;\r\n } else {\r\n if (rect.top + targetElementHeight + elementHeight > docSize.clientHeight && rect.top >= elementHeight) {\r\n top = scrollTop + rect.top - elementHeight - 2;\r\n } else {\r\n top = scrollTop + rect.top + targetElementHeight;\r\n }\r\n }\r\n\r\n this.datetimeElement.setAttribute(\"style\", `${this.options.isPositionFixed ? \"position:fixed;\" : \"\"}top:${top}px;left:${left}px;z-index:${this.options.zIndex}`);\r\n\r\n document.addEventListener(\"click\", this._documentClickEvent);\r\n }\r\n\r\n /**\r\n * \uB2EC\uB825 \uC228\uAE30\uAE30\r\n */\r\n private hide() {\r\n this.isVisible = false;\r\n\r\n if (this.options.onClose) {\r\n if (this.options.onClose() === false) {\r\n return;\r\n }\r\n }\r\n\r\n this.datetimeElement.classList.remove(\"show\");\r\n\r\n this.datetimeElement.classList.add(\"hide\");\r\n\r\n document.removeEventListener(\"click\", this._documentClickEvent);\r\n }\r\n\r\n /**\r\n * \uBC14\uD0D5 \uD074\uB9AD\uC2DC \uCE98\uB9B0\uB354 \uC228\uAE40 \uCC98\uB9AC.\r\n *\r\n * @param e\r\n */\r\n private _documentClickEvent = (e: Event) => {\r\n if (this.isVisible && e.target != this.targetElement && !utils.closestElement(e.target as HTMLElement, this.datetimeElement)) {\r\n this.hide();\r\n }\r\n };\r\n\r\n /**\r\n * \uD0C0\uCF13 \uC774\uBCA4\uD2B8 \uCC98\uB9AC.\r\n */\r\n private initTargetEvent() {\r\n if (this.targetElement) {\r\n this.targetElement.addEventListener(\"click\", (e: Event) => {\r\n this.show();\r\n });\r\n }\r\n }\r\n\r\n /**\r\n * \uB0A0\uC9DC \uBCC0\uACBD\uD6C4 \uC774\uBCA4\uD2B8\r\n */\r\n private afterChangeDatepicker() {\r\n const formatValue = this.currentDate.format(this.dateFormat);\r\n\r\n if (this.options.afterChangeDatepicker && utils.isFunction(this.options.afterChangeDatepicker)) {\r\n this.options.afterChangeDatepicker(formatValue, this.viewMode);\r\n }\r\n }\r\n\r\n /**\r\n * \uB0A0\uC9DC \uBCC0\uACBD \uC804 \uC774\uBCA4\uD2B8.\r\n * @returns void\r\n */\r\n private beforeChangeDatepicker() {\r\n const formatValue = this.currentDate.format(this.dateFormat);\r\n\r\n if (this.options.beforeChangeDatepicker && utils.isFunction(this.options.beforeChangeDatepicker)) {\r\n const reval = this.options.beforeChangeDatepicker(formatValue, (result: boolean) => {\r\n if (result === false) {\r\n return;\r\n }\r\n\r\n this.refresh(false);\r\n });\r\n\r\n if (reval === false) {\r\n return;\r\n }\r\n\r\n this.refresh(false);\r\n return;\r\n }\r\n\r\n this.refresh(false);\r\n }\r\n\r\n private dateChangeEvent(e: Event) {\r\n const formatValue = this.currentDate.format(this.dateFormat);\r\n\r\n if (this.options.onSelect) {\r\n if (this.options.onSelect(formatValue, this.viewMode, e) === false) {\r\n return;\r\n }\r\n }\r\n\r\n if (this.isInput) {\r\n this.targetElement.setAttribute(\"value\", formatValue);\r\n }\r\n\r\n if (!this.options.inline && this.options.autoClose) {\r\n this.hide();\r\n }\r\n }\r\n\r\n /**\r\n * datepicker template \uADF8\uB9AC\uAE30\r\n */\r\n private createDatetimeTemplate() {\r\n const showMonthAfterYear = this.options.showMonthAfterYear;\r\n\r\n let datetimeTemplate = `<div class=\"ddtp-datetime ${this.options.isRTL ? \"rtl\" : \"\"}\" view-mode=\"${this._viewMode}\">\r\n\t\t\t<div class=\"ddtp-header\">\r\n <span class=\"${showMonthAfterYear ? \"ddtp-header-year\" : \"ddtp-header-month\"}\"></span>\r\n <span class=\"${showMonthAfterYear ? \"ddtp-header-month\" : \"ddtp-header-year\"}\"></span>\r\n\r\n <span class=\"ddtp-date-move\"> \r\n <a href=\"javascript:;\" class=\"ddtp-move-btn prev\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\" fill=\"#000000\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z\"/></svg>\r\n </a>\r\n <a href=\"javascript:;\" class=\"ddtp-move-btn next\">\r\n <svg xmlns=\"http://www.w3.org/2000/svg\" height=\"24px\" viewBox=\"0 0 24 24\" width=\"24px\" fill=\"#000000\"><path d=\"M0 0h24v24H0z\" fill=\"none\"/><path d=\"M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z\"/></svg>\r\n </a> \r\n </span>\r\n\t\t\t</div>\r\n <div class=\"ddtp-body\">\r\n <table class=\"ddtp-days\">\r\n <thead class=\"ddtp-day-header\">\r\n <tr>\t\t\r\n <td class=\"ddtp-day-label ${DAY_STYLE_CLASS[this.dayOrder[0]]}\">${Lanauage.getWeeksMessage(this.dayOrder[0])}</td>\t\t\r\n <td class=\"ddtp-day-label ${DAY_STYLE_CLASS[this.dayOrder[1]]}\">${Lanauage.getWeeksMessage(this.dayOrder[1])}</td>\t\t\r\n <td class=\"ddtp-day-label ${DAY_STYLE_CLASS[this.dayOrder[2]]}\">${Lanauage.getWeeksMessage(this.dayOrder[2])}</td>\t\t\r\n <td class=\"ddtp-day-label ${DAY_STYLE_CLASS[this.dayOrder[3]]}\">${Lanauage.getWeeksMessage(this.dayOrder[3])}</td>\t\t\r\n <td class=\"ddtp-day-label ${DAY_STYLE_CLASS[this.dayOrder[4]]}\">${Lanauage.getWeeksMessage(this.dayOrder[4])}</td>\t\t\r\n <td class=\"ddtp-day-label ${DAY_STYLE_CLASS[this.dayOrder[5]]}\">${Lanauage.getWeeksMessage(this.dayOrder[5])}</td>\t\t\r\n <td class=\"ddtp-day-label ${DAY_STYLE_CLASS[this.dayOrder[6]]}\">${Lanauage.getWeeksMessage(this.dayOrder[6])}</td>\t\t\r\n </tr>\r\n </thead>\r\n <tbody class=\"ddtp-day-body\">\r\n </tbody>\r\n \r\n <tfoot class=\"ddtp-day-footer\">\r\n <td colspan=\"7\">\r\n <div style=\"text-align:center;margin-top: 5px;${this.options.enableTodayBtn ? \"\" : \"display:none;\"}\"><button type=\"button\" class=\"time-today\">${Lanauage.getMessage(\"today\")}</button></div>\r\n <div class=\"footer-tooltip\"></div>\r\n </td>\r\n </tfoot>\r\n </table>\r\n\r\n <div class=\"ddtp-times\">\r\n <div class=\"time-container\">\r\n <div class=\"ddtp-time\">\r\n <span>H: </span><input type=\"number\" class=\"ddtp-hour\" min=\"0\" max=\"23\">\r\n <input type=\"range\" min=\"0\" max=\"23\" class=\"ddtp-hour-range\">\r\n </div>\r\n <div class=\"ddtp-time\">\r\n <span>M: </span><input type=\"number\" class=\"ddtp-minute\" min=\"0\" max=\"59\">\r\n <input type=\"range\" min=\"0\" max=\"59\" class=\"ddtp-minute-range\">\r\n </div>\r\n </div>\r\n <div class=\"time-btn\">\r\n <button type=\"button\" class=\"time-select\">${Lanauage.getMessage(\"ok\")}</button>\r\n </div>\r\n </div>\r\n\r\n <div class=\"ddtp-months\">\r\n </div>\r\n\r\n <div class=\"ddtp-years\">\r\n </div>\r\n </div>\r\n </div>`;\r\n\r\n this.datetimeElement.innerHTML = datetimeTemplate;\r\n }\r\n\r\n public refresh(beforeChangeDatepickerCheck?: boolean) {\r\n if (this._viewMode === DateViewMode.date || this._viewMode === DateViewMode.datetime) {\r\n this.dayDraw(beforeChangeDatepickerCheck);\r\n return;\r\n }\r\n\r\n if (this._viewMode === DateViewMode.month) {\r\n this.monthDraw(beforeChangeDatepickerCheck);\r\n return;\r\n }\r\n\r\n if (this._viewMode === DateViewMode.year) {\r\n this.yearDraw(beforeChangeDatepickerCheck);\r\n }\r\n }\r\n\r\n /**\r\n * \uB144 \uB2EC\uB825 \uADF8\uB9AC\uAE30\r\n */\r\n private yearDraw(beforeChangeDatepickerCheck?: boolean) {\r\n const currentYear = this.currentDate.format(\"YYYY\");\r\n\r\n if (beforeChangeDatepickerCheck !== false && this.initMode == DateViewMode.year) {\r\n this.beforeChangeDatepicker();\r\n return;\r\n }\r\n\r\n const startYear = +currentYear - 8;\r\n\r\n (this.datetimeElement.querySelector(\".ddtp-header-year\") as Element).textContent = `${startYear} ~ ${startYear + 15}`;\r\n\r\n const beforeDrawDateFlag = utils.isFunction(this.options.beforeDrawDate);\r\n const beforeDrawDateFn = beforeDrawDateFlag ? this.options.beforeDrawDate : false;\r\n\r\n const calHTML: string[] = [];\r\n for (let i = 0; i < 16; i++) {\r\n const year = startYear + i;\r\n\r\n const disabled = this.isYearDisabled(year);\r\n\r\n let addStylceClass = disabled ? \" disabled\" : \"\";\r\n\r\n let tooltip = \"\";\r\n if (beforeDrawDateFlag && beforeDrawDateFn) {\r\n const reval = beforeDrawDateFn({ mode: this._viewMode, date: year });\r\n addStylceClass += reval.style ? \" \" + reval.style : \"\";\r\n tooltip = reval.tooltip;\r\n tooltip = tooltip ? `title=\"${tooltip}\"` : \"\";\r\n }\r\n\r\n calHTML.push(`<div class=\"ddtp-year ${addStylceClass}\" data-year=\"${year}\" ${tooltip}>${year}</div>`);\r\n }\r\n (this.datetimeElement.querySelector(\".ddtp-years\") as Element).innerHTML = calHTML.join(\"\");\r\n\r\n if (this.initMode == DateViewMode.year) {\r\n this.afterChangeDatepicker();\r\n }\r\n\r\n this.datetimeElement.querySelectorAll(\".ddtp-year\")?.forEach((yearEle) => {\r\n yearEle.addEventListener(\"click\", (e: Event) => {\r\n const targetEle = e.target as Element;\r\n\r\n if (targetEle) {\r\n const year = targetEle.getAttribute(\"data-year\");\r\n\r\n if (year) {\r\n const numYear = +year;\r\n\r\n if (this.isYearDisabled(numYear)) {\r\n return;\r\n }\r\n\r\n if (this.initMode == DateViewMode.year) {\r\n if (this.isYearDisabled(numYear)) {\r\n return;\r\n }\r\n this.currentDate.setYear(numYear);\r\n this.dateChangeEvent(e);\r\n return;\r\n }\r\n\r\n this.currentDate.setYear(numYear);\r\n this.viewMode = this.initMode;\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * \uC6D4 \uB2EC\uB825 \uADF8\uB9AC\uAE30\r\n */\r\n private monthDraw(beforeChangeDatepickerCheck?: boolean) {\r\n if (beforeChangeDatepickerCheck !== false && this.initMode == DateViewMode.month) {\r\n this.beforeChangeDatepicker();\r\n return;\r\n }\r\n\r\n const year = this.currentDate.format(\"YYYY\");\r\n (this.datetimeElement.querySelector(\".ddtp-header-year\") as Element).textContent = `${year}`;\r\n\r\n const monthElements = this.datetimeElement.querySelectorAll(\".ddtp-months > .ddtp-month\");\r\n\r\n if (monthElements.length > 0) {\r\n if (this.isYearDisabled(+year)) {\r\n monthElements.forEach((monthEle) => {\r\n if (!monthEle.classList.contains(\"disabled\")) {\r\n monthEle.classList.add(\"disabled\");\r\n }\r\n });\r\n return;\r\n }\r\n\r\n monthElements.forEach((monthEle, idx) => {\r\n if (this.isMonthDisabled(+year, idx)) {\r\n if (!monthEle.classList.contains(\"disabled\")) {\r\n monthEle.classList.add(\"disabled\");\r\n }\r\n } else {\r\n monthEle.classList.remove(\"disabled\");\r\n }\r\n });\r\n\r\n if (this.initMode == DateViewMode.month) {\r\n this.afterChangeDatepicker();\r\n }\r\n\r\n return;\r\n }\r\n\r\n (this.datetimeElement.querySelector(\".ddtp-header-month\") as Element).textContent = this.currentDate.format(\"MMMM\");\r\n\r\n const beforeDrawDateFlag = utils.isFunction(this.options.beforeDrawDate);\r\n const beforeDrawDateFn = beforeDrawDateFlag ? this.options.beforeDrawDate : false;\r\n\r\n const calHTML: string[] = [];\r\n for (let i = 0; i < 12; i++) {\r\n const disabled = this.isMonthDisabled(+year, i);\r\n\r\n let addStylceClass = disabled ? \" disabled\" : \"\";\r\n let tooltip = \"\";\r\n if (beforeDrawDateFlag && beforeDrawDateFn) {\r\n const reval = beforeDrawDateFn({ mode: this._viewMode, date: year + \"/\" + (i + 1) });\r\n addStylceClass += reval.style ? \" \" + reval.style : \"\";\r\n tooltip = reval.tooltip;\r\n tooltip = tooltip ? `title=\"${tooltip}\"` : \"\";\r\n }\r\n\r\n calHTML.push(`<div class=\"ddtp-month ${addStylceClass}\" data-month=\"${i}\" ${tooltip}>${Lanauage.getMonthsMessage(i, \"abbr\")}</div>`);\r\n }\r\n (this.datetimeElement.querySelector(\".ddtp-months\") as Element).innerHTML = calHTML.join(\"\");\r\n\r\n if (this.initMode == DateViewMode.month) {\r\n this.afterChangeDatepicker();\r\n }\r\n\r\n this.datetimeElement.querySelectorAll(\".ddtp-month\")?.forEach((monthEle) => {\r\n monthEle.addEventListener(\"click\", (e: Event) => {\r\n const targetEle = e.target as Element;\r\n\r\n if (targetEle) {\r\n const month = targetEle.getAttribute(\"data-month\");\r\n\r\n if (month) {\r\n if (this.isMonthDisabled(this.currentDate.getYear(), +month)) {\r\n return false;\r\n }\r\n\r\n if (this.initMode == DateViewMode.month) {\r\n this.currentDate.setMonth(+month);\r\n this.dateChangeEvent(e);\r\n return;\r\n }\r\n this.currentDate.setMonth(+month);\r\n this.viewMode = this.initMode;\r\n this.dayDraw();\r\n }\r\n }\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * \uB0A0\uC9DC \uADF8\uB9AC\uAE30\r\n */\r\n private dayDraw(beforeChangeDatepickerCheck?: boolean) {\r\n if (beforeChangeDatepickerCheck !== false && (this.initMode == DateViewMode.date || this.initMode == DateViewMode.datetime)) {\r\n this.beforeChangeDatepicker();\r\n return;\r\n }\r\n\r\n let monthFirstDate = this.currentDate.clone();\r\n const currentMonth = monthFirstDate.getMonth();\r\n monthFirstDate.setDate(1);\r\n\r\n (this.datetimeElement.querySelector(\".ddtp-header-year\") as Element).textContent = monthFirstDate.format(\"YYYY\");\r\n (this.datetimeElement.querySelector(\".ddtp-header-month\") as Element).textContent = monthFirstDate.format(\"MMMM\");\r\n\r\n let day = monthFirstDate.getDay();\r\n\r\n day = day - this.dayOrder[0];\r\n\r\n if (day >= 0) {\r\n monthFirstDate.addDate(-day);\r\n } else {\r\n monthFirstDate.addDate(-(7 + day));\r\n }\r\n\r\n const beforeDrawDateFlag = utils.isFunction(this.options.beforeDrawDate);\r\n const beforeDrawDateFn = beforeDrawDateFlag ? this.options.beforeDrawDate : false;\r\n\r\n const calHTML = [];\r\n for (let i = 0; i < 42; i++) {\r\n let dateItem;\r\n if (i == 0) {\r\n dateItem = monthFirstDate;\r\n } else {\r\n dateItem = monthFirstDate.clone().addDate(i);\r\n }\r\n\r\n const dateItemFormat = dateItem.format(DEFAULT_FORMAT.date);\r\n\r\n if (i % 7 == 0) {\r\n calHTML.push((i == 0 ? \"\" : \"</tr>\") + \"<tr>\");\r\n }\r\n\r\n let disabled = this.isDayDisabled(dateItem);\r\n\r\n let addStylceClass = DAY_STYLE_CLASS[this.dayOrder[i % 7]];\r\n const dateItemMonth = dateItem.getMonth();\r\n\r\n if (dateItemMonth != currentMonth) {\r\n if (dateItemMonth < currentMonth) {\r\n addStylceClass += dateItemMonth == 1 ? \" new\" : \" old\";\r\n } else {\r\n addStylceClass += currentMonth == 1 && dateItemMonth == 12 ? \" old\" : \" new\";\r\n }\r\n }\r\n\r\n addStylceClass += this.todayDate == dateItemFormat ? \" today\" : \"\";\r\n addStylceClass += disabled ? \" disabled\" : \"\";\r\n\r\n let tooltip = \"\";\r\n if (beforeDrawDateFlag && beforeDrawDateFn) {\r\n const reval = beforeDrawDateFn({ mode: this._viewMode, item: dateItem, date: dateItem.format(this.dateFormat) });\r\n addStylceClass += reval.style ? \" \" + reval.style : \"\";\r\n\r\n addStylceClass += reval.check ? \" event\" : \"\";\r\n tooltip = reval.tooltip;\r\n tooltip = tooltip ? `title=\"${tooltip}\"` : \"\";\r\n }\r\n\r\n calHTML.push(`<td class=\"ddtp-day ${addStylceClass}\" data-day=\"${dateItem.format(\"M,D\")}\" ${tooltip}>`);\r\n calHTML.push(`<span>${dateItem.format(\"d\")}</span>`);\r\n calHTML.push(\"</td>\");\r\n }\r\n\r\n calHTML.push(\"</tr>\");\r\n\r\n (this.datetimeElement.querySelector(\".ddtp-day-body\") as Element).innerHTML = calHTML.join(\"\");\r\n\r\n if (this.initMode == DateViewMode.date || this.initMode == DateViewMode.datetime) {\r\n this.afterChangeDatepicker();\r\n }\r\n }\r\n\r\n private isDayDisabled(dateItem: DaraDate) {\r\n if ((this.minDate != -1 && this.minDate > dateItem.getTime()) || (this.maxDate != -1 && this.maxDate < dateItem.getTime())) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private isYearDisabled(year: number) {\r\n if ((this.minYear != -1 && this.minYear > year) || (this.maxYear != -1 && this.maxYear < year)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private isMonthDisabled(year: number, month: number) {\r\n if (this.isYearDisabled(year)) {\r\n return true;\r\n }\r\n\r\n let yearMonth = +(year + utils.pad(month, 2));\r\n\r\n if ((this.minMonth != -1 && this.minMonth > yearMonth) || (this.maxMonth != -1 && this.maxMonth < yearMonth)) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n public static setMessage(message: Message) {\r\n Lanauage.setDefaultMessage(message);\r\n }\r\n}\r\n\r\nfunction getDocSize() {\r\n return {\r\n clientHeight: Math.max(document.documentElement.clientHeight, window.innerHeight || 0),\r\n clientWidth: Math.max(document.documentElement.clientWidth, window.innerWidth || 0),\r\n };\r\n}\r\n", "@charset \"UTF-8\";\n.daracl-datetime-hidden {\n visibility: visible;\n width: 0px;\n height: 0px;\n z-index: 1000;\n}\n\n.daracl-datetime-wrapper {\n --color: #34495e;\n --light: #ffffff;\n --success: #0abf30;\n --error: #e24d4c;\n --warning: #e9bd0c;\n --info: #3498db;\n --background-color: #ffffff;\n --sunday: #f00d0d;\n --border-color: #d3d2d2;\n --select-background-color: #0abf30;\n --button-hover-color: #d4d4d48a;\n --disabled-background-color: #f1f1f18a;\n --today-bg: #a9d5ff;\n}\n\nbody.dark .daracl-datetime-wrapper,\n.daracl-datetime-wrapper.dark {\n --color: #d0d6e1;\n --light: #ffffff;\n --success: #0abf30;\n --error: #e24d4c;\n --warning: #e9bd0c;\n --info: #3498db;\n --background-color: #070d19;\n --sunday: #f00d0d;\n --border-color: #6e7380;\n --today-bg: #5660d9;\n --today-color: #5660d9;\n --select-background-color: #ffffff;\n --button-hover-color: #31316c;\n --disabled-background-color: #818181;\n}\n\n.daracl-datetime-wrapper {\n z-index: 1000;\n display: none;\n}\n.daracl-datetime-wrapper *,\n.daracl-datetime-wrapper *::before,\n.daracl-datetime-wrapper *::after {\n box-sizing: content-box;\n color: var(--color);\n}\n.daracl-datetime-wrapper.layer {\n position: absolute;\n}\n.daracl-datetime-wrapper input {\n background-color: transparent;\n}\n.daracl-datetime-wrapper.show {\n display: block;\n animation: fadeIn 0.5s;\n animation-fill-mode: forwards;\n}\n.daracl-datetime-wrapper.hide {\n animation: fadeOut 0.5s;\n animation-fill-mode: forwards;\n}\n.daracl-datetime-wrapper.embed {\n display: block;\n}\n.daracl-datetime-wrapper .sun > span {\n color: var(--sunday);\n}\n.daracl-datetime-wrapper .ddtp-datetime {\n border-radius: 4px;\n padding: 10px;\n width: 235px;\n background-color: var(--background-color);\n color: var(--color);\n box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12);\n}\n.daracl-datetime-wrapper .ddtp-datetime.rtl {\n direction: rtl;\n}\n.daracl-datetime-wrapper .ddtp-datetime.rtl .ddtp-header .ddtp-header-year,\n.daracl-datetime-wrapper .ddtp-datetime.rtl .ddtp-header .ddtp-header-month {\n float: right;\n}\n.daracl-datetime-wrapper .ddtp-datetime.rtl .ddtp-header .ddtp-date-move {\n float: left;\n}\n.daracl-datetime-wrapper .ddtp-datetime.rtl .ddtp-body .ddtp-times .time-container {\n display: block;\n}\n.daracl-datetime-wrapper .ddtp-datetime.rtl .ddtp-body .ddtp-times > .time-btn {\n left: 0px;\n right: auto;\n}\n.daracl-datetime-wrapper .ddtp-datetime[view-mode=date] .ddtp-body > .ddtp-days {\n display: block;\n}\n.daracl-datetime-wrapper .ddtp-datetime[view-mode=datetime] .ddtp-body > .ddtp-times,\n.daracl-datetime-wrapper .ddtp-datetime[view-mode=datetime] .ddtp-body > .ddtp-days {\n display: block;\n}\n.daracl-datetime-wrapper .ddtp-datetime[view-mode=time] .ddtp-body > .ddtp-times {\n display: block;\n}\n.daracl-datetime-wrapper .ddtp-datetime[view-mode=time] .ddtp-header {\n display: none;\n}\n.daracl-datetime-wrapper .ddtp-datetime[view-mode=year] .ddtp-body > .ddtp-years {\n display: flex;\n}\n.daracl-datetime-wrapper .ddtp-datetime[view-mode=year] .ddtp-header-month {\n display: none;\n}\n.daracl-datetime-wrapper .ddtp-datetime[view-mode=month] .ddtp-body > .ddtp-months {\n display: flex;\n}\n.daracl-datetime-wrapper .ddtp-datetime[view-mode=month] .ddtp-header-month {\n display: none;\n}\n.daracl-datetime-wrapper .ddtp-header {\n padding: 2px 5px 10px;\n line-height: 25px;\n height: 25px;\n vertical-align: middle;\n}\n.daracl-datetime-wrapper .ddtp-header .ddtp-header-year {\n font-weight: bold;\n margin: 0px 10px 0px 0px;\n cursor: pointer;\n}\n.daracl-datetime-wrapper .ddtp-header .ddtp-header-month {\n font-weight: bold;\n margin: 0px 10px 0px 0px;\n vertical-align: top;\n cursor: pointer;\n}\n.daracl-datetime-wrapper .ddtp-header .ddtp-date-move {\n margin-left: auto;\n vertical-align: top;\n float: right;\n direction: ltr;\n}\n.daracl-datetime-wrapper .ddtp-header .ddtp-date-move .ddtp-move-btn {\n text-decoration: none;\n font-weight: bold;\n display: inline-block;\n height: 24px;\n}\n.daracl-datetime-wrapper .ddtp-header .ddtp-date-move .ddtp-move-btn > svg {\n fill: var(--color);\n}\n.daracl-datetime-wrapper .ddtp-header .ddtp-date-move .ddtp-move-btn:hover {\n background-color: var(--button-hover-color);\n}\n.daracl-datetime-wrapper .ddtp-header .ddtp-date-move::after {\n content: \"\";\n clear: both;\n}\n.daracl-datetime-wrapper .ddtp-body {\n margin: -2px -10px;\n font-size: 13px;\n}\n.daracl-datetime-wrapper .ddtp-body > * {\n display: none;\n}\n.daracl-datetime-wrapper .ddtp-body button {\n display: block;\n width: 100%;\n margin-bottom: 7px;\n padding: 3px 0px;\n border-radius: 4px;\n border-color: var(--border-color);\n border-width: 1px;\n border-style: solid;\n background-color: var(--background-color);\n}\n.daracl-datetime-wrapper .ddtp-body button:hover {\n background-color: var(--button-hover-color);\n}\n.daracl-datetime-wrapper .ddtp-body .time-today:hover {\n background-color: var(--button-hover-color);\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-days {\n letter-spacing: 0px;\n border-collapse: separate;\n border-spacing: 0px;\n margin: 2px 10px;\n width: inherit;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-days .ddtp-day-label {\n font-weight: bold;\n width: 35px;\n padding: 2px 5px;\n text-align: center;\n line-height: initial;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-days .ddtp-day {\n position: relative;\n text-align: center;\n padding: 7px;\n cursor: pointer;\n line-height: initial;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-days .ddtp-day.event::after {\n content: \"\u2022\";\n color: #f78536;\n font-size: 1.4em;\n position: absolute;\n left: 2px;\n z-index: 10;\n top: -7px;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-days .ddtp-day:before {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n display: block;\n width: 30px;\n height: 30px;\n background-color: var(--select-background-color);\n border-radius: 50%;\n opacity: 0;\n z-index: 0;\n transition: opacity 0.2s ease-in;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-days .ddtp-day:active:before, .daracl-datetime-wrapper .ddtp-body .ddtp-days .ddtp-day:hover:before {\n opacity: 0.7;\n transition: opacity 0.2s ease-out;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-days .ddtp-day.today > span {\n z-index: 2;\n position: relative;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-days .ddtp-day.today:before {\n background-color: var(--today-bg);\n z-index: 1;\n opacity: 1;\n transition: opacity 0.2s ease-out;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-days .ddtp-day.select:before {\n background-color: var(--select-background-color);\n opacity: 0.5;\n transition: opacity 0.2s ease-out;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-days .ddtp-day.old, .daracl-datetime-wrapper .ddtp-body .ddtp-days .ddtp-day.new {\n opacity: 0.5;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-days .ddtp-day.disabled {\n background-color: var(--disabled-background-color);\n opacity: 0.5;\n cursor: auto;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-days .ddtp-day.disabled:before {\n background-color: transparent;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-times {\n margin: 2px 15px;\n position: relative;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-times > .time-container {\n width: calc(100% - 60px);\n display: inline-block;\n height: 60px;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-times input[type=number] {\n -moz-appearance: textfield;\n appearance: textfield;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-times input[type=number]::-webkit-inner-spin-button, .daracl-datetime-wrapper .ddtp-body .ddtp-times input[type=number]::-webkit-outer-spin-button {\n -webkit-appearance: none;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-times > .time-btn {\n position: absolute;\n top: 9px;\n width: 55px;\n right: 0px;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-times > .time-btn > .time-select {\n height: 40px;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-times .ddtp-time {\n display: table-row;\n width: 160px;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-times .ddtp-time > * {\n margin-top: 5px;\n display: table-cell;\n line-height: 20px;\n vertical-align: middle;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-times .ddtp-time > span {\n width: 20px;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-times .ddtp-time > input[type=number] {\n width: 45px;\n margin-right: 5px;\n padding-left: 0px;\n border-radius: 4px;\n border-color: var(--border-color);\n border-width: 1px;\n text-align: center;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-times .ddtp-time > input[type=range] {\n width: calc(100% - 60px);\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-months {\n flex-direction: row;\n flex-wrap: wrap;\n justify-content: space-between;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-months > .ddtp-month {\n position: relative;\n flex: 1 0 30%;\n margin-bottom: 8px;\n line-height: 50px;\n text-align: center;\n cursor: pointer;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-months > .ddtp-month:before {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n display: block;\n width: 50px;\n height: 50px;\n background-color: var(--select-background-color);\n border-radius: 50%;\n opacity: 0;\n z-index: 0;\n transition: opacity 0.2s ease-in;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-months > .ddtp-month:active:before, .daracl-datetime-wrapper .ddtp-body .ddtp-months > .ddtp-month:hover:before {\n opacity: 0.5;\n transition: opacity 0.2s ease-out;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-months > .ddtp-month.disabled {\n background-color: var(--disabled-background-color);\n opacity: 0.5;\n cursor: auto;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-months > .ddtp-month.disabled:before {\n background-color: transparent;\n}\n.daracl-datetime-wrapper .ddtp-years {\n flex-direction: row;\n flex-wrap: wrap;\n justify-content: space-between;\n}\n.daracl-datetime-wrapper .ddtp-years > .ddtp-year {\n position: relative;\n flex: 1 0 25%;\n margin-bottom: 8px;\n line-height: 50px;\n text-align: center;\n cursor: pointer;\n}\n.daracl-datetime-wrapper .ddtp-years > .ddtp-year:before {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n display: block;\n width: 50px;\n height: 50px;\n background-color: var(--select-background-color);\n border-radius: 50%;\n opacity: 0;\n z-index: 0;\n transition: opacity 0.2s ease-in;\n}\n.daracl-datetime-wrapper .ddtp-years > .ddtp-year:active:before, .daracl-datetime-wrapper .ddtp-years > .ddtp-year:hover:before {\n opacity: 0.5;\n transition: opacity 0.2s ease-out;\n}\n.daracl-datetime-wrapper .ddtp-years > .ddtp-year.disabled {\n background-color: var(--disabled-background-color);\n opacity: 0.5;\n cursor: auto;\n}\n.daracl-datetime-wrapper .ddtp-years > .ddtp-year.disabled:before {\n background-color: transparent;\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes fadeOut {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VSb290IjoiRDpcXDAzLm9wZW5zb3VyY2VzXFxkYXJhLWRhdGV0aW1lcGlja2VyXFxzdHlsZSIsInNvdXJjZXMiOlsiZGFyYWNsLmRhdGV0aW1lcGlja2VyLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUdGO0FBQUE7RUFFRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7O0FBRUE7QUFBQTtBQUFBO0VBR0U7RUFDQTs7QUFHRjtFQUNFOztBQUdGO0VBQ0U7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBOztBQUlGO0VBQ0U7O0FBSUE7RUFDRTs7QUFJSjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFOztBQUdFO0FBQUE7RUFFRTs7QUFHRjtFQUNFOztBQUtGO0VBQ0U7O0FBRUY7RUFDRTtFQUNBOztBQUtOO0VBQ0U7O0FBSUE7QUFBQTtFQUVFOztBQUtGO0VBQ0U7O0FBR0Y7RUFDRTs7QUFLRjtFQUNFOztBQUdGO0VBQ0U7O0FBS0Y7RUFDRTs7QUFHRjtFQUNFOztBQUtOO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTtFQUNBO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTs7QUFHRjtFQUNFOztBQUlKO0VBQ0U7RUFDQTs7QUFLTjtFQUNFO0VBQ0E7O0FBRUE7RUFDRTs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFOztBQUtGO0VBQ0U7O0FBSUo7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUdGO0VBRUU7RUFDQTs7QUFJQTtFQUNFO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTs7QUFJSjtFQUNFO0VBQ0E7RUFDQTs7QUFHRjtFQUVFOztBQUdGO0VBQ0U7RUFDQTtFQUNBOztBQUVBO0VBQ0U7O0FBTVI7RUFDRTtFQUNBOztBQUVBO0VBQ0U7RUFDQTtFQUNBOztBQUdGO0VBQ0U7RUFDQTs7QUFFQTtFQUVFOztBQUlKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7O0FBQ0E7RUFDRTs7QUFJSjtFQUNFO0VBQ0E7O0FBRUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTs7QUFHRjtFQUNFOztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBR0Y7RUFDRTs7QUFLTjtFQUNFO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUdGO0VBRUU7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7RUFDQTs7QUFFQTtFQUNFOztBQU9WO0VBQ0U7RUFDQTtFQUNBOztBQUVBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBR0Y7RUFFRTtFQUNBOztBQUdGO0VBQ0U7RUFDQTtFQUNBOztBQUVBO0VBQ0U7OztBQU9WO0VBQ0U7SUFDRTs7RUFHRjtJQUNFOzs7QUFJSjtFQUNFO0lBQ0U7O0VBR0Y7SUFDRSIsInNvdXJjZXNDb250ZW50IjpbIi5kYXJhY2wtZGF0ZXRpbWUtaGlkZGVuIHtcclxuICB2aXNpYmlsaXR5OiB2aXNpYmxlO1xyXG4gIHdpZHRoOiAwcHg7XHJcbiAgaGVpZ2h0OiAwcHg7XHJcbiAgei1pbmRleDogMTAwMDtcclxufVxyXG5cclxuLmRhcmFjbC1kYXRldGltZS13cmFwcGVyIHtcclxuICAtLWNvbG9yOiAjMzQ0OTVlO1xyXG4gIC0tbGlnaHQ6ICNmZmZmZmY7XHJcbiAgLS1zdWNjZXNzOiAjMGFiZjMwO1xyXG4gIC0tZXJyb3I6ICNlMjRkNGM7XHJcbiAgLS13YXJuaW5nOiAjZTliZDBjO1xyXG4gIC0taW5mbzogIzM0OThkYjtcclxuICAtLWJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XHJcbiAgLS1zdW5kYXk6ICNmMDBkMGQ7XHJcbiAgLS1ib3JkZXItY29sb3I6ICNkM2QyZDI7XHJcbiAgLS1zZWxlY3QtYmFja2dyb3VuZC1jb2xvcjogIzBhYmYzMDtcclxuICAtLWJ1dHRvbi1ob3Zlci1jb2xvcjogI2Q0ZDRkNDhhO1xyXG4gIC0tZGlzYWJsZWQtYmFja2dyb3VuZC1jb2xvcjogI2YxZjFmMThhO1xyXG4gIC0tdG9kYXktYmc6ICNhOWQ1ZmY7XHJcbn1cclxuXHJcbmJvZHkuZGFyayAuZGFyYWNsLWRhdGV0aW1lLXdyYXBwZXIsXHJcbi5kYXJhY2wtZGF0ZXRpbWUtd3JhcHBlci5kYXJrIHtcclxuICAtLWNvbG9yOiAjZDBkNmUxO1xyXG4gIC0tbGlnaHQ6ICNmZmZmZmY7XHJcbiAgLS1zdWNjZXNzOiAjMGFiZjMwO1xyXG4gIC0tZXJyb3I6ICNlMjRkNGM7XHJcbiAgLS13YXJuaW5nOiAjZTliZDBjO1xyXG4gIC0taW5mbzogIzM0OThkYjtcclxuICAtLWJhY2tncm91bmQtY29sb3I6ICMwNzBkMTk7XHJcbiAgLS1zdW5kYXk6ICNmMDBkMGQ7XHJcbiAgLS1ib3JkZXItY29sb3I6ICM2ZTczODA7XHJcbiAgLS10b2RheS1iZzogIzU2NjBkOTtcclxuICAtLXRvZGF5LWNvbG9yOiAjNTY2MGQ5O1xyXG4gIC0tc2VsZWN0LWJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XHJcbiAgLS1idXR0b24taG92ZXItY29sb3I6ICMzMTMxNmM7XHJcbiAgLS1kaXNhYmxlZC1iYWNrZ3JvdW5kLWNvbG9yOiAjODE4MTgxO1xyXG59XHJcblxyXG4uZGFyYWNsLWRhdGV0aW1lLXdyYXBwZXIge1xyXG4gIHotaW5kZXg6IDEwMDA7XHJcbiAgZGlzcGxheTogbm9uZTtcclxuXHJcbiAgKixcclxuICAqOjpiZWZvcmUsXHJcbiAgKjo6YWZ0ZXIge1xyXG4gICAgYm94LXNpemluZzogY29udGVudC1ib3g7XHJcbiAgICBjb2xvcjogdmFyKC0tY29sb3IpO1xyXG4gIH1cclxuXHJcbiAgJi5sYXllciB7XHJcbiAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgfVxyXG5cclxuICBpbnB1dCB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuICB9XHJcblxyXG4gICYuc2hvdyB7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIGFuaW1hdGlvbjogZmFkZUluIDAuNXM7XHJcbiAgICBhbmltYXRpb24tZmlsbC1tb2RlOiBmb3J3YXJkcztcclxuICB9XHJcblxyXG4gICYuaGlkZSB7XHJcbiAgICBhbmltYXRpb246IGZhZGVPdXQgMC41cztcclxuICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzO1xyXG4gICAgLy9hbmltYXRpb246IGRhcmFUb2FzdEhpZGUgMC4zcyBlYXNlIGZvcndhcmRzO1xyXG4gIH1cclxuXHJcbiAgJi5lbWJlZCB7XHJcbiAgICBkaXNwbGF5OiBibG9jaztcclxuICB9XHJcblxyXG4gIC5zdW4ge1xyXG4gICAgJiA+IHNwYW4ge1xyXG4gICAgICBjb2xvcjogdmFyKC0tc3VuZGF5KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5kZHRwLWRhdGV0aW1lIHtcclxuICAgIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICAgIHBhZGRpbmc6IDEwcHg7XHJcbiAgICB3aWR0aDogMjM1cHg7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1iYWNrZ3JvdW5kLWNvbG9yKTtcclxuICAgIGNvbG9yOiB2YXIoLS1jb2xvcik7XHJcbiAgICBib3gtc2hhZG93OiAwcHggNXB4IDVweCAtM3B4IHJnYmEoMCwgMCwgMCwgMC4yKSwgMHB4IDhweCAxMHB4IDFweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggM3B4IDE0cHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xMik7XHJcblxyXG4gICAgJi5ydGwge1xyXG4gICAgICBkaXJlY3Rpb246IHJ0bDtcclxuXHJcbiAgICAgIC5kZHRwLWhlYWRlciB7XHJcbiAgICAgICAgLmRkdHAtaGVhZGVyLXllYXIsXHJcbiAgICAgICAgLmRkdHAtaGVhZGVyLW1vbnRoIHtcclxuICAgICAgICAgIGZsb2F0OiByaWdodDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5kZHRwLWRhdGUtbW92ZSB7XHJcbiAgICAgICAgICBmbG9hdDogbGVmdDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5kZHRwLWJvZHkgLmRkdHAtdGltZXMge1xyXG4gICAgICAgIC50aW1lLWNvbnRhaW5lciB7XHJcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICB9XHJcbiAgICAgICAgJiA+IC50aW1lLWJ0biB7XHJcbiAgICAgICAgICBsZWZ0OiAwcHg7XHJcbiAgICAgICAgICByaWdodDogYXV0bztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAmW3ZpZXctbW9kZT1cImRhdGVcIl0gLmRkdHAtYm9keSA+IC5kZHRwLWRheXMge1xyXG4gICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIH1cclxuXHJcbiAgICAmW3ZpZXctbW9kZT1cImRhdGV0aW1lXCJdIHtcclxuICAgICAgLmRkdHAtYm9keSA+IC5kZHRwLXRpbWVzLFxyXG4gICAgICAuZGR0cC1ib2R5ID4gLmRkdHAtZGF5cyB7XHJcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAmW3ZpZXctbW9kZT1cInRpbWVcIl0ge1xyXG4gICAgICAuZGR0cC1ib2R5ID4gLmRkdHAtdGltZXMge1xyXG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAuZGR0cC1oZWFkZXIge1xyXG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAmW3ZpZXctbW9kZT1cInllYXJcIl0ge1xyXG4gICAgICAuZGR0cC1ib2R5ID4gLmRkdHAteWVhcnMge1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5kZHRwLWhlYWRlci1tb250aCB7XHJcbiAgICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICZbdmlldy1tb2RlPVwibW9udGhcIl0ge1xyXG4gICAgICAuZGR0cC1ib2R5ID4gLmRkdHAtbW9udGhzIHtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAuZGR0cC1oZWFkZXItbW9udGgge1xyXG4gICAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5kZHRwLWhlYWRlciB7XHJcbiAgICBwYWRkaW5nOiAycHggNXB4IDEwcHg7XHJcbiAgICBsaW5lLWhlaWdodDogMjVweDtcclxuICAgIGhlaWdodDogMjVweDtcclxuICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcblxyXG4gICAgLmRkdHAtaGVhZGVyLXllYXIge1xyXG4gICAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgICAgbWFyZ2luOiAwcHggMTBweCAwcHggMHB4O1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICB9XHJcblxyXG4gICAgLmRkdHAtaGVhZGVyLW1vbnRoIHtcclxuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgIG1hcmdpbjogMHB4IDEwcHggMHB4IDBweDtcclxuICAgICAgdmVydGljYWwtYWxpZ246IHRvcDtcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgfVxyXG5cclxuICAgIC5kZHRwLWRhdGUtbW92ZSB7XHJcbiAgICAgIG1hcmdpbi1sZWZ0OiBhdXRvO1xyXG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xyXG4gICAgICBmbG9hdDogcmlnaHQ7XHJcbiAgICAgIGRpcmVjdGlvbjogbHRyO1xyXG5cclxuICAgICAgLmRkdHAtbW92ZS1idG4ge1xyXG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuICAgICAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgICAgaGVpZ2h0OiAyNHB4O1xyXG5cclxuICAgICAgICA+IHN2ZyB7XHJcbiAgICAgICAgICBmaWxsOiB2YXIoLS1jb2xvcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmOmhvdmVyIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ob3Zlci1jb2xvcik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICAmOjphZnRlciB7XHJcbiAgICAgICAgY29udGVudDogXCJcIjtcclxuICAgICAgICBjbGVhcjogYm90aDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmRkdHAtYm9keSB7XHJcbiAgICBtYXJnaW46IC0ycHggLTEwcHg7XHJcbiAgICBmb250LXNpemU6IDEzcHg7XHJcblxyXG4gICAgPiAqIHtcclxuICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgIH1cclxuXHJcbiAgICBidXR0b24ge1xyXG4gICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDdweDtcclxuICAgICAgcGFkZGluZzogM3B4IDBweDtcclxuICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gICAgICBib3JkZXItY29sb3I6IHZhcigtLWJvcmRlci1jb2xvcik7XHJcbiAgICAgIGJvcmRlci13aWR0aDogMXB4O1xyXG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1iYWNrZ3JvdW5kLWNvbG9yKTtcclxuXHJcbiAgICAgICY6aG92ZXIge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ob3Zlci1jb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAudGltZS10b2RheSB7XHJcbiAgICAgICY6aG92ZXIge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJ1dHRvbi1ob3Zlci1jb2xvcik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuZGR0cC1kYXlzIHtcclxuICAgICAgbGV0dGVyLXNwYWNpbmc6IDBweDtcclxuICAgICAgYm9yZGVyLWNvbGxhcHNlOiBzZXBhcmF0ZTtcclxuICAgICAgYm9yZGVyLXNwYWNpbmc6IDBweDtcclxuICAgICAgbWFyZ2luOiAycHggMTBweDtcclxuICAgICAgd2lkdGg6IGluaGVyaXQ7XHJcblxyXG4gICAgICAuZGR0cC1kYXktbGFiZWwge1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgICAgIHdpZHRoOiAzNXB4O1xyXG4gICAgICAgIHBhZGRpbmc6IDJweCA1cHg7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICAgIGxpbmUtaGVpZ2h0OiBpbml0aWFsO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAuZGR0cC1kYXkge1xyXG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgICAgcGFkZGluZzogN3B4O1xyXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgICAgICBsaW5lLWhlaWdodDogaW5pdGlhbDtcclxuXHJcbiAgICAgICAgJi5ldmVudDo6YWZ0ZXIge1xyXG4gICAgICAgICAgY29udGVudDogXCLigKJcIjtcclxuICAgICAgICAgIGNvbG9yOiAjZjc4NTM2O1xyXG4gICAgICAgICAgZm9udC1zaXplOiAxLjRlbTtcclxuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICAgIGxlZnQ6IDJweDtcclxuICAgICAgICAgIHotaW5kZXg6IDEwO1xyXG4gICAgICAgICAgdG9wOiAtN3B4O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJjpiZWZvcmUge1xyXG4gICAgICAgICAgY29udGVudDogXCJcIjtcclxuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICAgIHRvcDogNTAlO1xyXG4gICAgICAgICAgbGVmdDogNTAlO1xyXG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XHJcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICAgIHdpZHRoOiAzMHB4O1xyXG4gICAgICAgICAgaGVpZ2h0OiAzMHB4O1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2VsZWN0LWJhY2tncm91bmQtY29sb3IpO1xyXG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gICAgICAgICAgb3BhY2l0eTogMDtcclxuICAgICAgICAgIHotaW5kZXg6IDA7XHJcbiAgICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgZWFzZS1pbjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICY6YWN0aXZlOmJlZm9yZSxcclxuICAgICAgICAmOmhvdmVyOmJlZm9yZSB7XHJcbiAgICAgICAgICBvcGFjaXR5OiAwLjc7XHJcbiAgICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgZWFzZS1vdXQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmLnRvZGF5IHtcclxuICAgICAgICAgID4gc3BhbiB7XHJcbiAgICAgICAgICAgIHotaW5kZXg6IDI7XHJcbiAgICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAmOmJlZm9yZSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRvZGF5LWJnKTtcclxuICAgICAgICAgICAgei1pbmRleDogMTtcclxuICAgICAgICAgICAgb3BhY2l0eTogMTtcclxuICAgICAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGVhc2Utb3V0O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi5zZWxlY3Q6YmVmb3JlIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXNlbGVjdC1iYWNrZ3JvdW5kLWNvbG9yKTtcclxuICAgICAgICAgIG9wYWNpdHk6IDAuNTtcclxuICAgICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycyBlYXNlLW91dDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYub2xkLFxyXG4gICAgICAgICYubmV3IHtcclxuICAgICAgICAgIG9wYWNpdHk6IDAuNTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYuZGlzYWJsZWQge1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZGlzYWJsZWQtYmFja2dyb3VuZC1jb2xvcik7XHJcbiAgICAgICAgICBvcGFjaXR5OiAwLjU7XHJcbiAgICAgICAgICBjdXJzb3I6IGF1dG87XHJcblxyXG4gICAgICAgICAgJjpiZWZvcmUge1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAuZGR0cC10aW1lcyB7XHJcbiAgICAgIG1hcmdpbjogMnB4IDE1cHg7XHJcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHJcbiAgICAgID4gLnRpbWUtY29udGFpbmVyIHtcclxuICAgICAgICB3aWR0aDogY2FsYygxMDAlIC0gNjBweCk7XHJcbiAgICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICAgIGhlaWdodDogNjBweDtcclxuICAgICAgfVxyXG5cclxuICAgICAgaW5wdXRbdHlwZT1cIm51bWJlclwiXSB7XHJcbiAgICAgICAgLW1vei1hcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7XHJcbiAgICAgICAgYXBwZWFyYW5jZTogdGV4dGZpZWxkO1xyXG5cclxuICAgICAgICAmOjotd2Via2l0LWlubmVyLXNwaW4tYnV0dG9uLFxyXG4gICAgICAgICY6Oi13ZWJraXQtb3V0ZXItc3Bpbi1idXR0b24ge1xyXG4gICAgICAgICAgLXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgPiAudGltZS1idG4ge1xyXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICB0b3A6IDlweDtcclxuICAgICAgICB3aWR0aDogNTVweDtcclxuICAgICAgICByaWdodDogMHB4O1xyXG4gICAgICAgID4gLnRpbWUtc2VsZWN0IHtcclxuICAgICAgICAgIGhlaWdodDogNDBweDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5kZHRwLXRpbWUge1xyXG4gICAgICAgIGRpc3BsYXk6IHRhYmxlLXJvdztcclxuICAgICAgICB3aWR0aDogMTYwcHg7XHJcblxyXG4gICAgICAgID4gKiB7XHJcbiAgICAgICAgICBtYXJnaW4tdG9wOiA1cHg7XHJcbiAgICAgICAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xyXG4gICAgICAgICAgbGluZS1oZWlnaHQ6IDIwcHg7XHJcbiAgICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgPiBzcGFuIHtcclxuICAgICAgICAgIHdpZHRoOiAyMHB4O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgPiBpbnB1dFt0eXBlPVwibnVtYmVyXCJdIHtcclxuICAgICAgICAgIHdpZHRoOiA0NXB4O1xyXG4gICAgICAgICAgbWFyZ2luLXJpZ2h0OiA1cHg7XHJcbiAgICAgICAgICBwYWRkaW5nLWxlZnQ6IDBweDtcclxuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICAgICAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tYm9yZGVyLWNvbG9yKTtcclxuICAgICAgICAgIGJvcmRlci13aWR0aDogMXB4O1xyXG4gICAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgPiBpbnB1dFt0eXBlPVwicmFuZ2VcIl0ge1xyXG4gICAgICAgICAgd2lkdGg6IGNhbGMoMTAwJSAtIDYwcHgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5kZHRwLW1vbnRocyB7XHJcbiAgICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XHJcbiAgICAgIGZsZXgtd3JhcDogd3JhcDtcclxuICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG5cclxuICAgICAgPiAuZGR0cC1tb250aCB7XHJcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgIGZsZXg6IDEgMCAzMCU7XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogOHB4O1xyXG4gICAgICAgIGxpbmUtaGVpZ2h0OiA1MHB4O1xyXG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcblxyXG4gICAgICAgICY6YmVmb3JlIHtcclxuICAgICAgICAgIGNvbnRlbnQ6IFwiXCI7XHJcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgICB0b3A6IDUwJTtcclxuICAgICAgICAgIGxlZnQ6IDUwJTtcclxuICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xyXG4gICAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgICB3aWR0aDogNTBweDtcclxuICAgICAgICAgIGhlaWdodDogNTBweDtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXNlbGVjdC1iYWNrZ3JvdW5kLWNvbG9yKTtcclxuICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuICAgICAgICAgIG9wYWNpdHk6IDA7XHJcbiAgICAgICAgICB6LWluZGV4OiAwO1xyXG4gICAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGVhc2UtaW47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmOmFjdGl2ZTpiZWZvcmUsXHJcbiAgICAgICAgJjpob3ZlcjpiZWZvcmUge1xyXG4gICAgICAgICAgb3BhY2l0eTogMC41O1xyXG4gICAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGVhc2Utb3V0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi5kaXNhYmxlZCB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1kaXNhYmxlZC1iYWNrZ3JvdW5kLWNvbG9yKTtcclxuICAgICAgICAgIG9wYWNpdHk6IDAuNTtcclxuICAgICAgICAgIGN1cnNvcjogYXV0bztcclxuXHJcbiAgICAgICAgICAmOmJlZm9yZSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmRkdHAteWVhcnMge1xyXG4gICAgZmxleC1kaXJlY3Rpb246IHJvdztcclxuICAgIGZsZXgtd3JhcDogd3JhcDtcclxuICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuXHJcbiAgICA+IC5kZHRwLXllYXIge1xyXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgIGZsZXg6IDEgMCAyNSU7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDhweDtcclxuICAgICAgbGluZS1oZWlnaHQ6IDUwcHg7XHJcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG5cclxuICAgICAgJjpiZWZvcmUge1xyXG4gICAgICAgIGNvbnRlbnQ6IFwiXCI7XHJcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgIHRvcDogNTAlO1xyXG4gICAgICAgIGxlZnQ6IDUwJTtcclxuICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcclxuICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICB3aWR0aDogNTBweDtcclxuICAgICAgICBoZWlnaHQ6IDUwcHg7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2VsZWN0LWJhY2tncm91bmQtY29sb3IpO1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDUwJTtcclxuICAgICAgICBvcGFjaXR5OiAwO1xyXG4gICAgICAgIHotaW5kZXg6IDA7XHJcbiAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGVhc2UtaW47XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICY6YWN0aXZlOmJlZm9yZSxcclxuICAgICAgJjpob3ZlcjpiZWZvcmUge1xyXG4gICAgICAgIG9wYWNpdHk6IDAuNTtcclxuICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgZWFzZS1vdXQ7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICYuZGlzYWJsZWQge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWRpc2FibGVkLWJhY2tncm91bmQtY29sb3IpO1xyXG4gICAgICAgIG9wYWNpdHk6IDAuNTtcclxuICAgICAgICBjdXJzb3I6IGF1dG87XHJcblxyXG4gICAgICAgICY6YmVmb3JlIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuQGtleWZyYW1lcyBmYWRlSW4ge1xyXG4gIGZyb20ge1xyXG4gICAgb3BhY2l0eTogMDtcclxuICB9XHJcblxyXG4gIHRvIHtcclxuICAgIG9wYWNpdHk6IDE7XHJcbiAgfVxyXG59XHJcblxyXG5Aa2V5ZnJhbWVzIGZhZGVPdXQge1xyXG4gIGZyb20ge1xyXG4gICAgb3BhY2l0eTogMTtcclxuICB9XHJcblxyXG4gIHRvIHtcclxuICAgIG9wYWNpdHk6IDA7XHJcbiAgfVxyXG59XHJcbiJdfQ== */", "import DaraDateTimePicker from \"./DateTimePicker\";\r\n\r\nimport \"../style/daracl.datetimepicker.scss\";\r\n\r\nexport = DaraDateTimePicker;\r\n", "import { FormField } from \"@t/FormField\";\r\nimport Render from \"./Render\";\r\nimport { stringValidator } from \"src/rule/stringValidator\";\r\nimport { resetRowElementStyleClass, invalidMessage } from \"src/util/validUtils\";\r\nimport DaraForm from \"src/DaraForm\";\r\nimport DateTimePicker from \"@daracl/datetimepicker\";\r\n\r\nimport * as utils from \"src/util/utils\";\r\n\r\nexport default class DateRender extends Render {\r\n private element: HTMLInputElement;\r\n private dateObj: any;\r\n\r\n constructor(field: FormField, rowElement: HTMLElement, daraForm: DaraForm) {\r\n super(daraForm, field, rowElement);\r\n\r\n this.mounted();\r\n this.setDefaultOption();\r\n this.setDefaultInfo();\r\n }\r\n\r\n mounted() {\r\n let dateOnSelectEvent: any;\r\n this.field.customOptions = Object.assign({}, this.field.customOptions);\r\n if (typeof this.field.customOptions.onSelect !== \"undefined\") {\r\n dateOnSelectEvent = typeof this.field.customOptions.onSelect;\r\n }\r\n\r\n if (utils.isUndefined(this.field.customOptions.mode)) {\r\n if (this.field.renderType == \"datemonth\" || this.field.renderType == \"datehour\") {\r\n this.field.customOptions.mode = this.field.renderType.replace(\"date\", \"\");\r\n } else {\r\n this.field.customOptions.mode = this.field.renderType;\r\n }\r\n }\r\n\r\n this.field.customOptions.onSelect = (dt: any, e: Event) => {\r\n if (dateOnSelectEvent) {\r\n dateOnSelectEvent(dt, e);\r\n }\r\n\r\n this.setValue(dt);\r\n\r\n this.valid();\r\n };\r\n\r\n this.dateObj = new DateTimePicker(this.element, this.field.customOptions, {} as any);\r\n\r\n //this.loadDate();\r\n }\r\n // async loadDate() {\r\n // const DateTimePicker = await import(/*webpackChunkName:\"./dara.datetimepicker\"*/ \"@daracl/datetimepicker\");\r\n // this.dateObj = new DateTimePicker.default(this.element, this.field.customOptions, {} as any);\r\n // }\r\n\r\n createField() {\r\n const field = this.field;\r\n\r\n const fieldContainerElement = this.rowElement.querySelector(\".df-field-container\") as HTMLElement;\r\n\r\n fieldContainerElement.innerHTML = `\r\n <div class=\"df-field\">\r\n <input type=\"text\" name=\"${field.$xssName}\" class=\"form-field text help-icon\" autocomplete=\"off\" readonly/>\r\n </div>\r\n ${Render.getDescriptionTemplate(field)}\r\n <div class=\"help-message\"></div>\r\n `;\r\n\r\n this.element = fieldContainerElement.querySelector(`[name=\"${field.$xssName}\"]`) as HTMLInputElement;\r\n }\r\n\r\n getValue() {\r\n return this.element.value;\r\n }\r\n\r\n setValue(value: any, changeCheckFlag?: boolean): void {\r\n if (changeCheckFlag !== false && this.changeEventCall(this.field, null, this, value) === false) {\r\n this.element.value = this.field.$value;\r\n return;\r\n }\r\n\r\n this.field.$value = value;\r\n this.element.value = value;\r\n }\r\n\r\n reset() {\r\n this.setDefaultInfo();\r\n this.setDisabled(false);\r\n resetRowElementStyleClass(this.rowElement);\r\n }\r\n\r\n getElement(): HTMLInputElement {\r\n return this.element;\r\n }\r\n\r\n valid(): any {\r\n const validResult = stringValidator(this.getValue(), this.field);\r\n\r\n invalidMessage(this.field, this.rowElement, validResult);\r\n\r\n return validResult;\r\n }\r\n}\r\n", "import { FieldStyle, FormField } from \"@t/FormField\";\r\nimport * as utils from \"./utils\";\r\nimport { FIELD_POSITION_STYLE, ALIGN } from \"src/constants\";\r\nimport { FormOptions } from \"@t/FormOptions\";\r\n\r\nexport default {\r\n /**\r\n * field style \uCC98\uB9AC\r\n *\r\n * @param formOptions FormOptions\r\n * @param field FormField\r\n * @param beforeField FormField\r\n * @returns FieldStyle\r\n */\r\n fieldStyle(formOptions: FormOptions, field: FormField, beforeField?: FormField | null, isLabelHide?: boolean): FieldStyle {\r\n const fieldStyle = {\r\n rowStyleClass: field.orientation === \"horizontal\" ? \"horizontal\" : \"vertical\",\r\n fieldClass: \"\",\r\n fieldStyle: \"\",\r\n labelClass: \"\",\r\n labelStyle: \"\",\r\n labelAlignClass: \"\",\r\n valueClass: \"\",\r\n valueStyle: \"\",\r\n tabAlignClass: \"\",\r\n };\r\n\r\n const defaultLabelWidth = beforeField?.style?.labelWidth ?? formOptions.style.labelWidth ?? \"3\";\r\n let defaultValueWidth = beforeField?.style?.valueWidth ?? formOptions.style.valueWidth ?? \"9\";\r\n const position = beforeField?.style?.position ?? formOptions.style.position;\r\n\r\n const width = field.style?.width;\r\n const positionArr = FIELD_POSITION_STYLE[field.style?.position] ?? FIELD_POSITION_STYLE[position] ?? FIELD_POSITION_STYLE.top;\r\n\r\n fieldStyle.fieldClass = `${positionArr[0]} ${field.style?.customClass || \"\"}`;\r\n if (width) {\r\n if (utils.isNumber(width)) {\r\n fieldStyle.fieldClass += utils.isNumber(width) ? ` col-xs-${width}` : \"\";\r\n } else {\r\n fieldStyle.fieldStyle = utils.isNumber(width) ? \"\" : `width:${width};`;\r\n }\r\n }\r\n\r\n fieldStyle.tabAlignClass = \"tab-al-\" + ([\"right\", \"center\"].includes(field.style?.tabAlign) ? field.style.tabAlign : \"left\");\r\n\r\n const labelWidth = field.style?.labelWidth || defaultLabelWidth;\r\n fieldStyle.labelAlignClass = positionArr[1];\r\n\r\n if (!isLabelHide && labelWidth && ![\"top\", \"bottom\"].includes(positionArr[0])) {\r\n if (utils.isNumber(labelWidth)) {\r\n const labelWidthValue = +labelWidth;\r\n defaultValueWidth = 12 - labelWidthValue;\r\n fieldStyle.labelClass = `col-xs-${labelWidthValue}`;\r\n fieldStyle.valueClass = fieldStyle.labelStyle ? \"col-full\" : `col-xs-${defaultValueWidth}`;\r\n } else {\r\n fieldStyle.labelStyle = `width:${labelWidth};`;\r\n }\r\n }\r\n\r\n const valueWidth = field.style?.valueWidth || defaultValueWidth;\r\n if (isLabelHide && ![\"left\", \"right\"].includes(positionArr[0])) {\r\n fieldStyle.valueClass = \"col-full\";\r\n } else {\r\n if (valueWidth && ![\"top\", \"bottom\"].includes(positionArr[0])) {\r\n if (utils.isNumber(valueWidth)) {\r\n fieldStyle.valueClass = fieldStyle.labelStyle ? \"col-full\" : `col-xs-${valueWidth}`;\r\n } else {\r\n fieldStyle.valueStyle = `width:${valueWidth};`;\r\n }\r\n } else {\r\n fieldStyle.valueClass = fieldStyle.labelStyle ? \"col-full\" : \"\";\r\n }\r\n }\r\n\r\n fieldStyle.fieldClass = spaceReplace(fieldStyle.fieldClass);\r\n fieldStyle.labelClass = spaceReplace(fieldStyle.labelClass);\r\n fieldStyle.valueClass = spaceReplace(fieldStyle.valueClass);\r\n\r\n return fieldStyle;\r\n },\r\n};\r\n\r\nfunction spaceReplace(str: string): string {\r\n return str.replace(/\\s+/g, \" \").trim();\r\n}\r\n", "import { FieldStyle, FormField } from \"@t/FormField\";\r\nimport Render from \"./Render\";\r\nimport { invalidMessage } from \"src/util/validUtils\";\r\nimport { stringValidator } from \"src/rule/stringValidator\";\r\nimport DaraForm from \"src/DaraForm\";\r\nimport FormTemplate from \"src/FormTemplate\";\r\nimport styleUtils from \"src/util/styleUtils\";\r\nimport { FormOptions } from \"@t/FormOptions\";\r\nimport * as utils from \"src/util/utils\";\r\n\r\nexport default class TabRender extends Render {\r\n private customFunction;\r\n private tabContainerElement: HTMLElement;\r\n constructor(field: FormField, rowElement: HTMLElement, daraForm: DaraForm) {\r\n super(daraForm, field, rowElement);\r\n\r\n if (field.renderer) {\r\n this.customFunction = field.renderer;\r\n } else {\r\n this.customFunction = {} as any;\r\n }\r\n\r\n this.mounted();\r\n }\r\n\r\n mounted() {\r\n if (this.customFunction.mounted) {\r\n (this.customFunction.mounted as any).call(this, this.field, this.rowElement);\r\n }\r\n\r\n this.tabContainerElement.querySelectorAll(\".tab-item\").forEach((tabItem) => {\r\n tabItem.addEventListener(\"click\", (e: any) => {\r\n this.clickEventHandler(tabItem, e);\r\n });\r\n });\r\n }\r\n\r\n /**\r\n * tab item click\r\n *\r\n * @param {Element} tabItem\r\n * @param {*} evt\r\n */\r\n private clickEventHandler(tabItem: Element, evt: any) {\r\n this.setActive(tabItem.getAttribute(\"data-tab-id\") ?? \"\");\r\n }\r\n\r\n public setActive(tabId: string): void {\r\n const tabItem = this.tabContainerElement.querySelector(`[data-tab-id=\"${tabId}\"]`);\r\n\r\n if (!tabItem) return;\r\n\r\n if (!tabItem.classList.contains(\"active\")) {\r\n for (let item of tabItem?.parentElement?.children ?? []) {\r\n item.classList.remove(\"active\");\r\n }\r\n tabItem.classList.add(\"active\");\r\n }\r\n\r\n const tabPanel = this.rowElement.querySelector(`[tab-panel-id=\"${tabId}\"]`);\r\n\r\n if (!tabPanel?.classList.contains(\"active\")) {\r\n for (let item of tabPanel?.parentElement?.children ?? []) {\r\n item.classList.remove(\"active\");\r\n }\r\n\r\n tabPanel?.classList.add(\"active\");\r\n }\r\n }\r\n\r\n static isDataRender(): boolean {\r\n return false;\r\n }\r\n\r\n static isChildrenCreate(): boolean {\r\n return false;\r\n }\r\n\r\n /**\r\n * tab template\r\n *\r\n * @param {FormField} field\r\n * @param {FormTemplate} formTemplate\r\n * @param {FormOptions} options\r\n * @returns {string} template string\r\n */\r\n\r\n createField() {\r\n const field = this.field;\r\n\r\n const formTemplate = this.daraForm.formTemplate;\r\n const options = this.daraForm.getOptions();\r\n\r\n const fieldContainerElement = this.rowElement.querySelector(\".df-field-container\") as HTMLElement;\r\n\r\n //tab \uC774\uBCA4\uD2B8 \uCC98\uB9AC \uD560\uAC83.\r\n let fieldStyle = styleUtils.fieldStyle(options, field);\r\n\r\n fieldContainerElement.innerHTML = `\r\n <div class=\"df-field \">\r\n <div class=\"tab-header ${fieldStyle.tabAlignClass}\"></div>\r\n </div>\r\n <div class=\"df-tab-body\"></div>\r\n `;\r\n\r\n if (field.children) {\r\n let firstFlag = true;\r\n\r\n const formOptions = this.getForm().getOptions();\r\n\r\n let fieldStyle: FieldStyle = styleUtils.fieldStyle(formOptions, field, null, formTemplate.isLabelHide(field));\r\n\r\n for (const childField of field.children) {\r\n childField.$parent = field;\r\n formTemplate.addRowFieldInfo(childField);\r\n let id = childField.$key;\r\n\r\n let tabTemplate = `<span class=\"tab-item ${firstFlag ? \"active\" : \"\"}\" data-tab-id=\"${id}\"><a href=\"javascript:;\">${childField.label}</a></span>`;\r\n\r\n let tabBodyTemplate = `<div class=\"tab-panel ${firstFlag ? \"active\" : \"\"}\" tab-panel-id=\"${id}\">${Render.getDescriptionTemplate(childField)}\r\n <div class=\"tab-group\"></div>\r\n </div>`;\r\n\r\n const tabElement = utils.templateToElement(tabTemplate);\r\n const tabBodyElement = utils.templateToElement(tabBodyTemplate);\r\n\r\n firstFlag = false;\r\n if (tabElement) {\r\n fieldContainerElement.querySelector(\".tab-header\")?.appendChild(tabElement);\r\n }\r\n\r\n if (tabBodyElement) {\r\n fieldContainerElement.querySelector(\".df-tab-body\")?.appendChild(tabBodyElement);\r\n\r\n if (childField.children) {\r\n let tabFormOptions = {\r\n style: {\r\n width: formOptions.style.width ?? \"100%\",\r\n labelWidth: formOptions.style.labelWidth ?? 3,\r\n valueWidth: formOptions.style.valueWidth ?? 9,\r\n position: formOptions.style.position ?? \"left-right\",\r\n },\r\n useTypeValue: formOptions.useTypeValue,\r\n autoCreate: false,\r\n notValidMessage: \"This form is not valid.\",\r\n fields: [],\r\n } as FormOptions;\r\n\r\n childField.$tabForm = new DaraForm(document.createElement(\"div\"), tabFormOptions);\r\n\r\n childField.$instance = new (childField.$renderType as any)(childField, tabBodyElement?.querySelector(\".tab-group\"), childField.$tabForm);\r\n\r\n childField.$tabForm.formTemplate.childTemplate(childField, fieldStyle);\r\n }\r\n }\r\n }\r\n\r\n this.tabContainerElement = fieldContainerElement;\r\n }\r\n }\r\n\r\n getValue(): any {\r\n if (this.customFunction.getValue) {\r\n return (this.customFunction.getValue as any).call(this, this.field, this.rowElement);\r\n }\r\n\r\n let allTabValue = {} as any;\r\n\r\n let useTypeValue = this.getForm().getOptions().useTypeValue;\r\n\r\n for (const childField of this.field.children) {\r\n const childFieldValue = childField.$tabForm?.getValue(false);\r\n if (useTypeValue) {\r\n allTabValue[childField.$validName] = childFieldValue;\r\n } else {\r\n for (let [key, value] of Object.entries(childFieldValue)) {\r\n allTabValue[key] = value;\r\n }\r\n }\r\n }\r\n return allTabValue;\r\n }\r\n\r\n setValue(value: any): void {\r\n for (const childField of this.field.children) {\r\n let tabChildValue = value[childField.$validName];\r\n\r\n if (tabChildValue) {\r\n childField.$tabForm?.setValue(tabChildValue);\r\n }\r\n }\r\n }\r\n\r\n reset() {}\r\n\r\n getElement(): Element {\r\n return this.rowElement;\r\n }\r\n\r\n valid(): any {\r\n if (this.customFunction.valid) {\r\n const validResult = (this.customFunction.valid as any).call(this, this.field, this.rowElement);\r\n\r\n invalidMessage(this.field, this.rowElement, validResult);\r\n\r\n return;\r\n }\r\n\r\n const field = this.field;\r\n\r\n for (const childField of field.children) {\r\n const validResult = childField.$tabForm?.validForm();\r\n\r\n if (validResult && validResult.length > 0) {\r\n const firstItem = validResult[0];\r\n\r\n if (firstItem.message) {\r\n firstItem.message = \"[\" + this.field.label + \"] \" + firstItem.message;\r\n\r\n return firstItem;\r\n }\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n focus(): void {}\r\n}\r\n", "import { FieldStyle, FormField } from \"@t/FormField\";\r\nimport Render from \"./Render\";\r\nimport { invalidMessage, resetRowElementStyleClass } from \"src/util/validUtils\";\r\nimport DaraForm from \"src/DaraForm\";\r\nimport * as utils from \"src/util/utils\";\r\nimport { stringValidator } from \"src/rule/stringValidator\";\r\nimport styleUtils from \"src/util/styleUtils\";\r\nimport FormTemplate from \"src/FormTemplate\";\r\nimport { FormOptions } from \"@t/FormOptions\";\r\nimport { NumberKeyMap } from \"@t/DataMap\";\r\n\r\nlet $$idx = 0;\r\n\r\nexport default class GridRender extends Render {\r\n private customFunction;\r\n private gridForm;\r\n private allAddRowInfo = {} as NumberKeyMap;\r\n\r\n constructor(field: FormField, rowElement: HTMLElement, daraForm: DaraForm) {\r\n super(daraForm, field, rowElement);\r\n\r\n if (field.renderer) {\r\n this.customFunction = field.renderer;\r\n } else {\r\n this.customFunction = {} as any;\r\n }\r\n\r\n const gridFormOptions = {\r\n style: {\r\n width: \"100%\",\r\n labelWidth: 3,\r\n valueWidth: 9,\r\n position: \"left-right\",\r\n },\r\n autoCreate: false,\r\n notValidMessage: \"This form is not valid.\",\r\n fields: [],\r\n } as FormOptions;\r\n\r\n this.gridForm = new DaraForm(document.createElement(\"div\"), gridFormOptions);\r\n\r\n this.mounted();\r\n this.setDefaultOption();\r\n this.setDefaultInfo();\r\n }\r\n\r\n mounted() {\r\n this.addRow();\r\n\r\n if (this.customFunction.mounted) {\r\n (this.customFunction.mounted as any).call(this, this.field, this.rowElement);\r\n }\r\n\r\n this.rowElement.querySelector(\".df-grid-add-row-btn\")?.addEventListener(\"click\", (evt) => {\r\n this.addRow();\r\n });\r\n }\r\n\r\n static isDataRender(): boolean {\r\n return false;\r\n }\r\n\r\n static isChildrenCreate(): boolean {\r\n return false;\r\n }\r\n\r\n createField() {\r\n const field = this.field;\r\n\r\n const fieldContainerElement = this.rowElement.querySelector(\".df-field-container\") as HTMLElement;\r\n\r\n let theadTemplate = [];\r\n let colgroupTemplate = [];\r\n let addBtnTemplate = [];\r\n addBtnTemplate.push(\"\");\r\n\r\n if (field.children) {\r\n colgroupTemplate.push(\"<colgroup>\");\r\n\r\n theadTemplate.push(\"<tr>\");\r\n\r\n colgroupTemplate.push(`<col style=\"width:38px\">`);\r\n theadTemplate.push(\"<th>\");\r\n if (field.gridOptions?.disableAddButton !== true) {\r\n theadTemplate.push(`<button type=\"button\" class=\"df-btn df-grid-add-row-btn\" title=\"Add\"><i class=\"df-icon df-add-icon\"></i></button>`);\r\n }\r\n theadTemplate.push(\"</th>\");\r\n\r\n for (const childField of field.children) {\r\n colgroupTemplate.push(`<col style=\"width:${childField.style?.width ?? \"*\"}\">`);\r\n theadTemplate.push(`<th class=\"df-grid-header\">${childField.label}</th>`);\r\n }\r\n colgroupTemplate.push(\"</colgroup>\");\r\n theadTemplate.push(\"</tr>\");\r\n }\r\n\r\n fieldContainerElement.innerHTML = `\r\n <div class=\"df-grid-field\">\r\n ${addBtnTemplate.join(\"\")}\r\n <div class=\"df-grid-container ${field.style?.position ?? \"\"}\" style=\"height:${field.gridOptions?.height ?? \"auto\"};\">\r\n <table class=\"df-grid\">${colgroupTemplate.join(\"\")}<thead>${theadTemplate.join(\"\")}</thead><tbody></tbody></table>\r\n </div>\r\n </div>\r\n `;\r\n }\r\n\r\n /**\r\n * add row\r\n */\r\n addRow(valueItem?: any): void {\r\n let rowTemplate = [];\r\n\r\n const options = this.daraForm.getOptions();\r\n const formTemplate = this.gridForm.formTemplate;\r\n const parentName = this.field.$xssName;\r\n\r\n ++$$idx;\r\n let addColumns = [];\r\n rowTemplate.push(`<tr class=\"grid-row\">`);\r\n\r\n rowTemplate.push(\"<td>\");\r\n if (this.field.gridOptions?.disableRemoveButton !== true) {\r\n rowTemplate.push(`<button type=\"button\" data-row-idx=\"${$$idx}\" class=\"df-btn df-grid-row-remove\"><i class=\"df-icon df-remove-icon\"></i></button>`);\r\n }\r\n rowTemplate.push(\"</td>\");\r\n\r\n for (const childField of this.field.children) {\r\n let fieldStyle: FieldStyle = styleUtils.fieldStyle(options, childField, null, true);\r\n\r\n let columnField = utils.merge({}, childField) as FormField;\r\n\r\n addColumns.push(columnField);\r\n columnField.$orgin = childField;\r\n columnField.name = columnField.name + \"_\" + $$idx;\r\n columnField.$xssName = parentName + \"_\" + utils.getXssFieldName(columnField);\r\n\r\n formTemplate.addRowFieldInfo(columnField);\r\n\r\n rowTemplate.push(`<td id=\"${columnField.$xssName}\"><div class=\"df-field-container ${columnField.required ? \"required\" : \"\"} \" style=\"${fieldStyle.valueStyle}\"></div></td>`);\r\n }\r\n rowTemplate.push(\"</tr>\");\r\n\r\n this.allAddRowInfo[$$idx] = addColumns;\r\n\r\n const addRowElement = utils.templateToElement(rowTemplate.join(\"\"));\r\n\r\n if (addRowElement) {\r\n this.rowElement.querySelector(\"tbody\")?.append(addRowElement);\r\n\r\n addRowElement.querySelector(\".df-grid-row-remove\")?.addEventListener(\"click\", (evt) => {\r\n this.removeRow(evt);\r\n });\r\n }\r\n\r\n valueItem = valueItem ?? {};\r\n for (let columnField of addColumns) {\r\n columnField.$instance = new (columnField.$renderType as any)(columnField, addRowElement?.querySelector(`#${columnField.$xssName}`), this.gridForm);\r\n\r\n if (valueItem[columnField.$orgin.name]) {\r\n columnField.$instance.setValue(valueItem[columnField.$orgin.name]);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * remove row\r\n *\r\n * @param evt event\r\n */\r\n removeRow(evt: Event): void {\r\n const target = evt.target as Element;\r\n\r\n const rowElement = target.closest(\"tr\");\r\n\r\n if (rowElement) {\r\n if (rowElement.parentElement?.childElementCount == 1) return;\r\n\r\n let rowIdx = (evt.currentTarget as Element)?.getAttribute(\"data-row-idx\") || \"-1\";\r\n\r\n this.removeFieldInfo(rowIdx);\r\n rowElement.remove();\r\n }\r\n }\r\n\r\n /**\r\n *\r\n * @param rowIdx row index\r\n */\r\n removeFieldInfo(rowIdx?: string) {\r\n let removeFieldArrs = [] as any;\r\n if (utils.isEmpty(rowIdx)) {\r\n for (let key in this.allAddRowInfo) {\r\n removeFieldArrs = removeFieldArrs.concat(this.allAddRowInfo[key]);\r\n }\r\n this.allAddRowInfo = {} as NumberKeyMap;\r\n } else if (rowIdx) {\r\n const rowIdxNum = parseInt(rowIdx, 10);\r\n removeFieldArrs = removeFieldArrs.concat(this.allAddRowInfo[rowIdxNum]);\r\n delete this.allAddRowInfo[rowIdxNum];\r\n }\r\n\r\n for (let columnField of removeFieldArrs) {\r\n this.gridForm.getFieldInfoMap().removeFieldInfo(columnField.name);\r\n }\r\n }\r\n\r\n allRemoveRow(): void {\r\n this.rowElement.querySelector(\"tbody\")?.replaceChildren();\r\n this.removeFieldInfo();\r\n }\r\n\r\n getValue() {\r\n if (this.customFunction.getValue) {\r\n return (this.customFunction.getValue as any).call(this, this.field, this.rowElement);\r\n }\r\n let result = [];\r\n const children = this.field.children;\r\n const childrenLength = children.length;\r\n for (let idx in this.allAddRowInfo) {\r\n const rowColumns = this.allAddRowInfo[idx];\r\n\r\n let rowInfo = {} as any;\r\n for (let childIdx = 0; childIdx < childrenLength; childIdx++) {\r\n let childField = children[childIdx];\r\n rowInfo[childField.name] = this.gridForm.getFieldValue(rowColumns[childIdx].name); // rowColumns[childIdx].$instance.getValue();\r\n }\r\n\r\n result.push(rowInfo);\r\n }\r\n return result;\r\n }\r\n\r\n setValue(value: any): void {\r\n this.field.$value = value;\r\n\r\n let valueArr: any[] = [];\r\n if (Array.isArray(value)) {\r\n valueArr = value;\r\n } else {\r\n if (utils.isPlainObject(value)) {\r\n valueArr.push(value);\r\n }\r\n }\r\n\r\n this.allRemoveRow();\r\n\r\n for (let valueItem of valueArr) {\r\n this.addRow(valueItem);\r\n }\r\n }\r\n\r\n reset() {\r\n this.setDefaultInfo();\r\n resetRowElementStyleClass(this.rowElement);\r\n }\r\n\r\n getElement() {\r\n if (this.customFunction.getElement) {\r\n return (this.customFunction.getElement as any).call(this, this.field, this.rowElement);\r\n }\r\n return null;\r\n }\r\n\r\n valid(): any {\r\n if (this.customFunction.valid) {\r\n const validResult = (this.customFunction.valid as any).call(this, this.field, this.rowElement);\r\n\r\n invalidMessage(this.field, this.rowElement, validResult);\r\n\r\n return;\r\n }\r\n\r\n const validResult = this.gridForm.validForm();\r\n\r\n if (validResult.length > 0) {\r\n const firstItem = validResult[0];\r\n\r\n if (firstItem.message) {\r\n firstItem.message = \"[\" + this.field.label + \"] \" + firstItem.message;\r\n\r\n return firstItem;\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n focus(): void {}\r\n}\r\n", "import NumberRender from \"src/renderer/NumberRender\";\r\nimport TextAreaRender from \"src/renderer/TextAreaRender\";\r\nimport DropdownRender from \"src/renderer/DropdownRender\";\r\nimport TextRender from \"src/renderer/TextRender\";\r\nimport CheckboxRender from \"src/renderer/CheckboxRender\";\r\nimport RadioRender from \"src/renderer/RadioRender\";\r\nimport PasswordRender from \"src/renderer/PasswordRender\";\r\nimport FileRender from \"src/renderer/FileRender\";\r\nimport CustomRender from \"./renderer/CustomRender\";\r\nimport GroupRender from \"./renderer/GroupRender\";\r\nimport HiddenRender from \"./renderer/HiddenRender\";\r\nimport ButtonRender from \"./renderer/ButtonRender\";\r\nimport RangeRender from \"./renderer/RangeRender\";\r\nimport DateRender from \"./renderer/DateRender\";\r\nimport TabRender from \"./renderer/TabRender\";\r\nimport GridRender from \"./renderer/GridRender\";\r\n\r\nexport type FORM_MODE = \"new\" | \"modify\" | \"view\";\r\n\r\nexport const RULES = {\r\n NAN: \"nan\",\r\n MIN: \"minimum\",\r\n EXCLUSIVE_MIN: \"exclusiveMinimum\",\r\n MAX: \"maximum\",\r\n EXCLUSIVE_MAX: \"exclusiveMaximum\",\r\n MIN_LENGTH: \"minLength\",\r\n MAX_LENGTH: \"maxLength\",\r\n BETWEEN: \"between\",\r\n BETWEEN_EXCLUSIVE_MIN: \"betweenExclusiveMin\",\r\n BETWEEN_EXCLUSIVE_MAX: \"betweenExclusiveMax\",\r\n BETWEEN_EXCLUSIVE_MINMAX: \"betweenExclusiveMinMax\",\r\n REGEXP: \"regexp\",\r\n REQUIRED: \"required\",\r\n VALIDATOR: \"validator\",\r\n} as const;\r\n\r\nexport const FIELD_PREFIX = \"dff\"; // daracl form field\r\n\r\nexport const RENDER_TEMPLATE: any = {\r\n number: NumberRender,\r\n textarea: TextAreaRender,\r\n dropdown: DropdownRender,\r\n checkbox: CheckboxRender,\r\n radio: RadioRender,\r\n text: TextRender,\r\n password: PasswordRender,\r\n file: FileRender,\r\n custom: CustomRender,\r\n group: GroupRender,\r\n hidden: HiddenRender,\r\n button: ButtonRender,\r\n range: RangeRender,\r\n datehour: DateRender,\r\n datemonth: DateRender,\r\n date: DateRender,\r\n datetime: DateRender,\r\n tab: TabRender,\r\n grid: GridRender,\r\n};\r\n\r\nexport const ALIGN = {\r\n left: \"left\",\r\n center: \"center\",\r\n right: \"right\",\r\n} as const;\r\n\r\nexport type TEXT_ALIGN_TYPE = (typeof ALIGN)[keyof typeof ALIGN];\r\n\r\nexport type RENDER_TYPE = \"number\" | \"text\" | \"file\" | \"textarea\" | \"dropdown\" | \"radio\" | \"checkbox\" | \"date\" | \"datetime\" | \"dateyear\" | \"datemonth\" | \"datehour\" | \"group\" | \"custom\";\r\n\r\nexport type REGEXP_TYPE = \"email\" | \"url\" | \"alpha\" | \"alpha-num\";\r\n\r\nexport type PASSWORD_TYPE = \"number\" | \"upper\" | \"upper-special\" | \"upper-special-number\"; // \uC22B\uC790 | \uB300\uBB38\uC790 \uD3EC\uD568, \uB300\uBB38\uC790 \uD2B9\uC218\uBB38\uC790 \uD3EC\uD568, \uB300\uBB38\uC790 \uD2B9\uC218\uBB38\uC790 \uC22B\uC790\r\n\r\nexport type FIELD_POSITION = \"top\" | \"left\" | \"left-left\" | \"left-right\" | \"right\" | \"right-left\" | \"right-right\" | \"bottom\";\r\n\r\nexport type ORIENTATION_TYPE = \"horizontal\" | \"vertical\";\r\n\r\ninterface StringArrayMap {\r\n [key: string]: string[];\r\n}\r\n\r\nexport const FIELD_POSITION_STYLE: StringArrayMap = {\r\n \"top-left\": [\"top\", \"txt-left\"],\r\n \"top-center\": [\"top\", \"txt-center\"],\r\n \"top-right\": [\"top\", \"txt-right\"],\r\n \"left-left\": [\"\", \"txt-left\"],\r\n \"left-center\": [\"\", \"txt-center\"],\r\n \"left-right\": [\"\", \"txt-right\"],\r\n \"right-right\": [\"right\", \"txt-right\"],\r\n \"right-center\": [\"right\", \"txt-center\"],\r\n \"right-left\": [\"right\", \"txt-left\"],\r\n \"bottom-left\": [\"bottom\", \"txt-left\"],\r\n \"bottom-center\": [\"bottom\", \"txt-center\"],\r\n \"bottom-right\": [\"bottom\", \"txt-right\"],\r\n};\r\nFIELD_POSITION_STYLE[\"top\"] = FIELD_POSITION_STYLE[\"top-left\"];\r\nFIELD_POSITION_STYLE[\"right\"] = FIELD_POSITION_STYLE[\"right-right\"];\r\nFIELD_POSITION_STYLE[\"left\"] = FIELD_POSITION_STYLE[\"left-left\"];\r\nFIELD_POSITION_STYLE[\"bottom\"] = FIELD_POSITION_STYLE[\"bottom-left\"];\r\n", "import { Message } from \"@t/Message\";\r\nimport { FormField } from \"../types/FormField\";\r\nimport { ValidResult } from \"@t/ValidResult\";\r\nimport { RULES } from \"src/constants\";\r\n\r\nlet localeMessage: Message = {\r\n required: \"{label} \uD544\uC218 \uC785\uB825\uC0AC\uD56D\uC785\uB2C8\uB2E4.\",\r\n fileButton: \"\uD30C\uC77C\uCC3E\uAE30\",\r\n selection: \"\uC120\uD0DD\",\r\n string: {\r\n minLength: \"{minLength} \uAE00\uC790 \uC774\uC0C1\uC73C\uB85C \uC785\uB825\uD558\uC138\uC694.\",\r\n maxLength: \"{maxLength} \uAE00\uC790 \uC774\uD558\uB85C \uC785\uB825\uD558\uC138\uC694.\",\r\n between: \"{minLength} ~ {maxLength} \uC0AC\uC774\uC758 \uAE00\uC790\uB97C \uC785\uB825\uD558\uC138\uC694.\",\r\n },\r\n number: {\r\n nan: \"\uC22B\uC790\uB9CC \uC785\uB825 \uAC00\uB2A5 \uD569\uB2C8\uB2E4.\",\r\n minimum: \"{minimum} \uAC12\uACFC \uAC19\uAC70\uB098 \uCEE4\uC57C \uD569\uB2C8\uB2E4\",\r\n exclusiveMinimum: \"{minimum} \uBCF4\uB2E4 \uCEE4\uC57C \uD569\uB2C8\uB2E4\",\r\n maximum: \"{maximum} \uAC12\uACFC \uAC19\uAC70\uB098 \uC791\uC544\uC57C \uD569\uB2C8\uB2E4\",\r\n exclusiveMaximum: \"{maximum} \uBCF4\uB2E4 \uC791\uC544\uC57C \uD569\uB2C8\uB2E4.\",\r\n between: \"{minimum}~{maximum} \uC0AC\uC774\uC758 \uAC12\uC744 \uC785\uB825\uD558\uC138\uC694.\",\r\n betweenExclusiveMin: \"{minimum} \uBCF4\uB2E4 \uD06C\uACE0 {maximum} \uBCF4\uB2E4 \uAC19\uAC70\uB098 \uC791\uC544\uC57C \uD569\uB2C8\uB2E4\",\r\n betweenExclusiveMax: \"{minimum} \uBCF4\uB2E4 \uAC19\uAC70\uB098 \uD06C\uACE0 {maximum} \uBCF4\uB2E4 \uC791\uC544\uC57C \uD569\uB2C8\uB2E4\",\r\n betweenExclusiveMinMax: \"{minimum} \uBCF4\uB2E4 \uD06C\uACE0 {maximum} \uBCF4\uB2E4 \uC791\uC544\uC57C \uD569\uB2C8\uB2E4\",\r\n },\r\n regexp: {\r\n mobile: \"\uD578\uB4DC\uD3F0 \uBC88\uD638\uAC00 \uC720\uD6A8\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.\",\r\n email: \"\uC774\uBA54\uC77C\uC774 \uC720\uD6A8\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.\",\r\n url: \"URL\uC774 \uC720\uD6A8\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.\",\r\n alpha: \"\uC601\uBB38\uB9CC \uC785\uB825 \uAC00\uB2A5 \uD569\uB2C8\uB2E4.\",\r\n \"alpha-num\": \"\uC601\uBB38\uACFC \uC22B\uC790\uB9CC \uC785\uB825 \uAC00\uB2A5 \uD569\uB2C8\uB2E4.\",\r\n number: \"\uC22B\uC790\uB9CC \uC785\uB825 \uAC00\uB2A5 \uD569\uB2C8\uB2E4.\",\r\n variable: \"\uAC12\uC774 \uC720\uD6A8\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4.\",\r\n \"number-char\": \"\uC22B\uC790, \uBB38\uC790 \uAC01\uAC01 \uD558\uB098 \uC774\uC0C1 \uD3EC\uD568 \uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4.\",\r\n \"upper-char\": \"\uB300\uBB38\uC790\uAC00 \uD558\uB098 \uC774\uC0C1 \uD3EC\uD568 \uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4.\",\r\n \"upper-char-special\": \"\uB300\uBB38\uC790,\uC18C\uBB38\uC790,\uD2B9\uC218\uBB38\uC790 \uAC01\uAC01 \uD558\uB098 \uC774\uC0C1 \uD3EC\uD568 \uB418\uC5B4\uC57C \uD569\uB2C8\uB2E4.\",\r\n \"upper-char-special-number\": \"\uB300\uBB38\uC790,\uC18C\uBB38\uC790,\uD2B9\uC218\uBB38\uC790,\uC22B\uC790 \uAC01\uAC01 \uD558\uB098 \uC774\uC0C1 \uD3EC\uD568 \uB418\uC5B4\uC57C\uD569\uB2C8\uB2E4.\",\r\n },\r\n};\r\n\r\n/**\r\n * validation \uBA54\uC2DC\uC9C0 \uCC98\uB9AC.\r\n *\r\n * @class Language\r\n * @typedef {Language}\r\n */\r\nclass Language {\r\n private lang: Message = localeMessage;\r\n\r\n /**\r\n * \uB2E4\uAD6D\uC5B4 \uBA54\uC2DC\uC9C0 \uB4F1\uB85D\r\n *\r\n * @public\r\n * @param {?Message} [lang] \uB465\uB85D\uD560 \uBA54\uC2DC\uC9C0\r\n */\r\n public set(lang?: Message) {\r\n this.lang = Object.assign({}, localeMessage, lang);\r\n }\r\n\r\n /**\r\n * \uBA54\uC2DC\uC9C0 \uC5BB\uAE30\r\n *\r\n * @public\r\n * @param {string} messageKey \uBA54\uC2DC\uC9C0 \uD0A4\r\n * @returns {*}\r\n */\r\n public getMessage(messageKey: string): any {\r\n return (this.lang as any)[messageKey];\r\n }\r\n\r\n /**\r\n * ValidResult \uAC12\uC744 \uBA54\uC2DC\uC9C0\uB85C \uBCC0\uACBD.\r\n *\r\n * @public\r\n * @param {FormField} field\r\n * @param {ValidResult} validResult\r\n * @returns {string[]}\r\n */\r\n public validMessage(field: FormField, validResult: ValidResult): string[] {\r\n let messageFormat = \"\";\r\n\r\n let messageFormats: string[] = [];\r\n\r\n if (validResult.regexp) {\r\n messageFormat = (this.lang.regexp as any)[validResult.regexp];\r\n messageFormats.push(messageFormat);\r\n }\r\n\r\n (validResult.constraint ?? []).forEach((constraint) => {\r\n if (constraint === RULES.REQUIRED) {\r\n messageFormat = message(this.lang.required, field);\r\n messageFormats.push(messageFormat);\r\n }\r\n\r\n if (field.renderType == \"number\" || field.renderType == \"range\") {\r\n messageFormat = (this.lang.number as any)[constraint];\r\n messageFormats.push(messageFormat);\r\n } else {\r\n messageFormat = (this.lang.string as any)[constraint];\r\n messageFormats.push(messageFormat);\r\n }\r\n });\r\n\r\n const reMessage: string[] = [];\r\n\r\n const msgParam = Object.assign({}, { name: field.name, label: field.label }, field.rule);\r\n messageFormats.forEach((msgFormat) => {\r\n if (msgFormat) {\r\n reMessage.push(message(msgFormat, msgParam));\r\n }\r\n });\r\n\r\n if (validResult.validator) {\r\n reMessage.push(validResult.validator.message);\r\n }\r\n\r\n return reMessage;\r\n }\r\n}\r\n\r\nfunction message(msgFormat: string, msgParam: any): string {\r\n return msgFormat.replace(/\\{{1,1}([A-Za-z0-9_.]*)\\}{1,1}/g, (match, key) => {\r\n return typeof msgParam[key] !== \"undefined\" ? msgParam[key] : match;\r\n });\r\n}\r\n\r\nexport default new Language();\r\n", "import { FormField } from \"@t/FormField\";\r\n\r\nimport Render from \"../renderer/Render\";\r\nimport { RENDER_TEMPLATE } from \"../constants\";\r\nimport * as utils from \"./utils\";\r\n\r\nexport const getRenderer = (field: FormField): Render => {\r\n let render;\r\n if (field.renderType) {\r\n render = RENDER_TEMPLATE[field.renderType];\r\n }\r\n\r\n if (render && (render.isDataRender() === false || !utils.isUndefined(field.name))) {\r\n return render;\r\n }\r\n\r\n if (utils.isUndefined(field.name)) {\r\n if (field.children) {\r\n return RENDER_TEMPLATE[\"group\"];\r\n } else {\r\n return RENDER_TEMPLATE[\"hidden\"];\r\n }\r\n }\r\n\r\n return RENDER_TEMPLATE[\"text\"];\r\n};\r\n", "import { FIELD_PREFIX } from \"src/constants\";\r\nimport { FormField } from \"./types/FormField\";\r\nimport { ValidResult } from \"./types/ValidResult\";\r\nimport { getRenderer } from \"./util/renderFactory\";\r\nimport Lanauage from \"./util/Lanauage\";\r\nimport * as utils from \"./util/utils\";\r\nimport DaraForm from \"./DaraForm\";\r\n\r\ninterface NumberFieldMap {\r\n [key: string]: FormField;\r\n}\r\n\r\ninterface StringNumberMap {\r\n [key: string]: string;\r\n}\r\n\r\nexport default class FieldInfoMap {\r\n private fieldIdx = 0;\r\n\r\n private allFieldInfo: NumberFieldMap = {};\r\n\r\n private keyNameMap: StringNumberMap = {};\r\n\r\n private conditionFields: string[] = [];\r\n\r\n private fieldPrefix;\r\n\r\n private form;\r\n\r\n constructor(selector: string, form: DaraForm) {\r\n this.fieldPrefix = `${FIELD_PREFIX}_${utils.getHashCode(selector)}`;\r\n this.form = form;\r\n }\r\n\r\n /**\r\n * add Field \uC815\uBCF4\r\n *\r\n * @public\r\n * @param {FormField} field \uD3FC\uD544\uB4DC \uC815\uBCF4\r\n */\r\n public addField(field: FormField) {\r\n utils.replaceXssField(field);\r\n this.fieldIdx += 1;\r\n field.$key = `${this.fieldPrefix}_${this.fieldIdx}`;\r\n field.$validName = field.name ?? field.label;\r\n this.keyNameMap[field.$validName] = field.$key;\r\n this.allFieldInfo[field.$key] = field;\r\n field.$renderType = getRenderer(field);\r\n\r\n if (field.conditional) {\r\n this.conditionFields.push(field.$key);\r\n }\r\n }\r\n\r\n /**\r\n * \uD544\uB4DC\uBA85\uC73C\uB85C \uD544\uB4DC \uC815\uBD80 \uAD6C\uD558\uAE30\r\n *\r\n * @public\r\n * @param {string} fieldName \uD544\uB4DC\uBA85\r\n * @returns {FormField}\r\n */\r\n public getFieldName(fieldName: string): FormField {\r\n return this.allFieldInfo[this.keyNameMap[fieldName]];\r\n }\r\n\r\n /**\r\n * \uD544\uB4DC \uD0A4\uB85C \uC815\uBCF4 \uAD6C\uD558\uAE30\r\n *\r\n * @public\r\n * @param {string} fieldKey\r\n * @returns {FormField}\r\n */\r\n public get(fieldKey: string): FormField {\r\n return this.allFieldInfo[fieldKey];\r\n }\r\n\r\n /**\r\n * \uD544\uB4DC\uBA85 \uC788\uB294\uC9C0 \uC5EC\uBD80 \uCCB4\uD06C.\r\n *\r\n * @public\r\n * @param {string} fieldName \uD544\uB4DC\uBA85\r\n * @returns {boolean}\r\n */\r\n public hasFieldName(fieldName: string): boolean {\r\n if (this.keyNameMap[fieldName] && this.allFieldInfo[this.keyNameMap[fieldName]]) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * \uBAA8\uB4E0 \uD544\uB4DC \uC815\uBCF4\r\n *\r\n * @public\r\n * @returns {NumberFieldMap}\r\n */\r\n public getAllFieldInfo(): NumberFieldMap {\r\n return this.allFieldInfo;\r\n }\r\n\r\n /**\r\n * \uD544\uB4DC \uC815\uBCF4 \uB9F5\uC5D0\uC11C \uC9C0\uC6B0\uAE30\r\n *\r\n * @public\r\n * @param {string} fieldName\r\n */\r\n public removeFieldInfo(fieldName: string) {\r\n delete this.allFieldInfo[this.keyNameMap[fieldName]];\r\n }\r\n\r\n /**\r\n * \uBAA8\uB4E0 \uD544\uB4DC\uAC12 \uAD6C\uD558\uAE30\r\n *\r\n * @public\r\n * @param {boolean} validationCheck\r\n * @returns {*}\r\n */\r\n public getAllFieldValue(formValue: any, validationCheck: boolean) {\r\n const useTypeValue = this.form.getOptions().useTypeValue;\r\n\r\n if (validationCheck !== true) {\r\n for (let [key, fieldInfo] of Object.entries(this.allFieldInfo)) {\r\n formValue = addFormValue(formValue, fieldInfo, useTypeValue);\r\n }\r\n return formValue;\r\n }\r\n\r\n return new Promise((resolve, reject) => {\r\n for (let [key, fieldInfo] of Object.entries(this.allFieldInfo)) {\r\n if (!fieldInfo.$instance.isEnableView()) {\r\n continue;\r\n }\r\n\r\n let fieldValid = this.getFieldValidation(fieldInfo, true);\r\n\r\n if (fieldValid !== true) {\r\n reject(new Error(fieldValid.message, { cause: fieldValid }));\r\n return;\r\n }\r\n\r\n formValue = addFormValue(formValue, fieldInfo, useTypeValue);\r\n }\r\n\r\n resolve(formValue);\r\n });\r\n }\r\n\r\n public getFormDataValue(formValue: any, validationCheck: boolean) {\r\n if (validationCheck !== true) {\r\n let reval = new FormData();\r\n\r\n for (let [key, value] of Object.entries(formValue)) {\r\n reval.set(key, value as any);\r\n }\r\n\r\n for (let [key, fieldInfo] of Object.entries(this.allFieldInfo)) {\r\n addFieldFormData(reval, fieldInfo, fieldInfo.$instance.getValue());\r\n }\r\n\r\n return reval;\r\n }\r\n\r\n return new Promise((resolve, reject) => {\r\n let reval = new FormData();\r\n\r\n for (let [key, value] of Object.entries(formValue)) {\r\n reval.set(key, value as any);\r\n }\r\n\r\n for (let [key, fieldInfo] of Object.entries(this.allFieldInfo)) {\r\n if (!fieldInfo.$instance.isEnableView()) {\r\n continue;\r\n }\r\n\r\n let fieldValid = this.getFieldValidation(fieldInfo, true);\r\n\r\n if (fieldValid !== true) {\r\n reject(new Error(fieldValid.message, { cause: fieldValid }));\r\n return;\r\n }\r\n\r\n addFieldFormData(reval, fieldInfo, fieldInfo.$instance.getValue());\r\n }\r\n\r\n resolve(reval);\r\n });\r\n }\r\n\r\n /**\r\n *\r\n *\r\n * @param field\r\n * @returns\r\n */\r\n public isConditionFieldCheck(field: FormField) {\r\n let parent = field;\r\n\r\n while (typeof parent !== \"undefined\") {\r\n if (!this.isConditionField(parent)) {\r\n return false;\r\n }\r\n\r\n parent = parent.$parent;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n /**\r\n * field \uD65C\uC131 \uBE44\uD65C\uC131\uD654 \uC5EC\uBD80.\r\n *\r\n * @param field form field\r\n * @returns\r\n */\r\n public isConditionField(field: FormField) {\r\n if (!this.conditionFields.includes(field.$key)) {\r\n return true;\r\n }\r\n\r\n let condFlag = false;\r\n\r\n if (field.conditional.custom) {\r\n condFlag = field.conditional.custom.call(null, field);\r\n } else {\r\n if (field.conditional.field) {\r\n const condField = this.getFieldName(field.conditional.field);\r\n\r\n if (condField) {\r\n if (field.conditional.eq == condField.$instance.getValue()) {\r\n condFlag = true;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return condFlag;\r\n }\r\n\r\n /**\r\n * \uCEEC\uB7FC \uB85C\uC6B0 \uBCF4\uC774\uACE0 \uC548\uBCF4\uC774\uAE30 \uCCB4\uD06C.\r\n *\r\n * @public\r\n */\r\n public conditionCheck() {\r\n this.conditionFields.forEach((fieldKey) => {\r\n const fieldInfo = this.allFieldInfo[fieldKey];\r\n\r\n let condFlag = this.isConditionField(fieldInfo);\r\n\r\n if (condFlag) {\r\n fieldInfo.$instance.show();\r\n } else {\r\n fieldInfo.$instance.hide();\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * field validation check\r\n *\r\n * @param fieldInfo FormField\r\n * @returns boolean true or ValidResult\r\n */\r\n public getFieldValidation(fieldInfo: FormField, focusFlag: boolean | undefined) {\r\n if (!this.isConditionFieldCheck(fieldInfo)) {\r\n return true;\r\n }\r\n\r\n const renderInfo = fieldInfo.$instance;\r\n let fieldValid = renderInfo.valid();\r\n\r\n if (fieldValid === true) return true;\r\n\r\n if (focusFlag) {\r\n renderInfo.focus();\r\n }\r\n fieldValid = fieldValid as ValidResult;\r\n if (utils.isUndefined(fieldValid.message)) {\r\n fieldValid.message = Lanauage.validMessage(fieldInfo, fieldValid)[0];\r\n }\r\n\r\n return fieldValid;\r\n }\r\n}\r\n\r\n/**\r\n * add form value\r\n * @param formData {Object} return Object value\r\n * @param fieldInfo {FormField} field info\r\n * @param fieldValue {any} form value\r\n */\r\nfunction addFormValue(formData: any, fieldInfo: FormField, useTypeValue?: boolean) {\r\n if (utils.ignoreValueField(fieldInfo)) {\r\n return formData;\r\n }\r\n\r\n const fieldValue = fieldInfo.$instance.getValue();\r\n\r\n if (fieldInfo.renderType === \"file\") {\r\n const uploadFiles = fieldValue[\"uploadFile\"];\r\n\r\n formData[fieldInfo.$validName] = uploadFiles;\r\n formData[fieldInfo.$validName + \"RemoveIds\"] = fieldValue[\"removeIds\"];\r\n } else {\r\n if (useTypeValue !== true) {\r\n if (utils.isTabType(fieldInfo)) {\r\n for (let [key, value] of Object.entries(fieldValue)) {\r\n formData[key] = value;\r\n }\r\n } else {\r\n if (!utils.isEmpty(fieldInfo.name)) {\r\n formData[fieldInfo.name] = fieldValue;\r\n }\r\n }\r\n } else {\r\n formData[fieldInfo.$validName] = fieldValue;\r\n }\r\n }\r\n\r\n return formData;\r\n}\r\n\r\nfunction addFieldFormData(formData: FormData, fieldInfo: FormField, useTypeValue?: boolean) {\r\n if (utils.ignoreValueField(fieldInfo)) {\r\n return formData;\r\n }\r\n\r\n const fieldValue = fieldInfo.$instance.getValue();\r\n\r\n if (fieldInfo.renderType === \"file\") {\r\n const uploadFiles = fieldValue[\"uploadFile\"];\r\n formData.delete(fieldInfo.$validName);\r\n for (let uploadFile of uploadFiles) {\r\n formData.append(fieldInfo.$validName, uploadFile);\r\n }\r\n\r\n formData.set(fieldInfo.$validName + \"RemoveIds\", fieldValue[\"removeIds\"]);\r\n } else {\r\n if (useTypeValue !== true) {\r\n if (utils.isTabType(fieldInfo)) {\r\n for (let [key, value] of Object.entries(fieldValue)) {\r\n formData.set(key, value as any);\r\n }\r\n } else {\r\n if (!utils.isEmpty(fieldInfo.name)) {\r\n formData.set(fieldInfo.$validName, fieldValue);\r\n }\r\n }\r\n } else {\r\n formData.set(fieldInfo.$validName, fieldValue);\r\n }\r\n }\r\n\r\n return formData;\r\n}\r\n", "import { FormOptions } from \"@t/FormOptions\";\r\nimport { FieldStyle, FormField } from \"@t/FormField\";\r\nimport * as utils from \"./util/utils\";\r\nimport FieldInfoMap from \"src/FieldInfoMap\";\r\n\r\nimport styleUtils from \"./util/styleUtils\";\r\nimport DaraForm from \"./DaraForm\";\r\nimport TabRender from \"./renderer/TabRender\";\r\nimport GridRender from \"./renderer/GridRender\";\r\n\r\n/**\r\n * form template\r\n *\r\n * @class FormTemplate\r\n * @typedef {FormTemplate}\r\n */\r\nexport default class FormTemplate {\r\n private readonly options: FormOptions;\r\n private readonly formElement;\r\n\r\n private fieldInfoMap;\r\n\r\n private daraform: DaraForm;\r\n\r\n private addRowFields: string[] = [];\r\n\r\n constructor(daraform: DaraForm, formElement: Element, fieldInfoMap: FieldInfoMap) {\r\n this.daraform = daraform;\r\n this.options = daraform.getOptions();\r\n this.formElement = formElement;\r\n\r\n this.fieldInfoMap = fieldInfoMap;\r\n }\r\n\r\n /**\r\n * field row \uCD94\uAC00.\r\n *\r\n * @param field\r\n */\r\n public addRow(field: FormField) {\r\n if (this.checkHiddenField(field)) {\r\n return;\r\n }\r\n\r\n this.addRowFields = [];\r\n\r\n this.addRowTemplate(field);\r\n }\r\n\r\n /**\r\n * \uADF8\uB8F9 \uD15C\uD50C\uB9BF\r\n *\r\n * @param {FormField} field\r\n * @returns {string} row template\r\n */\r\n public addRowTemplate(field: FormField): void {\r\n let labelHideFlag = this.isLabelHide(field);\r\n\r\n let fieldStyle: FieldStyle = styleUtils.fieldStyle(this.options, field, null, labelHideFlag);\r\n\r\n this.addRowFieldInfo(field);\r\n\r\n const rowElement = utils.templateToElement(`\r\n <div class=\"df-row form-group ${fieldStyle.fieldClass}\" id=\"${field.$key}\">\r\n ${labelHideFlag ? \"\" : `<div class=\"df-label ${fieldStyle.labelClass} ${fieldStyle.labelAlignClass}\" title=\"${field.label ?? \"\"}\" style=\"${fieldStyle.labelStyle}\">${this.getLabelTemplate(field)}</div>`}\r\n\r\n <div class=\"df-field-container ${fieldStyle.valueClass} ${field.required ? \"required\" : \"\"}\" style=\"${fieldStyle.valueStyle}\"></div>\r\n </div>\r\n `);\r\n\r\n if (rowElement) {\r\n this.createField(field, rowElement);\r\n this.formElement.append(rowElement);\r\n\r\n if (field.children) {\r\n this.childTemplate(field, fieldStyle);\r\n }\r\n }\r\n }\r\n\r\n public createField(field: FormField, element: Element): void {\r\n field.$instance = new (field.$renderType as any)(field, element, this.daraform);\r\n }\r\n\r\n /**\r\n * child template\r\n *\r\n * @param {FormField} field\r\n * @param {FieldStyle} parentFieldStyle\r\n * @returns {*}\r\n */\r\n public childTemplate(field: FormField, parentFieldStyle: FieldStyle): void {\r\n let beforeField: FormField = null as any;\r\n let firstFlag = true;\r\n let isEmptyLabel = false;\r\n\r\n if (!(field.$renderType as any).isChildrenCreate()) {\r\n return;\r\n }\r\n\r\n const rowElement = document.createElement(\"div\");\r\n rowElement.classList.add(\"df-row\", parentFieldStyle.rowStyleClass ?? \"\");\r\n\r\n let idx = 0;\r\n\r\n for (const childField of field.children) {\r\n if (utils.isEmpty(childField)) {\r\n throw new Error(`parent field :[${field.$validName}], children index ${idx}, empty [${childField}]`);\r\n }\r\n\r\n childField.$parent = field;\r\n ++idx;\r\n\r\n if (this.checkHiddenField(childField)) {\r\n continue;\r\n }\r\n\r\n this.addRowFieldInfo(childField);\r\n\r\n if (firstFlag) {\r\n beforeField = childField;\r\n }\r\n\r\n let labelHideFlag = this.isLabelHide(childField);\r\n\r\n let childFieldStyle;\r\n\r\n let labelTemplate = \"\";\r\n if (labelHideFlag) {\r\n childFieldStyle = styleUtils.fieldStyle(this.options, childField, beforeField, !isEmptyLabel);\r\n labelTemplate = isEmptyLabel ? `<span class=\"df-label empty ${childFieldStyle.labelClass}\" style=\"${childFieldStyle.labelStyle}\"></span>` : \"\";\r\n } else {\r\n childFieldStyle = styleUtils.fieldStyle(this.options, childField, beforeField, false);\r\n labelTemplate = `<span class=\"df-label ${childFieldStyle.labelClass} ${childFieldStyle.labelAlignClass}\" title=\"${childField.label ?? \"\"}\" style=\"${childFieldStyle.labelStyle}\">${this.getLabelTemplate(childField)}</span>`;\r\n }\r\n\r\n const groupElement = utils.templateToElement(`<div class=\"form-group ${childFieldStyle.fieldClass}\" style=\"${childFieldStyle.fieldStyle}\" id=\"${childField.$key}\">\r\n ${labelTemplate}\r\n <span class=\"df-field-container ${childFieldStyle.valueClass} ${childField.required ? \"required\" : \"\"}\" style=\"${childFieldStyle.valueStyle}\"></span>\r\n </div>`);\r\n\r\n if (groupElement) {\r\n this.createField(childField, groupElement);\r\n rowElement.append(groupElement);\r\n\r\n if (childField.children) {\r\n this.childTemplate(childField, childField.children ? childFieldStyle : parentFieldStyle);\r\n }\r\n }\r\n if (!labelHideFlag) {\r\n isEmptyLabel = true;\r\n }\r\n\r\n firstFlag = false;\r\n }\r\n\r\n field.$instance.addChildField(rowElement);\r\n }\r\n\r\n /**\r\n * label template\r\n *\r\n * @param {FormField} field form field\r\n * @returns {string} template string\r\n */\r\n public getLabelTemplate(field: FormField) {\r\n const requiredTemplate = field.required ? `<span class=\"required\"></span>` : \"\";\r\n const tooltipTemplate = utils.isBlank(field.tooltip) ? \"\" : `<span class=\"df-tooltip\">?<span class=\"tooltip\">${field.tooltip}</span></span>`;\r\n\r\n return `${field.label ?? \"\"} ${tooltipTemplate} ${requiredTemplate}`;\r\n }\r\n\r\n /**\r\n * label \uC228\uAE40 \uC5EC\uBD80\r\n *\r\n * @param field formfield\r\n * @returns\r\n */\r\n public isLabelHide(field: FormField): boolean {\r\n return field.style?.labelHide || utils.isUndefined(field.label);\r\n }\r\n\r\n public checkHiddenField(field: FormField) {\r\n if (utils.isHiddenField(field)) {\r\n this.fieldInfoMap.addField(field);\r\n field.$instance = new (field.$renderType as any)(field, null, this.daraform);\r\n\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n /**\r\n * add row file map\r\n *\r\n * @param {FormField} field\r\n */\r\n public addRowFieldInfo(field: FormField) {\r\n if (!utils.isBlank(field.name) && this.fieldInfoMap.hasFieldName(field.name)) {\r\n throw new Error(`Duplicate field name \"${field.name}\"`);\r\n }\r\n\r\n this.fieldInfoMap.addField(field);\r\n this.addRowFields.push(field.$key);\r\n }\r\n}\r\n", "import { FormOptions } from \"@t/FormOptions\";\r\nimport { FormField } from \"@t/FormField\";\r\nimport * as utils from \"./util/utils\";\r\nimport { ValidResult } from \"@t/ValidResult\";\r\nimport { Message } from \"@t/Message\";\r\nimport Lanauage from \"./util/Lanauage\";\r\nimport { stringValidator } from \"./rule/stringValidator\";\r\nimport { numberValidator } from \"./rule/numberValidator\";\r\nimport { regexpValidator } from \"./rule/regexpValidator\";\r\nimport FieldInfoMap from \"src/FieldInfoMap\";\r\nimport FormTemplate from \"./FormTemplate\";\r\nimport { FORM_MODE } from \"./constants\";\r\n\r\ndeclare const APP_VERSION: string;\r\n\r\nconst defaultOptions = {\r\n style: {\r\n width: \"100%\",\r\n labelWidth: 3,\r\n valueWidth: 9,\r\n position: \"left-right\",\r\n },\r\n mode: \"new\",\r\n useTypeValue: true,\r\n autoCreate: true,\r\n notValidMessage: \"This form is not valid.\",\r\n fields: [],\r\n} as FormOptions;\r\n\r\ninterface FieldMap {\r\n [key: string]: FormField;\r\n}\r\n\r\ninterface DaraFormMap {\r\n [key: string]: DaraForm;\r\n}\r\n\r\n// all instance\r\nconst allInstance: DaraFormMap = {};\r\n\r\nconst SEQ_ATTR_KEY = \"data-form-uid\";\r\n\r\nlet DARA_FORM_SEQ = 0;\r\n/**\r\n * DaraForm class\r\n *\r\n * @class DaraForm\r\n * @typedef {DaraForm}\r\n */\r\nexport default class DaraForm {\r\n public static VERSION = `${APP_VERSION}`;\r\n\r\n private readonly options;\r\n\r\n private orginFormStyleClass;\r\n\r\n private selector: string;\r\n private formElement: Element;\r\n\r\n private fieldInfoMap: FieldInfoMap;\r\n\r\n private formValue: any = {};\r\n\r\n public formTemplate: FormTemplate;\r\n\r\n constructor(formElement: Element, options: FormOptions, message?: Message) {\r\n this.options = utils.merge({}, defaultOptions, options) as FormOptions;\r\n\r\n Lanauage.set(message);\r\n\r\n if (formElement) {\r\n this.orginFormStyleClass = formElement.className;\r\n formElement.classList.add(\"daracl-form\");\r\n\r\n this.selector = `df_${++DARA_FORM_SEQ}`;\r\n formElement.setAttribute(\"name\", this.selector);\r\n formElement.setAttribute(SEQ_ATTR_KEY, this.selector);\r\n\r\n if (this.options.style.width) {\r\n formElement.setAttribute(\"style\", `width:${this.options.style.width};`);\r\n }\r\n\r\n this.formElement = formElement;\r\n this.changeMode(this.options.mode ?? \"new\");\r\n this.createForm(this.options.fields);\r\n\r\n if (this.options.autoCreate !== false) {\r\n allInstance[this.selector] = this;\r\n }\r\n } else {\r\n throw new Error(`${formElement} form selector not found`);\r\n }\r\n }\r\n\r\n public static create(formElement: Element, options: FormOptions, message?: Message): DaraForm {\r\n return new DaraForm(formElement, options, message);\r\n }\r\n\r\n public static setMessage(message: Message): void {\r\n Lanauage.set(message);\r\n }\r\n\r\n private createForm(fields: FormField[]) {\r\n this.fieldInfoMap = new FieldInfoMap(this.selector, this);\r\n //this.formElement.innerHTML = \"\";\r\n this.formTemplate = new FormTemplate(this, this.formElement, this.fieldInfoMap);\r\n\r\n if (this.options.autoCreate === false) {\r\n return;\r\n }\r\n\r\n fields.forEach((field) => {\r\n this.formTemplate.addRow(field);\r\n });\r\n this.conditionCheck();\r\n\r\n if (this.options.onMounted) {\r\n this.options.onMounted.call(this);\r\n }\r\n }\r\n\r\n /**\r\n * change mode\r\n *\r\n * @param mode form_mode default new\r\n */\r\n public changeMode = (mode: FORM_MODE): void => {\r\n this.options.mode = mode;\r\n this.formElement.setAttribute(\"data-df-mode\", mode);\r\n };\r\n\r\n /**\r\n * \uD3FC \uB370\uC774\uD130 reset\r\n */\r\n public resetForm = () => {\r\n const fieldMap = this.fieldInfoMap.getAllFieldInfo();\r\n for (const seq in fieldMap) {\r\n const fieldInfo = fieldMap[seq];\r\n const renderInfo = fieldInfo.$instance;\r\n\r\n if (renderInfo && typeof renderInfo.reset === \"function\") {\r\n renderInfo.reset();\r\n }\r\n }\r\n this.formValue = {};\r\n this.conditionCheck();\r\n };\r\n\r\n /**\r\n * field \uAC12 reset\r\n * @param fieldName \uD544\uB4DC\uBA85\r\n */\r\n public resetField = (fieldName: string) => {\r\n this.fieldInfoMap.getFieldName(fieldName).$instance.reset();\r\n this.formValue[fieldName] = \"\";\r\n this.conditionCheck();\r\n };\r\n\r\n /**\r\n * \uD544\uB4DC element \uC5BB\uAE30\r\n *\r\n * @param {string} fieldName\r\n * @returns {*}\r\n */\r\n public getFieldElement(fieldName: string) {\r\n const field = this.fieldInfoMap.getFieldName(fieldName);\r\n\r\n if (field?.$instance) {\r\n return field.$instance.getElement();\r\n }\r\n\r\n return null;\r\n }\r\n\r\n public getField(fieldName: string): FormField {\r\n return this.fieldInfoMap.getFieldName(fieldName);\r\n }\r\n\r\n /**\r\n * field \uAC12 \uC5BB\uAE30\r\n *\r\n * @param fieldName \uD544\uB4DC\uBA85\r\n * @returns\r\n */\r\n public getFieldValue = (fieldName: string) => {\r\n const field = this.fieldInfoMap.getFieldName(fieldName);\r\n\r\n if (field) {\r\n return field.$instance.getValue();\r\n }\r\n return null;\r\n };\r\n\r\n /**\r\n * \uD3FC \uD544\uB4DC \uAC12 \uC5BB\uAE30\r\n * @param isValid \uD3FC \uC720\uD6A8\uC131 \uAC80\uC0AC \uC5EC\uBD80 default:false|undefined true\uC77C\uACBD\uC6B0 \uAC80\uC0AC.\r\n * @returns\r\n */\r\n public getValue = (isValid: boolean): any => {\r\n return this.fieldInfoMap.getAllFieldValue(this.formValue, isValid);\r\n };\r\n\r\n public getFormDataValue = (isValid: boolean): any => {\r\n return this.fieldInfoMap.getFormDataValue(this.formValue, isValid);\r\n };\r\n\r\n /**\r\n * \uD3FC \uD544\uB4DC value \uC14B\uD305\r\n * @param values\r\n */\r\n public setValue = (values: any, dataClear?: boolean | undefined) => {\r\n if (dataClear !== false) {\r\n this.resetForm();\r\n }\r\n\r\n Object.keys(values).forEach((fieldName) => {\r\n this._setFieldValue(fieldName, values[fieldName]);\r\n });\r\n this.conditionCheck();\r\n };\r\n\r\n public setFieldValue = (fieldName: string, value: any) => {\r\n this._setFieldValue(fieldName, value);\r\n this.conditionCheck();\r\n };\r\n\r\n private _setFieldValue(fieldName: string, value: any) {\r\n this.formValue[fieldName] = value;\r\n const fieldInfo = this.fieldInfoMap.getFieldName(fieldName);\r\n\r\n if (fieldInfo) {\r\n fieldInfo.$instance.setValue(value);\r\n }\r\n }\r\n\r\n public setFieldItems = (fieldName: string, values: any) => {\r\n const field = this.fieldInfoMap.getFieldName(fieldName);\r\n\r\n if (field) {\r\n return field.$instance.setValueItems(values);\r\n }\r\n };\r\n\r\n /**\r\n * field \uCD94\uAC00\r\n *\r\n * @param {FormField} field\r\n */\r\n public addField = (field: FormField) => {\r\n this.options.fields.push(field);\r\n this.formTemplate.addRow(field);\r\n this.conditionCheck();\r\n };\r\n\r\n /**\r\n * field \uC81C\uAC70\r\n *\r\n * @param {string} fieldName\r\n */\r\n public removeField = (fieldName: string) => {\r\n const element = this.getFieldElement(fieldName);\r\n\r\n if (element != null) {\r\n element.closest(\".df-row\")?.remove();\r\n }\r\n\r\n this.fieldInfoMap.removeFieldInfo(fieldName);\r\n };\r\n\r\n /**\r\n * \uD3FC \uC720\uD6A8\uC131 \uAC80\uC99D \uC5EC\uBD80\r\n *\r\n * @returns {boolean}\r\n */\r\n public isValidForm = (): boolean => {\r\n const result = this.validForm();\r\n\r\n return result.length < 1;\r\n };\r\n\r\n /**\r\n * \uC720\uD6A8\uC131 \uAC80\uC99D \uD3FC \uAC80\uC99D\uC5EC\uBD80 \uB9AC\uD134\r\n *\r\n * @returns {any[]}\r\n */\r\n public validForm = (): any[] => {\r\n let validResult = [] as any;\r\n let autoFocusFlag = this.options.autoFocus !== false;\r\n let firstFlag = true;\r\n\r\n const fieldMap = this.fieldInfoMap.getAllFieldInfo();\r\n for (const fieldKey in fieldMap) {\r\n const fieldInfo = fieldMap[fieldKey];\r\n\r\n let fieldValid = this.fieldInfoMap.getFieldValidation(fieldInfo, autoFocusFlag);\r\n\r\n if (fieldValid !== true) {\r\n autoFocusFlag = false;\r\n\r\n if (utils.isGridType(fieldInfo)) {\r\n validResult = validResult.concat(fieldValid);\r\n } else {\r\n if (firstFlag) {\r\n this.validTabCheck(fieldInfo);\r\n firstFlag = false;\r\n }\r\n validResult.push(fieldValid);\r\n }\r\n }\r\n }\r\n\r\n return validResult;\r\n };\r\n\r\n private validTabCheck(fieldInfo: FormField) {\r\n if (fieldInfo.$parent) {\r\n if (fieldInfo.$parent.renderType == \"tab\") {\r\n fieldInfo.$parent.$instance.setActive(fieldInfo.$key);\r\n }\r\n this.validTabCheck(fieldInfo.$parent);\r\n }\r\n }\r\n\r\n public isValidField = (fieldName: string): boolean => {\r\n const fieldInfo = this.fieldInfoMap.getFieldName(fieldName);\r\n\r\n if (utils.isUndefined(fieldInfo)) {\r\n throw new Error(`Field name [${fieldName}] not found`);\r\n }\r\n\r\n const renderInfo = fieldInfo.$instance;\r\n if (renderInfo) {\r\n return renderInfo.valid() === true;\r\n }\r\n\r\n return true;\r\n };\r\n\r\n /**\r\n * \uC124\uC815 \uC635\uC158 \uC5BB\uAE30\r\n */\r\n public getOptions = () => {\r\n return this.options;\r\n };\r\n\r\n public conditionCheck() {\r\n this.fieldInfoMap.conditionCheck();\r\n }\r\n\r\n public setFieldDisabled(fieldName: string, flag: boolean) {\r\n const fieldInfo = this.fieldInfoMap.getFieldName(fieldName);\r\n fieldInfo.$instance.setDisabled(flag);\r\n }\r\n\r\n /**\r\n * \uC124\uBA85 \uCD94\uAC00\r\n *\r\n * @public\r\n * @param {string} fieldName\r\n * @param {string} desc\r\n */\r\n public setFieldDescription(fieldName: string, desc: string) {\r\n const fieldInfo = this.fieldInfoMap.getFieldName(fieldName);\r\n fieldInfo.$instance.setDescription(desc);\r\n }\r\n\r\n public destroy = () => {\r\n this.formElement.className = this.orginFormStyleClass;\r\n this.formElement.replaceChildren();\r\n\r\n for (const key in this) {\r\n if (utils.hasOwnProp(this, key)) {\r\n delete this[key];\r\n delete allInstance[this.selector];\r\n }\r\n }\r\n };\r\n\r\n public static validator = {\r\n string: (value: string, field: FormField) => {\r\n return stringValidator(value, field);\r\n },\r\n number: (value: string, field: FormField) => {\r\n return numberValidator(value, field);\r\n },\r\n regexp: (value: string, field: FormField) => {\r\n let result: ValidResult = { name: field.name, constraint: [] };\r\n return regexpValidator(value, field, result);\r\n },\r\n };\r\n\r\n public static instance(ele: Element | String) {\r\n let element;\r\n if (utils.isString(ele)) {\r\n element = document.querySelector(ele);\r\n } else {\r\n element = ele;\r\n }\r\n element = element as Element;\r\n let selector = element.getAttribute(SEQ_ATTR_KEY);\r\n\r\n if (utils.isUndefined(selector) || utils.isBlank(selector)) {\r\n const keys = Object.keys(allInstance);\r\n if (keys.length > 1) {\r\n throw new Error(`selector empty : [${selector}]`);\r\n }\r\n selector = keys[0];\r\n\r\n return allInstance[selector];\r\n }\r\n }\r\n /**\r\n * \uBAA8\uB4E0 field \uC5BB\uAE30\r\n */\r\n public getFields = (): any[] => {\r\n return this.options.fields;\r\n };\r\n\r\n /**\r\n * field setting\r\n * @param fields\r\n */\r\n public setFields = (fields: any[]) => {\r\n this.options.fields = fields;\r\n this.createForm(fields);\r\n };\r\n\r\n public getFieldInfoMap() {\r\n return this.fieldInfoMap;\r\n }\r\n}\r\n", "@charset \"UTF-8\";\n.daracl-form {\n --border-color: #dfe1e5;\n --color-danger: #d9534f;\n --background-danger: #d9534f;\n --font-color: #686868;\n --font-hover-color: #3a3d41;\n --invalid-font-color: #ff4136;\n --invalid-border-color: #ffb6b4;\n --invalid-background-color: #fdd;\n --button-bg: #f6f6f6;\n --button-bg-hover: #ebebeb;\n --tab-bg: #f6f6f6;\n --tab-bg-hover: #ebebeb;\n --tooltip-background: #3e3e3e;\n --tooltip-color: #fff;\n --field-margin-top: 10px;\n --input-bg: #fff;\n --input-color: #212529;\n --input-disabled-bg: #ebebeb;\n --bg-grid-header: #f1f1f1;\n}\n\nbody.dark .daracl-form,\n.daracl-form.dark {\n --border-color: #41444c;\n --color-danger: #d9534f;\n --background-danger: #d9534f;\n --font-color: #b9bdc1;\n --font-hover-color: #f5f3f3;\n --invalid-font-color: #ff4136;\n --invalid-border-color: #ffb6b4;\n --invalid-background-color: #fdd;\n --button-bg: #435ebe;\n --button-bg-hover: #3950a2;\n --tab-bg: #23418f;\n --tab-bg-hover: #516db1;\n --tooltip-background: #3e3e3e;\n --tooltip-color: #fff;\n --field-margin-top: 10px;\n --input-bg: transparent;\n --input-color: #c6cddb;\n --input-disabled-bg: #878787;\n --bg-grid-header: #878787;\n}\n\n.daracl-form {\n padding: 0px;\n margin-top: 10px;\n color: var(--font-color);\n}\n.daracl-form *,\n.daracl-form ::after,\n.daracl-form ::before {\n box-sizing: border-box;\n}\n.daracl-form .txt-left {\n text-align: left;\n}\n.daracl-form .txt-center {\n text-align: center;\n}\n.daracl-form .txt-right {\n text-align: right;\n}\n.daracl-form[data-df-mode=view] .form-field {\n border-width: 0px;\n border-color: transparent;\n border-color: transparent;\n outline: initial;\n}\n.daracl-form[data-df-mode=view] .form-field:focus-visible, .daracl-form[data-df-mode=view] .form-field:focus {\n border-width: 0px;\n}\n.daracl-form .df-hidden {\n max-height: 0vh !important;\n width: 0px;\n visibility: collapse;\n display: none !important;\n padding: 0px !important;\n margin: 0px !important;\n}\n.daracl-form input,\n.daracl-form select,\n.daracl-form textarea {\n background-color: transparent;\n color: var(--font-color);\n}\n.daracl-form input[disabled],\n.daracl-form select[disabled],\n.daracl-form textarea[disabled] {\n background-color: var(--input-disabled-bg);\n opacity: 0.8;\n}\n.daracl-form .df-label {\n position: relative;\n font-weight: 700;\n vertical-align: top;\n padding: 5px 15px 0px 0px;\n overflow: initial;\n white-space: nowrap;\n text-overflow: ellipsis;\n word-break: break-all;\n}\n.daracl-form .df-label .required {\n color: var(--color-danger);\n}\n.daracl-form .df-label .required::after {\n content: \"*\";\n vertical-align: middle;\n}\n.daracl-form .df-label .df-tooltip {\n visibility: visible;\n color: var(--tooltip-color);\n background: var(--tooltip-background);\n width: 16px;\n height: 16px;\n border-radius: 8px;\n text-align: center;\n line-height: 16px;\n margin: 0 5px;\n font-size: 12px;\n cursor: help;\n position: relative;\n display: inline-block;\n}\n.daracl-form .df-label .df-tooltip .tooltip {\n display: none;\n text-align: initial;\n background: var(--tooltip-background);\n border-radius: 5px;\n color: var(--tooltip-color);\n padding: 10px 5px;\n position: absolute;\n z-index: 2;\n left: -10px;\n min-width: max-content;\n text-shadow: none;\n cursor: default;\n}\n.daracl-form .df-label .df-tooltip:hover .tooltip {\n display: block;\n}\n.daracl-form .form-field {\n border: 1px solid var(--border-color);\n display: block;\n width: 100%;\n padding: 0.375rem 0.75rem;\n font-weight: 400;\n line-height: 1.5;\n border-radius: 4px;\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n background-color: var(--input-bg);\n background-clip: padding-box;\n color: var(--input-color);\n}\n.daracl-form .form-field[type=radio], .daracl-form .form-field[type=checkbox] {\n width: 14px;\n display: inline;\n min-height: 0px;\n padding: 0px;\n margin: 0px;\n vertical-align: middle;\n}\n.daracl-form .form-field.dropdown {\n appearance: none;\n -webkit-appearance: none;\n -moz-appearance: none;\n}\n.daracl-form .form-field.textarea {\n padding-right: 0px;\n}\n.daracl-form .form-field[type=number] {\n padding-right: 3px;\n}\n.daracl-form .form-field.file {\n display: none;\n}\n.daracl-form .form-field.range {\n padding: 0px;\n}\n.daracl-form .df-row {\n display: -ms-flexbox;\n display: -webkit-box;\n display: flex;\n -ms-flex: 0 1 auto;\n -webkit-box-flex: 0;\n flex: 0 1 auto;\n -ms-flex-direction: row;\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n flex-direction: row;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n}\n.daracl-form .df-row.vertical {\n display: block;\n}\n.daracl-form .df-row.horizontal {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n}\n.daracl-form .df-row.horizontal > .form-group > .empty {\n display: none !important;\n}\n.daracl-form .df-row.top {\n flex-direction: column;\n}\n.daracl-form .df-row.top > div {\n max-width: 100% !important;\n}\n.daracl-form .df-row.right {\n -ms-flex-direction: row-reverse !important;\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: reverse !important;\n flex-direction: row-reverse !important;\n}\n.daracl-form .df-row.bottom {\n flex-direction: column-reverse !important;\n}\n.daracl-form .df-row.bottom > div {\n max-width: 100% !important;\n}\n.daracl-form .col-xs-1 {\n flex-basis: 8.33333333%;\n -webkit-box-flex: 0;\n -ms-flex: 0 0 8.33333333%;\n flex: 0 0 8.33333333%;\n max-width: 8.33333333%;\n}\n.daracl-form .col-xs-2 {\n flex-basis: 16.66666667%;\n -webkit-box-flex: 0;\n -ms-flex: 0 0 16.66666667%;\n flex: 0 0 16.66666667%;\n max-width: 16.66666667%;\n}\n.daracl-form .col-xs-3 {\n flex-basis: 25%;\n -webkit-box-flex: 0;\n -ms-flex: 0 0 25%;\n flex: 0 0 25%;\n max-width: 25%;\n}\n.daracl-form .col-xs-4 {\n flex-basis: 33.33333333%;\n -webkit-box-flex: 0;\n -ms-flex: 0 0 33.33333333%;\n flex: 0 0 33.33333333%;\n max-width: 33.33333333%;\n}\n.daracl-form .col-xs-5 {\n flex-basis: 41.66666667%;\n -webkit-box-flex: 0;\n -ms-flex: 0 0 41.66666667%;\n flex: 0 0 41.66666667%;\n max-width: 41.66666667%;\n}\n.daracl-form .col-xs-6 {\n flex-basis: 50%;\n -webkit-box-flex: 0;\n -ms-flex: 0 0 50%;\n flex: 0 0 50%;\n max-width: 50%;\n}\n.daracl-form .col-xs-7 {\n flex-basis: 58.33333333%;\n -webkit-box-flex: 0;\n -ms-flex: 0 0 58.33333333%;\n flex: 0 0 58.33333333%;\n max-width: 58.33333333%;\n}\n.daracl-form .col-xs-8 {\n flex-basis: 66.66666667%;\n -webkit-box-flex: 0;\n -ms-flex: 0 0 66.66666667%;\n flex: 0 0 66.66666667%;\n max-width: 66.66666667%;\n}\n.daracl-form .col-xs-9 {\n flex-basis: 75%;\n -webkit-box-flex: 0;\n -ms-flex: 0 0 75%;\n flex: 0 0 75%;\n max-width: 75%;\n}\n.daracl-form .col-xs-10 {\n flex-basis: 83.33333333%;\n -webkit-box-flex: 0;\n -ms-flex: 0 0 83.33333333%;\n flex: 0 0 83.33333333%;\n max-width: 83.33333333%;\n}\n.daracl-form .col-xs-11 {\n flex-basis: 91.66666667%;\n -webkit-box-flex: 0;\n -ms-flex: 0 0 91.66666667%;\n flex: 0 0 91.66666667%;\n max-width: 91.66666667%;\n}\n.daracl-form .col-xs-12 {\n flex-basis: 100%;\n -webkit-box-flex: 0;\n -ms-flex: 0 0 100%;\n flex: 0 0 100%;\n max-width: 100%;\n}\n.daracl-form .align-items-center {\n -webkit-box-align: center !important;\n -ms-flex-align: center !important;\n align-items: center !important;\n}\n.daracl-form .col-xs {\n -webkit-flex-grow: 1;\n -ms-flex-positive: 1;\n -webkit-box-flex: 1;\n flex-grow: 1;\n -ms-flex-preferred-size: 0;\n flex-basis: 0;\n max-width: 100%;\n}\n.daracl-form .col-auto {\n -webkit-box-flex: 0;\n -ms-flex: 0 0 auto;\n flex: 0 0 auto;\n width: auto;\n max-width: none;\n}\n.daracl-form .col-fix {\n flex: none;\n}\n.daracl-form .col-full {\n flex: 1;\n overflow: auto;\n}\n.daracl-form .df-field-container {\n overflow: initial;\n position: relative;\n}\n.daracl-form .df-field-container > .df-row {\n margin-top: -10px;\n}\n.daracl-form .df-field-container > div + .df-row {\n margin-top: 0px;\n}\n.daracl-form .df-field-container .df-field {\n position: relative;\n margin-right: 10px;\n}\n.daracl-form .df-field-container .df-field .range-num {\n clear: both;\n display: block;\n width: 100%;\n text-align: left;\n}\n.daracl-form .df-field-container .df-field .file-wrapper {\n border: 1px solid var(--border-color);\n text-align: center;\n display: block;\n width: 100%;\n padding: 0.375rem 0.75rem;\n font-weight: 400;\n line-height: 1.5;\n background-clip: padding-box;\n border-radius: 4px;\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n.daracl-form .daracl-file-list .file-icon {\n width: 20px;\n height: 20px;\n display: inline-block;\n vertical-align: middle;\n cursor: pointer;\n}\n.daracl-form .daracl-file-list .file-icon:hover {\n background-color: var(--button-bg-hover);\n}\n.daracl-form .daracl-file-list .file-icon.download {\n background-image: url(\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiBoZWlnaHQ9IjIwcHgiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjIwcHgiIGZpbGw9IiMwMDAwMDAiPjxnPjxyZWN0IGZpbGw9Im5vbmUiIGhlaWdodD0iMjQiIHdpZHRoPSIyNCIvPjwvZz48Zz48cGF0aCBkPSJNMTgsMTV2M0g2di0zSDR2M2MwLDEuMSwwLjksMiwyLDJoMTJjMS4xLDAsMi0wLjksMi0ydi0zSDE4eiBNMTcsMTFsLTEuNDEtMS40MUwxMywxMi4xN1Y0aC0ydjguMTdMOC40MSw5LjU5TDcsMTFsNSw1IEwxNywxMXoiLz48L2c+PC9zdmc+\");\n}\n.daracl-form .daracl-file-list .file-icon.remove {\n background-image: url(\"data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjBweCIgdmlld0JveD0iMCAwIDI0IDI0IiB3aWR0aD0iMjBweCIgZmlsbD0iIzAwMDAwMCI+PHBhdGggZD0iTTAgMGgyNHYyNEgwVjB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTE2IDl2MTBIOFY5aDhtLTEuNS02aC01bC0xIDFINXYyaDE0VjRoLTMuNWwtMS0xek0xOCA3SDZ2MTJjMCAxLjEuOSAyIDIgMmg4YzEuMSAwIDItLjkgMi0yVjd6Ii8+PC9zdmc+\");\n}\n.daracl-form .daracl-file-list .file-name {\n text-overflow: ellipsis;\n white-space: nowrap;\n word-wrap: normal;\n overflow: hidden;\n display: inline-block;\n vertical-align: middle;\n width: calc(100% - 55px);\n}\n.daracl-form .field-group .field.vertical > * {\n display: block;\n}\n.daracl-form .tab-header {\n list-style: none;\n margin: 0px;\n padding: 0px;\n display: flex;\n line-height: 1.3;\n width: 100%;\n border-bottom: 1px solid var(--border-color);\n}\n.daracl-form .tab-header.tab-al-left {\n justify-content: left;\n}\n.daracl-form .tab-header.tab-al-right {\n justify-content: right;\n}\n.daracl-form .tab-header.tab-al-center {\n justify-content: center;\n}\n.daracl-form .tab-header > .tab-item {\n list-style: none;\n float: left;\n position: relative;\n top: 0;\n margin: 1px 0.4em 0 0;\n padding: 0;\n white-space: nowrap;\n}\n.daracl-form .tab-header > .tab-item.active a {\n color: var(--font-hover-color);\n background-color: var(--tab-bg);\n}\n.daracl-form .tab-header > .tab-item a {\n border-top-left-radius: calc(0.45rem - 1px);\n border-top-right-radius: calc(0.45rem - 1px);\n border: 1px solid transparent;\n border-bottom-width: 0;\n float: left;\n padding: 0.5em 1em;\n text-decoration: none;\n color: var(--font-color);\n height: 30px;\n line-height: 15px;\n}\n.daracl-form .tab-header > .tab-item a:hover {\n background-color: var(--tab-bg-hover);\n border: 1px solid var(--border-color);\n border-bottom-width: 0;\n}\n.daracl-form .df-tab-body .tab-panel {\n display: none;\n}\n.daracl-form .df-tab-body .tab-panel.active {\n display: block;\n}\n.daracl-form .df-btn {\n padding: 5px 10px;\n border-radius: calc(0.45rem - 1px);\n border: 1px solid var(--border-color);\n background-color: var(--button-bg);\n cursor: pointer;\n transition: background-color 0.3s;\n}\n.daracl-form .df-btn:hover {\n color: var(--font-hover-color);\n background-color: var(--button-bg-hover);\n}\n.daracl-form .df-icon {\n display: inline-block;\n width: 21px; /* \uC544\uC774\uCF58\uC758 \uB108\uBE44 \uC124\uC815 */\n height: 21px; /* \uC544\uC774\uCF58\uC758 \uB192\uC774 \uC124\uC815 */\n vertical-align: middle;\n}\n.daracl-form .df-add-icon {\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='20px' viewBox='0 -960 960 960' width='20px' fill='%235f6368'%3E%3Cpath d='M431-431H220.78v-98H431v-210.22h98V-529h210.22v98H529v210.22h-98V-431Z'/%3E%3C/svg%3E\");\n}\n.daracl-form .df-remove-icon {\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' height='20px' viewBox='0 -960 960 960' width='20px' fill='%235f6368'%3E%3Cpath d='M291-221.91 221.91-291l189-189-189-189L291-738.09l189 189 189-189L738.09-669l-189 189 189 189L669-221.91l-189-189-189 189Z'/%3E%3C/svg%3E\");\n}\n.daracl-form .form-group {\n display: -ms-flexbox;\n display: -webkit-box;\n display: flex;\n -ms-flex-direction: row;\n -webkit-box-orient: horizontal;\n -webkit-box-direction: normal;\n flex-direction: row;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n margin-top: var(--field-margin-top);\n margin-bottom: 0px;\n margin-right: 0px !important;\n margin-left: 0px !important;\n}\n.daracl-form .form-group:last-child {\n margin-bottom: 0px;\n}\n.daracl-form .form-group.top {\n flex-direction: column;\n}\n.daracl-form .form-group.top > div {\n max-width: 100% !important;\n}\n.daracl-form .form-group.right {\n -ms-flex-direction: row-reverse !important;\n -webkit-box-orient: horizontal !important;\n -webkit-box-direction: reverse !important;\n flex-direction: row-reverse !important;\n}\n.daracl-form .form-group.bottom {\n flex-direction: column-reverse !important;\n}\n.daracl-form .form-group.bottom > div {\n max-width: 100% !important;\n}\n.daracl-form .form-group .help-message {\n display: none;\n}\n.daracl-form .form-group .help-icon {\n background-repeat: no-repeat;\n background-position-y: center;\n}\n.daracl-form .form-group .help-icon.form-field {\n background-position-x: calc(100% - 15px);\n}\n.daracl-form .form-group .help-icon.daracl-icon {\n display: none;\n position: absolute;\n z-index: 1;\n top: 0px;\n right: 0px;\n height: 100%;\n width: 20px;\n margin-right: 15px;\n}\n.daracl-form .form-group.invalid .form-field {\n border-color: var(--invalid-border-color);\n outline-color: var(--invalid-border-color);\n}\n.daracl-form .form-group.invalid > .df-field-container.required > .df-field .help-icon {\n display: block;\n background-image: url(\"data:image/svg+xml; base64, PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgLTk2MCA5NjAgOTYwIiB3aWR0aD0iMjAiPjxwYXRoIGQ9Im0yNDktMjA3LTQyLTQyIDIzMS0yMzEtMjMxLTIzMSA0Mi00MiAyMzEgMjMxIDIzMS0yMzEgNDIgNDItMjMxIDIzMSAyMzEgMjMxLTQyIDQyLTIzMS0yMzEtMjMxIDIzMVoiIHN0eWxlPSImIzEwOyAgICBmaWxsOiAjZmY3MzczOyYjMTA7Ii8+PC9zdmc+\");\n}\n.daracl-form .form-group.invalid .help-message {\n display: block;\n color: var(--invalid-font-color);\n}\n.daracl-form .form-group.valid > .df-field-container.required > .df-field .help-icon {\n display: block;\n background-image: url(\"data:image/svg+xml; base64, PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgLTk2MCA5NjAgOTYwIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHN0eWxlPSImIzEwOyAgICBmaWxsOiAjMTlhOTc0OyYjMTA7Ij48cGF0aCBkPSJNMzc4LTI0NiAxNTQtNDcwbDQzLTQzIDE4MSAxODEgMzg0LTM4NCA0MyA0My00MjcgNDI3WiIvPjwvc3ZnPg==\");\n}\n.daracl-form .form-group .file-label {\n border: 1px solid var(--border-color);\n display: inline;\n width: 100%;\n padding: 3px 15px;\n line-height: 1;\n background-clip: padding-box;\n border-radius: 4px;\n transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n.daracl-form .form-group .file-label:hover {\n background-color: var(--button-bg-hover);\n}\n.daracl-form .df-grid-field {\n margin-right: 10px;\n}\n.daracl-form .df-grid-field .df-grid-btn-area {\n border: 1px solid var(--border-color);\n padding: 3px;\n}\n.daracl-form .df-grid-field .df-grid-container {\n width: 100%;\n height: auto;\n overflow-y: auto;\n border: 1px solid var(--border-color);\n}\n.daracl-form .df-grid-field .df-grid-container .df-btn {\n padding: 3px 5px;\n}\n.daracl-form .df-grid-field .df-grid-container .df-grid {\n width: 100%;\n border-top-width: 0px;\n border-collapse: collapse;\n}\n.daracl-form .df-grid-field .df-grid-container .df-grid > thead th {\n position: sticky;\n top: 0px;\n z-index: 10;\n border-bottom: 1px solid var(--border-color);\n background-color: var(--bg-grid-header);\n text-align: center;\n}\n.daracl-form .df-grid-field .df-grid-container .df-grid .help-message {\n display: none;\n}\n.daracl-form .df-grid-field .df-grid-container .df-grid td,\n.daracl-form .df-grid-field .df-grid-container .df-grid th {\n padding: 3px 5px;\n}\n.daracl-form .df-grid-field .df-grid-container .df-grid .help-icon {\n background-repeat: no-repeat;\n background-position-y: center;\n}\n.daracl-form .df-grid-field .df-grid-container .df-grid .help-icon.form-field {\n background-position-x: calc(100% - 15px);\n}\n.daracl-form .df-grid-field .df-grid-container .df-grid .help-icon.daracl-icon {\n display: none;\n position: absolute;\n z-index: 1;\n top: 0px;\n right: 0px;\n height: 100%;\n width: 20px;\n margin-right: 15px;\n}\n.daracl-form .df-grid-field .df-grid-container .df-grid .grid-column {\n position: relative;\n}\n.daracl-form .df-grid-field .df-grid-container .df-grid .invalid .form-field {\n border-color: var(--invalid-border-color);\n outline-color: var(--invalid-border-color);\n}\n.daracl-form .df-grid-field .df-grid-container .df-grid .invalid > .grid-column.required .df-field .help-icon {\n display: block;\n background-image: url(\"data:image/svg+xml; base64, PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgLTk2MCA5NjAgOTYwIiB3aWR0aD0iMjAiPjxwYXRoIGQ9Im0yNDktMjA3LTQyLTQyIDIzMS0yMzEtMjMxLTIzMSA0Mi00MiAyMzEgMjMxIDIzMS0yMzEgNDIgNDItMjMxIDIzMSAyMzEgMjMxLTQyIDQyLTIzMS0yMzEtMjMxIDIzMVoiIHN0eWxlPSImIzEwOyAgICBmaWxsOiAjZmY3MzczOyYjMTA7Ii8+PC9zdmc+\");\n}\n.daracl-form .df-grid-field .df-grid-container .df-grid .invalid .help-message {\n display: block;\n position: absolute;\n border: 1px solid var(--invalid-border-color);\n border-color: var(--invalid-border-color) transparent transparent transparent;\n top: calc(100% + 6px);\n left: 50%;\n transform: translateX(-50%);\n min-width: 270px;\n padding: 5px 5px;\n border-radius: 0.4rem;\n z-index: 2;\n background-color: var(--invalid-background-color);\n color: var(--invalid-font-color);\n}\n.daracl-form .df-grid-field .df-grid-container .df-grid .invalid .help-message::after {\n content: \"\";\n position: absolute;\n top: 0;\n left: 50%;\n width: 0;\n height: 0;\n border: 7px solid transparent;\n border-bottom-color: var(--invalid-border-color);\n border-top: 0;\n border-left: 0;\n margin-left: -3.5px;\n margin-top: -7px;\n}\n.daracl-form .df-grid-field .df-grid-container .df-grid .valid > .grid-column.required .df-field .help-icon {\n display: block;\n background-image: url(\"data:image/svg+xml; base64, PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgLTk2MCA5NjAgOTYwIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHN0eWxlPSImIzEwOyAgICBmaWxsOiAjMTlhOTc0OyYjMTA7Ij48cGF0aCBkPSJNMzc4LTI0NiAxNTQtNDcwbDQzLTQzIDE4MSAxODEgMzg0LTM4NCA0MyA0My00MjcgNDI3WiIvPjwvc3ZnPg==\");\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VSb290IjoiRDpcXDAzLm9wZW5zb3VyY2VzXFxkYXJhLWZvcm1cXHN0eWxlIiwic291cmNlcyI6WyJkYXJhY2wuZm9ybS5zY3NzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUEwQkE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7QUFBQTtFQUVFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOzs7QUFHRjtFQUNFO0VBQ0E7RUFDQTs7QUFFQTtBQUFBO0FBQUE7RUFHRTs7QUFJQTtFQUNFOztBQUdGO0VBQ0U7O0FBR0Y7RUFDRTs7QUFLRjtFQUNFO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBRUU7O0FBS047RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBR0Y7QUFBQTtBQUFBO0VBR0U7RUFDQTs7QUFDQTtBQUFBO0FBQUE7RUFDRTtFQUNBOztBQUlKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFDQTs7QUFFQTtFQU1FOztBQUxBO0VBQ0U7RUFDQTs7QUFNSjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUdGO0VBQ0U7O0FBS047RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBRUU7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUdGO0VBQ0U7RUFDQTtFQUNBOztBQUdGO0VBQ0U7O0FBR0Y7RUFDRTs7QUFHRjtFQUNFOztBQUdGO0VBQ0U7O0FBSUo7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTs7QUE5UE47RUFDRTs7QUFDQTtFQUNFOztBQUlKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7O0FBR0Y7RUFDRTs7QUFDQTtFQUNFOztBQXVQRjtFQUNFLFlBNVFFO0VBNlFGO0VBQ0E7RUFDQTtFQUNBLFdBaFJFOztBQTJRSjtFQUNFLFlBNVFFO0VBNlFGO0VBQ0E7RUFDQTtFQUNBLFdBaFJFOztBQTJRSjtFQUNFLFlBNVFFO0VBNlFGO0VBQ0E7RUFDQTtFQUNBLFdBaFJFOztBQTJRSjtFQUNFLFlBNVFFO0VBNlFGO0VBQ0E7RUFDQTtFQUNBLFdBaFJFOztBQTJRSjtFQUNFLFlBNVFFO0VBNlFGO0VBQ0E7RUFDQTtFQUNBLFdBaFJFOztBQTJRSjtFQUNFLFlBNVFFO0VBNlFGO0VBQ0E7RUFDQTtFQUNBLFdBaFJFOztBQTJRSjtFQUNFLFlBNVFFO0VBNlFGO0VBQ0E7RUFDQTtFQUNBLFdBaFJFOztBQTJRSjtFQUNFLFlBNVFFO0VBNlFGO0VBQ0E7RUFDQTtFQUNBLFdBaFJFOztBQTJRSjtFQUNFLFlBNVFFO0VBNlFGO0VBQ0E7RUFDQTtFQUNBLFdBaFJFOztBQTJRSjtFQUNFLFlBNVFFO0VBNlFGO0VBQ0E7RUFDQTtFQUNBLFdBaFJFOztBQTJRSjtFQUNFLFlBNVFFO0VBNlFGO0VBQ0E7RUFDQTtFQUNBLFdBaFJFOztBQTJRSjtFQUNFLFlBNVFFO0VBNlFGO0VBQ0E7RUFDQTtFQUNBLFdBaFJFOztBQW9STjtFQUNFO0VBQ0E7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFHRjtFQUNFOztBQUdGO0VBQ0U7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7O0FBQ0E7RUFDRTs7QUFHRjtFQUNFOztBQUVGO0VBQ0U7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7RUFDQTtFQUNBOztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBTUo7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0U7O0FBR0Y7RUFDRTs7QUFHRjtFQUNFOztBQUlKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBTUE7RUFDRTs7QUFLTjtFQUNFO0VBQ0E7RUFDQTtFQUVBO0VBQ0E7RUFDQTtFQUNBOztBQUdFO0VBQ0U7O0FBRUY7RUFDRTs7QUFFRjtFQUNFOztBQUlKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBR0U7RUFDRTtFQUNBOztBQUlKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTtFQUNBO0VBQ0E7O0FBT047RUFDRTs7QUFFQTtFQUNFOztBQUtOO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFFQTtFQUNBOztBQUVBO0VBQ0U7RUFDQTs7QUFJSjtFQUNFO0VBQ0E7RUFDQTtFQUNBOztBQUdGO0VBQ0U7O0FBR0Y7RUFDRTs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0U7O0FBamZKO0VBQ0U7O0FBQ0E7RUFDRTs7QUFJSjtFQUNFO0VBQ0E7RUFDQTtFQUNBOztBQUdGO0VBQ0U7O0FBQ0E7RUFDRTs7QUFxZUY7RUFDRTs7QUFHRjtFQUNFO0VBQ0E7O0FBRUE7RUFDRTs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBS0Y7RUFDRTtFQUNBOztBQUdGO0VBQ0U7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7O0FBTUE7RUFDRTtFQUNBOztBQUtOO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFOztBQUlOO0VBQ0U7O0FBQ0E7RUFDRTtFQUNBOztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTs7QUFHRjtFQUNFO0VBQ0E7RUFDQTs7QUFHRTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFJSjtFQUNFOztBQUdGO0FBQUE7RUFFRTs7QUFHRjtFQUNFO0VBQ0E7O0FBRUE7RUFDRTs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBSUo7RUFDRTs7QUFJQTtFQUNFO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBOztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBQ0E7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBT0Y7RUFDRTtFQUNBIiwic291cmNlc0NvbnRlbnQiOlsiQHVzZSBcInNhc3M6bGlzdFwiO1xuJHNpemVzOiA4LjMzMzMzMzMzJSwgMTYuNjY2NjY2NjclLCAyNSUsIDMzLjMzMzMzMzMzJSwgNDEuNjY2NjY2NjclLCA1MCUsIDU4LjMzMzMzMzMzJSwgNjYuNjY2NjY2NjclLCA3NSUsIDgzLjMzMzMzMzMzJSwgOTEuNjY2NjY2NjclLCAxMDAlO1xyXG5cclxuQG1peGluIHJvd0ZsZXgoKSB7XHJcbiAgJi50b3Age1xyXG4gICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgID4gZGl2IHtcclxuICAgICAgbWF4LXdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAmLnJpZ2h0IHtcclxuICAgIC1tcy1mbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDtcclxuICAgIC13ZWJraXQtYm94LW9yaWVudDogaG9yaXpvbnRhbCAhaW1wb3J0YW50O1xyXG4gICAgLXdlYmtpdC1ib3gtZGlyZWN0aW9uOiByZXZlcnNlICFpbXBvcnRhbnQ7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93LXJldmVyc2UgIWltcG9ydGFudDtcclxuICB9XHJcblxyXG4gICYuYm90dG9tIHtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW4tcmV2ZXJzZSAhaW1wb3J0YW50O1xyXG4gICAgPiBkaXYge1xyXG4gICAgICBtYXgtd2lkdGg6IDEwMCUgIWltcG9ydGFudDtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbi5kYXJhY2wtZm9ybSB7XHJcbiAgLS1ib3JkZXItY29sb3I6ICNkZmUxZTU7XHJcbiAgLS1jb2xvci1kYW5nZXI6ICNkOTUzNGY7XHJcbiAgLS1iYWNrZ3JvdW5kLWRhbmdlcjogI2Q5NTM0ZjtcclxuICAtLWZvbnQtY29sb3I6ICM2ODY4Njg7XHJcbiAgLS1mb250LWhvdmVyLWNvbG9yOiAjM2EzZDQxO1xyXG4gIC0taW52YWxpZC1mb250LWNvbG9yOiAjZmY0MTM2O1xyXG4gIC0taW52YWxpZC1ib3JkZXItY29sb3I6ICNmZmI2YjQ7XHJcbiAgLS1pbnZhbGlkLWJhY2tncm91bmQtY29sb3I6ICNmZGQ7XHJcbiAgLS1idXR0b24tYmc6ICNmNmY2ZjY7XHJcbiAgLS1idXR0b24tYmctaG92ZXI6ICNlYmViZWI7XHJcbiAgLS10YWItYmc6ICNmNmY2ZjY7XHJcbiAgLS10YWItYmctaG92ZXI6ICNlYmViZWI7XHJcbiAgLS10b29sdGlwLWJhY2tncm91bmQ6ICMzZTNlM2U7XHJcbiAgLS10b29sdGlwLWNvbG9yOiAjZmZmO1xyXG4gIC0tZmllbGQtbWFyZ2luLXRvcDogMTBweDtcclxuICAtLWlucHV0LWJnOiAjZmZmO1xyXG4gIC0taW5wdXQtY29sb3I6ICMyMTI1Mjk7XHJcbiAgLS1pbnB1dC1kaXNhYmxlZC1iZzogI2ViZWJlYjtcclxuICAtLWJnLWdyaWQtaGVhZGVyOiAjZjFmMWYxO1xyXG59XHJcblxyXG5ib2R5LmRhcmsgLmRhcmFjbC1mb3JtLFxyXG4uZGFyYWNsLWZvcm0uZGFyayB7XHJcbiAgLS1ib3JkZXItY29sb3I6ICM0MTQ0NGM7XHJcbiAgLS1jb2xvci1kYW5nZXI6ICNkOTUzNGY7XHJcbiAgLS1iYWNrZ3JvdW5kLWRhbmdlcjogI2Q5NTM0ZjtcclxuICAtLWZvbnQtY29sb3I6ICNiOWJkYzE7XHJcbiAgLS1mb250LWhvdmVyLWNvbG9yOiAjZjVmM2YzO1xyXG4gIC0taW52YWxpZC1mb250LWNvbG9yOiAjZmY0MTM2O1xyXG4gIC0taW52YWxpZC1ib3JkZXItY29sb3I6ICNmZmI2YjQ7XHJcbiAgLS1pbnZhbGlkLWJhY2tncm91bmQtY29sb3I6ICNmZGQ7XHJcbiAgLS1idXR0b24tYmc6ICM0MzVlYmU7XHJcbiAgLS1idXR0b24tYmctaG92ZXI6ICMzOTUwYTI7XHJcbiAgLS10YWItYmc6ICMyMzQxOGY7XHJcbiAgLS10YWItYmctaG92ZXI6ICM1MTZkYjE7XHJcbiAgLS10b29sdGlwLWJhY2tncm91bmQ6ICMzZTNlM2U7XHJcbiAgLS10b29sdGlwLWNvbG9yOiAjZmZmO1xyXG4gIC0tZmllbGQtbWFyZ2luLXRvcDogMTBweDtcclxuICAtLWlucHV0LWJnOiB0cmFuc3BhcmVudDtcclxuICAtLWlucHV0LWNvbG9yOiAjYzZjZGRiO1xyXG4gIC0taW5wdXQtZGlzYWJsZWQtYmc6ICM4Nzg3ODc7XHJcbiAgLS1iZy1ncmlkLWhlYWRlcjogIzg3ODc4NztcclxufVxyXG5cclxuLmRhcmFjbC1mb3JtIHtcclxuICBwYWRkaW5nOiAwcHg7XHJcbiAgbWFyZ2luLXRvcDogMTBweDtcclxuICBjb2xvcjogdmFyKC0tZm9udC1jb2xvcik7XHJcblxyXG4gICosXHJcbiAgOjphZnRlcixcclxuICA6OmJlZm9yZSB7XHJcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gIH1cclxuXHJcbiAgLnR4dCB7XHJcbiAgICAmLWxlZnQge1xyXG4gICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xyXG4gICAgfVxyXG5cclxuICAgICYtY2VudGVyIHtcclxuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgfVxyXG5cclxuICAgICYtcmlnaHQge1xyXG4gICAgICB0ZXh0LWFsaWduOiByaWdodDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gICZbZGF0YS1kZi1tb2RlPVwidmlld1wiXSB7XHJcbiAgICAuZm9ybS1maWVsZCB7XHJcbiAgICAgIGJvcmRlci13aWR0aDogMHB4O1xyXG4gICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xyXG4gICAgICBib3JkZXItY29sb3I6IHRyYW5zcGFyZW50O1xyXG4gICAgICBvdXRsaW5lOiBpbml0aWFsO1xyXG5cclxuICAgICAgJjpmb2N1cy12aXNpYmxlLFxyXG4gICAgICAmOmZvY3VzIHtcclxuICAgICAgICBib3JkZXItd2lkdGg6IDBweDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmRmLWhpZGRlbiB7XHJcbiAgICBtYXgtaGVpZ2h0OiAwdmggIWltcG9ydGFudDtcclxuICAgIHdpZHRoOiAwcHg7XHJcbiAgICB2aXNpYmlsaXR5OiBjb2xsYXBzZTtcclxuICAgIGRpc3BsYXk6IG5vbmUgIWltcG9ydGFudDtcclxuICAgIHBhZGRpbmc6IDBweCAhaW1wb3J0YW50O1xyXG4gICAgbWFyZ2luOiAwcHggIWltcG9ydGFudDtcclxuICB9XHJcblxyXG4gIGlucHV0LFxyXG4gIHNlbGVjdCxcclxuICB0ZXh0YXJlYSB7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDtcclxuICAgIGNvbG9yOiB2YXIoLS1mb250LWNvbG9yKTtcclxuICAgICZbZGlzYWJsZWRdIHtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taW5wdXQtZGlzYWJsZWQtYmcpO1xyXG4gICAgICBvcGFjaXR5OiAwLjg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuZGYtbGFiZWwge1xyXG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgZm9udC13ZWlnaHQ6IDcwMDtcclxuICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XHJcbiAgICBwYWRkaW5nOiA1cHggMTVweCAwcHggMHB4O1xyXG4gICAgb3ZlcmZsb3c6IGluaXRpYWw7XHJcbiAgICAvLyDtmZXsnbjtlaDqsoMuXHJcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XHJcbiAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XHJcblxyXG4gICAgLnJlcXVpcmVkIHtcclxuICAgICAgJjo6YWZ0ZXIge1xyXG4gICAgICAgIGNvbnRlbnQ6IFwiKlwiO1xyXG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGNvbG9yOiB2YXIoLS1jb2xvci1kYW5nZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIC5kZi10b29sdGlwIHtcclxuICAgICAgdmlzaWJpbGl0eTogdmlzaWJsZTtcclxuICAgICAgY29sb3I6IHZhcigtLXRvb2x0aXAtY29sb3IpO1xyXG4gICAgICBiYWNrZ3JvdW5kOiB2YXIoLS10b29sdGlwLWJhY2tncm91bmQpO1xyXG4gICAgICB3aWR0aDogMTZweDtcclxuICAgICAgaGVpZ2h0OiAxNnB4O1xyXG4gICAgICBib3JkZXItcmFkaXVzOiA4cHg7XHJcbiAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgbGluZS1oZWlnaHQ6IDE2cHg7XHJcbiAgICAgIG1hcmdpbjogMCA1cHg7XHJcbiAgICAgIGZvbnQtc2l6ZTogMTJweDtcclxuICAgICAgY3Vyc29yOiBoZWxwO1xyXG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHJcbiAgICAgIC50b29sdGlwIHtcclxuICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgICAgIHRleHQtYWxpZ246IGluaXRpYWw7XHJcbiAgICAgICAgYmFja2dyb3VuZDogdmFyKC0tdG9vbHRpcC1iYWNrZ3JvdW5kKTtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7XHJcbiAgICAgICAgY29sb3I6IHZhcigtLXRvb2x0aXAtY29sb3IpO1xyXG4gICAgICAgIHBhZGRpbmc6IDEwcHggNXB4O1xyXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICB6LWluZGV4OiAyO1xyXG4gICAgICAgIGxlZnQ6IC0xMHB4O1xyXG4gICAgICAgIG1pbi13aWR0aDogbWF4LWNvbnRlbnQ7XHJcbiAgICAgICAgdGV4dC1zaGFkb3c6IG5vbmU7XHJcbiAgICAgICAgY3Vyc29yOiBkZWZhdWx0O1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmOmhvdmVyIC50b29sdGlwIHtcclxuICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmZvcm0tZmllbGQge1xyXG4gICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBwYWRkaW5nOiAwLjM3NXJlbSAwLjc1cmVtO1xyXG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcclxuICAgIGxpbmUtaGVpZ2h0OiAxLjU7XHJcbiAgICBib3JkZXItcmFkaXVzOiA0cHg7XHJcbiAgICB0cmFuc2l0aW9uOiBib3JkZXItY29sb3IgMC4xNXMgZWFzZS1pbi1vdXQsIGJveC1zaGFkb3cgMC4xNXMgZWFzZS1pbi1vdXQ7XHJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1pbnB1dC1iZyk7XHJcbiAgICBiYWNrZ3JvdW5kLWNsaXA6IHBhZGRpbmctYm94O1xyXG4gICAgY29sb3I6IHZhcigtLWlucHV0LWNvbG9yKTtcclxuXHJcbiAgICAmW3R5cGU9XCJyYWRpb1wiXSxcclxuICAgICZbdHlwZT1cImNoZWNrYm94XCJdIHtcclxuICAgICAgd2lkdGg6IDE0cHg7XHJcbiAgICAgIGRpc3BsYXk6IGlubGluZTtcclxuICAgICAgbWluLWhlaWdodDogMHB4O1xyXG4gICAgICBwYWRkaW5nOiAwcHg7XHJcbiAgICAgIG1hcmdpbjogMHB4O1xyXG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG4gICAgfVxyXG5cclxuICAgICYuZHJvcGRvd24ge1xyXG4gICAgICBhcHBlYXJhbmNlOiBub25lO1xyXG4gICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XHJcbiAgICAgIC1tb3otYXBwZWFyYW5jZTogbm9uZTtcclxuICAgIH1cclxuXHJcbiAgICAmLnRleHRhcmVhIHtcclxuICAgICAgcGFkZGluZy1yaWdodDogMHB4O1xyXG4gICAgfVxyXG5cclxuICAgICZbdHlwZT1cIm51bWJlclwiXSB7XHJcbiAgICAgIHBhZGRpbmctcmlnaHQ6IDNweDtcclxuICAgIH1cclxuXHJcbiAgICAmLmZpbGUge1xyXG4gICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgfVxyXG5cclxuICAgICYucmFuZ2Uge1xyXG4gICAgICBwYWRkaW5nOiAwcHg7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuZGYtcm93IHtcclxuICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xyXG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgLW1zLWZsZXg6IDAgMSBhdXRvO1xyXG4gICAgLXdlYmtpdC1ib3gtZmxleDogMDtcclxuICAgIGZsZXg6IDAgMSBhdXRvO1xyXG4gICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3c7XHJcbiAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7XHJcbiAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XHJcbiAgICAtbXMtZmxleC13cmFwOiB3cmFwO1xyXG4gICAgZmxleC13cmFwOiB3cmFwO1xyXG5cclxuICAgICYudmVydGljYWwge1xyXG4gICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIH1cclxuXHJcbiAgICAmLmhvcml6b250YWwge1xyXG4gICAgICAtd2Via2l0LWJveC1mbGV4OiAwO1xyXG4gICAgICAtbXMtZmxleDogMCAwIGF1dG87XHJcbiAgICAgIGZsZXg6IDAgMCBhdXRvO1xyXG4gICAgICB3aWR0aDogYXV0bztcclxuICAgICAgbWF4LXdpZHRoOiBub25lO1xyXG5cclxuICAgICAgPiAuZm9ybS1ncm91cCA+IC5lbXB0eSB7XHJcbiAgICAgICAgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50O1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgQGluY2x1ZGUgcm93RmxleCgpO1xyXG4gIH1cclxuXHJcbiAgQGVhY2ggJHNpemUgaW4gJHNpemVzIHtcclxuICAgICRpOiBsaXN0LmluZGV4KCRzaXplcywgJHNpemUpO1xyXG4gICAgJGNsYXNzTmFtZTogXCIuY29sLXhzLSN7JGl9XCI7XHJcbiAgICAjeyRjbGFzc05hbWV9IHtcclxuICAgICAgZmxleC1iYXNpczogJHNpemU7XHJcbiAgICAgIC13ZWJraXQtYm94LWZsZXg6IDA7XHJcbiAgICAgIC1tcy1mbGV4OiAwIDAgJHNpemU7XHJcbiAgICAgIGZsZXg6IDAgMCAkc2l6ZTtcclxuICAgICAgbWF4LXdpZHRoOiAkc2l6ZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5hbGlnbi1pdGVtcy1jZW50ZXIge1xyXG4gICAgLXdlYmtpdC1ib3gtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50O1xyXG4gICAgLW1zLWZsZXgtYWxpZ246IGNlbnRlciAhaW1wb3J0YW50O1xyXG4gICAgYWxpZ24taXRlbXM6IGNlbnRlciAhaW1wb3J0YW50O1xyXG4gIH1cclxuXHJcbiAgLmNvbC14cyB7XHJcbiAgICAtd2Via2l0LWZsZXgtZ3JvdzogMTtcclxuICAgIC1tcy1mbGV4LXBvc2l0aXZlOiAxO1xyXG4gICAgLXdlYmtpdC1ib3gtZmxleDogMTtcclxuICAgIGZsZXgtZ3JvdzogMTtcclxuICAgIC1tcy1mbGV4LXByZWZlcnJlZC1zaXplOiAwO1xyXG4gICAgZmxleC1iYXNpczogMDtcclxuICAgIG1heC13aWR0aDogMTAwJTtcclxuICB9XHJcblxyXG4gIC5jb2wtYXV0byB7XHJcbiAgICAtd2Via2l0LWJveC1mbGV4OiAwO1xyXG4gICAgLW1zLWZsZXg6IDAgMCBhdXRvO1xyXG4gICAgZmxleDogMCAwIGF1dG87XHJcbiAgICB3aWR0aDogYXV0bztcclxuICAgIG1heC13aWR0aDogbm9uZTtcclxuICB9XHJcblxyXG4gIC5jb2wtZml4IHtcclxuICAgIGZsZXg6IG5vbmU7XHJcbiAgfVxyXG5cclxuICAuY29sLWZ1bGwge1xyXG4gICAgZmxleDogMTtcclxuICAgIG92ZXJmbG93OiBhdXRvO1xyXG4gIH1cclxuXHJcbiAgLmRmLWZpZWxkLWNvbnRhaW5lciB7XHJcbiAgICBvdmVyZmxvdzogaW5pdGlhbDtcclxuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgID4gLmRmLXJvdyB7XHJcbiAgICAgIG1hcmdpbi10b3A6IC0xMHB4O1xyXG4gICAgfVxyXG5cclxuICAgID4gZGl2ICsgLmRmLXJvdyB7XHJcbiAgICAgIG1hcmdpbi10b3A6IDBweDtcclxuICAgIH1cclxuICAgIC5kZi1maWVsZCB7XHJcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgbWFyZ2luLXJpZ2h0OiAxMHB4O1xyXG5cclxuICAgICAgLnJhbmdlLW51bSB7XHJcbiAgICAgICAgY2xlYXI6IGJvdGg7XHJcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcclxuICAgICAgfVxyXG5cclxuICAgICAgLmZpbGUtd3JhcHBlciB7XHJcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTtcclxuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgcGFkZGluZzogMC4zNzVyZW0gMC43NXJlbTtcclxuICAgICAgICBmb250LXdlaWdodDogNDAwO1xyXG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjU7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jbGlwOiBwYWRkaW5nLWJveDtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiA0cHg7XHJcbiAgICAgICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IDAuMTVzIGVhc2UtaW4tb3V0O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuZGFyYWNsLWZpbGUtbGlzdCB7XHJcbiAgICAuZmlsZS1pY29uIHtcclxuICAgICAgd2lkdGg6IDIwcHg7XHJcbiAgICAgIGhlaWdodDogMjBweDtcclxuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcblxyXG4gICAgICAmOmhvdmVyIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1idXR0b24tYmctaG92ZXIpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmLmRvd25sb2FkIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7YmFzZTY0LFBITjJaeUI0Yld4dWN6MGlhSFIwY0RvdkwzZDNkeTUzTXk1dmNtY3ZNakF3TUM5emRtY2lJR1Z1WVdKc1pTMWlZV05yWjNKdmRXNWtQU0p1WlhjZ01DQXdJREkwSURJMElpQm9aV2xuYUhROUlqSXdjSGdpSUhacFpYZENiM2c5SWpBZ01DQXlOQ0F5TkNJZ2QybGtkR2c5SWpJd2NIZ2lJR1pwYkd3OUlpTXdNREF3TURBaVBqeG5Qanh5WldOMElHWnBiR3c5SW01dmJtVWlJR2hsYVdkb2REMGlNalFpSUhkcFpIUm9QU0l5TkNJdlBqd3ZaejQ4Wno0OGNHRjBhQ0JrUFNKTk1UZ3NNVFYyTTBnMmRpMHpTRFIyTTJNd0xERXVNU3d3TGprc01pd3lMREpvTVRKak1TNHhMREFzTWkwd0xqa3NNaTB5ZGkwelNERTRlaUJOTVRjc01URnNMVEV1TkRFdE1TNDBNVXd4TXl3eE1pNHhOMVkwYUMweWRqZ3VNVGRNT0M0ME1TdzVMalU1VERjc01URnNOU3cxSUV3eE55d3hNWG9pTHo0OEwyYytQQzl6ZG1jK1wiKTtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi5yZW1vdmUge1xyXG4gICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbDtiYXNlNjQsUEhOMlp5QjRiV3h1Y3owaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1qQXdNQzl6ZG1jaUlHaGxhV2RvZEQwaU1qQndlQ0lnZG1sbGQwSnZlRDBpTUNBd0lESTBJREkwSWlCM2FXUjBhRDBpTWpCd2VDSWdabWxzYkQwaUl6QXdNREF3TUNJK1BIQmhkR2dnWkQwaVRUQWdNR2d5TkhZeU5FZ3dWakI2SWlCbWFXeHNQU0p1YjI1bElpOCtQSEJoZEdnZ1pEMGlUVEUySURsMk1UQklPRlk1YURodExURXVOUzAyYUMwMWJDMHhJREZJTlhZeWFERTBWalJvTFRNdU5Xd3RNUzB4ZWsweE9DQTNTRFoyTVRKak1DQXhMakV1T1NBeUlESWdNbWc0WXpFdU1TQXdJREl0TGprZ01pMHlWamQ2SWk4K1BDOXpkbWMrXCIpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLmZpbGUtbmFtZSB7XHJcbiAgICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xyXG4gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xyXG4gICAgICB3b3JkLXdyYXA6IG5vcm1hbDtcclxuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcclxuICAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG4gICAgICB3aWR0aDogY2FsYygxMDAlIC0gNTVweCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuZmllbGQtZ3JvdXAge1xyXG4gICAgLmZpZWxkLnZlcnRpY2FsIHtcclxuICAgICAgPiAqIHtcclxuICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLnRhYi1oZWFkZXIge1xyXG4gICAgbGlzdC1zdHlsZTogbm9uZTtcclxuICAgIG1hcmdpbjogMHB4O1xyXG4gICAgcGFkZGluZzogMHB4O1xyXG5cclxuICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICBsaW5lLWhlaWdodDogMS4zO1xyXG4gICAgd2lkdGg6IDEwMCU7XHJcbiAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTtcclxuXHJcbiAgICAmLnRhYi1hbCB7XHJcbiAgICAgICYtbGVmdCB7XHJcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBsZWZ0O1xyXG4gICAgICB9XHJcbiAgICAgICYtcmlnaHQge1xyXG4gICAgICAgIGp1c3RpZnktY29udGVudDogcmlnaHQ7XHJcbiAgICAgIH1cclxuICAgICAgJi1jZW50ZXIge1xyXG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgPiAudGFiLWl0ZW0ge1xyXG4gICAgICBsaXN0LXN0eWxlOiBub25lO1xyXG4gICAgICBmbG9hdDogbGVmdDtcclxuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICB0b3A6IDA7XHJcbiAgICAgIG1hcmdpbjogMXB4IDAuNGVtIDAgMDtcclxuICAgICAgcGFkZGluZzogMDtcclxuICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcclxuXHJcbiAgICAgICYuYWN0aXZlIHtcclxuICAgICAgICBhIHtcclxuICAgICAgICAgIGNvbG9yOiB2YXIoLS1mb250LWhvdmVyLWNvbG9yKTtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRhYi1iZyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBhIHtcclxuICAgICAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiBjYWxjKDAuNDVyZW0gLSAxcHgpO1xyXG4gICAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiBjYWxjKDAuNDVyZW0gLSAxcHgpO1xyXG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHRyYW5zcGFyZW50O1xyXG4gICAgICAgIGJvcmRlci1ib3R0b20td2lkdGg6IDA7XHJcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XHJcbiAgICAgICAgcGFkZGluZzogMC41ZW0gMWVtO1xyXG4gICAgICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTtcclxuICAgICAgICBjb2xvcjogdmFyKC0tZm9udC1jb2xvcik7XHJcbiAgICAgICAgaGVpZ2h0OiAzMHB4O1xyXG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxNXB4O1xyXG5cclxuICAgICAgICAmOmhvdmVyIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXRhYi1iZy1ob3Zlcik7XHJcbiAgICAgICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpO1xyXG4gICAgICAgICAgYm9yZGVyLWJvdHRvbS13aWR0aDogMDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5kZi10YWItYm9keSB7XHJcbiAgICAudGFiLXBhbmVsIHtcclxuICAgICAgZGlzcGxheTogbm9uZTtcclxuXHJcbiAgICAgICYuYWN0aXZlIHtcclxuICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmRmLWJ0biB7XHJcbiAgICBwYWRkaW5nOiA1cHggMTBweDtcclxuICAgIGJvcmRlci1yYWRpdXM6IGNhbGMoMC40NXJlbSAtIDFweCk7XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpO1xyXG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWJnKTtcclxuXHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuM3M7XHJcblxyXG4gICAgJjpob3ZlciB7XHJcbiAgICAgIGNvbG9yOiB2YXIoLS1mb250LWhvdmVyLWNvbG9yKTtcclxuICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWJnLWhvdmVyKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC5kZi1pY29uIHtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgIHdpZHRoOiAyMXB4OyAvKiDslYTsnbTsvZjsnZgg64SI67mEIOyEpOyglSAqL1xyXG4gICAgaGVpZ2h0OiAyMXB4OyAvKiDslYTsnbTsvZjsnZgg64aS7J20IOyEpOyglSAqL1xyXG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuICB9XHJcblxyXG4gIC5kZi1hZGQtaWNvbiB7XHJcbiAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWwsJTNDc3ZnIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZycgaGVpZ2h0PScyMHB4JyB2aWV3Qm94PScwIC05NjAgOTYwIDk2MCcgd2lkdGg9JzIwcHgnIGZpbGw9JyUyMzVmNjM2OCclM0UlM0NwYXRoIGQ9J000MzEtNDMxSDIyMC43OHYtOThINDMxdi0yMTAuMjJoOThWLTUyOWgyMTAuMjJ2OThINTI5djIxMC4yMmgtOThWLTQzMVonLyUzRSUzQy9zdmclM0VcIik7XHJcbiAgfVxyXG5cclxuICAuZGYtcmVtb3ZlLWljb24ge1xyXG4gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKFwiZGF0YTppbWFnZS9zdmcreG1sLCUzQ3N2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIGhlaWdodD0nMjBweCcgdmlld0JveD0nMCAtOTYwIDk2MCA5NjAnIHdpZHRoPScyMHB4JyBmaWxsPSclMjM1ZjYzNjgnJTNFJTNDcGF0aCBkPSdNMjkxLTIyMS45MSAyMjEuOTEtMjkxbDE4OS0xODktMTg5LTE4OUwyOTEtNzM4LjA5bDE4OSAxODkgMTg5LTE4OUw3MzguMDktNjY5bC0xODkgMTg5IDE4OSAxODlMNjY5LTIyMS45MWwtMTg5LTE4OS0xODkgMTg5WicvJTNFJTNDL3N2ZyUzRVwiKTtcclxuICB9XHJcblxyXG4gIC5mb3JtLWdyb3VwIHtcclxuICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94O1xyXG4gICAgZGlzcGxheTogLXdlYmtpdC1ib3g7XHJcbiAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgLW1zLWZsZXgtZGlyZWN0aW9uOiByb3c7XHJcbiAgICAtd2Via2l0LWJveC1vcmllbnQ6IGhvcml6b250YWw7XHJcbiAgICAtd2Via2l0LWJveC1kaXJlY3Rpb246IG5vcm1hbDtcclxuICAgIGZsZXgtZGlyZWN0aW9uOiByb3c7XHJcbiAgICAtbXMtZmxleC13cmFwOiB3cmFwO1xyXG4gICAgZmxleC13cmFwOiB3cmFwO1xyXG4gICAgbWFyZ2luLXRvcDogdmFyKC0tZmllbGQtbWFyZ2luLXRvcCk7XHJcbiAgICBtYXJnaW4tYm90dG9tOiAwcHg7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDBweCAhaW1wb3J0YW50O1xyXG4gICAgbWFyZ2luLWxlZnQ6IDBweCAhaW1wb3J0YW50O1xyXG5cclxuICAgICY6bGFzdC1jaGlsZCB7XHJcbiAgICAgIG1hcmdpbi1ib3R0b206IDBweDtcclxuICAgIH1cclxuXHJcbiAgICBAaW5jbHVkZSByb3dGbGV4KCk7XHJcblxyXG4gICAgLmhlbHAtbWVzc2FnZSB7XHJcbiAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICB9XHJcblxyXG4gICAgLmhlbHAtaWNvbiB7XHJcbiAgICAgIGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQ7XHJcbiAgICAgIGJhY2tncm91bmQtcG9zaXRpb24teTogY2VudGVyO1xyXG5cclxuICAgICAgJi5mb3JtLWZpZWxkIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uLXg6IGNhbGMoMTAwJSAtIDE1cHgpO1xyXG4gICAgICB9XHJcblxyXG4gICAgICAmLmRhcmFjbC1pY29uIHtcclxuICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICB6LWluZGV4OiAxO1xyXG4gICAgICAgIHRvcDogMHB4O1xyXG4gICAgICAgIHJpZ2h0OiAwcHg7XHJcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgICAgIHdpZHRoOiAyMHB4O1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogMTVweDtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICYuaW52YWxpZCB7XHJcbiAgICAgIC5mb3JtLWZpZWxkIHtcclxuICAgICAgICBib3JkZXItY29sb3I6IHZhcigtLWludmFsaWQtYm9yZGVyLWNvbG9yKTtcclxuICAgICAgICBvdXRsaW5lLWNvbG9yOiB2YXIoLS1pbnZhbGlkLWJvcmRlci1jb2xvcik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgID4gLmRmLWZpZWxkLWNvbnRhaW5lci5yZXF1aXJlZCA+IC5kZi1maWVsZCAuaGVscC1pY29uIHtcclxuICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7IGJhc2U2NCwgUEhOMlp5QjRiV3h1Y3owaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1qQXdNQzl6ZG1jaUlHaGxhV2RvZEQwaU1qQWlJSFpwWlhkQ2IzZzlJakFnTFRrMk1DQTVOakFnT1RZd0lpQjNhV1IwYUQwaU1qQWlQanh3WVhSb0lHUTlJbTB5TkRrdE1qQTNMVFF5TFRReUlESXpNUzB5TXpFdE1qTXhMVEl6TVNBME1pMDBNaUF5TXpFZ01qTXhJREl6TVMweU16RWdORElnTkRJdE1qTXhJREl6TVNBeU16RWdNak14TFRReUlEUXlMVEl6TVMweU16RXRNak14SURJek1Wb2lJSE4wZVd4bFBTSW1JekV3T3lBZ0lDQm1hV3hzT2lBalptWTNNemN6T3lZak1UQTdJaTgrUEM5emRtYytcIik7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5oZWxwLW1lc3NhZ2Uge1xyXG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgIGNvbG9yOiB2YXIoLS1pbnZhbGlkLWZvbnQtY29sb3IpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgJi52YWxpZCB7XHJcbiAgICAgID4gLmRmLWZpZWxkLWNvbnRhaW5lci5yZXF1aXJlZCB7XHJcbiAgICAgICAgPiAuZGYtZmllbGQgLmhlbHAtaWNvbiB7XHJcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybChcImRhdGE6aW1hZ2Uvc3ZnK3htbDsgYmFzZTY0LCBQSE4yWnlCNGJXeHVjejBpYUhSMGNEb3ZMM2QzZHk1M015NXZjbWN2TWpBd01DOXpkbWNpSUhacFpYZENiM2c5SWpBZ0xUazJNQ0E1TmpBZ09UWXdJaUIzYVdSMGFEMGlNakFpSUdobGFXZG9kRDBpTWpBaUlITjBlV3hsUFNJbUl6RXdPeUFnSUNCbWFXeHNPaUFqTVRsaE9UYzBPeVlqTVRBN0lqNDhjR0YwYUNCa1BTSk5NemM0TFRJME5pQXhOVFF0TkRjd2JEUXpMVFF6SURFNE1TQXhPREVnTXpnMExUTTROQ0EwTXlBME15MDBNamNnTkRJM1dpSXZQand2YzNablBnPT1cIik7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLmZpbGUtbGFiZWwge1xyXG4gICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpO1xyXG4gICAgICBkaXNwbGF5OiBpbmxpbmU7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBwYWRkaW5nOiAzcHggMTVweDtcclxuICAgICAgbGluZS1oZWlnaHQ6IDE7XHJcbiAgICAgIGJhY2tncm91bmQtY2xpcDogcGFkZGluZy1ib3g7XHJcbiAgICAgIGJvcmRlci1yYWRpdXM6IDRweDtcclxuICAgICAgdHJhbnNpdGlvbjogYm9yZGVyLWNvbG9yIDAuMTVzIGVhc2UtaW4tb3V0LCBib3gtc2hhZG93IDAuMTVzIGVhc2UtaW4tb3V0O1xyXG5cclxuICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWJnLWhvdmVyKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICAuZGYtZ3JpZC1maWVsZCB7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XHJcbiAgICAuZGYtZ3JpZC1idG4tYXJlYSB7XHJcbiAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWJvcmRlci1jb2xvcik7XHJcbiAgICAgIHBhZGRpbmc6IDNweDtcclxuICAgIH1cclxuXHJcbiAgICAuZGYtZ3JpZC1jb250YWluZXIge1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgaGVpZ2h0OiBhdXRvO1xyXG4gICAgICBvdmVyZmxvdy15OiBhdXRvO1xyXG4gICAgICBib3JkZXI6IDFweCBzb2xpZCB2YXIoLS1ib3JkZXItY29sb3IpO1xyXG5cclxuICAgICAgLmRmLWJ0biB7XHJcbiAgICAgICAgcGFkZGluZzogM3B4IDVweDtcclxuICAgICAgfVxyXG5cclxuICAgICAgLmRmLWdyaWQge1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgIGJvcmRlci10b3Atd2lkdGg6IDBweDtcclxuICAgICAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xyXG5cclxuICAgICAgICA+IHRoZWFkIHtcclxuICAgICAgICAgIHRoIHtcclxuICAgICAgICAgICAgcG9zaXRpb246IHN0aWNreTtcclxuICAgICAgICAgICAgdG9wOiAwcHg7XHJcbiAgICAgICAgICAgIHotaW5kZXg6IDEwO1xyXG4gICAgICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgdmFyKC0tYm9yZGVyLWNvbG9yKTtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYmctZ3JpZC1oZWFkZXIpO1xyXG4gICAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAuaGVscC1tZXNzYWdlIHtcclxuICAgICAgICAgIGRpc3BsYXk6IG5vbmU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0ZCxcclxuICAgICAgICB0aCB7XHJcbiAgICAgICAgICBwYWRkaW5nOiAzcHggNXB4O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLmhlbHAtaWNvbiB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0O1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbi15OiBjZW50ZXI7XHJcblxyXG4gICAgICAgICAgJi5mb3JtLWZpZWxkIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbi14OiBjYWxjKDEwMCUgLSAxNXB4KTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAmLmRhcmFjbC1pY29uIHtcclxuICAgICAgICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgICAgICB6LWluZGV4OiAxO1xyXG4gICAgICAgICAgICB0b3A6IDBweDtcclxuICAgICAgICAgICAgcmlnaHQ6IDBweDtcclxuICAgICAgICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgICAgICAgICB3aWR0aDogMjBweDtcclxuICAgICAgICAgICAgbWFyZ2luLXJpZ2h0OiAxNXB4O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLmdyaWQtY29sdW1uIHtcclxuICAgICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC5pbnZhbGlkIHtcclxuICAgICAgICAgIC5mb3JtLWZpZWxkIHtcclxuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1pbnZhbGlkLWJvcmRlci1jb2xvcik7XHJcbiAgICAgICAgICAgIG91dGxpbmUtY29sb3I6IHZhcigtLWludmFsaWQtYm9yZGVyLWNvbG9yKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICA+IC5ncmlkLWNvbHVtbi5yZXF1aXJlZCAuZGYtZmllbGQgLmhlbHAtaWNvbiB7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7IGJhc2U2NCwgUEhOMlp5QjRiV3h1Y3owaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1qQXdNQzl6ZG1jaUlHaGxhV2RvZEQwaU1qQWlJSFpwWlhkQ2IzZzlJakFnTFRrMk1DQTVOakFnT1RZd0lpQjNhV1IwYUQwaU1qQWlQanh3WVhSb0lHUTlJbTB5TkRrdE1qQTNMVFF5TFRReUlESXpNUzB5TXpFdE1qTXhMVEl6TVNBME1pMDBNaUF5TXpFZ01qTXhJREl6TVMweU16RWdORElnTkRJdE1qTXhJREl6TVNBeU16RWdNak14TFRReUlEUXlMVEl6TVMweU16RXRNak14SURJek1Wb2lJSE4wZVd4bFBTSW1JekV3T3lBZ0lDQm1hV3hzT2lBalptWTNNemN6T3lZak1UQTdJaTgrUEM5emRtYytcIik7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLmhlbHAtbWVzc2FnZSB7XHJcbiAgICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgICAgIGJvcmRlcjogMXB4IHNvbGlkIHZhcigtLWludmFsaWQtYm9yZGVyLWNvbG9yKTtcclxuICAgICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1pbnZhbGlkLWJvcmRlci1jb2xvcikgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQgdHJhbnNwYXJlbnQ7XHJcbiAgICAgICAgICAgIHRvcDogY2FsYygxMDAlICsgNnB4KTtcclxuICAgICAgICAgICAgbGVmdDogNTAlO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSk7XHJcbiAgICAgICAgICAgIG1pbi13aWR0aDogMjcwcHg7XHJcbiAgICAgICAgICAgIHBhZGRpbmc6IDVweCA1cHg7XHJcbiAgICAgICAgICAgIGJvcmRlci1yYWRpdXM6IDAuNHJlbTtcclxuICAgICAgICAgICAgei1pbmRleDogMjtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0taW52YWxpZC1iYWNrZ3JvdW5kLWNvbG9yKTtcclxuICAgICAgICAgICAgY29sb3I6IHZhcigtLWludmFsaWQtZm9udC1jb2xvcik7XHJcbiAgICAgICAgICAgICY6OmFmdGVyIHtcclxuICAgICAgICAgICAgICBjb250ZW50OiBcIlwiO1xyXG4gICAgICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICAgICAgICB0b3A6IDA7XHJcbiAgICAgICAgICAgICAgbGVmdDogNTAlO1xyXG4gICAgICAgICAgICAgIHdpZHRoOiAwO1xyXG4gICAgICAgICAgICAgIGhlaWdodDogMDtcclxuICAgICAgICAgICAgICBib3JkZXI6IDdweCBzb2xpZCB0cmFuc3BhcmVudDtcclxuICAgICAgICAgICAgICBib3JkZXItYm90dG9tLWNvbG9yOiB2YXIoLS1pbnZhbGlkLWJvcmRlci1jb2xvcik7XHJcbiAgICAgICAgICAgICAgYm9yZGVyLXRvcDogMDtcclxuICAgICAgICAgICAgICBib3JkZXItbGVmdDogMDtcclxuICAgICAgICAgICAgICBtYXJnaW4tbGVmdDogLTMuNXB4O1xyXG4gICAgICAgICAgICAgIG1hcmdpbi10b3A6IC03cHg7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC52YWxpZCB7XHJcbiAgICAgICAgICA+IC5ncmlkLWNvbHVtbi5yZXF1aXJlZCB7XHJcbiAgICAgICAgICAgIC5kZi1maWVsZCAuaGVscC1pY29uIHtcclxuICAgICAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoXCJkYXRhOmltYWdlL3N2Zyt4bWw7IGJhc2U2NCwgUEhOMlp5QjRiV3h1Y3owaWFIUjBjRG92TDNkM2R5NTNNeTV2Y21jdk1qQXdNQzl6ZG1jaUlIWnBaWGRDYjNnOUlqQWdMVGsyTUNBNU5qQWdPVFl3SWlCM2FXUjBhRDBpTWpBaUlHaGxhV2RvZEQwaU1qQWlJSE4wZVd4bFBTSW1JekV3T3lBZ0lDQm1hV3hzT2lBak1UbGhPVGMwT3lZak1UQTdJajQ4Y0dGMGFDQmtQU0pOTXpjNExUSTBOaUF4TlRRdE5EY3diRFF6TFRReklERTRNU0F4T0RFZ016ZzBMVE00TkNBME15QTBNeTAwTWpjZ05ESTNXaUl2UGp3dmMzWm5QZz09XCIpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcbiJdfQ== */", "@charset \"UTF-8\";\n.daracl-datetime-hidden {\n visibility: visible;\n width: 0px;\n height: 0px;\n z-index: 1000;\n}\n\n.daracl-datetime-wrapper {\n --color: #34495e;\n --light: #ffffff;\n --success: #0abf30;\n --error: #e24d4c;\n --warning: #e9bd0c;\n --info: #3498db;\n --background-color: #ffffff;\n --sunday: #f00d0d;\n --border-color: #d3d2d2;\n --select-background-color: #0abf30;\n --button-hover-color: #d4d4d48a;\n --disabled-background-color: #f1f1f18a;\n --today-bg: #a9d5ff;\n}\n\nbody.dark .daracl-datetime-wrapper,\n.daracl-datetime-wrapper.dark {\n --color: #d0d6e1;\n --light: #ffffff;\n --success: #0abf30;\n --error: #e24d4c;\n --warning: #e9bd0c;\n --info: #3498db;\n --background-color: #070d19;\n --sunday: #f00d0d;\n --border-color: #6e7380;\n --today-bg: #5660d9;\n --today-color: #5660d9;\n --select-background-color: #ffffff;\n --button-hover-color: #31316c;\n --disabled-background-color: #818181;\n}\n\n.daracl-datetime-wrapper {\n z-index: 1000;\n display: none;\n}\n.daracl-datetime-wrapper *,\n.daracl-datetime-wrapper *::before,\n.daracl-datetime-wrapper *::after {\n box-sizing: content-box;\n color: var(--color);\n}\n.daracl-datetime-wrapper.layer {\n position: absolute;\n}\n.daracl-datetime-wrapper input {\n background-color: transparent;\n}\n.daracl-datetime-wrapper.show {\n display: block;\n animation: fadeIn 0.5s;\n animation-fill-mode: forwards;\n}\n.daracl-datetime-wrapper.hide {\n animation: fadeOut 0.5s;\n animation-fill-mode: forwards;\n}\n.daracl-datetime-wrapper.embed {\n display: block;\n}\n.daracl-datetime-wrapper .sun > span {\n color: var(--sunday);\n}\n.daracl-datetime-wrapper .ddtp-datetime {\n border-radius: 4px;\n padding: 10px;\n width: 235px;\n background-color: var(--background-color);\n color: var(--color);\n box-shadow: 0px 5px 5px -3px rgba(0, 0, 0, 0.2), 0px 8px 10px 1px rgba(0, 0, 0, 0.14), 0px 3px 14px 2px rgba(0, 0, 0, 0.12);\n}\n.daracl-datetime-wrapper .ddtp-datetime.rtl {\n direction: rtl;\n}\n.daracl-datetime-wrapper .ddtp-datetime.rtl .ddtp-header .ddtp-header-year,\n.daracl-datetime-wrapper .ddtp-datetime.rtl .ddtp-header .ddtp-header-month {\n float: right;\n}\n.daracl-datetime-wrapper .ddtp-datetime.rtl .ddtp-header .ddtp-date-move {\n float: left;\n}\n.daracl-datetime-wrapper .ddtp-datetime.rtl .ddtp-body .ddtp-times .time-container {\n display: block;\n}\n.daracl-datetime-wrapper .ddtp-datetime.rtl .ddtp-body .ddtp-times > .time-btn {\n left: 0px;\n right: auto;\n}\n.daracl-datetime-wrapper .ddtp-datetime[view-mode=date] .ddtp-body > .ddtp-days {\n display: block;\n}\n.daracl-datetime-wrapper .ddtp-datetime[view-mode=datetime] .ddtp-body > .ddtp-times,\n.daracl-datetime-wrapper .ddtp-datetime[view-mode=datetime] .ddtp-body > .ddtp-days {\n display: block;\n}\n.daracl-datetime-wrapper .ddtp-datetime[view-mode=time] .ddtp-body > .ddtp-times {\n display: block;\n}\n.daracl-datetime-wrapper .ddtp-datetime[view-mode=time] .ddtp-header {\n display: none;\n}\n.daracl-datetime-wrapper .ddtp-datetime[view-mode=year] .ddtp-body > .ddtp-years {\n display: flex;\n}\n.daracl-datetime-wrapper .ddtp-datetime[view-mode=year] .ddtp-header-month {\n display: none;\n}\n.daracl-datetime-wrapper .ddtp-datetime[view-mode=month] .ddtp-body > .ddtp-months {\n display: flex;\n}\n.daracl-datetime-wrapper .ddtp-datetime[view-mode=month] .ddtp-header-month {\n display: none;\n}\n.daracl-datetime-wrapper .ddtp-header {\n padding: 2px 5px 10px;\n line-height: 25px;\n height: 25px;\n vertical-align: middle;\n}\n.daracl-datetime-wrapper .ddtp-header .ddtp-header-year {\n font-weight: bold;\n margin: 0px 10px 0px 0px;\n cursor: pointer;\n}\n.daracl-datetime-wrapper .ddtp-header .ddtp-header-month {\n font-weight: bold;\n margin: 0px 10px 0px 0px;\n vertical-align: top;\n cursor: pointer;\n}\n.daracl-datetime-wrapper .ddtp-header .ddtp-date-move {\n margin-left: auto;\n vertical-align: top;\n float: right;\n direction: ltr;\n}\n.daracl-datetime-wrapper .ddtp-header .ddtp-date-move .ddtp-move-btn {\n text-decoration: none;\n font-weight: bold;\n display: inline-block;\n height: 24px;\n}\n.daracl-datetime-wrapper .ddtp-header .ddtp-date-move .ddtp-move-btn > svg {\n fill: var(--color);\n}\n.daracl-datetime-wrapper .ddtp-header .ddtp-date-move .ddtp-move-btn:hover {\n background-color: var(--button-hover-color);\n}\n.daracl-datetime-wrapper .ddtp-header .ddtp-date-move::after {\n content: \"\";\n clear: both;\n}\n.daracl-datetime-wrapper .ddtp-body {\n margin: -2px -10px;\n font-size: 13px;\n}\n.daracl-datetime-wrapper .ddtp-body > * {\n display: none;\n}\n.daracl-datetime-wrapper .ddtp-body button {\n display: block;\n width: 100%;\n margin-bottom: 7px;\n padding: 3px 0px;\n border-radius: 4px;\n border-color: var(--border-color);\n border-width: 1px;\n border-style: solid;\n background-color: var(--background-color);\n}\n.daracl-datetime-wrapper .ddtp-body button:hover {\n background-color: var(--button-hover-color);\n}\n.daracl-datetime-wrapper .ddtp-body .time-today:hover {\n background-color: var(--button-hover-color);\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-days {\n letter-spacing: 0px;\n border-collapse: separate;\n border-spacing: 0px;\n margin: 2px 10px;\n width: inherit;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-days .ddtp-day-label {\n font-weight: bold;\n width: 35px;\n padding: 2px 5px;\n text-align: center;\n line-height: initial;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-days .ddtp-day {\n position: relative;\n text-align: center;\n padding: 7px;\n cursor: pointer;\n line-height: initial;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-days .ddtp-day.event::after {\n content: \"\u2022\";\n color: #f78536;\n font-size: 1.4em;\n position: absolute;\n left: 2px;\n z-index: 10;\n top: -7px;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-days .ddtp-day:before {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n display: block;\n width: 30px;\n height: 30px;\n background-color: var(--select-background-color);\n border-radius: 50%;\n opacity: 0;\n z-index: 0;\n transition: opacity 0.2s ease-in;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-days .ddtp-day:active:before, .daracl-datetime-wrapper .ddtp-body .ddtp-days .ddtp-day:hover:before {\n opacity: 0.7;\n transition: opacity 0.2s ease-out;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-days .ddtp-day.today > span {\n z-index: 2;\n position: relative;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-days .ddtp-day.today:before {\n background-color: var(--today-bg);\n z-index: 1;\n opacity: 1;\n transition: opacity 0.2s ease-out;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-days .ddtp-day.select:before {\n background-color: var(--select-background-color);\n opacity: 0.5;\n transition: opacity 0.2s ease-out;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-days .ddtp-day.old, .daracl-datetime-wrapper .ddtp-body .ddtp-days .ddtp-day.new {\n opacity: 0.5;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-days .ddtp-day.disabled {\n background-color: var(--disabled-background-color);\n opacity: 0.5;\n cursor: auto;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-days .ddtp-day.disabled:before {\n background-color: transparent;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-times {\n margin: 2px 15px;\n position: relative;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-times > .time-container {\n width: calc(100% - 60px);\n display: inline-block;\n height: 60px;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-times input[type=number] {\n -moz-appearance: textfield;\n appearance: textfield;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-times input[type=number]::-webkit-inner-spin-button, .daracl-datetime-wrapper .ddtp-body .ddtp-times input[type=number]::-webkit-outer-spin-button {\n -webkit-appearance: none;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-times > .time-btn {\n position: absolute;\n top: 9px;\n width: 55px;\n right: 0px;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-times > .time-btn > .time-select {\n height: 40px;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-times .ddtp-time {\n display: table-row;\n width: 160px;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-times .ddtp-time > * {\n margin-top: 5px;\n display: table-cell;\n line-height: 20px;\n vertical-align: middle;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-times .ddtp-time > span {\n width: 20px;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-times .ddtp-time > input[type=number] {\n width: 45px;\n margin-right: 5px;\n padding-left: 0px;\n border-radius: 4px;\n border-color: var(--border-color);\n border-width: 1px;\n text-align: center;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-times .ddtp-time > input[type=range] {\n width: calc(100% - 60px);\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-months {\n flex-direction: row;\n flex-wrap: wrap;\n justify-content: space-between;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-months > .ddtp-month {\n position: relative;\n flex: 1 0 30%;\n margin-bottom: 8px;\n line-height: 50px;\n text-align: center;\n cursor: pointer;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-months > .ddtp-month:before {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n display: block;\n width: 50px;\n height: 50px;\n background-color: var(--select-background-color);\n border-radius: 50%;\n opacity: 0;\n z-index: 0;\n transition: opacity 0.2s ease-in;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-months > .ddtp-month:active:before, .daracl-datetime-wrapper .ddtp-body .ddtp-months > .ddtp-month:hover:before {\n opacity: 0.5;\n transition: opacity 0.2s ease-out;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-months > .ddtp-month.disabled {\n background-color: var(--disabled-background-color);\n opacity: 0.5;\n cursor: auto;\n}\n.daracl-datetime-wrapper .ddtp-body .ddtp-months > .ddtp-month.disabled:before {\n background-color: transparent;\n}\n.daracl-datetime-wrapper .ddtp-years {\n flex-direction: row;\n flex-wrap: wrap;\n justify-content: space-between;\n}\n.daracl-datetime-wrapper .ddtp-years > .ddtp-year {\n position: relative;\n flex: 1 0 25%;\n margin-bottom: 8px;\n line-height: 50px;\n text-align: center;\n cursor: pointer;\n}\n.daracl-datetime-wrapper .ddtp-years > .ddtp-year:before {\n content: \"\";\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n display: block;\n width: 50px;\n height: 50px;\n background-color: var(--select-background-color);\n border-radius: 50%;\n opacity: 0;\n z-index: 0;\n transition: opacity 0.2s ease-in;\n}\n.daracl-datetime-wrapper .ddtp-years > .ddtp-year:active:before, .daracl-datetime-wrapper .ddtp-years > .ddtp-year:hover:before {\n opacity: 0.5;\n transition: opacity 0.2s ease-out;\n}\n.daracl-datetime-wrapper .ddtp-years > .ddtp-year.disabled {\n background-color: var(--disabled-background-color);\n opacity: 0.5;\n cursor: auto;\n}\n.daracl-datetime-wrapper .ddtp-years > .ddtp-year.disabled:before {\n background-color: transparent;\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n@keyframes fadeOut {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VSb290IjoiRDpcXDAzLm9wZW5zb3VyY2VzXFxkYXJhLWZvcm1cXG5vZGVfbW9kdWxlc1xcQGRhcmFjbFxcZGF0ZXRpbWVwaWNrZXJcXHN0eWxlIiwic291cmNlcyI6WyJkYXJhY2wuZGF0ZXRpbWVwaWNrZXIuc2NzcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7O0FBR0Y7QUFBQTtFQUVFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7OztBQUdGO0VBQ0U7RUFDQTs7QUFFQTtBQUFBO0FBQUE7RUFHRTtFQUNBOztBQUdGO0VBQ0U7O0FBR0Y7RUFDRTs7QUFHRjtFQUNFO0VBQ0E7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7O0FBSUY7RUFDRTs7QUFJQTtFQUNFOztBQUlKO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0U7O0FBR0U7QUFBQTtFQUVFOztBQUdGO0VBQ0U7O0FBS0Y7RUFDRTs7QUFFRjtFQUNFO0VBQ0E7O0FBS047RUFDRTs7QUFJQTtBQUFBO0VBRUU7O0FBS0Y7RUFDRTs7QUFHRjtFQUNFOztBQUtGO0VBQ0U7O0FBR0Y7RUFDRTs7QUFLRjtFQUNFOztBQUdGO0VBQ0U7O0FBS047RUFDRTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBOztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFOztBQUdGO0VBQ0U7O0FBSUo7RUFDRTtFQUNBOztBQUtOO0VBQ0U7RUFDQTs7QUFFQTtFQUNFOztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0U7O0FBS0Y7RUFDRTs7QUFJSjtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUdGO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBR0Y7RUFFRTtFQUNBOztBQUlBO0VBQ0U7RUFDQTs7QUFHRjtFQUNFO0VBQ0E7RUFDQTtFQUNBOztBQUlKO0VBQ0U7RUFDQTtFQUNBOztBQUdGO0VBRUU7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTs7QUFNUjtFQUNFO0VBQ0E7O0FBRUE7RUFDRTtFQUNBO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBOztBQUVBO0VBRUU7O0FBSUo7RUFDRTtFQUNBO0VBQ0E7RUFDQTs7QUFDQTtFQUNFOztBQUlKO0VBQ0U7RUFDQTs7QUFFQTtFQUNFO0VBQ0E7RUFDQTtFQUNBOztBQUdGO0VBQ0U7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFHRjtFQUNFOztBQUtOO0VBQ0U7RUFDQTtFQUNBOztBQUVBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBOztBQUVBO0VBQ0U7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBR0Y7RUFFRTtFQUNBOztBQUdGO0VBQ0U7RUFDQTtFQUNBOztBQUVBO0VBQ0U7O0FBT1Y7RUFDRTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTs7QUFHRjtFQUVFO0VBQ0E7O0FBR0Y7RUFDRTtFQUNBO0VBQ0E7O0FBRUE7RUFDRTs7O0FBT1Y7RUFDRTtJQUNFOztFQUdGO0lBQ0U7OztBQUlKO0VBQ0U7SUFDRTs7RUFHRjtJQUNFIiwic291cmNlc0NvbnRlbnQiOlsiLmRhcmFjbC1kYXRldGltZS1oaWRkZW4ge1xyXG4gIHZpc2liaWxpdHk6IHZpc2libGU7XHJcbiAgd2lkdGg6IDBweDtcclxuICBoZWlnaHQ6IDBweDtcclxuICB6LWluZGV4OiAxMDAwO1xyXG59XHJcblxyXG4uZGFyYWNsLWRhdGV0aW1lLXdyYXBwZXIge1xyXG4gIC0tY29sb3I6ICMzNDQ5NWU7XHJcbiAgLS1saWdodDogI2ZmZmZmZjtcclxuICAtLXN1Y2Nlc3M6ICMwYWJmMzA7XHJcbiAgLS1lcnJvcjogI2UyNGQ0YztcclxuICAtLXdhcm5pbmc6ICNlOWJkMGM7XHJcbiAgLS1pbmZvOiAjMzQ5OGRiO1xyXG4gIC0tYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcclxuICAtLXN1bmRheTogI2YwMGQwZDtcclxuICAtLWJvcmRlci1jb2xvcjogI2QzZDJkMjtcclxuICAtLXNlbGVjdC1iYWNrZ3JvdW5kLWNvbG9yOiAjMGFiZjMwO1xyXG4gIC0tYnV0dG9uLWhvdmVyLWNvbG9yOiAjZDRkNGQ0OGE7XHJcbiAgLS1kaXNhYmxlZC1iYWNrZ3JvdW5kLWNvbG9yOiAjZjFmMWYxOGE7XHJcbiAgLS10b2RheS1iZzogI2E5ZDVmZjtcclxufVxyXG5cclxuYm9keS5kYXJrIC5kYXJhY2wtZGF0ZXRpbWUtd3JhcHBlcixcclxuLmRhcmFjbC1kYXRldGltZS13cmFwcGVyLmRhcmsge1xyXG4gIC0tY29sb3I6ICNkMGQ2ZTE7XHJcbiAgLS1saWdodDogI2ZmZmZmZjtcclxuICAtLXN1Y2Nlc3M6ICMwYWJmMzA7XHJcbiAgLS1lcnJvcjogI2UyNGQ0YztcclxuICAtLXdhcm5pbmc6ICNlOWJkMGM7XHJcbiAgLS1pbmZvOiAjMzQ5OGRiO1xyXG4gIC0tYmFja2dyb3VuZC1jb2xvcjogIzA3MGQxOTtcclxuICAtLXN1bmRheTogI2YwMGQwZDtcclxuICAtLWJvcmRlci1jb2xvcjogIzZlNzM4MDtcclxuICAtLXRvZGF5LWJnOiAjNTY2MGQ5O1xyXG4gIC0tdG9kYXktY29sb3I6ICM1NjYwZDk7XHJcbiAgLS1zZWxlY3QtYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcclxuICAtLWJ1dHRvbi1ob3Zlci1jb2xvcjogIzMxMzE2YztcclxuICAtLWRpc2FibGVkLWJhY2tncm91bmQtY29sb3I6ICM4MTgxODE7XHJcbn1cclxuXHJcbi5kYXJhY2wtZGF0ZXRpbWUtd3JhcHBlciB7XHJcbiAgei1pbmRleDogMTAwMDtcclxuICBkaXNwbGF5OiBub25lO1xyXG5cclxuICAqLFxyXG4gICo6OmJlZm9yZSxcclxuICAqOjphZnRlciB7XHJcbiAgICBib3gtc2l6aW5nOiBjb250ZW50LWJveDtcclxuICAgIGNvbG9yOiB2YXIoLS1jb2xvcik7XHJcbiAgfVxyXG5cclxuICAmLmxheWVyIHtcclxuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICB9XHJcblxyXG4gIGlucHV0IHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG4gIH1cclxuXHJcbiAgJi5zaG93IHtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgYW5pbWF0aW9uOiBmYWRlSW4gMC41cztcclxuICAgIGFuaW1hdGlvbi1maWxsLW1vZGU6IGZvcndhcmRzO1xyXG4gIH1cclxuXHJcbiAgJi5oaWRlIHtcclxuICAgIGFuaW1hdGlvbjogZmFkZU91dCAwLjVzO1xyXG4gICAgYW5pbWF0aW9uLWZpbGwtbW9kZTogZm9yd2FyZHM7XHJcbiAgICAvL2FuaW1hdGlvbjogZGFyYVRvYXN0SGlkZSAwLjNzIGVhc2UgZm9yd2FyZHM7XHJcbiAgfVxyXG5cclxuICAmLmVtYmVkIHtcclxuICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gIH1cclxuXHJcbiAgLnN1biB7XHJcbiAgICAmID4gc3BhbiB7XHJcbiAgICAgIGNvbG9yOiB2YXIoLS1zdW5kYXkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmRkdHAtZGF0ZXRpbWUge1xyXG4gICAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gICAgcGFkZGluZzogMTBweDtcclxuICAgIHdpZHRoOiAyMzVweDtcclxuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJhY2tncm91bmQtY29sb3IpO1xyXG4gICAgY29sb3I6IHZhcigtLWNvbG9yKTtcclxuICAgIGJveC1zaGFkb3c6IDBweCA1cHggNXB4IC0zcHggcmdiYSgwLCAwLCAwLCAwLjIpLCAwcHggOHB4IDEwcHggMXB4IHJnYmEoMCwgMCwgMCwgMC4xNCksIDBweCAzcHggMTRweCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKTtcclxuXHJcbiAgICAmLnJ0bCB7XHJcbiAgICAgIGRpcmVjdGlvbjogcnRsO1xyXG5cclxuICAgICAgLmRkdHAtaGVhZGVyIHtcclxuICAgICAgICAuZGR0cC1oZWFkZXIteWVhcixcclxuICAgICAgICAuZGR0cC1oZWFkZXItbW9udGgge1xyXG4gICAgICAgICAgZmxvYXQ6IHJpZ2h0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLmRkdHAtZGF0ZS1tb3ZlIHtcclxuICAgICAgICAgIGZsb2F0OiBsZWZ0O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLmRkdHAtYm9keSAuZGR0cC10aW1lcyB7XHJcbiAgICAgICAgLnRpbWUtY29udGFpbmVyIHtcclxuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgIH1cclxuICAgICAgICAmID4gLnRpbWUtYnRuIHtcclxuICAgICAgICAgIGxlZnQ6IDBweDtcclxuICAgICAgICAgIHJpZ2h0OiBhdXRvO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICZbdmlldy1tb2RlPVwiZGF0ZVwiXSAuZGR0cC1ib2R5ID4gLmRkdHAtZGF5cyB7XHJcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgfVxyXG5cclxuICAgICZbdmlldy1tb2RlPVwiZGF0ZXRpbWVcIl0ge1xyXG4gICAgICAuZGR0cC1ib2R5ID4gLmRkdHAtdGltZXMsXHJcbiAgICAgIC5kZHRwLWJvZHkgPiAuZGR0cC1kYXlzIHtcclxuICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICZbdmlldy1tb2RlPVwidGltZVwiXSB7XHJcbiAgICAgIC5kZHRwLWJvZHkgPiAuZGR0cC10aW1lcyB7XHJcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5kZHRwLWhlYWRlciB7XHJcbiAgICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgICZbdmlldy1tb2RlPVwieWVhclwiXSB7XHJcbiAgICAgIC5kZHRwLWJvZHkgPiAuZGR0cC15ZWFycyB7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgfVxyXG5cclxuICAgICAgLmRkdHAtaGVhZGVyLW1vbnRoIHtcclxuICAgICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgJlt2aWV3LW1vZGU9XCJtb250aFwiXSB7XHJcbiAgICAgIC5kZHRwLWJvZHkgPiAuZGR0cC1tb250aHMge1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5kZHRwLWhlYWRlci1tb250aCB7XHJcbiAgICAgICAgZGlzcGxheTogbm9uZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLmRkdHAtaGVhZGVyIHtcclxuICAgIHBhZGRpbmc6IDJweCA1cHggMTBweDtcclxuICAgIGxpbmUtaGVpZ2h0OiAyNXB4O1xyXG4gICAgaGVpZ2h0OiAyNXB4O1xyXG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuXHJcbiAgICAuZGR0cC1oZWFkZXIteWVhciB7XHJcbiAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgICBtYXJnaW46IDBweCAxMHB4IDBweCAwcHg7XHJcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIH1cclxuXHJcbiAgICAuZGR0cC1oZWFkZXItbW9udGgge1xyXG4gICAgICBmb250LXdlaWdodDogYm9sZDtcclxuICAgICAgbWFyZ2luOiAwcHggMTBweCAwcHggMHB4O1xyXG4gICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wO1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICB9XHJcblxyXG4gICAgLmRkdHAtZGF0ZS1tb3ZlIHtcclxuICAgICAgbWFyZ2luLWxlZnQ6IGF1dG87XHJcbiAgICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7XHJcbiAgICAgIGZsb2F0OiByaWdodDtcclxuICAgICAgZGlyZWN0aW9uOiBsdHI7XHJcblxyXG4gICAgICAuZGR0cC1tb3ZlLWJ0biB7XHJcbiAgICAgICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICAgICAgICBoZWlnaHQ6IDI0cHg7XHJcblxyXG4gICAgICAgID4gc3ZnIHtcclxuICAgICAgICAgIGZpbGw6IHZhcigtLWNvbG9yKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICY6aG92ZXIge1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWhvdmVyLWNvbG9yKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgICY6OmFmdGVyIHtcclxuICAgICAgICBjb250ZW50OiBcIlwiO1xyXG4gICAgICAgIGNsZWFyOiBib3RoO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuZGR0cC1ib2R5IHtcclxuICAgIG1hcmdpbjogLTJweCAtMTBweDtcclxuICAgIGZvbnQtc2l6ZTogMTNweDtcclxuXHJcbiAgICA+ICoge1xyXG4gICAgICBkaXNwbGF5OiBub25lO1xyXG4gICAgfVxyXG5cclxuICAgIGJ1dHRvbiB7XHJcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICB3aWR0aDogMTAwJTtcclxuICAgICAgbWFyZ2luLWJvdHRvbTogN3B4O1xyXG4gICAgICBwYWRkaW5nOiAzcHggMHB4O1xyXG4gICAgICBib3JkZXItcmFkaXVzOiA0cHg7XHJcbiAgICAgIGJvcmRlci1jb2xvcjogdmFyKC0tYm9yZGVyLWNvbG9yKTtcclxuICAgICAgYm9yZGVyLXdpZHRoOiAxcHg7XHJcbiAgICAgIGJvcmRlci1zdHlsZTogc29saWQ7XHJcbiAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWJhY2tncm91bmQtY29sb3IpO1xyXG5cclxuICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWhvdmVyLWNvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC50aW1lLXRvZGF5IHtcclxuICAgICAgJjpob3ZlciB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tYnV0dG9uLWhvdmVyLWNvbG9yKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5kZHRwLWRheXMge1xyXG4gICAgICBsZXR0ZXItc3BhY2luZzogMHB4O1xyXG4gICAgICBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlO1xyXG4gICAgICBib3JkZXItc3BhY2luZzogMHB4O1xyXG4gICAgICBtYXJnaW46IDJweCAxMHB4O1xyXG4gICAgICB3aWR0aDogaW5oZXJpdDtcclxuXHJcbiAgICAgIC5kZHRwLWRheS1sYWJlbCB7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgICAgd2lkdGg6IDM1cHg7XHJcbiAgICAgICAgcGFkZGluZzogMnB4IDVweDtcclxuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6IGluaXRpYWw7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIC5kZHRwLWRheSB7XHJcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgICBwYWRkaW5nOiA3cHg7XHJcbiAgICAgICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgICAgIGxpbmUtaGVpZ2h0OiBpbml0aWFsO1xyXG5cclxuICAgICAgICAmLmV2ZW50OjphZnRlciB7XHJcbiAgICAgICAgICBjb250ZW50OiBcIuKAolwiO1xyXG4gICAgICAgICAgY29sb3I6ICNmNzg1MzY7XHJcbiAgICAgICAgICBmb250LXNpemU6IDEuNGVtO1xyXG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgICAgbGVmdDogMnB4O1xyXG4gICAgICAgICAgei1pbmRleDogMTA7XHJcbiAgICAgICAgICB0b3A6IC03cHg7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmOmJlZm9yZSB7XHJcbiAgICAgICAgICBjb250ZW50OiBcIlwiO1xyXG4gICAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgICAgdG9wOiA1MCU7XHJcbiAgICAgICAgICBsZWZ0OiA1MCU7XHJcbiAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcclxuICAgICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgICAgd2lkdGg6IDMwcHg7XHJcbiAgICAgICAgICBoZWlnaHQ6IDMwcHg7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zZWxlY3QtYmFja2dyb3VuZC1jb2xvcik7XHJcbiAgICAgICAgICBib3JkZXItcmFkaXVzOiA1MCU7XHJcbiAgICAgICAgICBvcGFjaXR5OiAwO1xyXG4gICAgICAgICAgei1pbmRleDogMDtcclxuICAgICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycyBlYXNlLWluO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJjphY3RpdmU6YmVmb3JlLFxyXG4gICAgICAgICY6aG92ZXI6YmVmb3JlIHtcclxuICAgICAgICAgIG9wYWNpdHk6IDAuNztcclxuICAgICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycyBlYXNlLW91dDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICYudG9kYXkge1xyXG4gICAgICAgICAgPiBzcGFuIHtcclxuICAgICAgICAgICAgei1pbmRleDogMjtcclxuICAgICAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICY6YmVmb3JlIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tdG9kYXktYmcpO1xyXG4gICAgICAgICAgICB6LWluZGV4OiAxO1xyXG4gICAgICAgICAgICBvcGFjaXR5OiAxO1xyXG4gICAgICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgZWFzZS1vdXQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmLnNlbGVjdDpiZWZvcmUge1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2VsZWN0LWJhY2tncm91bmQtY29sb3IpO1xyXG4gICAgICAgICAgb3BhY2l0eTogMC41O1xyXG4gICAgICAgICAgdHJhbnNpdGlvbjogb3BhY2l0eSAwLjJzIGVhc2Utb3V0O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi5vbGQsXHJcbiAgICAgICAgJi5uZXcge1xyXG4gICAgICAgICAgb3BhY2l0eTogMC41O1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgJi5kaXNhYmxlZCB7XHJcbiAgICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1kaXNhYmxlZC1iYWNrZ3JvdW5kLWNvbG9yKTtcclxuICAgICAgICAgIG9wYWNpdHk6IDAuNTtcclxuICAgICAgICAgIGN1cnNvcjogYXV0bztcclxuXHJcbiAgICAgICAgICAmOmJlZm9yZSB7XHJcbiAgICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC5kZHRwLXRpbWVzIHtcclxuICAgICAgbWFyZ2luOiAycHggMTVweDtcclxuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG5cclxuICAgICAgPiAudGltZS1jb250YWluZXIge1xyXG4gICAgICAgIHdpZHRoOiBjYWxjKDEwMCUgLSA2MHB4KTtcclxuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgICAgICAgaGVpZ2h0OiA2MHB4O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpbnB1dFt0eXBlPVwibnVtYmVyXCJdIHtcclxuICAgICAgICAtbW96LWFwcGVhcmFuY2U6IHRleHRmaWVsZDtcclxuICAgICAgICBhcHBlYXJhbmNlOiB0ZXh0ZmllbGQ7XHJcblxyXG4gICAgICAgICY6Oi13ZWJraXQtaW5uZXItc3Bpbi1idXR0b24sXHJcbiAgICAgICAgJjo6LXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiB7XHJcbiAgICAgICAgICAtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICA+IC50aW1lLWJ0biB7XHJcbiAgICAgICAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gICAgICAgIHRvcDogOXB4O1xyXG4gICAgICAgIHdpZHRoOiA1NXB4O1xyXG4gICAgICAgIHJpZ2h0OiAwcHg7XHJcbiAgICAgICAgPiAudGltZS1zZWxlY3Qge1xyXG4gICAgICAgICAgaGVpZ2h0OiA0MHB4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLmRkdHAtdGltZSB7XHJcbiAgICAgICAgZGlzcGxheTogdGFibGUtcm93O1xyXG4gICAgICAgIHdpZHRoOiAxNjBweDtcclxuXHJcbiAgICAgICAgPiAqIHtcclxuICAgICAgICAgIG1hcmdpbi10b3A6IDVweDtcclxuICAgICAgICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7XHJcbiAgICAgICAgICBsaW5lLWhlaWdodDogMjBweDtcclxuICAgICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICA+IHNwYW4ge1xyXG4gICAgICAgICAgd2lkdGg6IDIwcHg7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICA+IGlucHV0W3R5cGU9XCJudW1iZXJcIl0ge1xyXG4gICAgICAgICAgd2lkdGg6IDQ1cHg7XHJcbiAgICAgICAgICBtYXJnaW4tcmlnaHQ6IDVweDtcclxuICAgICAgICAgIHBhZGRpbmctbGVmdDogMHB4O1xyXG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogNHB4O1xyXG4gICAgICAgICAgYm9yZGVyLWNvbG9yOiB2YXIoLS1ib3JkZXItY29sb3IpO1xyXG4gICAgICAgICAgYm9yZGVyLXdpZHRoOiAxcHg7XHJcbiAgICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICA+IGlucHV0W3R5cGU9XCJyYW5nZVwiXSB7XHJcbiAgICAgICAgICB3aWR0aDogY2FsYygxMDAlIC0gNjBweCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLmRkdHAtbW9udGhzIHtcclxuICAgICAgZmxleC1kaXJlY3Rpb246IHJvdztcclxuICAgICAgZmxleC13cmFwOiB3cmFwO1xyXG4gICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcblxyXG4gICAgICA+IC5kZHRwLW1vbnRoIHtcclxuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgICAgZmxleDogMSAwIDMwJTtcclxuICAgICAgICBtYXJnaW4tYm90dG9tOiA4cHg7XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6IDUwcHg7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICAgIGN1cnNvcjogcG9pbnRlcjtcclxuXHJcbiAgICAgICAgJjpiZWZvcmUge1xyXG4gICAgICAgICAgY29udGVudDogXCJcIjtcclxuICAgICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICAgIHRvcDogNTAlO1xyXG4gICAgICAgICAgbGVmdDogNTAlO1xyXG4gICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTUwJSwgLTUwJSk7XHJcbiAgICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICAgIHdpZHRoOiA1MHB4O1xyXG4gICAgICAgICAgaGVpZ2h0OiA1MHB4O1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2VsZWN0LWJhY2tncm91bmQtY29sb3IpO1xyXG4gICAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gICAgICAgICAgb3BhY2l0eTogMDtcclxuICAgICAgICAgIHotaW5kZXg6IDA7XHJcbiAgICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgZWFzZS1pbjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgICY6YWN0aXZlOmJlZm9yZSxcclxuICAgICAgICAmOmhvdmVyOmJlZm9yZSB7XHJcbiAgICAgICAgICBvcGFjaXR5OiAwLjU7XHJcbiAgICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgZWFzZS1vdXQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAmLmRpc2FibGVkIHtcclxuICAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLWRpc2FibGVkLWJhY2tncm91bmQtY29sb3IpO1xyXG4gICAgICAgICAgb3BhY2l0eTogMC41O1xyXG4gICAgICAgICAgY3Vyc29yOiBhdXRvO1xyXG5cclxuICAgICAgICAgICY6YmVmb3JlIHtcclxuICAgICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAuZGR0cC15ZWFycyB7XHJcbiAgICBmbGV4LWRpcmVjdGlvbjogcm93O1xyXG4gICAgZmxleC13cmFwOiB3cmFwO1xyXG4gICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG5cclxuICAgID4gLmRkdHAteWVhciB7XHJcbiAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgZmxleDogMSAwIDI1JTtcclxuICAgICAgbWFyZ2luLWJvdHRvbTogOHB4O1xyXG4gICAgICBsaW5lLWhlaWdodDogNTBweDtcclxuICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICBjdXJzb3I6IHBvaW50ZXI7XHJcblxyXG4gICAgICAmOmJlZm9yZSB7XHJcbiAgICAgICAgY29udGVudDogXCJcIjtcclxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgdG9wOiA1MCU7XHJcbiAgICAgICAgbGVmdDogNTAlO1xyXG4gICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xyXG4gICAgICAgIGRpc3BsYXk6IGJsb2NrO1xyXG4gICAgICAgIHdpZHRoOiA1MHB4O1xyXG4gICAgICAgIGhlaWdodDogNTBweDtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB2YXIoLS1zZWxlY3QtYmFja2dyb3VuZC1jb2xvcik7XHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogNTAlO1xyXG4gICAgICAgIG9wYWNpdHk6IDA7XHJcbiAgICAgICAgei1pbmRleDogMDtcclxuICAgICAgICB0cmFuc2l0aW9uOiBvcGFjaXR5IDAuMnMgZWFzZS1pbjtcclxuICAgICAgfVxyXG5cclxuICAgICAgJjphY3RpdmU6YmVmb3JlLFxyXG4gICAgICAmOmhvdmVyOmJlZm9yZSB7XHJcbiAgICAgICAgb3BhY2l0eTogMC41O1xyXG4gICAgICAgIHRyYW5zaXRpb246IG9wYWNpdHkgMC4ycyBlYXNlLW91dDtcclxuICAgICAgfVxyXG5cclxuICAgICAgJi5kaXNhYmxlZCB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tZGlzYWJsZWQtYmFja2dyb3VuZC1jb2xvcik7XHJcbiAgICAgICAgb3BhY2l0eTogMC41O1xyXG4gICAgICAgIGN1cnNvcjogYXV0bztcclxuXHJcbiAgICAgICAgJjpiZWZvcmUge1xyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5Aa2V5ZnJhbWVzIGZhZGVJbiB7XHJcbiAgZnJvbSB7XHJcbiAgICBvcGFjaXR5OiAwO1xyXG4gIH1cclxuXHJcbiAgdG8ge1xyXG4gICAgb3BhY2l0eTogMTtcclxuICB9XHJcbn1cclxuXHJcbkBrZXlmcmFtZXMgZmFkZU91dCB7XHJcbiAgZnJvbSB7XHJcbiAgICBvcGFjaXR5OiAxO1xyXG4gIH1cclxuXHJcbiAgdG8ge1xyXG4gICAgb3BhY2l0eTogMDtcclxuICB9XHJcbn1cclxuIl19 */", "import DaraForm from \"./DaraForm\";\r\n\r\nimport \"../style/daracl.form.scss\";\r\n\r\nimport \"@daracl/datetimepicker/style/daracl.datetimepicker.scss\";\r\n\r\nexport = DaraForm;\r\n"],
5
+ "mappings": "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",
6
6
  "names": ["descEle", "init_constants", "init_Lanauage", "message", "init_constants", "init_constants", "init_Lanauage", "init_constants", "init_constants", "init_constants", "init_Lanauage", "item", "validResult", "Lanauage_default", "xssFilter", "init_utils", "expressionsFunction", "__esm", "DateViewMode", "regexp", "message", "__commonJS", "init_constants", "fieldStyle", "validResult", "init_constants", "localeMessage", "Language", "init_Lanauage", "init_constants", "init_constants", "init_constants", "init_Lanauage", "init_Lanauage", "message", "init_daracl_datetimepicker", "require_src", "init_daracl_datetimepicker"]
7
7
  }