@kbss-cvut/s-forms
Version:
Semantic forms generator and processor
1 lines • 82.8 kB
JavaScript
import"core-js/modules/es.array.iterator.js";import"core-js/modules/es.promise.js";import"core-js/modules/web.dom-collections.iterator.js";import e,{useMemo as t,useState as s,useEffect as n,useContext as o,useRef as r,forwardRef as a,useImperativeHandle as i}from"react";import l from"prop-types";import"core-js/modules/es.object.assign.js";import*as c from"jsonld";import"core-js/modules/es.array.includes.js";import"core-js/modules/es.string.includes.js";import*as u from"jsonld-utils";import"core-js/modules/es.array.sort.js";import p from"@kbss-cvut/tsort";import m from"react-dom";import{Form as d,FormGroup as h,FormControl as E,OverlayTrigger as S,Tooltip as A,Col as g,Row as _,Button as f,Badge as v,Overlay as T,FormText as N,Popover as I,ListGroup as O,ListGroupItem as C,Card as L,Accordion as w,ButtonToolbar as R,Nav as b,NavItem as y,NavLink as D,Modal as V,Alert as H}from"react-bootstrap";import{jsx as M,jsxs as U}from"react/jsx-runtime";import{IntlProvider as x,useIntl as P}from"react-intl";import"core-js/modules/esnext.set.add-all.js";import"core-js/modules/esnext.set.delete-all.js";import"core-js/modules/esnext.set.difference.js";import"core-js/modules/esnext.set.every.js";import"core-js/modules/esnext.set.filter.js";import"core-js/modules/esnext.set.find.js";import"core-js/modules/esnext.set.intersection.js";import"core-js/modules/esnext.set.is-disjoint-from.js";import"core-js/modules/esnext.set.is-subset-of.js";import"core-js/modules/esnext.set.is-superset-of.js";import"core-js/modules/esnext.set.join.js";import"core-js/modules/esnext.set.map.js";import"core-js/modules/esnext.set.reduce.js";import"core-js/modules/esnext.set.some.js";import"core-js/modules/esnext.set.symmetric-difference.js";import"core-js/modules/esnext.set.union.js";import q from"react-datepicker";import{parse as j,format as z}from"date-fns";import F from"classnames";import k from"yasgui-yasqe";import"@triply/yasgui/build/yasgui.min.css";import Q from"inputmask-core";import{IntelligentTreeSelect as B}from"intelligent-tree-select/lib/components/IntelligentTreeSelect.js";import"intelligent-tree-select/lib/styles.css";import"core-js/modules/es.regexp.to-string.js";import"core-js/modules/es.parse-int.js";import"core-js/modules/es.regexp.exec.js";import"core-js/modules/es.string.replace.js";import W from"javascript-time-ago";import X from"javascript-time-ago/locale/en";import G from"javascript-time-ago/locale/cs";import{motion as Y}from"framer-motion";import{Rings as K}from"react-loader-spinner";import"core-js/modules/es.string.trim.js";import"core-js/modules/es.regexp.constructor.js";function J(){return J=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var s=arguments[t];for(var n in s)Object.prototype.hasOwnProperty.call(s,n)&&(e[n]=s[n])}return e},J.apply(this,arguments)}function $(e,t){if(null==e)return{};var s,n,o={},r=Object.keys(e);for(n=0;n<r.length;n++)t.indexOf(s=r[n])>=0||(o[s]=e[s]);return o}class Z{static log(e){console.log(e)}static warn(e){console.warn?console.warn(e):console.log("WARNING: "+e)}static error(e){console.error?console.error(e):console.log("ERROR: "+e)}}const ee=["children"],te=/*#__PURE__*/e.createContext({}),se=s=>{let{children:n}=s,o=$(s,ee),r=[];const a=async(e,t)=>{const s=r[e];if(s&&s.length)return s;const n=await o.fetchTypeAheadValues(t);return n.length?c.frame(n,{},{}).then(t=>{const s=t["@graph"];return r.push(Object.assign({},s,{[e]:s})),s}):(Z.warn(`No data received when loading options using id ${e}`),[])},i=e=>r[e]||[],l=t(()=>({loadFormOptions:a,getOptions:i}),[a,i]);/*#__PURE__*/return e.createElement(te.Provider,J({value:l},o),n)};var ne;se.propTypes={children:l.element.isRequired,fetchTypeAheadValues:l.func};class oe{}ne=oe,oe.COLUMN_COUNT=12,oe.INPUT_LENGTH_THRESHOLD=50,oe.DATETIME_NUMBER_FORMAT="x",oe.EPOCH_MILLISECONDS="epoch-milliseconds",oe.FORM="http://onto.fel.cvut.cz/ontologies/documentation/form",oe.HAS_SUBQUESTION="http://onto.fel.cvut.cz/ontologies/documentation/has_related_question",oe.HAS_ANSWER="http://onto.fel.cvut.cz/ontologies/documentation/has_answer",oe.HAS_OPTION="http://onto.fel.cvut.cz/ontologies/form/has-possible-value",oe.HAS_OPTIONS_QUERY="http://onto.fel.cvut.cz/ontologies/form/has-possible-values-query",oe.HAS_VALUE_TYPE="http://onto.fel.cvut.cz/ontologies/form/has-value-type",oe.IS_DISABLED="http://onto.fel.cvut.cz/ontologies/aviation/form-376/is-disabled",oe.INPUT_MASK="http://onto.fel.cvut.cz/ontologies/form/has-input-mask",oe.LAYOUT_CLASS="http://onto.fel.cvut.cz/ontologies/form-layout/has-layout-class",oe.LAYOUT={FORM:"form",QUESTION_SECTION:"section",WIZARD_STEP:"wizard-step",DATE:"date",TIME:"time",DATETIME:"datetime",TEXT:"text",TEXTAREA:"textarea",CHECKBOX:"checkbox",QUESTION_TYPEAHEAD:"type-ahead",MASKED_INPUT:"masked-input",ANSWERABLE:"answerable",SPARQL:"sparql",TURTLE:"ttl",DISABLED:"disabled",HIDDEN:"hidden",COLLAPSED:"collapsed",EMPHASISED:"emphasised",EMPHASISE_ON_RELEVANT:"emphasise-on-relevant",CATEGORY:["category-1","category-2","category-3","category-4","category-5"]},oe.HAS_INITIAL_INPUT_LENGTH="http://onto.fel.cvut.cz/ontologies/form-layout/has-initial-input-length",oe.VALUE_TYPE_CODE="code",oe.VALUE_TYPE_TEXT="text",oe.GENERATED_ROW_SIZE=1,oe.HAS_QUESTION_ORIGIN="http://onto.fel.cvut.cz/ontologies/form/has-question-origin",oe.HAS_ANSWER_ORIGIN="http://onto.fel.cvut.cz/ontologies/form/has-answer-origin",oe.HAS_DATA_VALUE="http://onto.fel.cvut.cz/ontologies/documentation/has_data_value",oe.HAS_OBJECT_VALUE="http://onto.fel.cvut.cz/ontologies/documentation/has_object_value",oe.HELP_DESCRIPTION="http://purl.org/dc/elements/1.1/description",oe.SOURCE="http://purl.org/dc/elements/1.1/source",oe.XSD={MAX_EXCLUSIVE:"http://www.w3.org/2001/XMLSchema#maxExclusive",MAX_INCLUSIVE:"http://www.w3.org/2001/XMLSchema#maxInclusive",MIN_EXCLUSIVE:"http://www.w3.org/2001/XMLSchema#minExclusive",MIN_INCLUSIVE:"http://www.w3.org/2001/XMLSchema#minInclusive",INT:"http://www.w3.org/2001/XMLSchema#int",INTEGER:"http://www.w3.org/2001/XMLSchema#integer",NEGATIVE_INTEGER:"http://www.w3.org/2001/XMLSchema#negativeInteger",NON_NEGATIVE_INTEGER:"http://www.w3.org/2001/XMLSchema#nonNegativeInteger",NON_POSITIVE_INTEGER:"http://www.w3.org/2001/XMLSchema#nonPositiveInteger",POSITIVE_INTEGER:"http://www.w3.org/2001/XMLSchema#positiveInteger",FLOAT:"http://www.w3.org/2001/XMLSchema#float",POSITIVE_FLOAT:"http://www.w3.org/2001/XMLSchema#positiveFloat",NEGATIVE_FLOAT:"http://www.w3.org/2001/XMLSchema#negativeFloat",BOOLEAN:"http://www.w3.org/2001/XMLSchema#boolean"},oe.STEP="http://onto.fel.cvut.cz/ontologies/form/step",oe.PATTERN="http://onto.fel.cvut.cz/ontologies/form/pattern",oe.ACCEPTS_ANSWER_VALUE="http://onto.fel.cvut.cz/ontologies/form/accepts-answer-value",oe.ACCEPTS="http://onto.fel.cvut.cz/ontologies/form/accepts",oe.HAS_DATATYPE="http://onto.fel.cvut.cz/ontologies/form/has-datatype",oe.HAS_LAYOUT_CLASS="http://onto.fel.cvut.cz/ontologies/form/has-layout-class",oe.HAS_POSSIBLE_VALUES_QUERY="http://onto.fel.cvut.cz/ontologies/form/has-possible-values-query",oe.HAS_REQUIRED_VALUE="http://onto.fel.cvut.cz/ontologies/form/has-required-value",oe.HAS_TESTED_QUESTION="http://onto.fel.cvut.cz/ontologies/form/has-tested-question",oe.HAS_TESTED_FORM="http://onto.fel.cvut.cz/ontologies/form/has-tested-form",oe.HAS_UNIT="http://onto.fel.cvut.cz/ontologies/form/has-unit",oe.HAS_VALID_ANSWER="http://onto.fel.cvut.cz/ontologies/form/has-valid-answer",oe.IS_RELEVANT_IF="http://onto.fel.cvut.cz/ontologies/form/is-relevant-if",oe.ACCEPTS_VALIDATION_VALUE="http://onto.fel.cvut.cz/ontologies/form/accepts-validation-value",oe.HAS_VALIDATION_MESSAGE="http://onto.fel.cvut.cz/ontologies/form/has-validation-message",oe.NEGATIVE_CONDITION="http://onto.fel.cvut.cz/ontologies/form/negative-condition",oe.REQUIRES_ANSWER="http://onto.fel.cvut.cz/ontologies/form/requires-answer",oe.USED_ONLY_FOR_COMPLETENESS="http://onto.fel.cvut.cz/ontologies/form/used-only-for-completeness",oe.REQUIRES_ANSWER_DESCRIPTION_IF="http://onto.fel.cvut.cz/ontologies/form/requires-answer-description-if",oe.REQUIRES_ANSWER_IF="http://onto.fel.cvut.cz/ontologies/form/requires-answer-if",oe.HAS_PRECEDING_QUESTION="http://onto.fel.cvut.cz/ontologies/form/has-preceding-question",oe.HAS_PRECEDING_VALUE="http://onto.fel.cvut.cz/ontologies/form/has-preceding-value",oe.HAS_MEDIA_CONTENT="http://onto.fel.cvut.cz/ontologies/form/has-media-content",oe.CONDITION="http://onto.fel.cvut.cz/ontologies/form/condition",oe.OR_CONDITION="http://onto.fel.cvut.cz/ontologies/form/or-condition",oe.HAS_SUB_CONDITION="http://onto.fel.cvut.cz/ontologies/form/has-sub-condition",oe.HAS_PATTERN="http://onto.fel.cvut.cz/ontologies/form-lt/has-pattern",oe.HAS_DECLARED_PREFIX="http://onto.fel.cvut.cz/ontologies/form-spin/has-declared-prefix",oe.PREFIX="http://www.w3.org/ns/shacl#prefix",oe.NAMESPACE="http://www.w3.org/ns/shacl#namespace",oe.HAS_COMMENT="http://onto.fel.cvut.cz/ontologies/form/has-comment",oe.HAS_COMMENT_VALUE="http://onto.fel.cvut.cz/ontologies/form/has-comment-value",oe.HAS_AUTHOR="http://onto.fel.cvut.cz/ontologies/form/has-author",oe.HAS_TIMESTAMP="http://onto.fel.cvut.cz/ontologies/form/has-timestamp",oe.TIME_FORMAT="http://onto.fel.cvut.cz/ontologies/form/time-format",oe.DATE_FORMAT="http://onto.fel.cvut.cz/ontologies/form/date-format",oe.DATETIME_FORMAT="http://onto.fel.cvut.cz/ontologies/form/datetime-format",oe.TIMESTAMP_FORMAT="http://onto.fel.cvut.cz/ontologies/form/timestamp-format",oe.NOT_ANSWERED_QUESTION="http://onto.fel.cvut.cz/ontologies/form/not-answered-question",oe.ANSWERED_QUESTION="http://onto.fel.cvut.cz/ontologies/form/answered-question",oe.HAS_VALIDATION_SEVERITY="http://onto.fel.cvut.cz/ontologies/form/has-validation-severity",oe.RDFS_LABEL=u.RDFS_LABEL,oe.RDFS_COMMENT=u.RDFS_COMMENT,oe.DEFAULT_HAS_CHILD=u.DEFAULT_HAS_CHILD,oe.BROADER="http://www.w3.org/2004/02/skos/core#broader",oe.HAS_NON_SELECTABLE_VALUE="http://onto.fel.cvut.cz/ontologies/form/has-non-selectable-value",oe.PROVIDES_DEREFERENCEABLE_ANSWER_VALUES="http://onto.fel.cvut.cz/ontologies/form/provides-dereferenceable-answer-values",oe.ICONS={QUESTION_COMMENTS:"questionComments",QUESTION_HELP:"questionHelp",QUESTION_LINK:"questionLink"},oe.ICON_BEHAVIOR={ENABLE:"enable",DISABLE:"disable",ON_HOVER:"onHover"},oe.DEFAULT_OPTIONS={icons:[{id:ne.ICONS.QUESTION_HELP,behavior:ne.ICON_BEHAVIOR.ENABLE},{id:ne.ICONS.QUESTION_COMMENTS,behavior:ne.ICON_BEHAVIOR.ON_HOVER},{id:ne.ICONS.QUESTION_LINK,behavior:ne.ICON_BEHAVIOR.ON_HOVER}]},oe.LANG={cs:{locale:"cs",label:"Čestina"},en:{locale:"en",label:"English"}},oe.VALIDATION={SEVERITY:{ERROR:"error",WARNING:"warning"},DEFAULT_MESSAGE:{REQUIRED:"This field is required.",REQUIRED_ONLY_FOR_COMPLETENESS:"This field is required to complete the form.",INVALID:"This field is invalid.",CHECK:"This field must be checked.",LOWER_OR_EQUAL:"This field should be a number equal or lower to ",GREATER_OR_EQUAL:"This field must be greater or equal to "},CLASSNAME:{ERROR:"is-invalid",WARNING:"is-warning"}};class re{static getStringHash(e){let t=0;const s=e?e.length:0;if(0===s)return t;for(let n=0;n<s;n++)t=(t<<5)-t+e.charCodeAt(n),t&=t;return t}static asArray(e){return e?e.constructor===Array?e:[e]:[]}static findQuestionById(e,t,s,n,o){if(s&&t["@id"]===e)return t;const r=re.asArray(t[oe.HAS_SUBQUESTION]);if(n)for(let t of r){let s=re.findQuestionById(e,t,!0,!1,!1);if(s)return s}if(o)for(let t of r){let s=re.findQuestionById(e,t,!1,!0,!0);if(s)return s}return null}static findKeyInObjects(e,t){for(let s=0;s<e.length;s++)for(let n=0;n<t.length;n++)if(e[s].hasOwnProperty(t[n]))return t[n];return null}}class ae{static putObject(e,t){ae.objectMap[e]=t}static getObject(e){return ae.objectMap[e]}}ae.objectMap={};class ie{static getFirstObject(e,t){const s=c.getValues(e,t);return 0===s.length?null:s[0]}static compareValues(e,t){return t="object"==typeof t?t:{"@value":t},!!((e="object"==typeof e?e:{"@value":e})&&e["@value"]&&t&&t["@value"]&&("string"==typeof e["@value"]?e["@value"]:JSON.stringify(e["@value"]))===("string"==typeof t["@value"]?t["@value"]:JSON.stringify(t["@value"])))||c.compareValues(e,t)}static toplogicalSort(e,t){let s;do{s=!1;for(let n=0;n<e.length;n++)for(let o=n;o<e.length;o++)if(e[n][t]&&("object"==typeof e[n][t]?e[n][t]["@id"]:e[n][t])===e[o]["@id"]){const t=e[n];e[n]=e[o],e[o]=t,s=!0;break}}while(s);return e}static orderPreservingToplogicalSort(e,t){const s=p(),n={};for(let o=0;o<e.length;o++){let r=e[o]["@id"];s.add(r),n[r]=e[o],re.asArray(e[o][t]).map(e=>"object"==typeof e?e["@id"]:e).map(e=>[e,r]).forEach(e=>s.add(e))}let o=s.sort();for(let t=0;t<o.length;t++)e[t]=n[o[t]];return e}static getCompareLocalizedLabelFunction(e){return(t,s)=>{const n=u.getLocalized(t[u.RDFS_LABEL],e),o=u.getLocalized(s[u.RDFS_LABEL],e);return n<o?-1:n>o?1:0}}static orderByLocalizedLabels(e,t){return e.sort(ie.getCompareLocalizedLabelFunction(t))}static checkId(e,t){if(void 0!==e)return e.constructor===Array?!!e.find(e=>e["@id"]===t):e.constructor===Object?e["@id"]===t:void 0}}class le{static isForm(e){return u.hasValue(e,oe.LAYOUT_CLASS,oe.LAYOUT.FORM)}static isWizardStep(e){return u.hasValue(e,oe.LAYOUT_CLASS,oe.LAYOUT.WIZARD_STEP)}static isSection(e){return u.hasValue(e,oe.LAYOUT_CLASS,oe.LAYOUT.QUESTION_SECTION)}static isAnswerable(e){return u.hasValue(e,oe.LAYOUT_CLASS,oe.LAYOUT.ANSWERABLE)}static isTypeahead(e){return u.hasValue(e,oe.LAYOUT_CLASS,oe.LAYOUT.QUESTION_TYPEAHEAD)}static getPossibleValuesQuery(e){return u.getJsonAttValue(e,oe.HAS_OPTIONS_QUERY)}static isDisabled(e){return u.hasValue(e,oe.LAYOUT_CLASS,oe.LAYOUT.DISABLED)}static isHidden(e){return u.hasValue(e,oe.LAYOUT_CLASS,oe.LAYOUT.HIDDEN)}static isTextarea(e,t){return t&&t.length>oe.INPUT_LENGTH_THRESHOLD&&!le.isTypeahead(e)||u.hasValue(e,oe.LAYOUT_CLASS,oe.LAYOUT.TEXTAREA)}static isText(e){return u.hasValue(e,oe.LAYOUT_CLASS,oe.LAYOUT.TEXT)}static isCalendar(e){return le.isDate(e)||le.isTime(e)||le.isDateTime(e)}static isDate(e){return u.hasValue(e,oe.LAYOUT_CLASS,oe.LAYOUT.DATE)}static isTime(e){return u.hasValue(e,oe.LAYOUT_CLASS,oe.LAYOUT.TIME)}static isDateTime(e){return u.hasValue(e,oe.LAYOUT_CLASS,oe.LAYOUT.DATETIME)}static isTimestamp(e){return u.hasValue(e,oe.TIMESTAMP_FORMAT,oe.EPOCH_MILLISECONDS)}static isCheckbox(e){return u.hasValue(e,oe.LAYOUT_CLASS,oe.LAYOUT.CHECKBOX)}static isMaskedInput(e){return u.hasValue(e,oe.LAYOUT_CLASS,oe.LAYOUT.MASKED_INPUT)}static isSparqlInput(e){return u.hasValue(e,oe.LAYOUT_CLASS,oe.LAYOUT.SPARQL)}static isTurtleInput(e){return u.hasValue(e,oe.LAYOUT_CLASS,oe.LAYOUT.TURTLE)}static isCollapsed(e){return u.hasValue(e,oe.LAYOUT_CLASS,oe.LAYOUT.COLLAPSED)}static isEmphasised(e){return u.hasValue(e,oe.LAYOUT_CLASS,oe.LAYOUT.EMPHASISED)}static getCategory(e){return oe.LAYOUT.CATEGORY.find(t=>u.hasValue(e,oe.LAYOUT_CLASS,t))}static resolveValue(e){return e?e[oe.HAS_OBJECT_VALUE]?e[oe.HAS_OBJECT_VALUE]["@id"]:u.getJsonAttValue(e,oe.HAS_DATA_VALUE):null}static resolveValueObject(e){return e?e[oe.HAS_OBJECT_VALUE]?re.asArray(e[oe.HAS_OBJECT_VALUE])[0]:e[oe.HAS_DATA_VALUE]?re.asArray(e[oe.HAS_DATA_VALUE])[0]:null:null}static isRelevant(e){if(!e[oe.IS_RELEVANT_IF])return!0;for(let t of re.asArray(e[oe.IS_RELEVANT_IF]))if(!le.testCondition(t))return!1;return!0}static hasValidationLogic(e){return!!(e[oe.REQUIRES_ANSWER]||e[oe.REQUIRES_ANSWER_IF]||e[oe.PATTERN]||this.containsXSDProperty(e))}static isValid(e){if(!1===e[oe.HAS_VALID_ANSWER])return!1;for(const t of re.asArray(e[oe.HAS_SUBQUESTION]))if(!1===this.isValid(t))return!1;return!0}static testOrCondition(e){const t=e[oe.HAS_SUB_CONDITION];t||console.warn("Or condition does not have any sub-condition !");for(const e of this._getMappedObjectsArray(t))if(this.testCondition(e))return!0;return!1}static testCondition(e){const t=e[oe.ACCEPTS_VALIDATION_VALUE],s=e[oe.ACCEPTS_ANSWER_VALUE],n=e[oe.ACCEPTS],o=e[oe.HAS_TESTED_QUESTION];let r;if(e[oe.HAS_SUB_CONDITION])return this.testOrCondition(e);if(t&&s&&console.warn("Support for validation and requirement constraints at same time is not implemented !"),n&&o){const e=re.asArray(n);if(1!==e.length&&console.warn("Support for multiple accepts values is not implemented !"),e[0]["@id"]===oe.ANSWERED_QUESTION){(s||t)&&console.warn("Support for accepted answer/validations values is not implemented !");for(const e of this._getMappedObjectsArray(o))if(!this.hasAnswer(e))return!1;return!0}console.warn("No support to accept question of type "+e[0]["@id"]+" !")}if(t&&o){const e=re.asArray(t);(1!==e.length||!0!==e[0]&&"true"!==e[0])&&console.warn('Validation values other than "true" are not implemented !');for(const e of re.asArray(o)){if(r=ae.getObject(e["@id"]),void 0===r)return console.warn("Questions is not loaded in an object map."),!0;if(!1===this.isValid(r))return!1}return!0}if(s&&o){r=ae.getObject(o["@id"]);for(const e of re.asArray(s)){if(!r)return console.warn("Question is not defined."),!0;if(!r.hasOwnProperty(oe.HAS_ANSWER))return!1;const t=c.getValues(r,oe.HAS_ANSWER);if(0===t.length)return!1;const s=le.resolveValueObject(t[0]);if(s&&e&&s.hasOwnProperty("@value")&&e.hasOwnProperty("@id")&&s["@value"]==e["@id"])return!0;if(ie.compareValues(s,e))return!0}}return!1}static _getMappedObjectsArray(e,t){return re.asArray(e).map(e=>{const s=ae.getObject(e["@id"]);return void 0===s?(console.warn((t||"Object")+' "'+e["@id"]+'" is not loaded in an object map.'),null):s}).filter(function(e){return null!==e})}static hasAnswer(e){if(!e)return!1;if(e.hasOwnProperty(oe.HAS_ANSWER)){const t=c.getValues(e,oe.HAS_ANSWER);if(t.length){const e=le.resolveValueObject(t[0]);if(e&&(e["@value"]||e["@id"]))return!0}}for(const t of re.asArray(e[oe.HAS_SUBQUESTION]))if(le.hasAnswer(t))return!0;return!1}static getAnswerValue(e){if(!e)return null;if(e.hasOwnProperty(oe.HAS_ANSWER)){const t=c.getValues(e,oe.HAS_ANSWER);if(t.length){const e=le.resolveValueObject(t[0]);if(e&&(e["@value"]||e["@id"]))return e["@value"]||e["@id"]}}for(const t of re.asArray(e[oe.HAS_SUBQUESTION])){const e=le.getAnswerValue(t);if(e)return e}return null}static resolveDateTimeFormat(e,t,s){const n=le.isDate(e),o=le.isTime(e),r=le.isDateTime(e);switch(!0){case n:return e[oe.DATE_FORMAT]||s.dateFormat;case o:return e[oe.TIME_FORMAT]||s.timeFormat;case r:return e[oe.DATETIME_FORMAT]||s.dateTimeFormat;default:return null}}static dfsTraverseQuestionTree(e,t,s=(()=>{})){function n(e){t(e),re.asArray(e[oe.HAS_SUBQUESTION]).forEach(e=>{n(e)}),s(e)}e.forEach(e=>{n(e)})}static getFormSpecification(e){let t=-1;const s="..";let n="";return le.dfsTraverseQuestionTree(e,function(e){t+=1;const o=" ".repeat(t);let r="";e[oe.REQUIRES_ANSWER]&&!e[oe.USED_ONLY_FOR_COMPLETENESS]?r=o+s+"required: "+e[oe.REQUIRES_ANSWER]+"\n":e[oe.USED_ONLY_FOR_COMPLETENESS]&&(r=o+s+"required only for completeness: "+e[oe.USED_ONLY_FOR_COMPLETENESS]+"\n"),n+=o+e["http://www.w3.org/2000/01/rdf-schema#label"]+"\n",n+=e[oe.HELP_DESCRIPTION]?o+s+"description: "+e[oe.HELP_DESCRIPTION]+"\n":"",n+=r,n+=e[oe.PATTERN]?o+s+"pattern: "+e[oe.PATTERN]+"\n":"",n+=e[oe.INPUT_MASK]?o+s+"mask: "+e[oe.INPUT_MASK]+"\n":"",n+=e[oe.XSD.MAX_INCLUSIVE]?o+s+"This field should be a number equal or lower to "+e[oe.XSD.MAX_INCLUSIVE]+"\n":"",n+=e[oe.XSD.MIN_INCLUSIVE]?o+s+"This field must be greater or equal to "+e[oe.XSD.MIN_INCLUSIVE]+"\n":"",n+=e[oe.HAS_VALIDATION_MESSAGE]?o+s+"validation-message: "+e[oe.HAS_VALIDATION_MESSAGE]+"\n":"",n+="\n"},function(){t-=1}),n}static containsXSDProperty(e){const t=Object.keys(e),s=Object.values(oe.XSD);for(const e of s)if(t.includes(e))return!0;return!1}static getInputMask(e){if(e[oe.INPUT_MASK])return e[oe.INPUT_MASK]}}const ce={},ue=[],pe=/*#__PURE__*/e.createContext({}),me=o=>{const[r,a]=s(o.data||ce),[i,l]=s(o.formQuestions||ue);n(()=>{if(o.isFormValid){const e=le.isValid(r);o.isFormValid(e)}},[]),n(()=>{a(o.data||ce)},[i]);const c=e=>{e&&a(Object.assign({},r,e))},u=(e,t)=>{if(!(!t||e<0||e>=i.length)){if("object"==typeof t){const s=[...i];s[e]=Object.assign({},s[e],t),l(s)}if(Array.isArray(t)&&l(t),o.isFormValid){const e=le.isValid(r);o.isFormValid(e)}}},p=()=>r,m=e=>null==e?i:i[e],d=t(()=>({updateData:c,updateFormQuestionsData:u,getData:p,getFormQuestionsData:m}),[m,p]);/*#__PURE__*/return e.createElement(pe.Provider,J({value:d},o),o.children)};me.propTypes={children:l.element.isRequired,data:l.object.isRequired,formQuestions:l.array.isRequired,isFormValid:l.func};class de extends e.Component{constructor(e){super(e),this.state={cursorPosition:0}}focus(){m.findDOMNode(this.input).focus()}getInputDOMNode(){return m.findDOMNode(this.input)}componentDidUpdate(e,t,s){(this.fieldDidShrink(e)||this.fieldDidExpand(e))&&this.updateFieldCursorPosition()}fieldDidExpand(e){return"textarea"===this.props.type&&"textarea"!==e.type}fieldDidShrink(e){return"text"===this.props.type&&"text"!==e.type}updateFieldCursorPosition(){this.focus(),this.getInputDOMNode().setSelectionRange(this.state.cursorPosition,this.state.cursorPosition)}saveCursorPosition(e){this.props.onChange(e),this.setState({cursorPosition:e.target.selectionStart})}render(){switch(this.props.type){case"radio":return this._renderRadio();case"checkbox":return this._renderCheckbox();case"select":return this._renderSelect();case"textarea":return this._renderTextArea();default:return this._renderInput()}}_renderCheckbox(){/*#__PURE__*/return e.createElement(d.Group,{size:"small",controlId:Math.floor(Math.random()*Number.MAX_SAFE_INTEGER),className:"mb-3"},/*#__PURE__*/e.createElement(d.Check,J({type:"checkbox",ref:e=>this.input=e},this.props,{label:this.props.label,className:this.props.validation.classname})),this.props.validation.message)}_renderRadio(){/*#__PURE__*/return e.createElement(h,{size:"small",className:"mb-3"},/*#__PURE__*/e.createElement(d.Check,J({type:"radio",ref:e=>this.input=e},this.props,{label:this.props.label,className:this.props.validation.classname})),this.props.validation.message)}_renderSelect(){/*#__PURE__*/return e.createElement(h,{size:"small",className:"mb-3"},this._renderLabel(),/*#__PURE__*/e.createElement(E,J({as:"select",className:this.props.validation.classname,ref:e=>this.input=e},this.props),this.props.children),this.props.validation.message)}_renderLabel(){return this.props.label?/*#__PURE__*/e.createElement(d.Label,null,this.props.label):null}_renderTextArea(){/*#__PURE__*/return e.createElement(h,{size:"small",className:"mb-3"},this._renderLabel(),/*#__PURE__*/e.createElement(E,J({ref:e=>this.input=e,as:"textarea"},this.props,{className:this.props.validation.classname,onChange:e=>this.saveCursorPosition(e)})),this.props.validation.message)}_renderInput(){/*#__PURE__*/return e.createElement(h,{size:"small",className:"mb-3"},this._renderLabel(),/*#__PURE__*/e.createElement(E,J({className:this.props.validation.classname,ref:e=>this.input=e,as:"input",placeholder:this.props.placeholder},this.props,{onChange:e=>this.saveCursorPosition(e)})),this.props.validation.message)}}de.propTypes={type:l.string,label:l.object,value:l.any,onChange:l.func,help:l.string,validation:l.object,placeholder:l.string},de.defaultProps={type:"text"};const he=["children"],Ee=/*#__PURE__*/e.createContext({}),Se={components:{inputComponent:de},componentsOptions:{dateTimeAnswer:{dateFormat:"yyyy-MM-dd",timeFormat:"HH:mm",dateTimeFormat:"yyyy-MM-dd HH:mm:ss"},readOnly:!1},options:{intl:{locale:"en"},modalView:!1,modalProps:{},horizontalWizardNav:!0,wizardStepButtons:!0,enableWizardStepSkip:!0,startingStep:0}},Ae=s=>{let{children:n}=s,o=$(s,he);const r=t(()=>({inputComponent:o.components&&o.components.inputComponent||Se.components.inputComponent,componentsOptions:Object.assign({},Se.componentsOptions,o.componentsOptions),options:Object.assign({},Se.options,o.options),mapComponent:o.mapComponent}),[o]);/*#__PURE__*/return e.createElement(Ee.Provider,{value:r},n)};Ae.propTypes={children:l.element.isRequired,components:l.object,mapComponent:l.func,options:l.object};var ge={"comment.form.placeholder":"Sem napište své komentáře (Ctrl+Enter pro potvrzení)","wizard.nav.tooltip":"Navigace na této kartě je zakázána, aby nedošlo k přehlédnutí důležitých otázek. K navigaci na tuto kartu použijte tlačítka související s formulářem.","wizard.next":"Další","wizard.previous":"Předchozí","section.expand":"Rozbalit","section.collapse":"Sbalit","validation.required":"Toto pole je povinné.","validation.required_only_for_completeness":"Toto pole je povinné pro vyplnění formuláře.","validation.invalid":"Toto pole je neplatné.","validation.check":"Toto pole musí být zkontrolováno.","validation.lower_or_equal":"Toto pole by mělo být číslo rovné nebo nižší než ","validation.greater_or_equal":"Toto pole musí být větší nebo rovno ","error.default_message":"Něco se pokazilo.","error.view_details":"Zobrazit podrobnosti o chybě"},_e={"comment.form.placeholder":"Write your comments here (Ctrl+Enter to confirm, Esc to cancel)","wizard.nav.tooltip":"Navigation to this tab is disabled to prevent overlooking important questions. Use form-related buttons to navigate to this tab instead.","wizard.next":"Next","wizard.previous":"Previous","section.expand":"Expand","section.collapse":"Collapse","validation.required":"This field is required.","validation.required_only_for_completeness":"This field is required to complete the form.","validation.invalid":"This field is invalid.","validation.check":"This field must be checked.","validation.lower_or_equal":"This field should be a number equal or lower to ","validation.greater_or_equal":"This field must be greater or equal to ","error.default_message":"Something went wrong.","error.view_details":"View Error Details"};const fe=/*#__PURE__*/e.createContext({}),ve=({children:e,locale:t=navigator.language})=>{let s=_e;return t===oe.LANG.cs.locale&&(s=ge),M(fe.Provider,{value:{locale:t,lang:s},children:M(x,{locale:t,messages:s,children:e})})};var Te,Ne={"@graph":[{"@type":"http://onto.fel.cvut.cz/ontologies/documentation/question","http://onto.fel.cvut.cz/ontologies/form-layout/has-layout-class":"form","http://onto.fel.cvut.cz/ontologies/documentation/has_related_question":[{"http://onto.fel.cvut.cz/ontologies/form-layout/has-layout-class":["wizard-step","section"],"http://www.w3.org/2000/01/rdf-schema#label":[{"@language":"en","@value":"Description"},{"@language":"cs","@value":"Popis"}],"http://onto.fel.cvut.cz/ontologies/documentation/has_related_question":[{"@type":"http://onto.fel.cvut.cz/ontologies/documentation/question","http://onto.fel.cvut.cz/ontologies/form-layout/has-layout-class":["textarea"],"http://www.w3.org/2000/01/rdf-schema#label":[{"@language":"en","@value":"Description"},{"@language":"cs","@value":"Popis"}],"http://onto.fel.cvut.cz/ontologies/documentation/has_answer":{"@type":"http://onto.fel.cvut.cz/ontologies/documentation/answer","http://onto.fel.cvut.cz/ontologies/documentation/has_data_value":""}}]}]}]};class Ie{static generateForm(){return JSON.parse(JSON.stringify(Ne))}}const Oe={root:{[oe.HAS_LAYOUT_CLASS]:oe.FORM},expandProperties:[oe.HAS_SUBQUESTION,oe.IS_RELEVANT_IF,oe.HAS_ANSWER,oe.HAS_DECLARED_PREFIX,oe.HAS_OPTION,oe.HAS_COMMENT]};class Ce{static customFrame(e,t,s){if(arguments.length<2)return c.nextTick(function(){s(new TypeError("Could not frame, too few arguments."))});null===t&&(t=Oe),c.flatten(e,null,null,(e,t)=>{})}static expandStructure(e){let t;const s={};e["@graph"].forEach(e=>{s[e["@id"]]=e,le.isForm(e)&&(t=e)});try{this._expandGraph(t,Oe,s)}catch(e){console.error("Error '"+e+"' occured, while trying to apply frame-ing with custom shape.")}return s}static _expandGraph(e,t,s){let n,o,r;t.expandProperties.forEach(a=>{if(e.hasOwnProperty(a)){e[a]=re.asArray(e[a]),n=e[a];for(let e=0;e<n.length;e++)r=this._getId(n[e]),o=s[r],void 0!==o?(n[e]=o,this._expandGraph(o,t,s)):console.warn("object with @id "+r+" was not defined in input data.")}})}static _getId(e){return"string"==typeof e?e:e["@id"]}}Te=Ce,Ce.compressStructure=e=>{let t=[],s=new Set;return t=Te._compressGraph(e,t,s),t=t.sort((e,t)=>e["@id"]&&t["@id"]?e["@id"].localeCompare(t["@id"]):0),t},Ce._compressGraph=(e,t,s)=>(s.has(e["@id"])||(t.push(e),s.add(e["@id"])),Oe.expandProperties.forEach(n=>{if(e.hasOwnProperty(n)){const o=e[n];for(let r=0;r<o.length;r++){const a=o[r];void 0!==a&&(o[r]=a,t=Te._compressGraph(a,t,s),e[n][r]={"@id":a["@id"]})}}}),t);class Le{static constructDefaultForm(e){const t=Ie.generateForm();return Le._constructFormQuestions(t,e)}static async constructForm(e,t){let s,n;return c.flatten(e,{}).then(e=>{try{const[o,r]=Le._constructFormQuestions(e,t);n=r,s={formQuestions:o}}catch(e){console.error("Error while constructing form questions from the provided structure:",e)}if(!n){const[e,o]=Le.constructDefaultForm(t);n=o,s={formQuestions:e}}return[s,n]}).catch(e=>(console.error("Failed to flatten the JSON-LD structure. Expected to transform a nested JSON-LD document into a flattened array of node objects:",e),[s,n]))}static _constructFormQuestions(e,t){let s,n,o,r=[];if(void 0!==e["@graph"][0]["@id"]?(o=Ce.expandStructure(e),Object.keys(o).map(e=>{ae.putObject(e,o[e])})):console.warn("default form is constructed."),s=e["@graph"].find(e=>le.isForm(e)),n=s[oe.HAS_SUBQUESTION],!n)throw Z.error("Could not find any questions in the received data."),"No questions in the form";return r=n.filter(e=>!(!le.isWizardStep(e)||le.isHidden(e))||(Z.warn("Item is not a wizard step: "+e),!1)),r.length||(Z.log("Could not find any wizard steps in the received data. Building form without steps"),s[oe.HAS_SUBQUESTION].forEach(e=>r.push(e))),r.sort(ie.getCompareLocalizedLabelFunction(t)),ie.orderPreservingToplogicalSort(r,oe.HAS_PRECEDING_QUESTION),[r,{root:s}]}}class we{static buildQuestionAnswerModel(e,t){const s={subQuestions:[]};let n;if(e&&(s.uri=e.root["@id"],s.origin=u.getJsonAttValue(e.root,oe.HAS_QUESTION_ORIGIN,"@id")),t)for(let e=0;e<t.length;e++)n=we.processQuestionAnswerHierarchy(t[e]),n&&s.subQuestions.push(n);return s}static processQuestionAnswerHierarchy(e){return e?we._processQuestion(e):null}static _processQuestion(e){const t={};if(t.uri=e["@id"],t.origin=u.getJsonAttValue(e,oe.HAS_QUESTION_ORIGIN,"@id"),e[oe.HAS_SUBQUESTION]){t.subQuestions=[];for(let s=0;s<e[oe.HAS_SUBQUESTION].length;s++)t.subQuestions.push(we._processQuestion(e[oe.HAS_SUBQUESTION][s]))}if(e[oe.HAS_ANSWER]){t.answers=[],Array.isArray(e[oe.HAS_ANSWER])||(e[oe.HAS_ANSWER]=[e[oe.HAS_ANSWER]]);for(let s=0;s<e[oe.HAS_ANSWER].length;s++)t.answers.push(we.processAnswer(e[oe.HAS_ANSWER][s]))}if(e[oe.HAS_COMMENT]){t.comments=[],Array.isArray(e[oe.HAS_COMMENT])||(e[oe.HAS_COMMENT]=[e[oe.HAS_COMMENT]]);for(let s=0;s<e[oe.HAS_COMMENT].length;s++)t.comments.push(we.processComment(e[oe.HAS_COMMENT][s]))}return t}static processComment(e){const t={};return t.author=u.getJsonAttValue(e,oe.HAS_AUTHOR,"@id"),t.value=u.getJsonAttValue(e,oe.HAS_COMMENT_VALUE),t.timestamp=u.getJsonAttValue(e,oe.HAS_TIMESTAMP,"@id"),t}static processAnswer(e){const t={};return t.uri=e["@id"],t.origin=u.getJsonAttValue(e,oe.HAS_ANSWER_ORIGIN,"@id"),e[oe.HAS_OBJECT_VALUE]?t.codeValue=u.getJsonAttValue(e,oe.HAS_OBJECT_VALUE,"@id"):t.textValue=u.getJsonAttValue(e,oe.HAS_DATA_VALUE),t}static generateAnswer(e){const t={};return t[oe.HAS_DATA_VALUE]="",t}}const Re=t=>{const{inputComponent:s,componentsOptions:n}=o(Ee);/*#__PURE__*/return e.createElement(s,{type:"checkbox",label:t.label,title:t.title,checked:!0===t.value||"true"===t.value,validation:t.validation,onChange:e=>{t.onChange(e.target.checked)},disabled:n.readOnly||le.isDisabled(t.question)})};Re.propTypes={question:l.object.isRequired,label:l.object.isRequired,title:l.string,value:l.oneOfType([l.string,l.bool]),onChange:l.func.isRequired,mouseHover:l.bool,validation:l.object};const be=t=>{const{componentsOptions:r}=o(Ee),[a,i]=s(null),[l,c]=s(""),u=le.resolveDateTimeFormat(t.question,t.value,r.dateTimeAnswer),p=le.isDate(t.question),m=le.isTime(t.question),E=le.isTimestamp(t.question);n(()=>{const e=S(t.value);e?i(e):(i(null),c(`Invalid date value ${t.value} of question ${t.question["@id"]}.`),console.error(l))},[t.value,u]);const S=e=>{if(!e)return null;const t=E?new Date(e):j(e,u,new Date);return isNaN(t.getTime())?null:t};/*#__PURE__*/return e.createElement(h,{size:"small",className:"mb-3"},/*#__PURE__*/e.createElement(d.Label,{className:"w-100"},t.label),/*#__PURE__*/e.createElement(q,{selected:a,placeholderText:u,onChange:e=>{i(e);const s=e?E?e.getTime():z(e,u):"";t.onChange(s)},showTimeSelect:!p,showTimeSelectOnly:m,timeFormat:"HH:mm",timeIntervals:1,timeCaption:"Time",dateFormat:u,className:F("form-control",t.validation.classname),disabled:r.readOnly||le.isDisabled(t.question)}),t.validation.message)};be.propTypes={question:l.object.isRequired,label:l.object.isRequired,title:l.string,value:l.oneOfType([l.string,l.number]),onChange:l.func.isRequired,validation:l.object};const ye=[oe.XSD.INT,oe.XSD.INTEGER,oe.XSD.NON_NEGATIVE_INTEGER,oe.XSD.NON_POSITIVE_INTEGER,oe.XSD.NEGATIVE_INTEGER,oe.XSD.POSITIVE_INTEGER,oe.XSD.FLOAT,oe.XSD.POSITIVE_FLOAT,oe.XSD.NEGATIVE_FLOAT],De={};De[oe.XSD.NON_NEGATIVE_INTEGER]={min:0},De[oe.XSD.NON_POSITIVE_INTEGER]={max:0},De[oe.XSD.NEGATIVE_INTEGER]={max:-1},De[oe.XSD.POSITIVE_INTEGER]={min:1};const Ve={"string-2":"prefixed",atom:"var"};class He{static _resolveInputType(e,t){return le.isSparqlInput(e)||le.isTurtleInput(e)||le.isTextarea(e,t)?"textarea":He._isNumeric(e)?"number":"text"}static _isNumeric(e){for(let t=0,s=ye.length;t<s;t++)if(u.hasValue(e,oe.HAS_DATATYPE,ye[t]))return!0;return!1}static resolveInputProperties(e,t,s){let n={};switch(n.type=He._resolveInputType(e,t),n.type){case"textarea":n.rows=5;break;case"number":n=Object.assign({},n,He._resolveNumberRestrictions(e),this._resolveStepRestriction(e))}return n.disabled=s.readOnly||le.isDisabled(e),n}static _resolveStepRestriction(e){let t={};return void 0!==e[oe.STEP]&&(t.step=u.getJsonAttValue(e,oe.STEP)),t}static _resolveNumberRestrictions(e){let t={};return Object.getOwnPropertyNames(De).forEach(s=>{u.hasValue(e,oe.HAS_DATATYPE,s)&&(t=Object.assign({},t,De[s]))}),void 0!==e[oe.XSD.MIN_INCLUSIVE]&&(t.min=e[oe.XSD.MIN_INCLUSIVE]),void 0!==e[oe.XSD.MIN_EXCLUSIVE]&&(t.min=e[oe.XSD.MIN_EXCLUSIVE]+1),void 0!==e[oe.XSD.MAX_EXCLUSIVE]&&(t.max=e[oe.XSD.MAX_EXCLUSIVE]-1),void 0!==e[oe.XSD.MAX_INCLUSIVE]&&(t.max=e[oe.XSD.MAX_INCLUSIVE]),t}static _preventCharacterInput(e,t){"number"!==He._resolveInputType(t)||e.key>="0"&&e.key<="9"||["Backspace","Delete","ArrowLeft","ArrowRight","-","Minus","NumpadSubtract",".","Period"].includes(e.key)||e.preventDefault()}}const Me=t=>{const{inputComponent:s,componentsOptions:n}=o(Ee),r=t.question,a=t.answer;let i=t.value;return a[oe.HAS_OBJECT_VALUE]&&a[oe.HAS_OBJECT_VALUE][u.RDFS_LABEL]&&(i=u.getJsonAttValue(a[oe.HAS_OBJECT_VALUE],u.RDFS_LABEL)),/*#__PURE__*/e.createElement(s,Object.assign({},He.resolveInputProperties(r,i,n),{validation:t.validation,label:t.label,title:t.title,value:null==i?"":i,placeholder:le.getInputMask(r),onKeyPress:e=>He._preventCharacterInput(e,r),onChange:e=>{t.onChange(e.target.value),(t.sparql||t.turtle)&&(void 0).hide()},onFocus:e=>{if(t.sparql){const s=k.fromTextArea(e.target);s.setValue(i),s.on("change",()=>{t.onChange(s.getValue())}),k.Autocompleters.prefixes.appendPrefixIfNeeded=function(e,s){if(!e.autocompleters.getTrie(s))return;if(!e.options.autocompleters||-1===e.options.autocompleters.indexOf(s))return;const n=e.getCursor(),o=e.getTokenAt(n);if("prefixed"===Ve[o.type]){const r=o.string.indexOf(":");if(-1!==r){const a=e.getPreviousNonWsToken(n.line,o).string.toUpperCase(),i=e.getTokenAt({line:n.line,ch:o.start});if("PREFIX"!==a&&("ws"===i.type||null==i.type)){const n=o.string.substring(0,r+1);if(null==e.getPrefixesFromQuery()[n.slice(0,-1)])if(t.question[oe.HAS_DECLARED_PREFIX]&&t.question[oe.HAS_DECLARED_PREFIX].filter(e=>e[oe.PREFIX]===n.slice(0,-1)).length){const s=t.question[oe.HAS_DECLARED_PREFIX].filter(e=>e[oe.PREFIX]===n.slice(0,-1)),o={};o[s[0][oe.PREFIX]]=s[0][oe.NAMESPACE],e.addPrefixes(o)}else{const t=e.autocompleters.getTrie(s).autoComplete(n);t.length>0&&e.addPrefixes(t[0])}}}}}}else if(t.turtle){console.log("TTL");const s=k.fromTextArea(e.target);s.setValue(i),s.on("change",()=>{t.onChange(s.getValue())})}}}))};Me.propTypes={question:l.object.isRequired,answer:l.object.isRequired,label:l.object.isRequired,title:l.string,value:l.oneOfType([l.string,l.number]),onChange:l.func.isRequired,validation:l.object};const Ue={D:"1",M:"1",Y:"1",h:"1",m:"1",s:"1"};class xe{static mapMask(e){if(!e)return e;let t,s="";for(let n=0,o=e.length;n<o;n++)t=e.charAt(n),s+=Ue[t]?Ue[t]:t;return s}}const Pe=["size","placeholder"];function qe(e){let t,s,n,o;if(void 0!==e.selectionStart)t=e.selectionStart,s=e.selectionEnd;else try{e.focus(),n=e.createTextRange(),o=n.duplicate(),n.moveToBookmark(document.selection.createRange().getBookmark()),o.setEndPoint("EndToStart",n),t=o.text.length,s=t+n.text.length}catch(e){}return{start:t,end:s}}class je extends e.Component{constructor(e){super(e),this._updatePattern=e=>{this.mask.setPattern(xe.mapMask(e.mask),{value:this.mask.getRawValue(),selection:qe(this.input)})},this._updateMaskSelection=()=>{this.mask.selection=qe(this.input)},this._updateInputSelection=()=>{!function(e,t){let s;try{void 0!==e.selectionStart?(e.focus(),e.setSelectionRange(t.start,t.end)):(e.focus(),s=e.createTextRange(),s.collapse(!0),s.moveStart("character",t.start),s.moveEnd("character",t.end-t.start),s.select())}catch(e){}}(this.input,this.mask.selection)},this._onChange=e=>{const t=this.mask.getValue();if(e.target.value!==t){if(e.target.value.length<t.length){const s=t.length-e.target.value.length;this._updateMaskSelection(),this.mask.selection.end=this.mask.selection.start+s,this.mask.backspace()}const s=this._getDisplayValue();e.target.value=s,s&&this._updateInputSelection()}this.props.onChange&&this.props.onChange(e)},this._onKeyDown=e=>{if(function(e){return e.ctrlKey&&90===e.keyCode}(e))e.preventDefault(),this.mask.undo()&&(e.target.value=this._getDisplayValue(),this._updateInputSelection(),this.props.onChange&&this.props.onChange(e));else if(function(e){return e.ctrlKey&&89===e.keyCode}(e))e.preventDefault(),this.mask.redo()&&(e.target.value=this._getDisplayValue(),this._updateInputSelection(),this.props.onChange&&this.props.onChange(e));else if("Backspace"===e.key&&(e.preventDefault(),this._updateMaskSelection(),this.mask.backspace())){const t=this._getDisplayValue();e.target.value=t,t&&this._updateInputSelection(),this.props.onChange&&this.props.onChange(e)}},this._onKeyPress=e=>{e.metaKey||e.altKey||e.ctrlKey||"Enter"===e.key||(e.preventDefault(),this._updateMaskSelection(),this.mask.input(e.key)&&(e.target.value=this.mask.getValue(),this._updateInputSelection(),this.props.onChange&&this.props.onChange(e)))},this._onPaste=e=>{e.preventDefault(),this._updateMaskSelection(),this.mask.paste(e.clipboardData.getData("Text"))&&(e.target.value=this.mask.getValue(),setTimeout(this._updateInputSelection,0),this.props.onChange&&this.props.onChange(e))},this.mask=new Q({pattern:xe.mapMask(e.mask),value:e.value,formatCharacters:e.formatCharacters,placeholderChar:e.placeholderChar||"_"})}componentDidUpdate(e){e.mask!==this.props.mask&&this._updatePattern(this.props),e.mask!==this.props.mask&&e.value!==this.props.mask?this.mask.getValue()===this.mask.emptyValue?this.mask.setPattern(xe.mapMask(this.props.mask),{value:this.props.value}):this.mask.setPattern(xe.mapMask(this.props.mask),{value:this.mask.getRawValue()}):e.mask!==this.props.mask?this.mask.setPattern(xe.mapMask(this.props.mask),{value:this.mask.getRawValue()}):e.value!==this.props.value&&this.mask.setValue(this.props.value),e.mask!==this.props.mask&&this.mask.selection.start&&this._updateInputSelection()}_getDisplayValue(){const e=this.mask.getValue();return e===this.mask.emptyValue?"":e}focus(){this.input.focus()}blur(){this.input.blur()}render(){const t=this.props,{size:s,placeholder:n}=t,o=$(t,Pe),r=this.mask.pattern.length;/*#__PURE__*/return e.createElement(this.context.inputComponent,Object.assign({},o,{ref:e=>{e&&(this.input=e.input?m.findDOMNode(e.input):e)},maxLength:r,onChange:this._onChange,onKeyDown:this._onKeyDown,onKeyPress:this._onKeyPress,onPaste:this._onPaste,placeholder:n||this.mask.emptyValue,size:s||r,value:this._getDisplayValue(),type:"text"}))}}je.contextType=Ee,je.propTypes={mask:l.string.isRequired},je.defaultProps={value:""};const ze=t=>{const{componentsOptions:s}=o(Ee),n=t.question,r=t.value,a=u.getJsonAttValue(n,oe.INPUT_MASK);return a?/*#__PURE__*/e.createElement(je,{mask:a,value:r,label:t.label,title:t.title,placeholder:a,onChange:e=>t.onChange(e.target.value),disabled:s.readOnly||le.isDisabled(n),validation:t.validation}):(Z.warn("Input mask not provided. Falling back to regular input."),/*#__PURE__*/e.createElement(Me,t))};ze.propTypes={question:l.object.isRequired,answer:l.object.isRequired,label:l.object.isRequired,title:l.string,value:l.oneOfType([l.string,l.number]),onChange:l.func.isRequired,validation:l.object};class Fe extends e.Component{_generateSelectOptions(t){const s=[];t.sort(function(e,t){const s=u.getJsonAttValue(e,oe.RDFS_LABEL),n=u.getJsonAttValue(t,oe.RDFS_LABEL);return s<n?-1:s>n?1:0});for(let n=0;n<t.length;n++)s.push(/*#__PURE__*/e.createElement("option",{value:u.getJsonAttValue(t[n],oe.RDFS_LABEL),key:"opt-"+n},u.getJsonAttValue(t[n],oe.RDFS_LABEL)));return s}render(){const t=this.props.question;/*#__PURE__*/return e.createElement(this.context.inputComponent,{type:"select",label:this.props.label,value:this.props.value,title:this.props.title,validation:this.props.validation,onChange:e=>{this.props.onChange(e.target.value)},disabled:this.context.componentsOptions.readOnly||le.isDisabled(t)},this._generateSelectOptions(t[oe.HAS_OPTION]))}}Fe.contextType=Ee,Fe.propTypes={question:l.object.isRequired,label:l.object.isRequired,title:l.string,value:l.string,onChange:l.func.isRequired,validation:l.object};const ke=(e,t)=>void 0!==e&&e.length?(e.sort(ie.getCompareLocalizedLabelFunction(t)),ie.orderPreservingToplogicalSort(e,oe.HAS_PRECEDING_VALUE),e):[],Qe=t=>{const r=re.getStringHash(le.getPossibleValuesQuery(t.question)),a=o(te),i=o(Ee),l=i.options.intl,[c,p]=s(!0),[m,E]=s(ke(t.options,l));n(()=>{let e=!1;const s=t.question;return!s[oe.HAS_OPTION]&&le.getPossibleValuesQuery(s)?async function(){try{const t=await a.loadFormOptions(r,le.getPossibleValuesQuery(s));e||(p(!1),S(t))}catch(e){Z.error(`An error has occurred during loadFormOptions for query hash: ${r}`)}}():(p(!1),S(s[oe.HAS_OPTION])),()=>{e=!0}},[r,a,t.question,l]);const S=e=>{if(!e)return[];e=ke(e,l);const t={},s=[];for(let n of e){let e=u.getLocalized(n[oe.RDFS_LABEL],l),o=u.getLocalized(n[oe.RDFS_COMMENT],l);t[n["@id"]]={id:n["@id"],value:n["@id"],label:e,description:o,children:[]};for(let e of re.asArray(n[oe.BROADER]))s.push({type:"parent-child",parent:e["@id"],child:n["@id"]})}for(let e of s){var n;"parent-child"===e.type&&(null==(n=t[e.parent])||n.children.push(e.child))}const o=Object.values(t);E(o)},A=re.findKeyInObjects(m,["name","value"]),g=re.findKeyInObjects(m,["name","label"]);/*#__PURE__*/return e.createElement(h,{size:"small",className:"mb-3"},/*#__PURE__*/e.createElement(d.Label,null,t.label),/*#__PURE__*/e.createElement(B,{styles:(()=>{let e,s;return"is-warning"===t.validation.classname?(e="#dc9135",s="0 0 0 0.2rem rgba(203, 127, 16, 0.25)"):"is-invalid"===t.validation.classname&&(e="#dc3545",s="0 0 0 .2rem rgba(220,53,69,.25)"),{control:t=>Object.assign({},t,{border:e?`1px solid ${e}`:t.border,boxShadow:t.boxShadow,"&:hover":{border:`1px solid ${e}`,boxShadow:s||t.boxShadow}})}})(),valueKey:A,labelKey:g,valueRenderer:!1===t.question[oe.PROVIDES_DEREFERENCEABLE_ANSWER_VALUES]?t=>/*#__PURE__*/e.createElement(e.Fragment,null,t):null,value:m.find(e=>e.id===t.value)||null,multi:!1,options:m,isSearchable:!0,isLoading:c,isClearable:!0,renderAsTree:!0,optionLeftOffset:5,isDisabled:c||i.componentsOptions.readOnly||le.isDisabled(t.question),onChange:e=>{t.onChange(e?e.id:null)},titleKey:"description"}),t.validation.message)};Qe.propTypes={question:l.object.isRequired,answer:l.object.isRequired,label:l.oneOfType([l.string,l.object]).isRequired,title:l.string,value:l.string,onChange:l.func.isRequired,validation:l.object};const Be=({title:t})=>/*#__PURE__*/e.createElement("svg",{className:"caret-square-up",version:"1.1",xmlns:"http://www.w3.org/2000/svg",width:"24",height:"28",viewBox:"0 0 24 28"},/*#__PURE__*/e.createElement("title",null,t||""),/*#__PURE__*/e.createElement("path",{d:"M17.891 17.453c-0.172 0.344-0.516 0.547-0.891 0.547h-10c-0.375 0-0.719-0.203-0.891-0.547-0.172-0.328-0.141-0.734 0.078-1.031l5-7c0.187-0.266 0.484-0.422 0.812-0.422s0.625 0.156 0.812 0.422l5 7c0.219 0.297 0.25 0.703 0.078 1.031zM20 21.5v-15c0-0.266-0.234-0.5-0.5-0.5h-15c-0.266 0-0.5 0.234-0.5 0.5v15c0 0.266 0.234 0.5 0.5 0.5h15c0.266 0 0.5-0.234 0.5-0.5zM24 6.5v15c0 2.484-2.016 4.5-4.5 4.5h-15c-2.484 0-4.5-2.016-4.5-4.5v-15c0-2.484 2.016-4.5 4.5-4.5h15c2.484 0 4.5 2.016 4.5 4.5z"})),We=({title:t})=>/*#__PURE__*/e.createElement("svg",{className:"caret-square-down",version:"1.1",xmlns:"http://www.w3.org/2000/svg",width:"24",height:"28",viewBox:"0 0 24 28"},/*#__PURE__*/e.createElement("title",null,t||""),/*#__PURE__*/e.createElement("path",{d:"M17.891 10.547c0.172 0.328 0.141 0.734-0.078 1.031l-5 7c-0.187 0.266-0.484 0.422-0.812 0.422s-0.625-0.156-0.812-0.422l-5-7c-0.219-0.297-0.25-0.703-0.078-1.031 0.172-0.344 0.516-0.547 0.891-0.547h10c0.375 0 0.719 0.203 0.891 0.547zM20 21.5v-15c0-0.266-0.234-0.5-0.5-0.5h-15c-0.266 0-0.5 0.234-0.5 0.5v15c0 0.266 0.234 0.5 0.5 0.5h15c0.266 0 0.5-0.234 0.5-0.5zM24 6.5v15c0 2.484-2.016 4.5-4.5 4.5h-15c-2.484 0-4.5-2.016-4.5-4.5v-15c0-2.484 2.016-4.5 4.5-4.5h15c2.484 0 4.5 2.016 4.5 4.5z"})),Xe=()=>/*#__PURE__*/e.createElement("svg",{className:"info-circle",version:"1.1",xmlns:"http://www.w3.org/2000/svg",width:"24",height:"28",viewBox:"0 0 24 28"},/*#__PURE__*/e.createElement("title",null,"info-circle"),/*#__PURE__*/e.createElement("path",{d:"M16 21.5v-2.5c0-0.281-0.219-0.5-0.5-0.5h-1.5v-8c0-0.281-0.219-0.5-0.5-0.5h-5c-0.281 0-0.5 0.219-0.5 0.5v2.5c0 0.281 0.219 0.5 0.5 0.5h1.5v5h-1.5c-0.281 0-0.5 0.219-0.5 0.5v2.5c0 0.281 0.219 0.5 0.5 0.5h7c0.281 0 0.5-0.219 0.5-0.5zM14 7.5v-2.5c0-0.281-0.219-0.5-0.5-0.5h-3c-0.281 0-0.5 0.219-0.5 0.5v2.5c0 0.281 0.219 0.5 0.5 0.5h3c0.281 0 0.5-0.219 0.5-0.5zM24 14c0 6.625-5.375 12-12 12s-12-5.375-12-12 5.375-12 12-12 12 5.375 12 12z"})),Ge=()=>/*#__PURE__*/e.createElement("svg",{className:"question-circle",version:"1.1",xmlns:"http://www.w3.org/2000/svg",width:"24",height:"28",viewBox:"0 0 24 28"},/*#__PURE__*/e.createElement("path",{d:"M14 21.5v-3c0-0.281-0.219-0.5-0.5-0.5h-3c-0.281 0-0.5 0.219-0.5 0.5v3c0 0.281 0.219 0.5 0.5 0.5h3c0.281 0 0.5-0.219 0.5-0.5zM18 11c0-2.859-3-5-5.688-5-2.547 0-4.453 1.094-5.797 3.328-0.141 0.219-0.078 0.5 0.125 0.656l2.063 1.563c0.078 0.063 0.187 0.094 0.297 0.094 0.141 0 0.297-0.063 0.391-0.187 0.734-0.938 1.047-1.219 1.344-1.437 0.266-0.187 0.781-0.375 1.344-0.375 1 0 1.922 0.641 1.922 1.328 0 0.812-0.422 1.219-1.375 1.656-1.109 0.5-2.625 1.797-2.625 3.313v0.562c0 0.281 0.219 0.5 0.5 0.5h3c0.281 0 0.5-0.219 0.5-0.5v0c0-0.359 0.453-1.125 1.188-1.547 1.188-0.672 2.812-1.578 2.812-3.953zM24 14c0 6.625-5.375 12-12 12s-12-5.375-12-12 5.375-12 12-12 12 5.375 12 12z"})),Ye=t=>{const[n,o]=s("right");/*#__PURE__*/return e.createElement("span",{ref:e=>(e=>{e&&(e.getBoundingClientRect().x>window.innerWidth/2?o("left"):o("right"))})(e)},/*#__PURE__*/e.createElement(S,{overlay:t.show?/*#__PURE__*/e.createElement(A,{className:"tooltip-content",id:t.id},t.tooltipContent):/*#__PURE__*/e.createElement("span",null),placement:t.overlayPlacement||n},/*#__PURE__*/e.createElement("span",null,t.children)))};Ye.propTypes={tooltipContent:l.oneOfType([l.object.isRequired,l.string.isRequired]),id:l.string.isRequired,overlayPlacement:l.string,absolutePosition:l.bool,show:l.bool},Ye.defaultProps={iconClassContainer:"",iconClass:"",absolutePosition:!0,show:!0};const Ke=t=>{const[n,o]=s("right");/*#__PURE__*/return e.createElement("div",{ref:e=>(e=>{e&&(e.getBoundingClientRect().x>window.innerWidth/2?o("left"):o("right"))})(e)},/*#__PURE__*/e.createElement(Ye,{id:"help-icon-tooltip-",overlayPlacement:t.overlayPlacement||n,absolutePosition:t.absolutePosition,tooltipContent:t.text},/*#__PURE__*/e.createElement(Ge,{className:t.iconClass})))};Ke.propTypes={text:l.string.isRequired,iconClassContainer:l.string,iconClass:l.string,overlayPlacement:l.string,absolutePosition:l.bool},Ke.defaultProps={iconClassContainer:"",iconClass:"",absolutePosition:!0};const Je=()=>/*#__PURE__*/e.createElement("svg",{className:"external-link-icon",width:"24",height:"16",viewBox:"0 0 16 16",xmlns:"http://www.w3.org/2000/svg"},/*#__PURE__*/e.createElement("path",{d:"M5,2 C5.55228,2 6,2.44772 6,3 C6,3.55228 5.55228,4 5,4 L4,4 L4,12 L12,12 L12,11 C12,10.4477 12.4477,10 13,10 C13.5523,10 14,10.4477 14,11 L14,12 C14,13.1046 13.1046,14 12,14 L4,14 C2.89543,14 2,13.1046 2,12 L2,4 C2,2.89543 2.89543,2 4,2 L5,2 Z M15,1 L15,5.99814453 C15,6.55043453 14.5523,6.99814453 14,6.99814453 C13.4477,6.99814453 13,6.55043453 13,5.99814453 L13,4.41419 L8.71571,8.69846 C8.32519,9.08899 7.69202,9.08899 7.3015,8.69846 C6.91097,8.30794 6.91097,7.67477 7.3015,7.28425 L11.5858,3 L9.99619141,3 C9.44391141,3 8.99619141,2.55228 8.99619141,2 C8.99619141,1.44772 9.44391141,1 9.99619141,1 L15,1 Z"})),$e=t=>/*#__PURE__*/e.createElement(Ye,{tooltipContent:t.url["@id"]||t.url,id:"url-tooltip",overlayPlacement:t.overlayPlacement},/*#__PURE__*/e.createElement("a",{href:t.url["@id"]||t.url,target:"_blank",className:t.iconClassContainer},/*#__PURE__*/e.createElement(Je,{className:t.iconClass})));$e.propTypes={url:l.oneOfType([l.string.isRequired,l.object.isRequired]),iconClassContainer:l.string,iconClass:l.string,overlayPlacement:l.string,absolutePosition:l.bool},$e.defaultProps={iconClassContainer:"",iconClass:"",absolutePosition:!0};const Ze=()=>/*#__PURE__*/e.createElement("svg",{className:"question-comment",version:"1.1",id:"Capa_1",xmlns:"http://ww