{"version":3,"file":"js/2599-2e9140ec582383983c6c.js","mappings":"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","sources":["webpack://AYTM/./app/_stock/webpack/app/stats/lib/basic-filters.js","webpack://AYTM/./app/_stock/webpack/app/stats/lib/colors.js","webpack://AYTM/./app/_stock/webpack/app/stats/lib/comments.js","webpack://AYTM/./app/_stock/webpack/app/stats/lib/converter.js","webpack://AYTM/./app/_stock/webpack/app/stats/lib/helpers.js","webpack://AYTM/./app/_stock/webpack/app/stats/lib/schema-rules.js","webpack://AYTM/./app/_stock/webpack/app/stats/lib/traits.js","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/lib/constants.js","webpack://AYTM/./app/_stock/webpack/app/stats/page/comments/lib/utils.js","webpack://AYTM/./app/_stock/webpack/lib/common/assign-deep.js"],"sourcesContent":["/* eslint-disable max-lines */\nimport { isEqual } from 'lodash'\nimport assignDeep from '@aytm/lib/common/assign-deep'\nimport SchemaRules from '@aytm/app/stats/lib/schema-rules'\nimport { collator, setIn, getIn, uniq, is, assocPath, omit, casecmp } from './helpers'\n\nconst { ConvertToBasicError } = SchemaRules\n\n// eslint-disable-next-line unicorn/no-unsafe-regex\nconst questionAnswerRegExp = new RegExp(\n '^([pvx]?q)(\\\\d+)(?:e(\\\\d+))?(?:sq(\\\\d+))?(?:a(\\\\d+))?(?:(r)(\\\\d*))?([cnp])?(v)?(i)?$',\n 'i'\n)\n\nexport default class BasicFilters {\n constructor(options = {}) {\n this.options = options\n this.operators = {}\n this.clusters = options.clusters || {}\n this.surveySchema = options.surveySchema || {}\n this.deepAllowed = options.deepAllowed || false\n this.longAllowed = options.longAllowed || false\n this.tagsAllowed = options.tagsAllowed || false\n this.tagsSentimentsAllowed = options.tagsSentimentsAllowed || false\n\n const { isAdmin } = this.options\n\n const traits = this.surveySchema.traits\n const arrTraitsList = traits.filter(t => 'a' === t.type).map(t => t.id.toUpperCase())\n this.arrTraits = arrTraitsList.filter(trait => isAdmin || 'panel' != trait)\n\n const { variables = {}, pipingVariables = {}, customVariables = {} } = this.surveySchema || {}\n this.arrVariables = [\n ...Object.entries(variables),\n ...Object.entries(pipingVariables),\n ...Object.entries(customVariables)\n ].reduce(\n (arrVariables, [name, variable]) => arrVariables.concat('a' === variable.type ? [name.toUpperCase()] : []),\n []\n )\n }\n\n convertToBasic(tree = {}) {\n if (null === tree) return false\n\n const groups = convertToGroups(tree)\n const filters = groups.map(g => this._treeToFilter(g, {}))\n const filterGroups = filters.reduce((acc, filter) => {\n let arr = Object.keys(filter).map(key => this._transformFilterGroup(key, filter[key]))\n const root = arr.filter(v => Array.isArray(v))\n arr = [arr.filter(v => !Array.isArray(v)).reduce((_acc, _cur) => Object.assign({}, _acc, _cur), {})]\n while (root.length) {\n arr = root.shift().flatMap(r => arr.map(v => Object.assign({}, v, r)))\n }\n return acc.concat(arr)\n }, [])\n\n let isBasic = true\n const basicKeys = Object.keys(filterGroups[0])\n for (let index = 0; isBasic && index < filterGroups.length; index++) {\n const filter = filterGroups[index]\n if (filter.errors && filter.errors.length) {\n isBasic = false\n } else if (!Object.keys(filter).every(k => basicKeys.includes(k))) {\n isBasic = false\n }\n }\n\n if (!isBasic) return false\n\n const flattenFilter = filterGroups.reduce(\n (filters, filter) => this._mergeBasicFilter(filters, filter, true, true),\n {}\n )\n\n if (flattenFilter.errors) return false\n this._cleanUpMergedFilter(flattenFilter)\n\n Object.keys(flattenFilter).forEach(key => {\n if (!isBasic) return\n isBasic = false\n\n const type = this._getQuestionTypeByRef(key) || null\n\n if (null == type) {\n isBasic = filterGroups.reduce((basic, filter) => basic && this._isBasicTraitFilter(key, filter[key]), true)\n isBasic ||= filterGroups.reduce((basic, filter) => basic && this._isBasicVariableFilter(key, filter[key]), true)\n isBasic ||= filterGroups.reduce((basic, filter) => basic && this._isBasicTagFilter(key, filter[key]), true)\n } else {\n const [checkedKeys, offKeys] = filterGroups.reduce(\n ([checkedKeys, offKeys], filter) => [\n checkedKeys.concat(\n ...Object.keys(flattenFilter[key]).filter(k =>\n Object.hasOwn(filter, key) && Object.keys(filter[key]).includes(k) && 'x' != k\n ? true == getIn([key, k, 'x'], filter)\n : true == getIn([key, k], filter)\n )\n ),\n offKeys.concat(\n ...Object.keys(flattenFilter[key]).filter(k =>\n Object.hasOwn(filter, key) && Object.keys(filter[key]).includes(k) && 'x' != k\n ? false == getIn([key, k, 'x'], filter)\n : false == getIn([key, k], filter)\n )\n )\n ],\n [[], []]\n )\n\n const sortedCheckedKeys = uniq(checkedKeys)\n sortedCheckedKeys.sort()\n\n isBasic =\n ((['it', 'im', 'ir', 'va', 'vo', 'ed', 'oe', 'cjc', 'cjd', 'emd'].includes(type) ||\n (true !== this.options.sflag && 'md' == type)) &&\n (1 == checkedKeys.length || checkedKeys.length == filterGroups.length)) ||\n ((['rb', 'scx', 'oex', 'ro', 'aro', 'mx', 'sr', 'se', 'qa', 'bpm', 'cb', 'cn', 'sh', 'sft', 'mp'].includes(\n type\n ) ||\n (true === this.options.sflag && 'md' == type)) &&\n (0 == checkedKeys.length || checkedKeys.length == filterGroups.length) &&\n (0 == offKeys.length || filterGroups.length == offKeys.length / uniq(offKeys).length)) ||\n (['cx'].includes(type) &&\n (1 == filterGroups.length || filterGroups.length == checkedKeys.length / sortedCheckedKeys.length) &&\n ((this.deepAllowed &&\n isEqual(sortedCheckedKeys, ['R1', 'R2', 'R3', 'R4'].slice(0, sortedCheckedKeys.length))) ||\n (!this.deepAllowed && 1 == checkedKeys.length && 'R1' == checkedKeys[0]))) ||\n ['ps', 'psc'].includes(type) ||\n ['vk'].includes(type) ||\n ['hm'].includes(type)\n }\n })\n\n if (!isBasic) return false\n\n if (!Array.isArray(flattenFilter)) {\n const surveySchema = this.surveySchema\n const { variables = {}, pipingVariables = {}, customVariables = {} } = surveySchema\n\n for (const key in flattenFilter) {\n const variable =\n variables[key.toLowerCase()] || pipingVariables[key.toLowerCase()] || customVariables[key.toLowerCase()]\n\n if (variable != undefined && variable.x) {\n if (Array.isArray(flattenFilter[key].v) && 1 < flattenFilter[key].v.length) {\n isBasic = false\n break\n }\n\n const [_, k, p] = key.match(/^(\\w+)_(\\d+)$/)\n\n flattenFilter[k] ||= {}\n flattenFilter[k][p] = {\n x: 1 == (Array.isArray(flattenFilter[key].v) ? flattenFilter[key].v[0] : flattenFilter[key].v)\n }\n\n delete flattenFilter[key]\n }\n }\n }\n\n if (!isBasic) return false\n\n return flattenFilter\n }\n\n _getQuestionByRef(ref) {\n const surveySchema = this.surveySchema\n const match = ref.match(/^([pvx])?q(\\d+)/i)\n if (match && match[2]) {\n const isVirtual = null != match[1] && 'V' == match[1].toUpperCase()\n const isXpert = null != match[1] && 'X' == match[1].toUpperCase()\n const isPreQ = null != match[1] && 'P' == match[1].toUpperCase()\n const visualPosition = parseInt(match[2], 10)\n const question = isVirtual\n ? getIn([match[0].toLowerCase()], surveySchema.virtual || {})\n : isXpert\n ? surveySchema.xquestions.find(q => q.id == `xq${match[2]}`)\n : surveySchema.questions\n .filter(q => (isPreQ ? q.pre_type : !q.pre_type))\n .find(q => visualPosition == q.visual_position)\n return question\n }\n return null\n }\n\n _getQuestionTypeByRef(ref) {\n const { type, variant } = this._getQuestionByRef(ref) || {}\n return variant || type\n }\n\n _valueToCase(v, foo = String.prototype.toLowerCase) {\n return null == v\n ? v\n : is(Array)(v)\n ? v.map(vv => (is(String)(vv) ? foo.apply(vv) : vv))\n : is(String)(v)\n ? foo.apply(v)\n : v\n }\n\n _transformFilterGroup(key, value) {\n const surveySchema = this.surveySchema\n\n if ('AGE' == key.toUpperCase() && Array.isArray(value.raw) && surveySchema.traits.some(t => 'age' == t.id)) {\n const [minAge] = this._minAgeRangeLowerBound()\n const [maxAge] = this._maxAgeRangeUpperBound()\n\n const raw = Object.assign([minAge, maxAge], value.raw)\n\n const trait = surveySchema.traits.find(t => 'age' == t.id)\n const ranges = trait.values\n .flatMap(v => (v.id.includes('+') ? [v.id.replace('+', ''), 1000000] : v.id.split('-')))\n .map(v => Number(v))\n const i1 = ranges.indexOf(raw[0])\n const i2 = ranges.indexOf(raw[1])\n const values =\n 0 == i1 % 2 && 1 == i2 % 2\n ? Array.from({ length: (i2 - i1 + 1) / 2 }).map((_, i) =>\n 1000000 === ranges[i1 + 2 * i + 1]\n ? `${ranges[i1 + 2 * i]}+`\n : `${ranges[i1 + 2 * i]}-${ranges[i1 + 2 * i + 1]}`\n )\n : raw\n\n return { [key]: { raw: raw, v: values, x: value.x } }\n }\n\n return { [key]: value }\n }\n\n _isBasicTraitFilter(key, value) {\n const traitKey = key.toLowerCase()\n const surveySchema = this.surveySchema\n\n const { v, x } = value || {}\n\n const trait = surveySchema.traits.find(t => traitKey == t.id)\n if (!trait || !x) return false\n\n const { refsList } = this.surveySchema\n\n if (!Object.prototype.hasOwnProperty.call(refsList, traitKey.toUpperCase())) {\n return false\n }\n\n let traitValue = v\n if ((!v || null === v) && 'age' === traitKey) {\n const [maxAge, maxAgeRange] = this._maxAgeRangeLowerBound()\n value.raw && value.raw[0] == maxAge && (traitValue = [maxAgeRange])\n } else if (null !== v && ['state', 'region', 'county', 'country'].includes(traitKey)) {\n traitValue = this._valueToCase(v, String.prototype.toUpperCase)\n } else {\n traitValue = this._valueToCase(v, String.prototype.toLowerCase)\n }\n\n if (null === traitValue) {\n return false\n }\n\n return (is(Array)(traitValue) ? traitValue : [traitValue]).reduce(\n (all, val) => all && trait.values.some(v => String(val).toLowerCase() == String(v.id).toLowerCase()),\n true\n )\n }\n\n _isBasicVariableFilter(key, value) {\n const { v, x } = value || {}\n const variable = key.toLowerCase()\n const surveySchema = this.surveySchema\n const { refsList = {}, variables = {}, pipingVariables = {}, customVariables = {} } = surveySchema\n\n if (\n (!Object.hasOwn(variables, variable) &&\n !Object.hasOwn(pipingVariables, variable) &&\n !Object.hasOwn(customVariables, variable)) ||\n true !== x\n ) {\n return false\n }\n\n if (!Object.hasOwn(refsList, variable.toUpperCase())) {\n return false\n }\n\n const schemaVars = variables[variable] ? variables : pipingVariables[variable] ? pipingVariables : customVariables\n\n if (!Object.hasOwn(schemaVars, variable)) {\n return false\n }\n\n if (schemaVars[variable].long && this.longAllowed) return true\n\n const values = is(Array)(v) ? v : [v]\n if (null === schemaVars[variable].values || (schemaVars[variable].x && 1 != values.length)) return false\n\n return values.reduce(\n (all, val) =>\n all &&\n 1 ==\n schemaVars[variable].values.filter(vrbl =>\n Array.isArray(vrbl) ? casecmp(String(val), String(vrbl)) : casecmp(val, vrbl)\n ).length,\n true\n )\n }\n\n _isBasicTagFilter(key, value) {\n const [k, token, ref] = key.split('.')\n const { v, x } = value || {}\n\n if (\n 'tag' !== k.toLowerCase() ||\n true !== x ||\n (token == undefined && !this.tagsAllowed) ||\n (token != undefined && ('sentiment' !== token.toLowerCase() || ref == undefined || !this.tagsSentimentsAllowed))\n ) {\n return false\n }\n\n if (token != undefined && 'sentiment' === token.toLowerCase()) {\n const { sentiments } = this.surveySchema\n\n return (\n ref != undefined &&\n sentiments[ref] != undefined &&\n (is(Array)(v) ? v : [v]).reduce(\n (all, val) => all && 1 == sentiments[ref].filter(vrbl => casecmp(val, vrbl)).length,\n true\n )\n )\n }\n\n const { tags = { manual: [] } } = this.surveySchema\n return (is(Array)(v) ? v : [v]).reduce(\n (all, val) => all && 1 == tags.manual.filter(vrbl => casecmp(val, vrbl)).length,\n true\n )\n }\n\n _isBasicQuestionPSFilter(question, filter) {\n let isBasic = false\n\n const answerVariants = (\n getIn(\n [0, 'answerVariants'],\n question.batches.filter(b => getIn(['path', 'sq'], filter) == b.position)\n ) || []\n ).filter(av => null != av)\n\n const raw =\n filter.x && null != filter.raw\n ? Array.from({ length: 2 }, (_, i) =>\n null != filter.raw[i]\n ? answerVariants.some(av => filter.raw[i] == parseFloat(av.text))\n ? filter.raw[i]\n : null\n : null\n ).filter(v => null != v)\n : []\n\n if (2 == raw.length) {\n filter.v = [raw.join('-')]\n isBasic = true\n }\n\n return isBasic\n }\n _isBasicQuestionVKFilter(question, filter) {\n let isBasic = false\n\n const sq = getIn(['path', 'sq'], filter)\n const bPos = getIn(['path', 'a'], filter) + (1 < sq ? 4 : 0) + (2 < sq ? 5 : 0)\n const filterValues = ((question.batches.find(b => bPos == b.position) || {}).filter_values || []).filter(\n v => null !== v\n )\n if (isNaN(bPos)) {\n throw new TypeError('DEBUG')\n }\n // if (9 < bPos) filterValues.reverse()\n\n const raw =\n filter.x && (null == filter.v || (is(Array)(filter.v) && 1 == filter.v.length)) && null != filter.raw\n ? Array.from({ length: filter.raw ? 2 : 0 }, (_, i) =>\n null != filter.raw[i]\n ? null !=\n filterValues.find((v, j) =>\n 5 > bPos\n ? filter.raw[i] == v * 100\n : 10 > bPos\n ? filter.raw[i] == v\n : filter.raw[i] == filterValues.length - j\n )\n ? filter.raw[i]\n : null\n : 0 == i\n ? 5 > bPos\n ? filterValues[0] * 100\n : 10 > bPos\n ? filterValues[0]\n : 1\n : 5 > bPos\n ? filterValues.slice(-1)[0] * 100\n : 10 > bPos\n ? filterValues.slice(-1)[0]\n : filterValues.length\n ).filter(v => null !== v)\n : []\n\n if (2 == raw.length) {\n // filter.v = [raw.map(v => v / (5 > bPos ? 100 : 1)).join('-')]\n filter.v = [raw.join('-')]\n isBasic = true\n } else if (null != filter.v) {\n const values = is(Array)(filter.v) ? filter.v : [filter.v]\n isBasic =\n values.length ==\n values.filter(\n value =>\n null !=\n filterValues.find((v, j) =>\n 5 > bPos ? value == v * 100 : 10 > bPos ? value == v : value == filterValues.length - j\n )\n ).length\n } else {\n isBasic = false\n }\n\n return isBasic\n }\n _isBasicQuestionHMFilter(question, keys, filter) {\n let isBasic =\n !Object.prototype.hasOwnProperty.call(filter, 't') &&\n !keys.some(k => getIn([k, 'path', 'a'], filter) || getIn([k, 't'], filter)) &&\n keys.reduce((res, k) => res && (getIn([k, 'path', 'sq'], filter) || 0) <= question.batches.length, true)\n\n isBasic &&=\n 0 < keys.length &&\n 1 >= keys.filter(k => true == filter[k].x).length &&\n 0 <= keys.filter(k => false == filter[k].x).length\n\n return isBasic\n }\n _isBasicQuestionFilter(key, filter) {\n const question = this._getQuestionByRef(key)\n const type = this._getQuestionTypeByRef(key)\n\n const keys = Object.keys(filter)\n const answerVariants = keys.filter(k => /^a\\d+$/i.test(k) && null != filter[k].x)\n\n const responses = keys\n .filter(k => /^r\\d+$/i.test(k) && null != filter[k].x)\n .sort((a, b) => parseInt(a.slice(1), 10) - parseInt(b.slice(1), 10))\n\n let isBasic =\n ((['it', 'im', 'ir', 'va', 'vo', 'ed', 'oe', 'cjc', 'cjd', 'emd'].includes(type) ||\n (true !== this.options.sflag && 'md' == type)) &&\n 1 == keys.length &&\n 'x' === keys[0] &&\n filter.x) ||\n ((['rb', 'scx', 'oex', 'ro', 'aro', 'mx', 'sr', 'se', 'qa', 'bpm', 'cb', 'cn', 'sh', 'sft', 'mp'].includes(\n type\n ) ||\n (true === this.options.sflag && 'md' == type)) &&\n 0 < answerVariants.length &&\n answerVariants.length == keys.length &&\n 1 >= answerVariants.filter(k => true == filter[k].x).length &&\n 0 <= answerVariants.filter(k => false == filter[k].x).length) ||\n (['cx'].includes(type) &&\n keys.length == responses.length &&\n responses.reduce((full, v, i) => full && parseInt(v.slice(1), 10) == i + 1, true) &&\n responses.reduce(\n ([full, answerVariants], k) => {\n const answer =\n full && null != filter[k].v ? answerVariants.find(av => av && casecmp(av.text, filter[k].v)) : null\n null != answer && (filter[k].v = answer.text)\n return [null != answer, null != answer ? answer.answerVariants : null]\n },\n [true, question.answerVariants]\n )[0])\n\n if (true === this.options.sflag && ['psc'].includes(type)) {\n isBasic = true\n }\n\n if (['ps'].includes(type) || (true !== this.options.sflag && ['psc'].includes(type))) {\n isBasic = this._isBasicQuestionPSFilter(question, filter)\n }\n if (['vk'].includes(type)) {\n isBasic = this._isBasicQuestionVKFilter(question, filter)\n }\n if (['hm'].includes(type)) {\n isBasic = this._isBasicQuestionHMFilter(question, keys, filter)\n }\n\n return isBasic\n }\n\n _parseIdentifier(name, x = true, value = null) {\n const NAME = name.toUpperCase()\n const obj = { x }\n null != value && (obj.v = value)\n\n const { variables = {}, pipingVariables = {}, customVariables = {} } = this.surveySchema\n const variable = name.toLowerCase()\n const isVariable =\n Object.hasOwn(variables, variable) ||\n Object.hasOwn(pipingVariables, variable) ||\n Object.hasOwn(customVariables, variable)\n\n const match = isVariable ? null : NAME.match(questionAnswerRegExp)\n if (match) {\n const path = [`${match[1]}${match[2]}`]\n const type = this._getQuestionTypeByRef(path[0])\n\n if (match[3]) (path[path.length - 1] += `E${match[3]}`) && setIn(['path', 'e'], parseInt(match[3], 10), obj)\n if (match[4]) (path[path.length - 1] += `SQ${match[4]}`) && setIn(['path', 'sq'], parseInt(match[4], 10), obj)\n if (match[5]) {\n if (['ro', 'aro'].includes(type))\n (path[path.length - 1] += `SQ${match[5]}`) && setIn(['path', 'sq'], parseInt(match[5], 10), obj)\n else path.push(`A${match[5]}`) && setIn(['path', 'a'], parseInt(match[5], 10), obj)\n }\n if (match[6] && match[7]) {\n if ('cx' == type) {\n path.push(`${match[6]}${match[7]}`)\n } else {\n path.splice(0, path.length, path.join('') + `${match[6]}${match[7]}`)\n }\n } else if (match[5] && 'P' == match[8] && 'V' == match[9] && path.length && null != value) {\n if (['ro', 'aro'].includes(type)) path.push(`A${value}`)\n else {\n path[0] += `SQ${match[5]}`\n path.splice(-1, 1, `A${value}`)\n setIn(['path', 'sq'], parseInt(match[5], 10), obj)\n }\n setIn(['path', 'a'], value, obj)\n delete obj.v\n } else if (!match[3] && match[4] && match[5] && 'R' == match[6] && 'V' == match[9]) {\n path.splice(0, 2, path.join(''))\n !is(Array)(obj.v) && null != value && (obj.v = [obj.v])\n } else if ('C' == match[8]) {\n obj.t = obj.v\n path[path.length - 1] += match[8]\n delete obj.v\n } else if ('hm' == type && match.reduce((r, m, i) => r && ([0, 1, 2, 4].includes(i) || !m), true)) {\n path.splice(0, path.length, `${match[1]}${match[2]}`, `SQ${match[4]}`)\n }\n return { path, obj }\n } else if (['STATE', 'REGION'].includes(NAME)) {\n null != value && (obj.v = value.toUpperCase())\n }\n return { path: [NAME], obj }\n }\n\n _identifierToFilter(name, x = true, value = null) {\n const { path, obj } = this._parseIdentifier(name, x, value)\n if (path && path.length) {\n return setIn(path, obj, {})\n }\n return {}\n }\n\n _treeToFilter(node, filter) {\n const filters = filter || {}\n if ('LogicalExpression' === node.type && '&&' === node.operator) {\n this._treeToFilter(node.left, filters)\n this._treeToFilter(node.right, filters)\n } else if ('BinaryExpression' === node.type) {\n this._parseBinaryExpression(node, filters)\n } else if ('Identifier' === node.type) {\n assignDeep(filters, this._identifierToFilter(node.name))\n } else if ('UnaryExpression' === node.type && '!' === node.operator && 'Identifier' == node.argument.type) {\n assignDeep(filters, this._identifierToFilter(node.argument.name, false))\n } else if ('UnaryExpression' === node.type && '!' === node.operator && 'BinaryExpression' === node.argument.type) {\n this._parseBinaryExpression(node.argument, filters, true)\n } else if ('Literal' === node.type) {\n assignDeep(filters, this._identifierToFilter(`${node.value}`, true, node.value))\n } else {\n throw new ConvertToBasicError(SchemaRules.stringify(node))\n }\n return filters\n }\n\n _parseTagExpression(filter, variable, elements, operator, scope) {\n const name = `${variable.object.name}.${variable.property.name}${scope != undefined ? '.' + scope.name : ''}`\n const groupsMerge = ['tag_in'].includes(operator) && !Object.hasOwn(filter, name)\n elements.forEach(val => {\n Object.assign(\n filter,\n this._mergeBasicFilter(\n filter,\n this._identifierToFilter(name, true, is(String)(val.value) ? val.value.toLowerCase() : val.value),\n groupsMerge\n )\n )\n })\n }\n _parseTagsExpression(filter, variable, value, node) {\n const elements = value.elements || [value]\n if (Array.isArray(node.scope)) {\n node.scope.forEach(scope => {\n this._parseTagExpression(filter, variable, elements, node.operator, scope)\n })\n } else {\n this._parseTagExpression(filter, variable, elements, node.operator)\n }\n }\n\n _parseBinaryExpression(node, filter, inverse = false) {\n const [variable, value] = ['Identifier', 'MemberExpression'].includes(node.left.type)\n ? [node.left, node.right]\n : [node.right, node.left]\n if (\n ('Literal' === variable.type && 'Literal' === value.type) ||\n ('Identifier' === variable.type && 'Identifier' === value.type) ||\n 'BinaryExpression' === variable.type ||\n 'BinaryExpression' === value.type ||\n 'MemberExpression' === variable.type ||\n 'MemberExpression' === value.type\n ) {\n if (['tag_eq', 'tag_neq'].includes(node.operator)) {\n if ('MemberExpression' === variable.type && 'Literal' === value.type) {\n this._parseTagsExpression(filter, variable, value, node)\n } else {\n throw new ConvertToBasicError(SchemaRules.stringify(node))\n }\n } else if (['tag_in'].includes(node.operator)) {\n if ('MemberExpression' === variable.type && 'ArrayExpression' === value.type) {\n this._parseTagsExpression(filter, variable, value, node)\n } else {\n throw new ConvertToBasicError(SchemaRules.stringify(node))\n }\n } else {\n filter.errors = [`${variable.name} ${node.operator} ${value.value}`]\n }\n } else {\n if (['tag_eq', 'tag_neq', 'tag_in'].includes(node.operator) && node.scope != undefined) {\n filter.errors = [`${node.scope.name} ${variable.name} ${node.operator} ${value.value}`]\n return\n }\n\n const operators = this.operators[variable.name.toLowerCase()]\n if (operators != undefined) {\n if (operators.includes(node.opeator)) {\n if ('Identifier' === variable.type && 'Literal' === value.type) {\n Object.assign(\n filter,\n this._mergeBasicFilter(\n filter,\n this._identifierToFilter(\n variable.name,\n true,\n is(String)(value.value) ? value.value.toLowerCase() : value.value\n ),\n false\n )\n )\n } else {\n throw new ConvertToBasicError(SchemaRules.stringify(node))\n }\n } else {\n filter.errors = [`${variable.name} ${node.operator} ${value.value}`]\n }\n } else if (['==', '!=', '<>', 'tag_eq', 'tag_neq'].includes(node.operator)) {\n if ('Identifier' === variable.type && 'Literal' === value.type) {\n if ([...this.arrTraits, ...this.arrVariables].includes(variable.name)) {\n const surveySchema = this.surveySchema\n const { variables = {}, pipingVariables = {}, customVariables = {} } = surveySchema\n\n const item =\n variables[variable.name.toLowerCase()] ||\n pipingVariables[variable.name.toLowerCase()] ||\n customVariables[variable.name.toLowerCase()]\n\n if (item != undefined && item.values.some(v => Array.isArray(v))) {\n Object.assign(\n filter,\n this._mergeBasicFilter(\n filter,\n this._identifierToFilter(\n variable.name,\n ['==', 'tag_eq'].includes(node.operator),\n String(value.value).toLowerCase()\n ),\n false\n )\n )\n } else {\n throw new ConvertToBasicError(SchemaRules.stringify(node))\n }\n } else {\n Object.assign(\n filter,\n this._mergeBasicFilter(\n filter,\n this._identifierToFilter(\n variable.name,\n ['==', 'tag_eq'].includes(node.operator),\n is(String)(value.value) ? value.value.toLowerCase() : value.value\n ),\n false\n )\n )\n }\n } else {\n throw new ConvertToBasicError(SchemaRules.stringify(node))\n }\n } else if (['>=', '<='].includes(node.operator)) {\n if (\n 'Identifier' === variable.type &&\n 'Literal' === value.type &&\n ![...this.arrTraits, ...this.arrVariables].includes(variable.name)\n ) {\n const index = ('>=' === node.operator) ^ (variable === node.left)\n assignDeep(filter, this._identifierToFilter(variable.name, true))\n const { path } = this._parseIdentifier(variable.name, true)\n\n getIn([...path, 'raw'], filter) || setIn([...path, 'raw'], [], filter)\n setIn(\n [...path, 'raw', index],\n (0 == index ? Math.max : Math.min)(\n ...[getIn([...path, 'raw', index], filter), parseFloat(value.value, 10)].filter(v => null != v)\n ),\n filter\n )\n 2 == getIn([...path, 'raw'], filter).filter(x => null != x).length &&\n setIn([...path, 'v'], [getIn([...path, 'raw'], filter).join('-')], filter)\n } else {\n throw new ConvertToBasicError(SchemaRules.stringify(node))\n }\n } else if (['in', 'not_in', 'tag_in'].includes(node.operator)) {\n const groupsMerge = !Object.prototype.hasOwnProperty.call(filter, variable.name)\n const elements = value.elements || [value]\n\n if ([...this.arrTraits, ...this.arrVariables].includes(variable.name)) {\n const surveySchema = this.surveySchema\n const { variables = {}, pipingVariables = {}, customVariables = {} } = surveySchema\n\n const item =\n variables[variable.name.toLowerCase()] ||\n pipingVariables[variable.name.toLowerCase()] ||\n customVariables[variable.name.toLowerCase()]\n\n if (\n 'Identifier' === variable.type &&\n 'Literal' === value.type &&\n (item == undefined || !item.values.some(v => Array.isArray(v)))\n ) {\n Object.assign(\n filter,\n this._mergeBasicFilter(\n filter,\n this._identifierToFilter(\n variable.name,\n ['in', 'tag_in'].includes(node.operator),\n String(elements.map(v => v.value)).toLowerCase()\n ),\n groupsMerge\n )\n )\n } else {\n throw new ConvertToBasicError(SchemaRules.stringify(node))\n }\n } else {\n elements.forEach(val => {\n Object.assign(\n filter,\n this._mergeBasicFilter(\n filter,\n this._identifierToFilter(\n variable.name,\n ['in', 'tag_in'].includes(node.operator),\n is(String)(val.value) ? val.value.toLowerCase() : val.value\n ),\n groupsMerge\n )\n )\n })\n }\n } else if (['in_shape'].includes(node.operator)) {\n const { path, obj } = this._parseIdentifier(variable.name, !inverse)\n const match = path[0].match(/^q\\d+/i)\n const qUid = match[0].toLowerCase()\n const questionClusters = getIn([qUid], this.clusters) || []\n const clusterTitles = 'ArrayExpression' == value.type ? value.elements.map(vv => vv.value) : [value.value]\n clusterTitles.forEach(title => {\n const cluster = questionClusters.find(cl => 0 === collator.compare(title, cl.title))\n if (cluster) Object.assign(filter, this._mergeBasicFilter(filter, setIn(path.concat([cluster.uid]), obj, {})))\n else filter.errors = [`${variable.name} ${node.operator} ${title}`]\n })\n } else {\n throw new ConvertToBasicError(SchemaRules.stringify(node))\n }\n }\n }\n\n _minAgeRangeLowerBound() {\n const surveySchema = this.surveySchema\n const trait = surveySchema.traits.find(t => 'age' == t.id)\n const [minAgeRange] = trait.values.map(v => v.id).slice(0, 1)\n return [parseInt(minAgeRange.split('-', 2)[0], 10), minAgeRange]\n }\n\n _maxAgeRangeLowerBound() {\n const surveySchema = this.surveySchema\n const trait = surveySchema.traits.find(t => 'age' == t.id)\n const [maxAgeRange] = trait.values.map(v => v.id).slice(-1)\n return [\n parseInt(maxAgeRange.includes('+') ? maxAgeRange.replace('+', '') : maxAgeRange.split('-', 2)[0], 10),\n maxAgeRange\n ]\n }\n _maxAgeRangeUpperBound() {\n const surveySchema = this.surveySchema\n const trait = surveySchema.traits.find(t => 'age' == t.id)\n const [maxAgeRange] = trait.values.map(v => v.id).slice(-1)\n return [parseInt(maxAgeRange.includes('+') ? 1000000 : maxAgeRange.split('-', 2)[1], 10), maxAgeRange]\n }\n\n _filterEq = (f1, f2) => {\n if (f1 == f2) return true\n if (is(Object)(f1) && is(Object)(f2)) {\n return Object.keys(f1)\n .filter(k => k !== 'raw')\n .reduce((res, k) => res && this._filterEq(f1[k], f2[k]), true)\n } else if (is(Array)(f1) || is(Array)(f2)) {\n const af1 = is(Array)(f1) ? f1 : [f1]\n const af2 = is(Array)(f2) ? f2 : [f2]\n const sa = af1.length < af2.length ? af1 : af2\n const la = af1.length > af2.length ? af1 : af2\n return sa.reduce((res, v) => res && la.includes(v), true)\n } else {\n return is(String)(f1) && is(String)(f1) ? f1.toLowerCase() == f2.toLowerCase() : f1 == f2\n }\n }\n\n _mergeBasicFilter(filters, filter, groupsMerge = true, checkDiffs = false) {\n if (checkDiffs) {\n const diffKeys = Object.keys(filters).reduce((diff, key) => {\n const res = this._filterEq(filter[key], filters[key])\n return diff + (res ? 0 : 1)\n }, 0)\n if (1 < diffKeys) {\n if (filters.errors && is(Object)(filters.errors)) {\n filters.errors = Object.keys(filters.errors).length ? [filters.errors] : []\n } else if (!filters.errors) {\n filters.errors = []\n }\n filters.errors.push(filter)\n return filters\n }\n }\n\n const surveySchema = this.surveySchema\n\n return Object.keys(filter).reduce((result, key) => {\n let filterObject = filter[key]\n\n if (groupsMerge && 'AGE' === key && surveySchema.traits.some(t => 'age' == t.id)) {\n const [maxAge, maxAgeRange] = this._maxAgeRangeLowerBound()\n if (null == filter[key].v && filter[key].raw[0] == maxAge) {\n filterObject = assocPath(['v'], [maxAgeRange])(filter[key])\n }\n }\n\n const type = this._getQuestionTypeByRef(key)\n if ('hm' === type && checkDiffs && Object.hasOwn(filters, key)) {\n const clusters = ((surveySchema.assets || {})['hm.cluster'] || [])\n .filter(c => key.toLowerCase() == c.qid)\n .map(c => c.uid)\n\n const negatives = Object.keys(filterObject).filter(k => !filterObject[k].x)\n for (const negative of negatives) {\n const keys = clusters.includes(negative)\n ? Object.keys(filters[key]).filter(k => clusters.includes(k))\n : Object.keys(filters[key]).filter(k => !clusters.includes(k))\n\n if (0 < keys.length && keys.every(k => k !== negative || (k === negative && filters[key][k].x))) {\n result.errors || (result.errors = [])\n result.errors.push({ [key]: filterObject })\n return result\n }\n }\n\n if (\n !negatives.length &&\n 0 < Object.keys(filters[key]).length &&\n Object.keys(filters[key]).some(k => !filters[key][k].x)\n ) {\n result.errors || (result.errors = [])\n result.errors.push({ [key]: filterObject })\n return result\n }\n }\n\n const isBasic =\n (type && this._isBasicQuestionFilter(key, filterObject)) ||\n this._isBasicVariableFilter(key, filterObject) ||\n this._isBasicTagFilter(key, filterObject)\n\n if (groupsMerge && type && !isBasic) {\n result.errors || (result.errors = [])\n result.errors.push({ [key]: filterObject })\n return result\n }\n\n if (!Object.hasOwn(result, key)) {\n return assocPath([key], filterObject)(result)\n }\n\n const v = getIn([key, 'v'], result)\n const x = getIn([key, 'x'], result)\n\n if (v != undefined && null !== v && x) {\n return (is(Array)(v) ? v.includes(filterObject.v) : casecmp(v, filterObject.v))\n ? result\n : assocPath(\n [key, 'v'],\n groupsMerge\n ? uniq((is(Array)(filters[key].v) ? filters[key].v : [filters[key].v]).concat(filterObject.v))\n : uniq((is(Array)(filters[key].v) ? filters[key].v : [filters[key].v]).map(v => v + filterObject.v))\n )(result)\n }\n\n return assocPath([key], assignDeep({}, result[key], filterObject))(result)\n }, filters)\n }\n\n _cleanUpMergedFilter(filters) {\n Object.keys(filters).forEach(key => {\n if (Object.hasOwn(filters, key) && !is(Array)(filters[key]) && is(Object)(filters[key])) {\n filters[key] = Object.keys(filters[key])\n .filter(k => !['raw', 'path'].includes(k))\n .reduce(\n (result, k) => (\n (result[k] =\n is(Array)(filters[key][k]) || !is(Object)(filters[key][k])\n ? filters[key][k]\n : omit(['raw', 'path'], filters[key][k])),\n result\n ),\n {}\n )\n if (!Object.hasOwn(filters[key], 'v') && !Object.hasOwn(filters[key], 'x')) {\n filters[key] = Object.keys(filters[key])\n .sort((a, b) => parseInt(a.replace(/^A|SQ/, ''), 10) - parseInt(b.replace(/^A|SQ/, ''), 10))\n .reduce((result, k) => ((result[k] = filters[key][k]), result), {})\n }\n }\n })\n }\n\n _transformString(str) {\n const c = str.match(/'/g)\n if (null !== c) {\n return `\"${str.replace(/\"/g, \"'\")}\"`\n }\n return `'${str}'`\n }\n\n _convertToAgeAdvanced(value, opt, dim) {\n if (Object.hasOwn(value, 'v')) {\n const values = Array.isArray(value.v) ? [...value.v] : [value.v]\n const ranges = values\n .flatMap(v => (v.includes('+') ? [v.replace('+', ''), 1000000] : v.split('-')))\n .map(v => Number(v))\n ranges.sort((a, b) => a - b)\n\n const _ranges = ranges.filter((v, i) => v + 1 != ranges[i + 1] && v - 1 != ranges[i - 1])\n\n const r = []\n for (const i in _ranges) {\n const item = _ranges[i]\n if (1000000 === item) continue\n\n const b = Boolean(i % 2)\n r.push(b ? `age <= ${item}` : `age >= ${item}`)\n }\n const h = Array.from({ length: Math.ceil(r.length / 2) }, (_, i) =>\n r[2 * i + 1] != undefined ? `${r[2 * i]} and ${r[2 * i + 1]}` : r[2 * i]\n )\n\n return `${1 < dim && 1 < h.length ? '(' : ''}${1 < h.length ? '(' : ''}${h.join(') or (')}${\n 1 < h.length ? ')' : ''\n }${1 < dim && 1 < h.length ? ')' : ''}`\n }\n\n return opt.unary ? 'age' : ''\n }\n _convertToStateRegionAdvanced(key, value, opt, dim) {\n if (Object.hasOwn(value, 'v')) {\n const hp = { state: [], region: [] }\n\n const values = Array.isArray(value.v) ? [...value.v] : [value.v]\n for (const item of values) {\n const p = String(item).toUpperCase().split(':')\n 1 < p.length ? hp['S' == p[0] ? 'state' : 'region'].push(p[1]) : hp[key.toLowerCase()].push(p[0])\n }\n\n const h = []\n if (hp.state.length > 0) {\n h.push(`state ${1 < hp.state.length ? 'in' : '='} ${hp.state.map(v => `'${v}'`).join(', ')}`)\n }\n if (hp.region.length > 0) {\n h.push(`region ${1 < hp.region.length ? 'in' : '='} ${hp.region.map(v => `'${v}'`).join(', ')}`)\n }\n\n return `${1 < dim && 1 < h.length ? '(' : ''}${h.join(' or ')}${1 < dim && 1 < h.length ? ')' : ''}`\n }\n\n return opt.unary ? key.toLowerCase() : ''\n }\n _convertToQuestionAdvanced(key, value, question, opt, dim) {\n if (0 < Object.keys(value).length) {\n const type = question.variant || question.type\n\n if (value.v != undefined) {\n const range = value.v\n .toString()\n .replace(/^(.+?)-(.+)$/, '$1##$2')\n .split(/##/)\n const p = 'psc' == type ? 'V' : 'RV'\n return `${key}${p} >= ${range[0]} and ${key}${p} <= ${range[1]}`\n }\n\n if (value.x != undefined) {\n return `${false === value.x ? 'not ' : ''}${key}`\n }\n\n const surveySchema = this.surveySchema\n const clusters = ((surveySchema.assets || {})['hm.cluster'] || []).filter(\n c => `q${question.visual_position}` == c.qid\n )\n\n const h = { p: [], n: [] }\n const sw = ['cx', 'ps', 'psc', 'vk'].includes(type)\n const result = []\n\n for (const [_key, _value] of Object.entries(value)) {\n const cluster = clusters.find(c => _key == c.uid)\n if (cluster) {\n h[false === _value.x ? 'n' : 'p'].push(\n `${false === _value.x ? 'not ' : ''}${key}R in cluster \"${cluster.title}\"`\n )\n } else {\n if ('cx' == type) {\n const values = Array.isArray(_value.v) ? [..._value.v] : [_value.v]\n for (const j in values) {\n h[false === _value.x ? 'n' : 'p'].push(\n `${key}${_key}P ${false === _value.x ? '!=' : '='} ${this._transformString(values[j])}`\n )\n }\n } else if (['ro', 'aro'].includes(type)) {\n h[false === _value.x ? 'n' : 'p'].push(\n `${key.replace('SQ', 'A')}PV ${false === _value.x ? '!=' : '='} ${_key.slice(1)}`\n )\n } else {\n h[false === _value.x ? 'n' : 'p'].push(`${false === _value.x ? 'not ' : ''}${key}${_key}`)\n }\n }\n }\n\n if (0 < h.p.length) {\n result.push(\n `${!sw && ((1 < dim && 1 < h.p.length) || 0 < h.n.length) ? '(' : ''}${h.p.join(sw ? ' and ' : ' or ')}${\n !sw && ((1 < dim && 1 < h.p.length) || 0 < h.n.length) ? ')' : ''\n }`\n )\n }\n if (0 < h.n.length) {\n result.push(h.n.join(' and '))\n }\n\n return result.join(' and ')\n }\n\n return opt.unary ? key.toUpperCase() : ''\n }\n _convertToDefaultAdvanced(key, value, opt, dim) {\n const ref = key.split('.')[0].toUpperCase()\n\n const surveySchema = this.surveySchema\n const { variables = {}, pipingVariables = {}, customVariables = {} } = surveySchema || {}\n\n const variable =\n variables[key.toLowerCase()] || pipingVariables[key.toLowerCase()] || customVariables[key.toLowerCase()]\n\n let h = ''\n\n if (Object.hasOwn(value, 'v')) {\n const hp = { p: [], n: [] }\n\n const values = Array.isArray(value.v) ? [...value.v] : [value.v]\n for (const item of values) {\n if (variable != undefined && 'a' == surveySchema.refsList[key.toUpperCase()]) {\n const v = variable.values.find(_v => String(_v) === item)\n if (Array.isArray(v)) hp[(false === value.x && 'n') || 'p'].push(v)\n else hp[(false === value.x && 'n') || 'p'].push(this._transformString(item))\n } else\n hp[(false === value.x && 'n') || 'p'].push(\n 'string' === typeof item\n ? ('TAG' == ref ||\n 't' == surveySchema.refsList[key.toUpperCase()] ||\n 'a' == surveySchema.refsList[key.toUpperCase()]) &&\n 'true' != item.toLowerCase()\n ? this._transformString(item)\n : item\n : item\n )\n }\n\n if ('a' == surveySchema.refsList[key.toUpperCase()]) {\n if (0 < hp.p.length) {\n h = `${1 < dim && 1 < hp.p.length ? '(' : ''}${hp.p\n .map(v => (Array.isArray(v) ? `${key.toLowerCase()} = '${v.join(',')}'` : `${v} in ${key.toLowerCase()}`))\n .join(' or ')}${1 < dim && 1 < hp.p.length ? ')' : ''}`\n }\n if (0 < hp.n.length) {\n h = `${1 < dim && 1 < hp.n.length ? '(' : ''}${hp.n\n .map(v =>\n Array.isArray(v) ? `${key.toLowerCase()} != '${v.join(',')}'` : `${v} not in ${key.toLowerCase()}`\n )\n .join(' or ')}${1 < dim && 1 < hp.n.length ? ')' : ''}`\n }\n } else {\n if (0 < hp.p.length) {\n h = `${'TAG' == ref ? 'tag.sentiment ' + key.split('.')[2].toUpperCase() : key.toLowerCase()} ${\n 1 < hp.p.length ? 'in' : '='\n } ${hp.p.join(', ')}`\n }\n if (0 < hp.n.length) {\n h = `${h}${0 < h.length ? ' and ' : ''}${\n 'TAG' == ref ? 'tag.sentiment ' + key.split('.')[2].toUpperCase() : key.toLowerCase()\n } ${1 < hp.n.length ? 'not in' : '!='} ${hp.n.join(', ')}`\n }\n }\n\n return h\n } else if (variable != undefined && 'x' == surveySchema.refsList[key.toUpperCase()]) {\n const a = []\n\n const values = Object.keys(value)\n for (const item of values) {\n const k = `${key.toLowerCase()}_${item}`\n\n a.push(this._convertToDefaultAdvanced(k, { v: [value[item].x ? 1 : 0], x: true }, opt, dim))\n }\n\n if (0 < a.length) {\n h = `${1 < dim && 1 < a.length ? '(' : ''}${a.join(' and ')}${1 < dim && 1 < a.length ? ')' : ''}`\n }\n\n return h\n }\n\n return opt.unary ? ('TAG' == ref ? 'tag.sentiment ' + key.split('.')[2].toUpperCase() : key.toLowerCase()) : ''\n }\n convertToAdvanced(tree, opt = {}) {\n const entries = Object.entries(tree)\n return entries\n .map(([key, value]) => {\n if ('AGE' === key) {\n return this._convertToAgeAdvanced(value, opt, entries.length)\n } else if (['STATE', 'REGION', 'STATE_REGION'].includes(key)) {\n return this._convertToStateRegionAdvanced(key, value, opt, entries.length)\n } else {\n const surveySchema = this.surveySchema\n const { variables = {}, pipingVariables = {}, customVariables = {} } = surveySchema\n\n const variable = key.toLowerCase()\n const question = this._getQuestionByRef(key)\n\n return Object.hasOwn(variables, variable) ||\n Object.hasOwn(pipingVariables, variable) ||\n Object.hasOwn(customVariables, variable) ||\n null === question\n ? this._convertToDefaultAdvanced(key, value, opt, entries.length)\n : question != undefined\n ? this._convertToQuestionAdvanced(key, value, question, opt, entries.length)\n : ''\n }\n })\n .filter(v => v.length)\n .join(' and ')\n }\n}\n\nfunction convertToGroups(node, groups = []) {\n if ('LogicalExpression' === node.type && '||' === node.operator) {\n const { left, right } = node\n if ('||' === left.operator && '||' !== right.operator) {\n groups.push(right)\n convertToGroups(left, groups)\n }\n if ('||' === right.operator && '||' !== left.operator) {\n groups.push(left)\n convertToGroups(right, groups)\n }\n if ('||' === left.operator && '||' === right.operator) {\n convertToGroups(left, groups)\n convertToGroups(right, groups)\n }\n if ('||' !== right.operator && '||' !== left.operator) {\n groups.push(left)\n groups.push(right)\n }\n } else {\n groups.push(node)\n }\n return groups\n}\nBasicFilters.convertToGroups = convertToGroups\n","import { List } from 'immutable'\n\nconst Colors = {}\n\nconst _random = (min, max) => Math.random() * (max - min + 1) + min\n\nexport const rgbToHex = rgb => {\n let hex = '#'\n const r = Math.floor(rgb[0]).toString(16)\n hex += 1 == r.length ? '0' + r : r\n const g = Math.floor(rgb[1]).toString(16)\n hex += 1 == g.length ? '0' + g : g\n const b = Math.floor(rgb[2]).toString(16)\n hex += 1 == b.length ? '0' + b : b\n return hex\n}\nexport const hexToRgb = hex => {\n const _hex = hex.replace(/#/, '')\n\n if (3 == _hex.length) {\n return [\n parseInt(_hex.slice(0, 1) + _hex.slice(1, 2), 16),\n parseInt(_hex.slice(1, 2) + _hex.slice(2, 3), 16),\n parseInt(_hex.slice(2, 3) + _hex.slice(0, 1), 16)\n ]\n } else if (6 == _hex.length) {\n return [parseInt(_hex.slice(0, 2), 16), parseInt(_hex.slice(2, 4), 16), parseInt(_hex.slice(4, 6), 16)]\n } else {\n return [0, 0, 0]\n }\n}\nColors.rgbToHex = rgbToHex\nColors.hexToRgb = hexToRgb\n\nexport const rgbToHsl = (r, g, b) => {\n const max = Math.max(r, g, b) / 255\n const min = Math.min(r, g, b) / 255\n\n let h = 0\n let s = 0\n const l = (max + min) / 2\n\n if (max != min) {\n const d = max - min\n\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min)\n\n if (max == r / 255 && g >= b) {\n h = (1.0472 * (g - b)) / 255 / d\n } else if (max == r / 255 && g < b) {\n h = (1.0472 * (g - b)) / 255 / d + 6.2832\n } else if (max == g / 255) {\n h = (1.0472 * (b - r)) / 255 / d + 2.0944\n } else if (max == b / 255) {\n h = (1.0472 * (r - g)) / 255 / d + 4.1888\n }\n\n h = h / 6.2832\n }\n\n return [360 * h, 100 * s, 100 * l]\n}\nexport const hslToRgb = (h, s, l) => {\n let r = l / 100\n let g = l / 100\n let b = l / 100\n\n if (0 != s) {\n const hue2rgb = (p, q, t) => {\n let _t = t\n if (_t < 0) _t += 1\n if (_t > 1) _t -= 1\n if (_t < 1 / 6) return p + (q - p) * 6 * _t\n if (_t < 1 / 2) return q\n if (_t < 2 / 3) return p + (q - p) * (2 / 3 - _t) * 6\n return p\n }\n\n const q = l / 100 < 0.5 ? (l * (1 + s / 100)) / 100 : (l + s) / 100 - (l * s) / 10000\n const p = (2 * l) / 100 - q\n\n r = hue2rgb(p, q, h / 360 + 1 / 3)\n g = hue2rgb(p, q, h / 360)\n b = hue2rgb(p, q, h / 360 - 1 / 3)\n }\n return [255 * r, 255 * g, 255 * b]\n}\nColors.rgbToHsl = rgbToHsl\nColors.hslToRgb = hslToRgb\n\nexport const hexToHsl = hex => {\n const rgb = hexToRgb(hex)\n return rgbToHsl(rgb[0], rgb[1], rgb[2])\n}\nexport const hslToHex = hsl => rgbToHex(hslToRgb(hsl[0], hsl[1], hsl[2]))\nColors.hexToHsl = hexToHsl\nColors.hslToHex = hslToHex\n\nexport const hexToRgba = (hex, a) => {\n const _a = 'undefined' == typeof a || null === a ? 1 : Math.max(Math.min(a, 1), 0)\n const r = parseInt(hex.slice(1, 3), 16)\n const g = parseInt(hex.slice(3, 5), 16)\n const b = parseInt(hex.slice(5), 16)\n return `rgba(${r}, ${g}, ${b}, ${_a})`\n}\nColors.hexToRgba = hexToRgba\n\nexport const colorsBlend = (c1, c2, pr) => {\n const r1 = Number('0x' + c1[1] + c1[2])\n const r2 = Number('0x' + c2[1] + c2[2])\n const g1 = Number('0x' + c1[3] + c1[4])\n const g2 = Number('0x' + c2[3] + c2[4])\n const b1 = Number('0x' + c1[5] + c1[6])\n const b2 = Number('0x' + c2[5] + c2[6])\n\n const r = parseInt(r1 - (r1 - r2) * pr, 10)\n const g = parseInt(g1 - (g1 - g2) * pr, 10)\n const b = parseInt(b1 - (b1 - b2) * pr, 10)\n\n return rgbToHex([r, g, b])\n}\nColors.colorsBlend = colorsBlend\n\nexport const colorsGradients = (colorStart, colorEnd, colorCount) => {\n const l = colorCount - 1\n const start = hexToRgb(colorStart)\n const end = hexToRgb(colorEnd)\n\n const saida = []\n for (let i = 0; i <= l; i++) {\n const c = [\n (i * end[0]) / l + (1 - i / l) * start[0],\n (i * end[1]) / l + (1 - i / l) * start[1],\n (i * end[2]) / l + (1 - i / l) * start[2]\n ]\n saida.push(rgbToHex(c))\n }\n return saida\n}\nColors.colorsGradients = colorsGradients\n\nexport const transformHex = (hex, matrix) => {\n if (!hex) return null\n\n const hsl = hexToHsl(hex)\n\n return hslToHex([hsl[0] + matrix[0], hsl[1] + matrix[1], hsl[2] + matrix[2]])\n}\nColors.transformHex = transformHex\n\nexport const randomHex = (hex, d = 1, type = 'random') => {\n if (null !== hex) {\n const hsl = hexToHsl(hex)\n\n const matrix = [_random(-5, 5), _random(hsl[1] / d, (hsl[1] - 100) / d), _random(hsl[2] / d, (hsl[2] - 100) / d)]\n\n return hslToHex([hsl[0] + matrix[0], hsl[1] - matrix[1], hsl[2] - matrix[2]])\n }\n\n let sMin = 10\n let sMax = 90\n let lMin = 10\n let lMax = 90\n\n switch (type) {\n case 'bright': {\n sMin = 55\n break\n }\n case 'light': {\n sMax = 55\n lMin = (lMax + lMin) / 2\n break\n }\n case 'dark': {\n sMin = sMax - 30\n lMax = lMin + 30\n break\n }\n default: {\n sMin = 20\n sMax = 80\n lMin = 25\n lMax = 75\n break\n }\n }\n\n return hslToHex([_random(0, 360), _random(sMin, sMax), _random(lMin, lMax)])\n}\nColors.randomHex = randomHex\n\nconst harmonizedParams = {\n complementary: { start: 180, end: 180, step: 1 },\n split_complementary: { start: 150, end: 210, step: 60 },\n triadic: { start: 120, end: 240, step: 120 },\n tetradic: { start: 90, end: 270, step: 90 },\n analogous: { start: 30, end: 90, step: 30 },\n analogous_hue: { start: 7, end: 35, step: 7 },\n analogous_random: { start: 30, end: 90, step: 30 }\n}\n\nconst RANDOM_METHODS = [\n 'complementary',\n 'split_complementary',\n 'triadic',\n 'tetradic',\n 'analogous_hue',\n 'analogous_random'\n]\nconst RANDOM_METHODS_D = [1.4, 1.4, 1.6, 1.6, 10, 2]\n\nexport const harmonized = (hex, method, reverse = false) => {\n if (!hex) return []\n\n const hsl = hexToHsl(hex)\n const { start, end, step } = harmonizedParams[method]\n\n let colors = new List([])\n const index = RANDOM_METHODS.indexOf(method)\n for (let i = start; i <= end; i += step) {\n const color = hslToHex([(hsl[0] + (reverse ? -1 : 1) * i + 360) % 360, hsl[1], hsl[2]])\n colors = colors.push(-1 < index ? randomHex(color, RANDOM_METHODS_D[index]) : color)\n }\n return colors\n}\nColors.harmonized = harmonized\n\nexport const complementary = (hex, reverse = false) => {\n const r = Math.floor(3 * Math.random()) + 1\n let colors = new List([hex])\n while (r > colors.size) {\n const color = colors.get(colors.size - 1)\n colors = colors.push(randomHex(color, 1.3))\n }\n return new List([...colors.shift(), ...harmonized(colors.get(colors.size - 1), 'complementary', reverse)])\n}\nColors.complementary = complementary\n\nexport const monochromatic = (hex, d = 1, reverse = false) => {\n if (!hex) return null\n\n const hsl = hexToHsl(hex)\n const matrix = [\n _random(-5, 5),\n 0,\n reverse ? _random((hsl[2] - 100) / d, (hsl[2] - 100) / (2 * d)) : _random(hsl[2] / (2 * d), hsl[2] / d)\n ]\n\n return hslToHex([(hsl[0] - matrix[0] + 360) % 360, hsl[1], Math.max(0, hsl[2] - matrix[2])])\n}\nColors.monochromatic = monochromatic\n\nconst randomTypes = ['bright', 'light', 'dark', 'random']\n\nexport const calculate = (hex, method, total, reverse = false) => {\n let colors = new List('random' == method ? [] : [hex])\n const randomTypesIndex = 'random' == method ? Math.floor(randomTypes.length * Math.random()) : -1\n while (total > colors.size) {\n if ('random' == method) {\n colors = colors.push(randomHex(null, null, randomTypes[randomTypesIndex]))\n } else {\n const color = colors.get(colors.size - 1)\n switch (method) {\n case 'monochromatic':\n colors = colors.push(monochromatic(color, 1.7 * total - colors.size, reverse))\n break\n case 'complementary':\n colors = new List([...colors, ...complementary(color, reverse)])\n break\n default:\n colors = new List([...colors, ...harmonized(color, method, reverse)])\n break\n }\n }\n }\n return colors.splice(total)\n}\nColors.calculate = calculate\n\nexport default Colors\n","import {\n cleanSearchData,\n getDottedQuestionName,\n getQuestionsOptionsList,\n searchToFilterLogic\n} from '@aytm/app/stats/page/comments/lib/utils'\nimport { DEFAULT_SELECTED_QUESTION } from '@aytm/app/stats/page/comments/lib/constants'\n\nexport const mapSearchDataForFetch = ({\n currentPage = 1,\n pageSize = 10,\n includeSchema = false,\n query = {},\n selectedQuestion = DEFAULT_SELECTED_QUESTION,\n orderBy = 'time',\n orderDirection = 'asc',\n isQAMode = false,\n nocache = false,\n includeFilter = false,\n flattenAnswers = false,\n uidsToApprove = null,\n responsesOptions = null\n}) => {\n let search = {}\n const data = {\n page: currentPage,\n pageSize,\n includeSchema\n }\n if (isQAMode) {\n Object.assign(data, {\n pageSize: 1 === pageSize ? 10 : pageSize,\n currentPage: 1,\n qaMode: true\n })\n if (uidsToApprove) {\n data.qaModeApprove = uidsToApprove.reduce((ret, item) => {\n ret.push(item.uid)\n return ret\n }, [])\n }\n }\n\n if (nocache) {\n Object.assign(data, { nocache: true })\n }\n\n if (flattenAnswers) {\n Object.assign(data, { flattenAnswers: true })\n }\n\n if (includeSchema) {\n Object.assign(data, { includeAssets: ['hm.cluster'] })\n }\n\n if (includeFilter && null != responsesOptions) {\n const { survey, reportVirtual, reportSchema } = responsesOptions\n const questionsList = getQuestionsOptionsList(survey, reportVirtual, reportSchema).toJS()\n Object.assign(data, { filter: searchToFilterLogic(query, selectedQuestion, questionsList) })\n }\n\n if (null != query) {\n const da = cleanSearchData(query)\n search = Object.assign(search, { query: da })\n }\n if (selectedQuestion !== DEFAULT_SELECTED_QUESTION) {\n search = Object.assign(search, { scope: getDottedQuestionName(selectedQuestion) })\n }\n if (null != orderBy) {\n search = Object.assign(search, { order: orderBy, direction: orderDirection })\n }\n\n return Object.assign(data, Object.keys(search).length ? { search } : void 0)\n}\n\nexport default {\n mapSearchDataForFetch: mapSearchDataForFetch\n}\n","import { collator } from '@aytm/app/stats/lib/helpers'\n\nexport const convertValuesToTree = (option, value, values, valueName = 'key') =>\n value != undefined && 0 < values.length\n ? 'multistatemultiselect' == option.type\n ? {\n [value.toUpperCase()]: values.reduce((acc, cur) => {\n acc[cur.value] = { x: cur.state }\n return acc\n }, {})\n }\n : 'sliderselect' == option.type\n ? {\n [value.toUpperCase()]: {\n x: true,\n v: [values.map(v => option.options[v - 1][valueName] || option.options[v - 1][valueName]).join('-')]\n }\n }\n : ['multiselect', 'inputtext'].includes(option.type) || ('dropdown' == option.type && option.subkey == undefined)\n ? {\n [value.toUpperCase()]: {\n x: true,\n v: 'dropdown' == option.type ? values : values.map(v => String(v).toLowerCase())\n }\n }\n : 'dropdown' == option.type && option.subkey != undefined\n ? {\n [value.toUpperCase()]: {\n [option.subkey.toUpperCase()]: {\n x: true,\n v: values\n }\n }\n }\n : {\n [value.toUpperCase()]: {\n x: true\n }\n }\n : ['button', 'none'].includes(option.type)\n ? {\n [value.toUpperCase()]: {\n x: true\n }\n }\n : {\n [value.toUpperCase()]: {}\n }\n\nexport const convertTreeToValues = (option, tree, valueName = 'key') =>\n tree != undefined && null !== tree\n ? 'multistatemultiselect' == option.type\n ? Object.keys(tree)\n .map(v => {\n const o = option.options.find(_v => null !== _v && 0 == collator.compare(String(_v[valueName]), String(v)))\n return o != undefined\n ? {\n value: o[valueName],\n state: tree[v].x\n }\n : null\n })\n .filter(o => o !== null)\n .sort((a, b) =>\n 'multistatemultiselect' == option.type\n ? option.options.findIndex(v => v.value == a.value) - option.options.findIndex(v => v.value == b.value)\n : 'sliderselect' == option.type\n ? a - b\n : option.options.findIndex(v => v.value == a) - option.options.findIndex(v => v.value == b)\n )\n : 'sliderselect' == option.type\n ? (Array.isArray(tree.v) ? tree.v : [tree.v])\n .flatMap(v =>\n v != undefined && null !== v\n ? 'number' == typeof v\n ? [v, v]\n : v.replace(/^(.+?)-(.+)$/, '$1##$2').split(/##/)\n : null\n )\n .map(\n v =>\n option.options.findIndex(\n _v => _v != undefined && null !== _v && 0 == collator.compare(String(_v[valueName]), String(v))\n ) + 1\n )\n .filter(i => 0 < i)\n : 'multiselect' == option.type\n ? (Array.isArray(tree.v) ? tree.v : [tree.v])\n .map(v => {\n const o = option.options.find(_v => null !== _v && 0 == collator.compare(String(_v[valueName]), String(v)))\n return o != undefined ? o[valueName] : null\n })\n .filter(o => o !== null)\n : 'inputtext' == option.type || ('dropdown' == option.type && option.subkey == undefined)\n ? Array.isArray(tree.v)\n ? tree.v\n : [tree.v]\n : 'dropdown' == option.type && option.subkey != undefined && tree[option.subkey.toUpperCase()] != undefined\n ? Array.isArray(tree[option.subkey.toUpperCase()].v)\n ? tree[option.subkey.toUpperCase()].v\n : [tree[option.subkey.toUpperCase()].v]\n : []\n : []\n","export const collator = new Intl.Collator(undefined, { sensitivity: 'accent' })\n\nexport const updateIn = (path = [], mutator, obj) => {\n if (!path.length) return obj\n const lastIndex = path.length - 1\n let node = obj\n for (const [index, p] of path.entries()) {\n if (lastIndex != index && 'object' != typeof node[p]) {\n node[p] = {}\n } else if (lastIndex == index) {\n node[p] = mutator(node[p])\n }\n node = node[p]\n }\n return obj\n}\n\nexport const setIn = (path = [], value, obj) => updateIn(path, () => value, obj)\n\nexport const getIn = (path = [], obj) => {\n if (!path.length) return obj\n const lastIndex = path.length - 1\n let node = obj\n for (let index = 0; index < lastIndex; index++) {\n const p = path[index]\n if ('object' != typeof node[p]) return void 0\n node = node[p]\n }\n return node[path[lastIndex]]\n}\n\nexport const uniq = array => array.filter((element, index, array) => array.indexOf(element) == index)\n\nexport const is = Type => target => (null != target && target.constructor === Type) || target instanceof Type\n\nexport const assocPathRecur = (path, value, obj = {}, index = 0) =>\n Object.assign({}, is(Object, obj) ? obj : {}, {\n [path[index]]: index == path.length - 1 ? value : assocPathRecur(path, value, obj[path[index]], index + 1)\n })\n\nexport const assocPath = (path, value) => obj => assocPathRecur(path, value, obj, 0)\n\nexport const omit = (properties = [], obj) =>\n Object.keys(obj).reduce(\n (omitted, property) => (properties.includes(property) ? omitted : ((omitted[property] = obj[property]), omitted)),\n {}\n )\n\nexport const pick = (properties = [], obj) =>\n properties.reduce((picked, property) => ((picked[property] = obj[property]), picked), {})\n\nexport const casecmp = (a, b) =>\n is(String)(a) && is(String)(b) ? 0 == collator.compare(a, b) : is(Array)(a) && is(Array)(b) ? arraycmp(a, b) : a == b\n\nexport function arraycmp(a, b) {\n return a.length == b.length && a.reduce((res, v, i) => res && casecmp(v, b[i]), true)\n}\n\nexport const createErrorType = (name, initFunction) => {\n function E(message, data = null) {\n this.message = message\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor)\n } else {\n this.stack = new Error('stack').stack\n }\n if (null != data) {\n this.data = data\n }\n initFunction && initFunction.apply(this, arguments)\n }\n E.prototype = Object.create(Error.prototype)\n E.prototype.name = name\n E.prototype.constructor = E\n return E\n}\n\nexport const toPrecision = precision => {\n const precisionMod = Math.pow(10, precision)\n return value => Math.round(precisionMod * value) / precisionMod\n}\n\nexport const escapeRegExp = string => string.replace(/[$()*+.?[\\\\\\]^{|}]/g, '\\\\$&')\nexport const getSize = obj => Math.round(JSON.stringify(obj).length / 1024)\n\nexport const generateUID = () => {\n const timestamp = (Number(Date.now()) - Number(new Date(2017, 9, 1))).toString(36)\n const number = Math.round(Math.random() * 100000).toString(36)\n\n return timestamp + number\n}\n\nexport const encodeText = text => {\n const newText = (text != undefined && null !== text && String(text)) || ''\n return newText\n .replace(/&/g, '&')\n .replace(//g, '>')\n .replace(/\\[/g, '[')\n .replace(/]/g, ']')\n}\nexport const decodeText = text => {\n const newText = (text != undefined && null !== text && String(text)) || ''\n return newText\n .replace(/[/g, '[')\n .replace(/]/g, ']')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/&/g, '&')\n}\n\nconst round = (v, d = 0) => {\n const tenPow = Math.pow(10, d)\n return Math.round(v * tenPow) / tenPow\n}\n\nexport const formatAmounts = (r, attr, n = 2) => {\n let res = 0\n\n if (r != undefined && null !== r) {\n if (attr == undefined || null === attr) {\n if ('string' == typeof r) return r\n if (r != Math.round(r)) res = round(r, n).toFixed(n)\n else return String(r)\n }\n\n const _attr = Array.isArray(attr) ? attr.find(a => r[a] != undefined && null !== r[a]) : attr\n\n if (_attr != undefined && null !== _attr) {\n if (r[_attr] == undefined || null === r[_attr]) return '0'\n if ('string' == typeof r[_attr]) return r[_attr]\n if (r[_attr] != Math.round(r[_attr])) res = round(r[_attr], n).toFixed(n)\n else return String(r[_attr])\n }\n }\n\n return (0 === Number(res) && '0') || res || '0'\n}\n","/* eslint-disable max-lines */\nimport jison from 'jison'\nimport assignDeep from '@aytm/lib/common/assign-deep'\nimport { collator, assocPath, createErrorType, getIn, is, pick } from './helpers'\n// import debug from 'debug'\n// const logger = debug('aytm:stats:schema-rules') // eslint-disable-line no-unused-vars\n\nconst ParseError = createErrorType('ParseError')\nconst ParserTypeError = createErrorType('ParserTypeError')\nconst ParserTimeoutError = createErrorType('ParseTimeoutError')\nconst ConvertToBasicError = createErrorType('ConvertToBasicError')\n\nconst defaultProp = Symbol('default')\n\nconst HEATMAP_CLUSTER = 'hm.cluster'\nconst RANGE_ID = '\\\\d+[-:]\\\\d+|(?:\\\\d+\\\\.)+\\\\d+|(?:\\\\d+,)+\\\\d+'\nconst rangeRegExp = new RegExp(RANGE_ID)\nconst REF_ID = `${RANGE_ID}|\\\\d+`\n\nconst baseGrammar = {\n lex: {\n macros: {\n // REF_ID\n },\n startConditions: {\n INITIAL: { inclusive: true, rules: [] },\n PARENTHESES: { inclusive: true, rules: [] }\n },\n rules: [\n [\n [\n '(\\\\d{4}-[01]\\\\d-[0-3]\\\\d(T|\\\\s+)[0-2]\\\\d:[0-5]\\\\d:[0-5]\\\\d\\\\.\\\\d+([+-][0-2]\\\\d:?[0-5]\\\\d|Z)?)',\n '(\\\\d{4}-[01]\\\\d-[0-3]\\\\d(T|\\\\s+)[0-2]\\\\d:[0-5]\\\\d:[0-5]\\\\d([+-][0-2]\\\\d:?[0-5]\\\\d|Z)?)',\n '(\\\\d{4}-[01]\\\\d-[0-3]\\\\d(T|\\\\s+)[0-2]\\\\d:[0-5]\\\\d([+-][0-2]\\\\d:?[0-5]\\\\d|Z)?)'\n ].join('|'),\n \"return 'ISODATE';\"\n ],\n\n ['\\\\s+', '/* skip whitespace */'],\n\n ['\\\\(\\\\s*', \"yy.lexer.pushState('PARENTHESES'); return 'LPAREN';\"],\n ['\\\\s*\\\\)', \"yy.lexer.popState(); return 'RPAREN';\"],\n\n ['=', \"return 'EQ';\"],\n ['<>|!=', \"return 'NEQ';\"],\n ['<=|<=', \"return 'LE';\"],\n ['>=|>=', \"return 'GE';\"],\n ['<|<', \"return 'LT';\"],\n ['>|>', \"return 'GT';\"],\n\n ['IN (?:SHAPE|CLUSTER)(\\\\b)', \"return 'IN_SHAPE';\"],\n ['NOT IN(\\\\b)', \"return 'NOT_IN';\"],\n ['IN(\\\\b)', \"return 'IN';\"],\n ['LIKE(\\\\b)', \"return 'LIKE';\"],\n\n ['NOT\\\\b', \"return 'NOT';\"],\n ['AND\\\\b', \"return 'AND';\"],\n ['OR\\\\b', \"return 'OR';\"],\n\n ['MIN\\\\b', \"return 'MIN';\"],\n ['MAX\\\\b', \"return 'MAX';\"],\n ['MINPOS(ITION)?\\\\b', \"return 'MINPOSITION';\"],\n ['MAXPOS(ITION)?\\\\b', \"return 'MAXPOSITION';\"],\n ['COUNT\\\\b', \"return 'COUNT';\"],\n\n ['COUNT\\\\b', \"return 'COUNT';\"],\n\n ['TAG\\\\b', \"return 'TAG';\"],\n\n ['(TRUE|FALSE)(\\\\b)', \"return 'BOOLEAN';\"],\n ['(\\\\d+(\\\\.\\\\d+)?)(\\\\b)', \"return 'NUMBER';\"],\n ['\"[^\\\\\"]*\"|\\'[^\\\\\\']*\\'', \"return 'STR';\"], // eslint-disable-line no-useless-escape, quotes\n\n '--- variables ---',\n '--- traits ---',\n\n // PQ*\n [`(PQ)(${REF_ID})(I?)(\\\\b)`, \"return 'BREF';\"],\n [`((PQ)(${REF_ID}))((A)(${REF_ID}))(I?)(\\\\b)`, \"return 'BREF';\"],\n [`((PQ)(${REF_ID}))((A)(${REF_ID}))(P)(\\\\b)`, \"return 'TREF';\"],\n [`((PQ)(${REF_ID}))((A)(${REF_ID}))(PV)(\\\\b)`, \"return 'NREF';\"],\n ['PQ\\\\d+R\\\\d*I(X|SX|XS|S)?(\\\\b)', \"return 'TREF';\"],\n ['PQ\\\\d+RN(\\\\b)', \"return 'NREF';\"],\n ['PQ\\\\d+A\\\\d+R\\\\d*I(X|SX|XS|S)?(\\\\b)', \"return 'TREF';\"],\n ['PQ\\\\d+A\\\\d+RN(\\\\b)', \"return 'NREF';\"],\n\n // Q*E*\n [`(([VX]?Q)(${REF_ID}))((E)(${REF_ID}))((SQ)(${REF_ID}))((A)(${REF_ID}))(C)(\\\\b)`, \"return 'TREF';\"],\n [`(([VX]?Q)(${REF_ID}))((E)(${REF_ID}))((SQ)(${REF_ID}))((A)(${REF_ID}))(CV)(\\\\b)`, \"return 'NREF';\"],\n [`(([VX]?Q)(${REF_ID}))((E)(${REF_ID}))((SQ)(${REF_ID}))((A)(${REF_ID}))(I?)(\\\\b)`, \"return 'BREF';\"],\n [`((Q)(${REF_ID}))((E)(${REF_ID}))((SQ)(${REF_ID}))((A)(${REF_ID}))(P)(\\\\b)`, \"return 'TREF';\"],\n [`((Q)(${REF_ID}))((E)(${REF_ID}))((SQ)(${REF_ID}))((A)(${REF_ID}))(PV)(\\\\b)`, \"return 'NREF';\"],\n ['[VX]?Q\\\\d+E\\\\d+SQ\\\\d+A\\\\d+RC?(\\\\b)', \"return 'TREF';\"],\n ['[VX]?Q\\\\d+E\\\\d+SQ\\\\d+A\\\\d+R\\\\d+C?(\\\\b)', \"return 'TREF';\"],\n ['[VX]?Q\\\\d+E\\\\d+SQ\\\\d+A\\\\d+R\\\\d*C?V(\\\\b)', \"return 'NREF';\"],\n ['[VX]?Q\\\\d+E\\\\d+SQ\\\\d+A\\\\d+R\\\\d*I(X|SX|XS|S)?(\\\\b)', \"return 'TREF';\"],\n ['[VX]?Q\\\\d+E\\\\d+SQ\\\\d+A\\\\d+RN(\\\\b)', \"return 'NREF';\"],\n ['[VX]?Q\\\\d+E\\\\d+SQ\\\\d+A\\\\d+T(\\\\b)', \"return 'TREF';\"],\n\n [`(([VX]?Q)(${REF_ID}))((E)(${REF_ID}))((SQ)(${REF_ID}))(C)(\\\\b)`, \"return 'TREF';\"],\n [`(([VX]?Q)(${REF_ID}))((E)(${REF_ID}))((SQ)(${REF_ID}))(CV)(\\\\b)`, \"return 'NREF';\"],\n [`(([VX]?Q)(${REF_ID}))((E)(${REF_ID}))((SQ)(${REF_ID}))(I?)(\\\\b)`, \"return 'BREF';\"],\n [`((Q)(${REF_ID}))((E)(${REF_ID}))((SQ)(${REF_ID}))(P)(\\\\b)`, \"return 'TREF';\"],\n [`((Q)(${REF_ID}))((E)(${REF_ID}))((SQ)(${REF_ID}))(PV)(\\\\b)`, \"return 'NREF';\"],\n ['[VX]?Q\\\\d+E\\\\d+SQ\\\\d+RC(\\\\b)', \"return 'TREF';\"],\n ['[VX]?Q\\\\d+E\\\\d+SQ\\\\d+R\\\\d+C?(\\\\b)', \"return 'TREF';\"],\n ['[VX]?Q\\\\d+E\\\\d+SQ\\\\d+R\\\\d*C?V(\\\\b)', \"return 'NREF';\"],\n ['[VX]?Q\\\\d+E\\\\d+SQ\\\\d+R\\\\d*I(X|SX|XS|S)?(\\\\b)', \"return 'TREF';\"],\n ['[VX]?Q\\\\d+E\\\\d+SQ\\\\d+RN(\\\\b)', \"return 'NREF';\"],\n ['[VX]?Q\\\\d+E\\\\d+SQ\\\\d+T(\\\\b)', \"return 'TREF';\"],\n\n [`(([VX]?Q)(${REF_ID}))((E)(${REF_ID}))(C)(\\\\b)`, \"return 'TREF';\"],\n [`(([VX]?Q)(${REF_ID}))((E)(${REF_ID}))(CV)(\\\\b)`, \"return 'NREF';\"],\n [`(([VX]?Q)(${REF_ID}))((E)(${REF_ID}))(I?)(\\\\b)`, \"return 'BREF';\"],\n [`((Q)(${REF_ID}))((E)(${REF_ID}))(P)(\\\\b)`, \"return 'TREF';\"],\n [`((Q)(${REF_ID}))((E)(${REF_ID}))(PV)(\\\\b)`, \"return 'NREF';\"],\n ['[VX]?Q\\\\d+E\\\\d+RC(\\\\b)', \"return 'TREF';\"],\n ['[VX]?Q\\\\d+E\\\\d+R\\\\d+C?(\\\\b)', \"return 'TREF';\"],\n ['[VX]?Q\\\\d+E\\\\d+R\\\\d*CV(\\\\b)', \"return 'NREF';\"],\n ['[VX]?Q\\\\d+E\\\\d+R\\\\d*I(X|SX|XS|S)?(\\\\b)', \"return 'TREF';\"],\n ['[VX]?Q\\\\d+E\\\\d+RN(\\\\b)', \"return 'NREF';\"],\n ['[VX]?Q\\\\d+E\\\\d+T(\\\\b)', \"return 'TREF';\"],\n\n // Q*SQ* | VQ*SQ* | XQ*SQ*\n [`(([VX]?Q)(${REF_ID}))((SQ)(${REF_ID}))((A)(${REF_ID}))(C)(\\\\b)`, \"return 'TREF';\"],\n [`(([VX]?Q)(${REF_ID}))((SQ)(${REF_ID}))((A)(${REF_ID}))(CV)(\\\\b)`, \"return 'NREF';\"],\n [`(([VX]?Q)(${REF_ID}))((SQ)(${REF_ID}))((A)(${REF_ID}))(I?)(\\\\b)`, \"return 'BREF';\"],\n [`((Q)(${REF_ID}))((SQ)(${REF_ID}))((A)(${REF_ID}))(P)(\\\\b)`, \"return 'TREF';\"],\n [`((Q)(${REF_ID}))((SQ)(${REF_ID}))((A)(${REF_ID}))(PV)(\\\\b)`, \"return 'NREF';\"],\n ['[VX]?Q\\\\d+SQ\\\\d+A\\\\d+I?(\\\\b)', \"return 'BREF';\"],\n ['[VX]?Q\\\\d+SQ\\\\d+A\\\\d+RC(\\\\b)', \"return 'TREF';\"],\n ['[VX]?Q\\\\d+SQ\\\\d+A\\\\d+R\\\\d+C?(\\\\b)', \"return 'TREF';\"],\n ['[VX]?Q\\\\d+SQ\\\\d+A\\\\d+R\\\\d*C?V(\\\\b)', \"return 'NREF';\"],\n ['[VX]?Q\\\\d+SQ\\\\d+A\\\\d+R\\\\d*I(X|SX|XS|S)?(\\\\b)', \"return 'TREF';\"],\n ['[VX]?Q\\\\d+SQ\\\\d+A\\\\d+RN(\\\\b)', \"return 'NREF';\"],\n ['[VX]?Q\\\\d+SQ\\\\d+A\\\\d+T(\\\\b)', \"return 'TREF';\"],\n ['[VX]?Q\\\\d+SQ\\\\d+A\\\\d+R(\\\\b)', \"return 'ARRAYREF';\"],\n\n [`(([VX]?Q)(${REF_ID}))((SQ)(${REF_ID}))(C)(\\\\b)`, \"return 'TREF';\"],\n [`(([VX]?Q)(${REF_ID}))((SQ)(${REF_ID}))(CV)(\\\\b)`, \"return 'NREF';\"],\n [`(([VX]?Q)(${REF_ID}))((SQ)(${REF_ID}))(I?)(\\\\b)`, \"return 'BREF';\"],\n [`((Q)(${REF_ID}))((SQ)(${REF_ID}))(P)(\\\\b)`, \"return 'TREF';\"],\n [`((Q)(${REF_ID}))((SQ)(${REF_ID}))(PV)(\\\\b)`, \"return 'NREF';\"],\n ['[VX]?Q\\\\d+SQ\\\\d+RC(\\\\b)', \"return 'TREF';\"],\n ['[VX]?Q\\\\d+SQ\\\\d+R\\\\d+C?(\\\\b)', \"return 'TREF';\"],\n ['[VX]?Q\\\\d+SQ\\\\d+R\\\\d*C?V(\\\\b)', \"return 'NREF';\"],\n ['[VX]?Q\\\\d+SQ\\\\d+R\\\\d*I(X|SX|XS|S)?(\\\\b)', \"return 'TREF';\"],\n ['[VX]?Q\\\\d+SQ\\\\d+RN(\\\\b)', \"return 'NREF';\"],\n ['[VX]?Q\\\\d+SQ\\\\d+T(\\\\b)', \"return 'TREF';\"],\n ['[VX]?Q\\\\d+SQ\\\\d+V(\\\\b)', \"return 'NREF';\"],\n ['[VX]?Q\\\\d+SQ\\\\d+R(\\\\b)', \"return 'ARRAYREF';\"],\n\n // Q*\n [`(([VX]?Q)(${REF_ID}))((A)(${REF_ID}))(C)(\\\\b)`, \"return 'TREF';\"],\n [`(([VX]?Q)(${REF_ID}))((A)(${REF_ID}))(CV)(\\\\b)`, \"return 'NREF';\"],\n [`(([VX]?Q)(${REF_ID}))((A)(${REF_ID}))(I?)(\\\\b)`, \"return 'BREF';\"],\n [`((Q)(${REF_ID}))((A)(${REF_ID}))(P)(\\\\b)`, \"return 'TREF';\"],\n [`((Q)(${REF_ID}))((A)(${REF_ID}))(PV)(\\\\b)`, \"return 'NREF';\"],\n ['[VX]?Q\\\\d+A\\\\d+RC(\\\\b)', \"return 'TREF';\"],\n ['[VX]?Q\\\\d+A\\\\d+R\\\\d+C?(\\\\b)', \"return 'TREF';\"],\n ['[VX]?Q\\\\d+A\\\\d+R\\\\d*CV(\\\\b)', \"return 'NREF';\"],\n ['[VX]?Q\\\\d+A\\\\d+R\\\\d*I(X|SX|XS|S)?(\\\\b)', \"return 'TREF';\"],\n ['[VX]?Q\\\\d+A\\\\d+RN(\\\\b)', \"return 'NREF';\"],\n ['[VX]?Q\\\\d+A\\\\d+T(\\\\b)', \"return 'TREF';\"],\n\n [`([VX]?Q)(${REF_ID})(\\\\b)`, \"return 'BREF';\"],\n [`([VX]?Q)(${REF_ID})(C)(\\\\b)`, \"return 'TREF';\"],\n [`([VX]?Q)(${REF_ID})(CV)(\\\\b)`, \"return 'NREF';\"],\n [`([VX]?Q)(${REF_ID})(I)(\\\\b)`, \"return 'BREF';\"],\n ['[VX]?Q\\\\d+RC(\\\\b)', \"return 'TREF';\"],\n ['[VX]?Q\\\\d+R\\\\d+P(\\\\b)', \"return 'TREF';\"],\n ['[VX]?Q\\\\d+R\\\\d+PV(\\\\b)', \"return 'NREF';\"],\n ['[VX]?Q\\\\d+R\\\\d+(C?)(\\\\b)', \"return 'TREF';\"],\n ['[VX]?Q\\\\d+R\\\\d*(CV)(\\\\b)', \"return 'NREF';\"],\n ['[VX]?Q\\\\d+R\\\\d*I(X|SX|XS|S)?(\\\\b)', \"return 'TREF';\"],\n ['[VX]?Q\\\\d+RN(\\\\b)', \"return 'NREF';\"],\n ['[VX]?Q\\\\d+T(\\\\b)', \"return 'TREF';\"],\n ['[VX]?Q\\\\d+R(PV?)?(\\\\b)', \"return 'ARRAYREF';\"],\n\n ['P?Q\\\\d+\\\\w*', \"return 'ERROR'\"],\n ['@?[A-Z][A-Z0-9_]*\\\\b', \"return 'TOKEN';\"],\n [',', \"return 'COMMA';\"],\n ['[.]', \"return 'DOT';\"],\n ['[*]', \"return 'MLT';\"],\n ['[/]', \"return 'DIV';\"],\n ['[+]', \"return 'ADD';\"],\n ['-', \"return 'SUB';\"],\n\n ['$', \"return 'EOF';\"]\n ]\n },\n operators: [\n ['left', 'IN', 'NOT_IN', 'LIKE', 'IN_SHAPE'],\n ['left', 'COMMA'],\n ['left', 'AND', 'OR'],\n ['left', 'NOT'],\n ['left', 'EQ', 'NEQ', 'LT', 'LE', 'GT', 'GE'],\n ['left', 'ADD', 'SUB'],\n ['left', 'MLT', 'DIV'],\n ['left', 'COUNT', 'MIN', 'MAX', 'MAXPOSITION', 'MINPOSITION'],\n ['left', 'UMINUS', 'NOT']\n ],\n ebnf: {\n expressions: [['statement EOF', 'return $1']],\n statement: [['e', '$$ = $1;']]\n }\n}\n\nconst grammarBNFtree = {\n e: [\n ['LPAREN e RPAREN', '$$ = $2;'],\n ['BOOLEAN', \"$$ = { type: 'Literal', value: 'TRUE' === $1.toUpperCase() }\"],\n ['BREF', \"$$ = yy.saveRef({alias: $1, type: 'ref', subtype: 'bref', default: false, location: @$ });\"],\n ['e AND e', \"$$ = { type: 'LogicalExpression', operator: '&&', left: $1, right: $3 };\"],\n ['e OR e', \"$$ = { type: 'LogicalExpression', operator: '||', left: $1, right: $3 };\"],\n ['NOT e', \"$$ = { type: 'UnaryExpression', operator: '!', prefix: true, argument: $2 };\"],\n\n ['ne LE ne', \"$$ = { type: 'BinaryExpression', operator: '<=', left: $1, right: $3 };\"],\n ['ne GE ne', \"$$ = { type: 'BinaryExpression', operator: '>=', left: $1, right: $3 };\"],\n ['ne LT ne', \"$$ = { type: 'BinaryExpression', operator: '<', left: $1, right: $3 };\"],\n ['ne GT ne', \"$$ = { type: 'BinaryExpression', operator: '>', left: $1, right: $3 };\"],\n\n ['token LE ne', \"$$ = { type: 'BinaryExpression', operator: '<=', left: $1, right: $3 };\"],\n ['token GE ne', \"$$ = { type: 'BinaryExpression', operator: '>=', left: $1, right: $3 };\"],\n ['token LT ne', \"$$ = { type: 'BinaryExpression', operator: '<', left: $1, right: $3 };\"],\n ['token GT ne', \"$$ = { type: 'BinaryExpression', operator: '>', left: $1, right: $3 };\"],\n ['ne LE token', \"$$ = { type: 'BinaryExpression', operator: '<=', left: $1, right: $3 };\"],\n ['ne GE token', \"$$ = { type: 'BinaryExpression', operator: '>=', left: $1, right: $3 };\"],\n ['ne LT token', \"$$ = { type: 'BinaryExpression', operator: '<', left: $1, right: $3 };\"],\n ['ne GT token', \"$$ = { type: 'BinaryExpression', operator: '>', left: $1, right: $3 };\"],\n\n ['list EQ list', \"$$ = { type: 'BinaryExpression', operator: '==', left: $1, right: $3 };\"],\n ['list NEQ list', \"$$ = { type: 'BinaryExpression', operator: '!=', left: $1, right: $3 };\"],\n\n ['list EQ te', \"$$ = { type: 'BinaryExpression', operator: '==', left: $1, right: $3 };\"],\n ['list NEQ te', \"$$ = { type: 'BinaryExpression', operator: '!=', left: $1, right: $3 };\"],\n ['te EQ list', \"$$ = { type: 'BinaryExpression', operator: '==', left: $1, right: $3 };\"],\n ['te NEQ list', \"$$ = { type: 'BinaryExpression', operator: '!=', left: $1, right: $3 };\"],\n\n ['ne EQ ne', \"$$ = { type: 'BinaryExpression', operator: '==', left: $1, right: $3 };\"],\n ['te EQ te', \"$$ = { type: 'BinaryExpression', operator: '==', left: $1, right: $3 };\"],\n ['te EQ ne', \"$$ = { type: 'BinaryExpression', operator: '==', left: $1, right: $3 };\"],\n ['ne EQ te', \"$$ = { type: 'BinaryExpression', operator: '==', left: $1, right: $3 };\"],\n\n ['ne NEQ ne', \"$$ = { type: 'BinaryExpression', operator: '!=', left: $1, right: $3 };\"],\n ['te NEQ te', \"$$ = { type: 'BinaryExpression', operator: '!=', left: $1, right: $3 };\"],\n ['te NEQ ne', \"$$ = { type: 'BinaryExpression', operator: '!=', left: $1, right: $3 };\"],\n ['ne NEQ te', \"$$ = { type: 'BinaryExpression', operator: '!=', left: $1, right: $3 };\"],\n\n ['list EQ token', \"$$ = { type: 'BinaryExpression', operator: '==', left: $1, right: $3 };\"],\n ['list NEQ token', \"$$ = { type: 'BinaryExpression', operator: '!=', left: $1, right: $3 };\"],\n ['token EQ list', \"$$ = { type: 'BinaryExpression', operator: '==', left: $1, right: $3 };\"],\n ['token NEQ list', \"$$ = { type: 'BinaryExpression', operator: '!=', left: $1, right: $3 };\"],\n\n ['ne EQ token', \"$$ = { type: 'BinaryExpression', operator: '==', left: $1, right: $3 };\"],\n ['te EQ token', \"$$ = { type: 'BinaryExpression', operator: '==', left: $1, right: $3 };\"],\n ['token EQ ne', \"$$ = { type: 'BinaryExpression', operator: '==', left: $1, right: $3 };\"],\n ['token EQ te', \"$$ = { type: 'BinaryExpression', operator: '==', left: $1, right: $3 };\"],\n ['token EQ token', \"$$ = { type: 'BinaryExpression', operator: '==', left: $1, right: $3 };\"],\n ['token EQ e', \"$$ = { type: 'BinaryExpression', operator: '==', left: $1, right: $3 };\"],\n\n ['ne NEQ token', \"$$ = { type: 'BinaryExpression', operator: '!=', left: $1, right: $3 };\"],\n ['te NEQ token', \"$$ = { type: 'BinaryExpression', operator: '!=', left: $1, right: $3 };\"],\n ['token NEQ ne', \"$$ = { type: 'BinaryExpression', operator: '!=', left: $1, right: $3 };\"],\n ['token NEQ te', \"$$ = { type: 'BinaryExpression', operator: '!=', left: $1, right: $3 };\"],\n ['token NEQ token', \"$$ = { type: 'BinaryExpression', operator: '!=', left: $1, right: $3 };\"],\n\n ['list IN list', \"$$ = { type: 'BinaryExpression', operator: 'in', left: $1, right: $3 };\"],\n\n ['ne IN list', \"$$ = { type: 'BinaryExpression', operator: 'in', left: $1, right: $3 };\"],\n ['te IN list', \"$$ = { type: 'BinaryExpression', operator: 'in', left: $1, right: $3 };\"],\n ['token IN list', \"$$ = { type: 'BinaryExpression', operator: 'in', left: $1, right: $3 };\"],\n ['ne IN te', \"$$ = { type: 'BinaryExpression', operator: 'in', left: $1, right: $3 };\"],\n ['te IN te', \"$$ = { type: 'BinaryExpression', operator: 'in', left: $1, right: $3 };\"],\n ['token IN te', \"$$ = { type: 'BinaryExpression', operator: 'in', left: $1, right: $3 };\"],\n\n ['list NOT_IN list', \"$$ = { type: 'BinaryExpression', operator: 'in', left: $1, right: $3 };\"],\n\n ['ne NOT_IN list', \"$$ = { type: 'BinaryExpression', operator: 'not_in', left: $1, right: $3 };\"],\n ['te NOT_IN list', \"$$ = { type: 'BinaryExpression', operator: 'not_in', left: $1, right: $3 };\"],\n ['token NOT_IN list', \"$$ = { type: 'BinaryExpression', operator: 'not_in', left: $1, right: $3 };\"],\n ['ne NOT_IN te', \"$$ = { type: 'BinaryExpression', operator: 'not_in', left: $1, right: $3 };\"],\n ['te NOT_IN te', \"$$ = { type: 'BinaryExpression', operator: 'not_in', left: $1, right: $3 };\"],\n ['token NOT_IN te', \"$$ = { type: 'BinaryExpression', operator: 'not_in', left: $1, right: $3 };\"],\n\n ['te LIKE te', \"$$ = { type: 'BinaryExpression', operator: 'like', left: $1, right: $3 };\"],\n ['te LIKE ne', \"$$ = { type: 'BinaryExpression', operator: 'like', left: $1, right: $3 };\"],\n ['ne LIKE ne', \"$$ = { type: 'BinaryExpression', operator: 'like', left: $1, right: $3 };\"],\n\n ['te LIKE token', \"$$ = { type: 'BinaryExpression', operator: 'like', left: $1, right: $3 };\"],\n ['ne LIKE token', \"$$ = { type: 'BinaryExpression', operator: 'like', left: $1, right: $3 };\"],\n ['token LIKE te', \"$$ = { type: 'BinaryExpression', operator: 'like', left: $1, right: $3 };\"],\n\n [\n 'tag EQ te',\n \"$$ = { type: 'BinaryExpression', operator: 'tag_eq', left: $1, right: yy.saveRef({ type: 'tag', value: $3, location: @3, scope: $1 }) };\"\n ],\n [\n 'tag NEQ te',\n \"$$ = { type: 'BinaryExpression', operator: 'tag_neq', left: $1, right: yy.saveRef({ type: 'tag', value: $3, location: @3, scope: $1 }) };\"\n ],\n [\n 'tag IN str_list',\n \"$$ = { type: 'BinaryExpression', operator: 'tag_in', left: $1, right: yy.saveRef({ type: 'tag', subtype: 'list', value: $3, location: @3, scope: $1 }) };\"\n ],\n\n [\n 'BREF tag EQ te',\n \"$$ = { type: 'BinaryExpression', operator: 'tag_eq', scope: [ yy.saveRef({ alias: $1, type: 'ref', subtype: 'bref', default: false, location: @$ }) ], left: $2, right: yy.saveRef({ alias: $1, type: 'tag', value: $4, location: @4, scope: $2 }) };\"\n ],\n [\n 'BREF tag NEQ te',\n \"$$ = { type: 'BinaryExpression', operator: 'tag_neq', scope: [ yy.saveRef({ alias: $1, type: 'ref', subtype: 'bref', default: false, location: @$ }) ], left: $2, right: yy.saveRef({ alias: $1, type: 'tag', value: $4, location: @4, scope: $2 }) };\"\n ],\n [\n 'BREF tag IN str_list',\n \"$$ = { type: 'BinaryExpression', operator: 'tag_in', scope: [ yy.saveRef({ alias: $1, type: 'ref', subtype: 'bref', default: false, location: @$ }) ], left: $2, right: yy.saveRef({ alias: $1, type: 'tag', subtype: 'list', value: $4, location: @4, scope: $2 }) };\"\n ],\n\n [\n 'tag BREF EQ te',\n \"$$ = { type: 'BinaryExpression', operator: 'tag_eq', scope: [ yy.saveRef({ alias: $2, type: 'ref', subtype: 'bref', default: false, location: @$ }) ], left: $1, right: yy.saveRef({ alias: $2, type: 'tag', value: $4, location: @4, scope: $1 }) };\"\n ],\n\n [\n 'tag BREF NEQ te',\n \"$$ = { type: 'BinaryExpression', operator: 'tag_neq', scope: [ yy.saveRef({ alias: $2, type: 'ref', subtype: 'bref', default: false, location: @$ }) ], left: $1, right: yy.saveRef({ alias: $2, type: 'tag', value: $4, location: @4, scope: $1 }) };\"\n ],\n [\n 'tag BREF IN str_list',\n \"$$ = { type: 'BinaryExpression', operator: 'tag_in', scope: [ yy.saveRef({ alias: $2, type: 'ref', subtype: 'bref', default: false, location: @$ }) ], left: $1, right: yy.saveRef({ alias: $2, type: 'tag', subtype: 'list', value: $4, location: @4, scope: $1 }) };\"\n ],\n\n [\n 'tag tag_path EQ te',\n \"$$ = { type: 'BinaryExpression', operator: 'tag_eq', scope: $2, left: $1, right: yy.saveRef({ alias: $2, type: 'tag', value: $4, location: @4, scope: $1 }) };\"\n ],\n [\n 'tag tag_path NEQ te',\n \"$$ = { type: 'BinaryExpression', operator: 'tag_neq', scope: $2, left: $1, right: yy.saveRef({ alias: $2, type: 'tag', value: $4, location: @4, scope: $1 }) };\"\n ],\n [\n 'tag tag_path IN str_list',\n \"$$ = { type: 'BinaryExpression', operator: 'tag_in', scope: $2, left: $1, right: yy.saveRef({ alias: $2, type: 'tag', subtype: 'list', value: $4, location: @4, scope: $1 }) };\"\n ],\n\n [\n 'list IN_SHAPE str_list',\n \"$$ = { type: 'BinaryExpression', operator: 'in_shape', left: $1, right: yy.saveRef({ alias: $3, type: 'asset', subtype: yy.HEATMAP_CLUSTER, location: @3, scope: $1 }) }\"\n ],\n\n ['ERROR', \"$$ = yy.saveRef({ alias: $1, type: 'error', location: @$ });\"]\n ],\n tag: [\n ['TAG', \"$$ = yy.saveRef({alias: $1, type: 'ref', subtype: 'tag', default: '', location: @$ });\"],\n [\n 'TAG DOT TOKEN',\n \"$$ = yy.saveRef({alias: $1 + '.' + $3, type: 'ref', subtype: 'tag', default: '', location: @$ });\"\n ]\n ],\n tag_path: [\n ['LPAREN tag_path RPAREN', '$$ = $2;'],\n ['tag_path_list', '$$ = $1;']\n ],\n tag_path_list: [\n ['bref COMMA bref', '$$ = yy.saveArray($1, $3, true);'],\n ['tag_path_list COMMA bref', '$$ = yy.saveArray($1, $3, true);']\n ],\n bref: [['BREF', \"$$ = yy.saveRef({alias: $1, type: 'ref', subtype: 'bref', default: false, location: @$ });\"]],\n ne: [\n ['LPAREN ne RPAREN', '$$ = $2;'],\n ['NUMBER', \"$$ = { type: 'Literal', value: parseFloat($1, 10), raw: $1 };\"],\n ['NREF', \"$$ = yy.saveRef({ alias: $1, type: 'ref', subtype: 'nref', default: 0, location: @$ });\"],\n ['NTRAIT', \"$$ = yy.saveRef({ alias: $1, type: 'ntrait', location: @$ });\"],\n ['NTOKEN', \"$$ = yy.saveRef({ alias: $1, type: 'ref', subtype: 'nref', default: 0, location: @$ });\"],\n ['ISODATE', \"yy.tmp = yy.normalizeISODate($1); $$ = { type: 'Literal', value: new Date(yy.tmp), raw: yy.tmp };\"],\n\n ['SUB ne', \"$$ = { type: 'UnaryExpression', operator: '-', prefix: true, argument: $2 };\", { prec: 'UMINUS' }],\n ['ne ADD ne', \"$$ = { type: 'BinaryExpression', operator: '+', left: $1, right: $3 };\"],\n ['ne SUB ne', \"$$ = { type: 'BinaryExpression', operator: '-', left: $1, right: $3 };\"],\n ['ne MLT ne', \"$$ = { type: 'BinaryExpression', operator: '*', left: $1, right: $3 };\"],\n ['ne DIV ne', \"$$ = { type: 'BinaryExpression', operator: '/', left: $1, right: $3 };\"],\n\n ['ne ADD token', \"$$ = { type: 'BinaryExpression', operator: '+', left: $1, right: $3 };\"],\n ['ne SUB token', \"$$ = { type: 'BinaryExpression', operator: '-', left: $1, right: $3 };\"],\n ['ne MLT token', \"$$ = { type: 'BinaryExpression', operator: '*', left: $1, right: $3 };\"],\n ['ne DIV token', \"$$ = { type: 'BinaryExpression', operator: '/', left: $1, right: $3 };\"],\n\n ['MIN list', \"$$ = { type: 'UnaryExpression', operator: 'min', prefix: true, argument: $2 };\"],\n ['MAX list', \"$$ = { type: 'UnaryExpression', operator: 'max', prefix: true, argument: $2 };\"],\n ['MINPOSITION list', \"$$ = { type: 'UnaryExpression', operator: 'minPos', prefix: true, argument: $2 };\"],\n ['MAXPOSITION list', \"$$ = { type: 'UnaryExpression', operator: 'maxPos', prefix: true, argument: $2 };\"],\n\n ['COUNT list', \"$$ = { type: 'UnaryExpression', operator: 'count', prefix: true, argument: $2 };\"]\n ],\n te: [\n ['LPAREN te RPAREN', '$$ = $2;'],\n [\n 'STR STR+',\n \"$$ = { type: 'Literal', value: [$1].concat($2).map(function(v){return yy.removeQuotes(v);}).join(''), raw: [$1].concat($2).join('') };\"\n ],\n ['STR', \"$$ = { type: 'Literal', value: yy.removeQuotes($1), raw: $1 };\"],\n ['TREF', \"$$ = yy.saveRef({ alias: $1, type: 'ref', subtype: 'tref', default: '', location: @$ });\"],\n ['TRAIT', \"$$ = yy.saveRef({ alias: $1, type: 'trait', location: @$ });\"],\n\n ['te ADD te', \" $$ = { type: 'BinaryExpression', operator: '+', left: $1, right: $3 };\"],\n ['te ADD token', \" $$ = { type: 'BinaryExpression', operator: '+', left: $1, right: $3 };\"],\n ['token ADD te', \" $$ = { type: 'BinaryExpression', operator: '+', left: $1, right: $3 };\"]\n ],\n token: [\n ['LPAREN token RPAREN', '$$ = $2;'],\n ['TOKEN', \"$$ = yy.saveRef({alias: $1, type: 'ref', subtype: 'tref', default: '', location: @$ });\"]\n ],\n str_list: [\n ['LPAREN str_list RPAREN', '$$ = $2;'],\n [\n 'STR STR+',\n \"$$ = { type: 'Literal', value: [$1].concat($2).map(v => yy.removeQuotes(v)).join(''), raw: [$1].concat($2).join('') };\"\n ],\n ['STR', \"$$ = { type: 'Literal', value: yy.removeQuotes($1), raw: $1 };\"],\n ['str_list COMMA str_list', '$$ = yy.saveArray($1, $3);']\n ],\n list: [\n ['LPAREN list RPAREN', '$$ = $2;'],\n ['ATRAIT', \"$$ = yy.saveRef({ alias: $1, type: 'atrait', default: [], location: @$ });\"],\n ['ATOKEN', \"$$ = yy.saveRef({ alias: $1, type: 'ref', subtype: 'aref', default: [], location: @$ });\"],\n ['ARRAYREF', \"$$ = yy.saveRef({ alias: $1, type: 'ref', subtype: 'aref', default: [], location: @$ });\"],\n\n ['ne COMMA ne', '$$ = yy.saveArray($1, $3);'],\n ['ne COMMA te', '$$ = yy.saveArray($1, $3);'],\n ['ne COMMA token', '$$ = yy.saveArray($1, $3);'],\n ['ne COMMA list', '$$ = yy.saveArray($1, $3);'],\n ['te COMMA te', '$$ = yy.saveArray($1, $3);'],\n ['te COMMA ne', '$$ = yy.saveArray($1, $3);'],\n ['te COMMA token', '$$ = yy.saveArray($1, $3);'],\n ['te COMMA list', '$$ = yy.saveArray($1, $3);'],\n ['token COMMA token', '$$ = yy.saveArray($1, $3);'],\n ['token COMMA ne', '$$ = yy.saveArray($1, $3);'],\n ['token COMMA te', '$$ = yy.saveArray($1, $3);'],\n ['token COMMA list', '$$ = yy.saveArray($1, $3);'],\n ['list COMMA ne', '$$ = yy.saveArray($1, $3);'],\n ['list COMMA te', '$$ = yy.saveArray($1, $3);'],\n ['list COMMA token', '$$ = yy.saveArray($1, $3);'],\n ['list COMMA list', '$$ = yy.saveArray($1, $3);']\n ]\n}\n\nconst removeQuotes = text => {\n const match =\n 'string' == typeof text\n ? text.match(/^\"([^\"]*)\"|'([^']*)'$/) // eslint-disable-line no-useless-escape\n : false\n return match && (match[1] || match[2]) ? match[1] || match[2] : text\n}\n\n// CHECK for tags\nconst saveArray = (left, right, savePlain = false) => {\n const res = { type: 'ArrayExpression', elements: [] }\n ;[left, right]\n .filter(v => null != v)\n .forEach(el => {\n if (is(String)(el) || is(Number)(el)) {\n res.elements.push({ type: 'Literal', value: el, raw: `${el}` })\n } else if (el.type && el.elements) {\n res.elements = res.elements.concat(el.elements)\n } else if (['Literal', 'Identifier'].includes(el.type)) {\n res.elements.push(el)\n } else if (Array.isArray(el)) {\n res.elements = res.elements.concat(el)\n }\n })\n return savePlain ? res.elements : res\n}\n\nconst memberExpressionFromString = str => {\n if (null == str) {\n return { type: 'Literal', value: null, raw: 'null' }\n }\n const result = { type: 'Identifier' }\n const i = str.lastIndexOf('.')\n if (/^(.*)\\[(\\d+)]$/.test(str)) {\n Object.assign(result, {\n type: 'MemberExpression',\n computed: true,\n object: memberExpressionFromString(RegExp.$1),\n property: { type: 'Literal', value: parseInt(RegExp.$2, 10), raw: RegExp.$2 }\n })\n } else if (0 < i) {\n const obj = str.slice(0, i)\n\n const prop = str.slice(i + 1)\n Object.assign(result, {\n type: 'MemberExpression',\n computed: false,\n object: memberExpressionFromString(obj),\n property: memberExpressionFromString(prop)\n })\n } else Object.assign(result, { name: str })\n return result\n}\n\nconst parseMemberExpression = obj =>\n null == obj\n ? null\n : is(String)(obj)\n ? memberExpressionFromString(obj)\n : Object.assign(\n {},\n obj,\n obj.left ? { left: parseMemberExpression(obj.left) } : {},\n obj.right ? { right: parseMemberExpression(obj.right) } : {}\n )\n\nconst MAX_RANGE_EXPANSION_LENGTH = 300\nconst logicalExpressionNode = (operator, elements) => {\n const node = { type: 'LogicalExpression', operator }\n return 1 < elements.length\n ? elements.reduce(\n (res, el) =>\n null == res.left\n ? Object.assign({}, node, { left: el })\n : null == res.right\n ? Object.assign(res, { right: el })\n : Object.assign({}, node, { left: res, right: el }),\n {}\n )\n : elements[0]\n}\n\nconst parseRangePattern = ({ alias, type, subtype, value, location, initialAlias }, callback, yy, level = 0) => {\n // check for ranges: `-` and `:`\n const div = Math.min(...[alias.indexOf('-'), alias.indexOf(':')].filter(v => -1 < v))\n if (0 < div && Infinity > div) {\n const startSym = /^\\d+$/.test(alias[div - 1])\n ? /^\\d+$/.test(alias[div - 2])\n ? /^\\d+$/.test(alias[div - 3])\n ? div - 3\n : div - 2\n : div - 1\n : 0\n const leftPart = alias.slice(0, startSym)\n let rightPart = alias.slice(div + 1)\n const endSym = /[^\\d:-]/g.test(rightPart) ? rightPart.indexOf(rightPart.match(/[^\\d:-]/g)[0]) : 10000\n rightPart = rightPart.slice(endSym)\n const middle = alias.slice(startSym, rightPart ? alias.indexOf(rightPart) : 10000)\n\n let limits = middle.split(alias[div])\n limits = limits.filter(v => !isNaN(parseInt(v, 10)) && v != '')\n\n if (!startSym || limits[1] - limits[0] > MAX_RANGE_EXPANSION_LENGTH) {\n yy.result.errors.push({ text: initialAlias, type: 'parse' })\n return false\n }\n const res = []\n for (let i = Math.min(limits[0], limits[1]); i <= Math.max(limits[0], limits[1]); i++) {\n res.push(\n rangeRegExp.test(leftPart + i + rightPart)\n ? parseRangePattern(\n { alias: leftPart + i + rightPart, type, subtype, value, location, initialAlias },\n callback,\n yy,\n level + 1\n )\n : callback({ alias: leftPart + i + rightPart, type, subtype, value, location, initialAlias })\n )\n }\n return ':' == alias[div] ? logicalExpressionNode('&&', res) : logicalExpressionNode('||', res)\n }\n // check for sequences: `.` and `,`\n const comma = Math.min(...[alias.indexOf('.'), alias.indexOf(',')].filter(v => -1 < v))\n if (0 < comma && Infinity > comma) {\n const startSym = /^\\d+$/.test(alias[comma - 1])\n ? /^\\d+$/.test(alias[comma - 2])\n ? /^\\d+$/.test(alias[comma - 3])\n ? comma - 3\n : comma - 2\n : comma - 1\n : 0\n const leftPart = alias.slice(0, startSym)\n let rightPart = alias.slice(startSym + 1)\n const endSym = /[^\\d,.]/g.test(rightPart) ? rightPart.indexOf(rightPart.match(/[^\\d,.]/g)[0]) : 10000\n rightPart = rightPart.slice(endSym)\n const middle = alias.slice(startSym, rightPart ? alias.indexOf(rightPart) : 10000)\n\n const res = middle\n .split(alias[comma])\n .map(v =>\n rangeRegExp.test(leftPart + v + rightPart)\n ? parseRangePattern(\n { alias: leftPart + v + rightPart, type, subtype, value, location, initialAlias },\n callback,\n yy,\n level + 1\n )\n : callback({ alias: leftPart + v + rightPart, type, subtype, value, location, initialAlias })\n )\n // logger('sub-parse:', res.join(',' == alias[comma] ? ' AND ' : ' OR '))\n return ',' == alias[comma] ? logicalExpressionNode('&&', res) : logicalExpressionNode('||', res)\n }\n return alias\n}\n\nconst isoDateRegexps = [\n '((\\\\d{4})-([01]\\\\d)-([0-3]\\\\d)(?:T|\\\\s+)([0-2]\\\\d):([0-5]\\\\d):([0-5]\\\\d\\\\.\\\\d+)([+-][0-2]\\\\d:?[0-5]\\\\d|Z)?)',\n '((\\\\d{4})-([01]\\\\d)-([0-3]\\\\d)(?:T|\\\\s+)([0-2]\\\\d):([0-5]\\\\d):([0-5]\\\\d)([+-][0-2]\\\\d:?[0-5]\\\\d|Z)?)',\n '((\\\\d{4})-([01]\\\\d)-([0-3]\\\\d)(?:T|\\\\s+)([0-2]\\\\d):([0-5]\\\\d)([+-][0-2]\\\\d:?[0-5]\\\\d|Z)?)'\n].map(rgxp => new RegExp(rgxp))\n\nconst normalizeISODate = str => {\n for (const regex of isoDateRegexps) {\n const m = str.match(regex)\n if (m) {\n !/\\d\\.\\d+$/.test(m[7]) && (/\\d+$/.test(m[7]) || (m[7] = '00'), (m[7] += '.000'))\n ;/([+-][0-2]\\d:?[0-5]\\d|Z)$/.test(m[8]) || (m[8] = 'Z')\n const dateString = `${m[2]}-${m[3]}-${m[4]}T${m[5]}:${m[6]}:${m[7]}${m[8]}`\n return new Date(dateString).toISOString()\n }\n }\n return str\n}\n\nconst jisonParseError = (err, text) => {\n if (!(is(ParseError)(err) && err.data)) {\n return { error: err }\n }\n const errorMessage = err.message.split('\\n')\n const expected = (getIn(['data', 'expected'], err) || []).map(s => s.replace(/'/g, ''))\n const token = getIn(['data', 'token'], err)\n let position = getIn(['data', 'loc', 'last_column'], err) || 0\n if ('Parse error on line' == errorMessage[0].slice(0, 19)) {\n errorMessage[3] = errorMessage[3]\n .replace(/^Expecting .+, got '(.+)'$/, 'Error: unexpected $1')\n .replace(/EOF$/, 'end of input')\n }\n if ('Lexical error on line' == errorMessage[0].slice(0, 21)) {\n const errorSubstringEllipsis = /^\\.{3}/.test(errorMessage[1])\n position =\n text.indexOf(errorSubstringEllipsis ? errorMessage[1].slice(3) : errorMessage[1]) +\n errorMessage[2].length -\n 1 -\n (errorSubstringEllipsis ? 3 : 0)\n errorMessage[3] = errorMessage[0].slice(22, -1).replace(/^\\d+\\.\\s+/, 'Error: ')\n }\n const error = (1 < errorMessage.length ? errorMessage.slice(1, 4) : errorMessage).join('\\n')\n return Object.assign(\n { error, position },\n expected && expected.length ? { expected: expected.filter(token => !['EOF', 'ERROR'].includes(token)) } : void 0,\n token && token.length ? { token } : void 0\n )\n}\n\n// const dummyFunction = () => void 0\n\nconst BOOLEAN_OPERATORS = ['AND', 'OR', 'NOT']\nconst NUMERIC_OPERATORS = ['ADD', 'SUB', 'MLT', 'DIV', 'LE', 'GE', 'LT', 'GT']\n\nconst saveRef = ({ result, surveySchema, options }) => {\n const { clusters = {}, geoTraitsRefs = [], allowUndefs = false, saveRefs = true } = options\n const refsList = surveySchema.refsList\n const addRefPosition = saveRefs\n ? (alias, type, subtype, [position]) => {\n // logger(`addRefPosition(${alias}, ${type}, ${subtype}, ${position})`)\n if (!Object.hasOwn(result.refs, alias)) {\n result.refs[alias] = { type, subtype, positions: [position] }\n } else if (-1 == result.refs[alias].positions.indexOf(position)) {\n result.refs[alias].positions.push(position)\n }\n }\n : () => {}\n const addTagPosition = saveRefs\n ? (alias, value, type, subtype, [position], scope) => {\n // console.log(`addTagPosition(${value}, ${type}, ${subtype}, ${position})`, scope)\n if ('MemberExpression' === scope.type && scope.property && ['JUNK'].includes(scope.property.name)) {\n return\n }\n if (!Object.hasOwn(result.tags, value)) {\n result.tags[value] = {\n type,\n subtype: scope.property && ['SENTIMENT'].includes(scope.property.name) ? 'sentiment' : subtype,\n positions: [position],\n alias: []\n }\n } else if (-1 == result.tags[value].positions.indexOf(position)) {\n result.tags[value].positions.push(position)\n }\n if (Array.isArray(alias)) {\n alias.forEach(\n v =>\n 'Identifier' == v.type &&\n -1 == result.tags[value].alias.indexOf(v.name) &&\n result.tags[value].alias.push(v.name)\n )\n } else {\n alias != undefined && -1 == result.tags[value].alias.indexOf(alias) && result.tags[value].alias.push(alias)\n }\n }\n : () => {}\n\n return ({ alias, type, subtype, value, location, scope, initialAlias } = {}) => {\n switch (type) {\n case 'ref':\n if (['tref', 'bref', 'nref', 'aref'].includes(subtype)) {\n if (refsList && refsList[alias]) {\n addRefPosition(alias, type, subtype, location.range)\n return alias\n } else if (allowUndefs && 'tref' === subtype) {\n addRefPosition(alias, type, subtype, location.range)\n return alias\n } else {\n result.errors.push(\n Object.assign(\n {\n text: initialAlias,\n type: 'ref',\n subtype\n },\n location ? { position: location.range[0] } : {},\n alias != initialAlias ? { subText: alias } : {}\n )\n )\n return allowUndefs ? alias : void 0\n }\n }\n if ('tag' === subtype) {\n // addRefPosition(alias, type, subtype, location.range)\n return alias\n }\n return void 0\n\n case 'trait':\n case 'ntrait':\n case 'atrait': {\n const lcAlias = alias.toLowerCase()\n const trait = surveySchema.traits.find(t => lcAlias == t.id)\n\n if (trait && null !== trait.values) {\n !result.traits.includes(lcAlias) && result.traits.push(lcAlias)\n return alias === initialAlias ? geoTraitsRefs[defaultProp](alias) : lcAlias\n } else if (geoTraitsRefs[alias]) {\n !result.traits.includes(lcAlias) && result.traits.push(lcAlias)\n return geoTraitsRefs[alias]\n } else {\n result.errors.push({ text: alias, type: 'trait' })\n }\n return void 0\n }\n\n case 'asset': {\n switch (subtype) {\n case HEATMAP_CLUSTER: {\n const scopeQid = scope.name.match(/^q\\d+/i)[0].toLowerCase()\n const clusterChecker = clusterNode => {\n const questionClusters = clusters[scopeQid] || []\n const clusterExists = questionClusters.some(\n cluster => 0 === collator.compare(cluster.title, clusterNode.value)\n )\n if (!clusterExists) {\n result.errors.push(\n Object.assign(\n {\n text: clusterNode.value,\n type: 'cluster',\n scope: scopeQid\n },\n location ? { position: location.range[0] } : {}\n )\n )\n }\n }\n if ('ArrayExpression' == alias.type) {\n alias.elements.forEach(clusterChecker)\n } else {\n clusterChecker(alias)\n }\n return alias\n }\n default:\n return alias\n }\n }\n\n case 'tag': {\n // logger(`saveRef(${value.value}, ${type}, ${subtype},`, scope, `)`)\n if ('list' === subtype) {\n value.elements.forEach(tag => addTagPosition(alias, tag.value, type, undefined, location.range, scope))\n } else addTagPosition(alias, value.value, type, subtype, location.range, scope)\n return value\n }\n\n case 'error':\n result.errors.push({\n text: initialAlias,\n type: 'ref',\n subText: alias != initialAlias ? alias : ''\n })\n return void 0\n\n default:\n return false\n }\n }\n}\n\nconst saveTokensFromParser = ({ result, parser }) => {\n if (result.tokens.length) return void 0\n\n const tokens = parser.tree.yy.lexDebugger.map(token => {\n const parenthesesDepth = token.lexerStack.filter(st => 'PARENTHESES' === st).length\n return Object.assign(\n {\n position: token.tokenPosition,\n token: token.tokenName[0],\n match: token.tokenText\n },\n null != token.expected\n ? {\n expected: token.expected\n .filter(t => 'ERROR' !== t)\n .filter(t => 'EOF' !== t || !parenthesesDepth)\n .filter(t => 'RPAREN' !== t || parenthesesDepth)\n }\n : {}\n )\n })\n if (1 < tokens.length && 'EOF' === tokens[tokens.length - 1].token) {\n tokens.splice(-1, 1)\n }\n Object.assign(result, {\n tokens\n })\n return void 0\n}\n\nexport default class SchemaRules {\n constructor(options = {}) {\n this.options = options\n this.parser = this._initParser()\n }\n\n _getGrammar(ebnf) {\n const { isAdmin, getSurveySchema } = this.options\n const surveySchema = getSurveySchema()\n const insertPosVariables = baseGrammar.lex.rules.indexOf('--- variables ---')\n const insertPosTraits = baseGrammar.lex.rules.indexOf('--- traits ---')\n\n const traits = surveySchema.traits\n\n // const isAdminTrait = trait => isAdmin || !adminTraits.includes(trait)\n\n const textTraitsList = traits.filter(t => !['n', 'a'].includes(t.type)).map(t => t.id)\n const textTraits = [...textTraitsList, ...surveySchema.geoTraits].filter(trait => isAdmin || 'panel' != trait)\n const numTraitsList = traits.filter(t => 'n' === t.type).map(t => t.id)\n const numTraits = numTraitsList.filter(trait => isAdmin || 'panel' != trait)\n const arrTraitsList = traits.filter(t => 'a' === t.type).map(t => t.id)\n const arrTraits = arrTraitsList.filter(trait => isAdmin || 'panel' != trait)\n\n const { variables = {}, pipingVariables = {}, customVariables = {} } = surveySchema || {}\n const [textVariables, numVariables, arrVariables] = [\n ...Object.entries(variables),\n ...Object.entries(pipingVariables),\n ...Object.entries(customVariables).filter(([_, variable]) => 'x' !== variable.type)\n ].reduce(\n ([textVariables, numVariables, arrVariables], [name, variable]) => [\n textVariables.concat(!['n', 'a'].includes(variable.type) ? [name] : []),\n numVariables.concat('n' === variable.type ? [name] : []),\n arrVariables.concat('a' === variable.type ? [name] : [])\n ],\n [[], [], []]\n )\n\n const grammar = assignDeep(JSON.parse(JSON.stringify(baseGrammar)), {\n lex: {\n rules: [\n ...baseGrammar.lex.rules.slice(0, insertPosVariables),\n ...(textTraits.length ? [[`(${textTraits.join('|').toUpperCase()})\\\\b`, \"return 'TRAIT';\"]] : []),\n ...(numTraits.length ? [[`(${numTraits.join('|').toUpperCase()})\\\\b`, \"return 'NTRAIT';\"]] : []),\n ...(arrTraits.length ? [[`(${arrTraits.join('|').toUpperCase()})\\\\b`, \"return 'ATRAIT';\"]] : []),\n ...baseGrammar.lex.rules.slice(insertPosVariables + 1, insertPosTraits - insertPosVariables),\n ...(textVariables.length ? [[`(${textVariables.join('|').toUpperCase()})\\\\b`, \"return 'TOKEN';\"]] : []),\n ...(numVariables.length ? [[`(${numVariables.join('|').toUpperCase()})\\\\b`, \"return 'NTOKEN';\"]] : []),\n ...(arrVariables.length ? [[`(${arrVariables.join('|').toUpperCase()})\\\\b`, \"return 'ATOKEN';\"]] : []),\n ...baseGrammar.lex.rules.slice(insertPosTraits + 1)\n ].filter(x => null != x)\n },\n ebnf\n })\n grammar.lex.rules = grammar.lex.rules.map(rule => [['*']].concat(rule))\n return grammar\n }\n\n _getParser(grammar, options = {}) {\n return new jison.Parser(assignDeep({}, grammar, { options }))\n }\n\n _initParser() {\n const { getSurveySchema } = this.options\n\n const parser = {\n // tree: this._getParser(this._getGrammar(grammarBNFtree), { debug: true }),\n tree: this._getParser(this._getGrammar(grammarBNFtree)),\n // treeTEMP: this._getParser(this._getGrammar(grammarBNFtree)),\n // tree: this._getParser(this._getGrammar(grammarBNFtree), { 'token-stack': true }),\n // tree: this._getParser(this._getGrammar(grammarBNFtree) /*, { debug: true } */),\n getSurveySchema\n }\n\n parser.tree.yy.normalizeISODate = normalizeISODate\n parser.tree.yy.removeQuotes = removeQuotes\n parser.tree.yy.saveArray = saveArray\n parser.tree.lexer.options = { ranges: true }\n parser.tree.yy.parseError = (str, hash) => {\n throw new ParseError(str, hash)\n }\n\n return parser\n }\n\n // analyzeString({ filter = 'TRUE', allowUndefs = false, saveTokens = true, fixErrors = false } = {}) {\n analyzeString({\n filter = 'TRUE',\n allowUndefs = false,\n fixErrors = false,\n saveTokens = fixErrors,\n numberAllowed = false,\n clusters = {}\n } = {}) {\n const parser = this.parser\n const { getSurveySchema } = this.options\n const surveySchema = getSurveySchema()\n\n const geoTraitsRefs = surveySchema.geoTraits.reduce(\n (res, t) => ((res[t.toUpperCase()] = `${t.toUpperCase()}`), res),\n {\n [defaultProp]: name => `${name.toUpperCase()}`\n }\n )\n\n const result = {\n refs: {},\n tags: {},\n traits: [],\n errors: [],\n tokens: []\n }\n\n parser.tree.yy.HEATMAP_CLUSTER = HEATMAP_CLUSTER\n\n let expression = {}\n let expressionText = filter.toUpperCase().trim()\n\n if (numberAllowed && expressionText.length && Number.isInteger(Number(expressionText))) {\n const errors = []\n if (Number(expressionText) <= 0) {\n errors.push({ text: Number(expressionText), type: 'number' })\n }\n return {\n expression: {\n status: {\n refs: {},\n tags: {},\n errors\n },\n text: expressionText,\n tree: expression\n }\n }\n }\n\n if (saveTokens) {\n parser.tree.yy.lexDebugger = []\n parser.tree.yy.lexDebuggerReduceTokens = ['LPAREN', 'RPAREN', 'LT', 'LE', 'GT', 'GE', 'AND', 'OR']\n }\n parser.tree.yy.result = result\n\n const parseRef = ({ alias, type, subtype, value, location, callback, initialAlias, scope } = {}) => {\n const res = rangeRegExp.test(alias)\n ? parseRangePattern({ alias, type, subtype, value, location, initialAlias, scope }, callback, parser.tree.yy)\n : result.errors.some(error => error.text === alias)\n ? alias\n : callback({ alias, type, subtype, value, location, initialAlias, scope })\n // logger(`parseRef(${type}, ${subtype}, ${alias}, ${initialAlias})` /* , ${subAlias})` */, ': res =', res)\n return alias !== initialAlias\n ? res\n : is(Function)(res)\n ? { type: 'BoundFunction', foo: res }\n : parseMemberExpression(res)\n }\n\n // parser.tree.yy.logger = logger\n parser.tree.yy.saveRef = ({ alias, type = 'ref', subtype, value, scope, location = {} } = {}) =>\n parseRef({\n alias,\n type,\n subtype,\n location,\n value,\n callback: saveRef({ result, surveySchema, options: { clusters, geoTraitsRefs, allowUndefs } }),\n initialAlias: alias,\n scope\n })\n\n let retryCount = 0\n const retryLimit = fixErrors ? 5 : 1\n if (0 < expressionText.length || saveTokens) {\n let tryFixExpression = true\n while (tryFixExpression && retryLimit > retryCount) {\n retryCount++\n tryFixExpression = false\n try {\n if (0 < expressionText.length || saveTokens) {\n expression = parser.tree.parse(expressionText)\n } else {\n result.errors.push({ text: filter.toUpperCase(), type: 'parse' })\n }\n } catch (error) {\n const jisonError = jisonParseError(error, expressionText)\n if (2 > retryCount) {\n result.errors.push(Object.assign({ text: filter.toUpperCase(), type: 'parse' }, jisonError))\n }\n if (saveTokens && null != jisonError.token && null != jisonError.expected) {\n saveTokensFromParser({ result, parser })\n 'EOF' === jisonError.token &&\n (result.tokens[result.tokens.length - 1].expected = jisonError.expected.slice())\n }\n if (retryLimit <= retryCount) continue\n\n if (null == jisonError.token && null == jisonError.expected) {\n expressionText =\n expressionText.slice(0, jisonError.position) +\n expressionText.slice(jisonError.position).replace(/^\\s*\\S+/, '')\n tryFixExpression = true\n // logger('retrying parse with fixed expression 1:', expressionText)\n } else if ('EOF' === jisonError.token && 'RPAREN' === jisonError.expected[0]) {\n expressionText = `${expressionText.slice(0, jisonError.position)})${expressionText.slice(\n jisonError.position\n )}`\n tryFixExpression = true\n // logger('retrying parse with fixed expression 2:', expressionText)\n } else if (\n 'EOF' === jisonError.token &&\n ![...NUMERIC_OPERATORS, ...BOOLEAN_OPERATORS].some(k => jisonError.expected.includes(k))\n ) {\n expressionText = expressionText.replace(/\\s+\\S+$/, '')\n tryFixExpression = true\n // logger('retrying parse with fixed expression 3:', expressionText)\n } else if ('TOKEN' === jisonError.token) {\n expressionText =\n expressionText.slice(0, jisonError.position) +\n expressionText.slice(jisonError.position).replace(/^\\s*@?[A-Z][\\dA-Z_]*\\b/, '')\n tryFixExpression = true\n // logger('retrying parse with fixed expression 4:', expressionText)\n }\n }\n }\n }\n // fix tokens 'expected' field, remove last EOF token\n if (saveTokens) saveTokensFromParser({ result, parser })\n\n const status = pick(['refs', 'tags', 'traits', 'tokens', 'errors'], result)\n status.tokens &&\n (status.tokens = status.tokens.map(token => pick(['token', 'match', 'position', 'expected'], token)))\n return {\n expression: {\n status,\n text: expressionText,\n tree: expression\n }\n }\n }\n}\n\nSchemaRules.ParseError = ParseError\nSchemaRules.ParserTypeError = ParserTypeError\nSchemaRules.ConvertToBasicError = ConvertToBasicError\n\n// const unassociativeOp = operator => ['-', '/', '||'].includes(operator)\nconst unassociativeOp = operator => ['-', '/'].includes(operator)\nconst operatorPrecedenceList = [\n ['&&', '||'],\n ['==', '!=', '<', '<=', '>', '>=', 'in', 'not_in', 'like'],\n ['tag_eq', 'tag_neq', 'tag_in'],\n ['min', 'max', 'minposition', 'maxposition'],\n ['count'],\n ['-', '+'],\n ['/', '*']\n]\nconst operatorStringMap = {\n '&&': 'and',\n '||': 'or',\n not_in: 'not in',\n tag_eq: '=',\n tag_neq: '!=',\n tag_in: 'in',\n '==': '=',\n '!=': '!=',\n '!': 'not'\n}\nconst operatorToString = operator =>\n operatorStringMap[operator] ? operatorStringMap[operator] : operator.toUpperCase()\n\nconst operatorPrecedence = (a, b) =>\n operatorPrecedenceList.reduce((res, gr, i) => (-1 < res ? res : gr.includes(a) ? i : res), -1) -\n operatorPrecedenceList.reduce((res, gr, i) => (-1 < res ? res : gr.includes(b) ? i : res), -1)\n\nconst stringify = (node, stack = []) => {\n if ('BinaryExpression' === node.type || 'LogicalExpression' === node.type) {\n const [stackTop] = stack.slice(-1)\n const parenthesize =\n stackTop &&\n ((unassociativeOp(node.operator) && unassociativeOp(stackTop.operator) && stackTop.right == node) ||\n 0 > operatorPrecedence(node.operator, stackTop.operator) ||\n (0 == operatorPrecedence(node.operator, stackTop.operator) && stackTop.right == node))\n // if (stackTop) {\n // logger(\n // `operatorPrecedence ${operatorToString(node.operator)}, ${operatorToString(stackTop.operator)}`,\n // operatorPrecedence(node.operator, stackTop.operator)\n // )\n // logger(`left=${stackTop.left == node}; right=${stackTop.right == node}; parenthesize = ${parenthesize}`)\n // logger(node)\n // }\n const expression = [\n stringify(node.left, stack.concat(node)),\n operatorToString(node.operator),\n stringify(node.right, stack.concat(node))\n ].join(' ')\n return parenthesize ? ['(', expression, ')'].join('') : expression\n } else if ('UnaryExpression' === node.type) {\n if ('!' === node.operator && 'in' == node.argument.operator) {\n return stringify(Object.assign({}, node.argument, { operator: 'not_in' }), stack.concat(node))\n } else if (node.argument.operator) {\n return `${operatorToString(node.operator)} (${stringify(node.argument, stack.concat(node))})`\n }\n return `${operatorToString(node.operator)} ${stringify(node.argument, stack.concat(node))}`\n } else if ('ArrayExpression' === node.type) {\n return node.elements.map(el => stringify(el, stack.concat(node))).join(', ')\n } else if ('MemberExpression' === node.type) {\n return `${stringify(node.object, stack)}.${stringify(node.property, stack)}`\n } else if ('Identifier' === node.type) {\n return node.name\n } else if ('Literal' === node.type) {\n return null == node.value\n ? 'NULL'\n : is(String)(node.value)\n ? `\"${node.value}\"`\n : is(Date)(node.value)\n ? node.value.toISOString()\n : node.value\n }\n return node\n}\nSchemaRules.stringify = stringify\n\nconst allowedTime = 7\nconst checkAllowedTime = inception => {\n if (allowedTime < Date.now() / 1000 - inception) {\n throw new ParserTimeoutError(`Took too long: ${Date.now() / 1000 - inception}`)\n }\n}\n\nconst findDeepOperator = (inception, node, operators = [], stack = []) => {\n checkAllowedTime(inception)\n for (const operator of operators) {\n if (\n operator === node.operator &&\n ('in_shape' !== node.operator ||\n ('in_shape' === node.operator && 'Identifier' === node.left.type && 'ArrayExpression' === node.right.type)) &&\n 0 < stack.length &&\n stack.some(op => op !== operator)\n )\n return true\n }\n const newStack = node.operator ? stack.concat([node.operator]) : stack.slice()\n return (\n (node.left && findDeepOperator(inception, node.left, operators, newStack)) ||\n (node.right && findDeepOperator(inception, node.right, operators, newStack)) ||\n (node.argument && findDeepOperator(inception, node.argument, operators, newStack))\n )\n}\n\nconst unaryExpressionNode = (operator, argument) => {\n return {\n type: 'UnaryExpression',\n operator: operator,\n prefix: true,\n argument: argument\n }\n}\n\nconst operatorsInverse = {\n not_in: 'in',\n in: 'not_in',\n '>': '<=',\n '<': '>=',\n '>=': '<',\n '<=': '>',\n '!=': '==',\n '==': '!='\n}\n\n/*\nfrom : Q1A1 AND (Q2A2 OR Q2A3) AND GENDER = \"m\"\nto : Q1A1 AND Q2A2 AND GENDER = \"m\" OR Q1A1 AND Q2A3 AND GENDER = \"m\"\n*/\nconst _flattenInShape = node => {\n if ('BinaryExpression' === node.type && 'in_shape' === node.operator) {\n const { left, right } = node\n\n if ('Identifier' === left.type && 'ArrayExpression' === right.type) {\n node.left = {\n left: { ...left },\n operator: 'in_shape',\n right: {\n ...right.elements.shift()\n },\n type: 'BinaryExpression'\n }\n node.operator = '||'\n node.right = {\n left: { ...left },\n operator: 'in_shape',\n right: {\n ...(1 < right.elements.length ? right : right.elements.shift())\n },\n type: 'BinaryExpression'\n }\n node.type = 'LogicalExpression'\n\n // eslint-disable-next-line unicorn/consistent-destructuring\n _flattenInShape(node.right)\n }\n }\n}\n\nconst _flatten = (inception, node, tree = node, path = []) => {\n checkAllowedTime(inception)\n\n if ('LogicalExpression' === node.type) {\n _flattenInShape(node.left)\n _flattenInShape(node.right)\n\n if ('&&' === node.operator) {\n node.left = _flatten(inception, node.left, tree, path.concat('left'))\n node.right = _flatten(inception, node.right, tree, path.concat('right'))\n } else if ('||' === node.operator) {\n if (findDeepOperator(inception, node.left, ['||', 'in_shape'])) {\n node.left = _flatten(inception, node.left)\n } else if (findDeepOperator(inception, node.right, ['||', 'in_shape'])) {\n node.right = _flatten(inception, node.right)\n } else if (0 < path.length) {\n const parent = getIn(path.slice(0, -1), tree)\n const left = assocPath(path.slice(-1), node.left)(parent)\n const right = assocPath(path.slice(-1), node.right)(parent)\n Object.assign(parent, {\n type: 'LogicalExpression',\n operator: '||',\n left,\n right\n })\n return 'left' == path[path.length - 1] ? left : right\n }\n }\n }\n if ('BinaryExpression' === node.type) {\n _flattenInShape(node)\n\n if ('LogicalExpression' === node.type) {\n return _flatten(inception, node, tree, path)\n }\n\n node.left = _flatten(inception, node.left, tree, path.concat('left'))\n node.right = _flatten(inception, node.right, tree, path.concat('right'))\n }\n if ('UnaryExpression' === node.type) {\n if (node.type === node.argument.type && node.operator == node.argument.operator) {\n const cleanUp = !node.argument.argument\n // eslint-disable-next-line no-param-reassign\n node = node.argument.argument\n if (cleanUp) {\n delete node.argument\n delete node.prefix\n }\n // eslint-disable-next-line no-param-reassign\n if (findDeepOperator(inception, node.argument, [node.operator], [''])) node = _flatten(inception, node)\n }\n if ('LogicalExpression' === node.argument.type) {\n // eslint-disable-next-line no-param-reassign\n node = {\n type: node.argument.type,\n operator: '&&' == node.argument.operator ? '||' : '&&',\n left: unaryExpressionNode(node.operator, node.argument.left),\n right: unaryExpressionNode(node.operator, node.argument.right)\n }\n node.left = _flatten(inception, node.left, tree, path.concat('left'))\n node.right = _flatten(inception, node.right, tree, path.concat('right'))\n } else if ('BinaryExpression' === node.argument.type && operatorsInverse[node.argument.operator]) {\n // eslint-disable-next-line no-param-reassign\n node = { ...node.argument, operator: operatorsInverse[node.argument.operator] }\n } else if ('Literal' === node.argument.type && '-' === node.operator && is(Number)(node.argument.value)) {\n // eslint-disable-next-line no-param-reassign\n node = { type: 'Literal', value: -node.argument.value, text: `-${node.argument.value}` }\n }\n }\n\n return node == tree && 'LogicalExpression' === node.type && findDeepOperator(inception, node, ['||', 'in_shape'])\n ? _flatten(inception, node)\n : node\n}\n\nconst flatten = (node, tree = node, path = []) => {\n const inception = Date.now() / 1000\n\n try {\n return _flatten(inception, node, tree, path)\n } catch {\n return null\n }\n}\nSchemaRules.flatten = flatten\n","const traitsOrder = [\n 'gender',\n 'age',\n 'age_range',\n 'income',\n 'education_level',\n 'ethnicity',\n 'employment',\n 'career',\n 'relationship_status',\n 'children',\n 'country',\n 'state',\n 'county',\n 'msa',\n 'state_region',\n 'region',\n 'zip'\n]\n\nexport const convertQuotas = (survey = []) => {\n const target_market = survey.target_market || {}\n const quotas = target_market.quotas || []\n\n return Array.isArray(survey.traits || [])\n ? quotas\n : quotas\n .map(q => {\n if (Object.hasOwn(q, 'traits')) {\n const _q = JSON.parse(JSON.stringify(q))\n _q.traits = (_q.traits.order || []).map(id => {\n const trait = _q.traits.values[id]\n const key = id.replace('ask_', '')\n if ('age' === key && _q.traits.order.includes('age_range')) return null\n\n return {\n id: key,\n label: trait.label,\n text: trait.text,\n type: ('age' === key && 'n') || 't',\n values: trait.values || [],\n filtered: trait.filtered\n }\n })\n return _q\n }\n return q\n })\n .filter(v => null !== v)\n}\n\nexport const convertTraits = (survey = {}) => {\n const traits = Array.isArray(survey.traits || [])\n ? (survey.traits || [])\n .filter(t => 'trait_var' === t.kind && t.values != undefined && 0 < t.values.length)\n .reduce((acc, cur) => {\n if (\n 'age' === cur.id &&\n survey.traits.some(\n t => 'age_range' === t.id && 'trait_var' === t.kind && t.values != undefined && 0 < t.values.length\n )\n )\n return acc\n\n const id = ('age' === cur.id && 'age_range') || cur.id\n const type = ('age' === cur.id && 't') || cur.type\n\n const index = acc.findIndex(t => id == t.id)\n if (0 > index) {\n const trait = {\n id,\n title:\n (cur.title &&\n ((survey.locale && (cur.title[survey.locale] || cur.title[survey.locale.split('_')[0]])) ||\n cur.title.en ||\n cur.title)) ||\n cur.id,\n type: type,\n values: cur.values.map(function (_v) {\n _v.name =\n (_v.name &&\n ((survey.locale && (_v.name[survey.locale] || _v.name[survey.locale.split('_')[0]])) ||\n _v.name.en ||\n _v.name)) ||\n _v.id\n return _v\n })\n }\n acc.push(trait)\n } else {\n if ('a' == type) acc[index].type = 'a'\n acc[index].values = acc[index].values\n .concat(\n cur.values.map(function (_v) {\n _v.name =\n (_v.name &&\n ((survey.locale && (_v.name[survey.locale] || _v.name[survey.locale.split('_')[0]])) ||\n _v.name.en ||\n _v.name)) ||\n _v.id\n return _v\n })\n )\n .filter((v, i, a) => i == a.findIndex(t => t.id == v.id))\n }\n return acc\n }, [])\n : traitsOrder.reduce((acc, cur) => {\n const trait = survey.traits[cur]\n if (trait == undefined || trait.sortOrder == undefined || !trait.sortOrder.length) return acc\n\n if ('state_region' === cur) {\n acc.push({\n id: 'region',\n title: 'Regions',\n type: 't',\n values: trait.sortOrder\n .filter(v => 'R' === v[0])\n .map(v => {\n return {\n id: v.slice(2),\n name: trait.names[v] || v.slice(2)\n }\n })\n })\n acc.push({\n id: 'state',\n title: 'States',\n type: 't',\n values: trait.sortOrder\n .filter(v => 'S' === v[0])\n .map(v => {\n return {\n id: v.slice(2),\n name: trait.singularNames[v] || trait.names[v] || v.slice(2)\n }\n })\n })\n } else {\n const key = cur.replace('ask_', '')\n if ('age' === key && survey.traits['age_range'] != undefined) return acc\n\n acc.push({\n id: ('age' === key && 'age_range') || key,\n title: trait.name || key,\n type: 't',\n values: trait.sortOrder.map(v => {\n return {\n id: ('age' === key && trait.names[v]) || v,\n name: trait.singularNames[v] || trait.names[v] || v\n }\n })\n })\n }\n\n return acc\n }, [])\n\n const quotas = convertQuotas(survey)\n\n const isExternalSurvey = 'Survey' !== survey.class\n\n return traits.filter(\n trait =>\n null !== trait &&\n ('age' !== trait.id || ('age' === trait.id && !traits.some(t => 'age_range' === t.id))) &&\n !('children' === trait.id && 1 == (survey.target_market || {}).version) &&\n !(\n isExternalSurvey &&\n quotas[0] &&\n quotas[0].traits &&\n !quotas[0].traits.some(t => trait.id == t.id && t.filtered)\n )\n )\n}\n","import { List, Map } from 'immutable'\n\nexport const REJECTED_OPTIONS = List([\n Map({ value: 'Conflicting answers', render: () => 'Conflicting answers' }),\n Map({ value: 'Conflicting traits', render: () => 'Conflicting traits' }),\n Map({ value: 'Conflicting prequal', render: () => 'Conflicting prequal' }),\n Map({ value: 'Inappropriate', render: () => 'Inappropriate' }),\n Map({ value: 'Low quality', render: () => 'Low quality' }),\n Map({ value: 'Irrelevant', render: () => 'Irrelevant' }),\n Map({ value: 'Cleaning data', render: () => 'Cleaning data' }),\n Map({ value: 'Hate speech', render: () => 'Hate speech' }),\n Map({ value: 'ChatGPT/ AI', render: () => 'ChatGPT/ AI' }),\n Map({ value: 'other', render: () => 'Other' })\n])\n\nexport const ANSWER_VARIANTS_COMMENTABLE = ['oex', 'hm', 'cn', 'dlv']\n\nexport const QUESTIONS_ORDER_OPTIONS = List([\n Map({ value: 'Survey order', render: () => 'Survey order' }),\n Map({ value: 'Response order', render: () => 'Response order' })\n])\n\nexport const DEFAULT_QUESTIONS_ORDER = 'Survey order'\n\nexport const SENTIMENTS = [\n { value: 'None', sentiment: 0, type: 'sentiment', label: 'None' },\n { value: 'Negative', sentiment: 1, type: 'sentiment', label: 'Negative' },\n { value: 'Neutral', sentiment: 2, type: 'sentiment', label: 'Neutral' },\n { value: 'Positive', sentiment: 3, type: 'sentiment', label: 'Positive' },\n { value: 'Mixed', sentiment: 4, type: 'sentiment', label: 'Mixed' }\n]\n\nexport const ORDER_BY_OPTIONS = List([\n Map({\n value: 'id',\n text: 'Sorted by ID',\n isSimple: true,\n defaultOrder: 'asc',\n description: 'sort images by their respondent ID.'\n }),\n Map({\n value: 'time',\n text: 'Sorted by time',\n isSimple: true,\n defaultOrder: 'asc',\n description: 'sort images by the date and time a respondent completed the survey.'\n }),\n Map({\n value: 'sentiment',\n text: 'Sorted by sentiment',\n isSimple: false,\n defaultOrder: 'desc',\n description: 'if our AI powered sentiments feature was applied to this survey sort them positive to negative.',\n notForType: ['ir']\n }),\n Map({\n value: 'length',\n text: 'Sorted by length',\n isSimple: false,\n defaultOrder: 'desc',\n description: 'sort by the character length of an open-ended response.',\n notForType: ['ir']\n }),\n Map({\n value: 'kudos',\n text: 'Sorted by kudos',\n isSimple: true,\n defaultOrder: 'desc',\n description: 'if a kudos was given use this sort option to bring those to the top of the page.'\n }),\n Map({\n value: 'similarity',\n text: 'Sorted by similarity',\n isSimple: true,\n defaultOrder: 'desc',\n description:\n 'sort images by their similarities using AI technology. This works one question at a time. If you have multiple Image Response questions, use the drop-down to filter to a single question to sort by similarity.',\n forType: 'ir'\n })\n])\n\nexport const ORDER_BY_OPTIONS_IMAGES = List([\n Map({\n value: 'id',\n text: 'Sorted by ID',\n isSimple: true,\n defaultOrder: 'asc',\n description: 'sort images by their respondent ID.'\n }),\n Map({\n value: 'time',\n text: 'Sorted by time',\n isSimple: true,\n defaultOrder: 'asc',\n description: 'sort images by the date and time a respondent completed the survey.'\n }),\n Map({\n value: 'similarity',\n text: 'Sorted by similarity',\n isSimple: false,\n defaultOrder: 'desc',\n description:\n 'sort images by their similarities using AI technology. This works one question at a time. If you have multiple Image Response questions, use the drop-down to filter to a single question to sort by similarity.',\n forType: 'ir'\n })\n])\n\nexport const DEFAULT_ORDER_BY = 'id'\nexport const DEFAULT_ORDER_DIRECTION = ORDER_BY_OPTIONS.find(v => v.get('value') == DEFAULT_ORDER_BY).get(\n 'defaultOrder'\n)\n\nexport const ORIGINALS = 'originals'\nexport const CORRECTIONS = 'corrections'\nexport const CORRECTED_SPELLING = 'corrected_spelling'\n\nexport const PER_PAGE_OPTIONS = [\n Map({ value: 10, render: () => '10 per page' }),\n Map({ value: 50, render: () => '50 per page' }),\n Map({ value: 100, render: () => '100 per page' }),\n Map({ value: 250, render: () => '250 per page' })\n]\n\nexport const QA_PER_PAGE_OPTIONS = [\n Map({ value: 1, render: () => '1 per page' }),\n Map({ value: 50, render: () => '50 per page' }),\n Map({ value: 100, render: () => '100 per page' }),\n Map({ value: 250, render: () => '250 per page' })\n]\n\nexport const IMAGE_RESPONSES_PER_PAGE_OPTIONS = [\n Map({ value: 12, render: () => '12 per page' }),\n Map({ value: 24, render: () => '24 per page' }),\n Map({ value: 48, render: () => '48 per page' }),\n Map({ value: 96, render: () => '96 per page' })\n]\n\nexport const DEFAULT_PER_PAGE = 250\nexport const DEFAULT_PER_PAGE_QA = 50\nexport const DEFAULT_PER_PAGE_IMAGE_RESPONSES = 12\nexport const DEFAULT_PER_PAGE_VIDEO_RESPONSES = 10\n\nexport const DEFAULT_FETCH_TIMEOUT = 0\nexport const FETCH_TIMEOUT_STEP = 500\n\nexport const SIDEBAR_HIDDEN_TAG_TYPES = [\n 'comprehension',\n 'complexity-flesch',\n // 'NER',\n 'complexity',\n 'sentiment-aws',\n 'sentiment-manual'\n]\n\nexport const HIDDEN_TAG_TYPES = [\n 'comprehension',\n 'sentiment',\n 'complexity-flesch',\n // 'NER',\n 'complexity',\n 'sentiment-aws',\n 'sentiment-manual'\n]\n\nexport const ALLOWED_HTML_TAGS = /<(b|i|u)>.*<\\/\\1>|[!@#$%^&*(),.?\":{}]|
/imu\nexport const PIPING_MASK_REGEX = /\\[([^\\s]+)\\]<\\/b>|\\[([^\\s]+)\\]/giu\nexport const JUNK_REGEX = /@junk/i\n\nexport const QUESTION_TITLE_PIPING_THUMB_WIDTH = 25\nexport const QUESTION_TITLE_PIPING_THUMB_HEIGHT = 25\nexport const QUESTION_TITLE_PIPING_IMAGE_WIDTH = 320\nexport const QUESTION_TITLE_PIPING_IMAGE_HEIGHT = 6000\nexport const QUESTION_TITLE_PIPING_IMAGE_MIN_WIDTH = 70\nexport const QUESTION_TITLE_PIPING_IMAGE_MAX_WIDTH = 265\nexport const QUESTION_TITLE_PIPING_IMAGE_MIN_HEIGHT = 70\nexport const QUESTION_TITLE_PIPING_IMAGE_MAX_HEIGHT = 265\nexport const TAG_MIN_LENGTH = 2\nexport const TAG_MAX_LENGTH = 53\n\nexport const kudosText =\n 'Dear User,\\n\\nHello there! I just wanted to take a few moments to thank you for your awesome responses to the survey you completed on PaidViewpoint. All of us at aytm.com and PaidViewpoint are grateful for folks like you who truly make an effort when answering surveys. Your attentiveness and details in your answers are of utmost importance to our clients that use our service.\\n\\nWe are pleased to add our \"pat on the back\" bonus to your account, continue the great responses on PaidViewpoint!\\n\\nBest Regards,\\n\\nClare'\n\nexport const DEFAULT_COMMENT_STATUSES_STATE = {\n kudos: {},\n reject: {},\n approve: {},\n sentiment: {},\n tags: {}\n}\n\nexport const DEFAULT_SELECTED_QUESTION = '*'\n\nexport const MASS_OPERATION_HASH = {\n create: 'TAG_MASS_ADDED',\n delete: 'TAG_MASS_REMOVED',\n update: 'TAG_MASS_UPDATED'\n}\n\nexport const SENTIMENTS_ICON_HASH = {\n Mixed: 'mixed',\n Positive: 'positive',\n Negative: 'negative',\n None: 'unrated',\n Neutral: 'neutral'\n}\n\nexport const DEFAULT_SEARCH_STATE = {\n isAdmin: false,\n isSurveyOwner: false,\n isSurveyGuest: false,\n isQAMode: false,\n isQALoading: false,\n isLoading: false,\n isProcessing: false,\n isShowAllTraits: false,\n isShowAllTools: false,\n isShowSentiments: false,\n isResponseOrder: false,\n isPreserveState: false,\n isHighlightSearchTerms: true,\n isFetchDataNeeded: false,\n isTagsManagementDisabled: true,\n isSentimentsManagementDisabled: true,\n isQAModeDisabled: false,\n isQAModeDelayed: false,\n isUpdateQATotal: true,\n qaCounter: null,\n qaTotal: null,\n qaAction: null,\n qaProcessedResponseId: null,\n disabled: false,\n correctionsLevel: ORIGINALS,\n CSRF: null,\n pageData: [],\n processedQA: [],\n tagsList: [],\n sentimentOptions: null,\n tagsData: {},\n request: {\n query: '',\n currentPage: 1,\n selectedQuestion: DEFAULT_SELECTED_QUESTION,\n pageSize: DEFAULT_PER_PAGE,\n orderBy: DEFAULT_ORDER_BY,\n orderDirection: DEFAULT_ORDER_DIRECTION,\n random: false\n },\n errors: [],\n totalPages: 0,\n totalComments: 0,\n totalImageResponses: 0,\n totalVideoResponses: 0,\n totalResponses: 0,\n totalRespondents: 0,\n qaModeCounter: 0\n}\n\nexport const AytmLocale = {\n referenceWarning: 'REFERENCE WARNING',\n referenceError: 'REFERENCE ERROR',\n questionDoesntExist: \"Referred field {index} doesn't exist in this survey\",\n traitDoesntExist: \"Referred field {index} doesn't exist in this survey\",\n syntaxError: 'SYNTAX ERROR',\n clusterDoesntExist: \"Referred cluster '{index}' doesn't exist for {scope}\",\n notValidRule: '{rule} is not a valid aytm Logic rule',\n enableAutocomplete: 'To enable autocomplete press {hotkeys}',\n disableAutocomplete: 'To disable autocomplete press {hotkeys}'\n}\n","/* eslint-disable max-lines */\nimport _ from 'lodash'\nimport * as Diff from 'diff'\n\nimport React from 'react'\nimport classNames from 'classnames'\nimport { Set, List, Map } from 'immutable'\nimport { escapeRegExp } from '@aytm/lib/common/func'\nimport {\n ANSWER_VARIANTS_COMMENTABLE,\n CORRECTED_SPELLING,\n CORRECTIONS,\n HIDDEN_TAG_TYPES,\n ORIGINALS,\n DEFAULT_ORDER_BY,\n DEFAULT_ORDER_DIRECTION,\n DEFAULT_SELECTED_QUESTION,\n DEFAULT_PER_PAGE,\n DEFAULT_PER_PAGE_IMAGE_RESPONSES,\n DEFAULT_PER_PAGE_VIDEO_RESPONSES,\n SENTIMENTS,\n SIDEBAR_HIDDEN_TAG_TYPES\n} from '@aytm/app/stats/page/comments/lib/constants'\nimport { collator } from '@aytm/app/stats/lib/helpers'\n\n// eslint-disable-next-line unicorn/no-unsafe-regex\nconst CUSTOM_QUESTION_REG = new RegExp(/^([cvx]q|cl|tl)(\\d+)(?:[_-](\\d+))?$/i, 'i')\n\nexport const getSurvey = (survey = {}) =>\n Object.keys(survey).length && survey.questions ? survey : window.survey || {}\n\nexport const removeLogicFromText = (text = '') =>\n text\n .replace(/(\\[(?!\\[|@)(?![a-z]\\w*])[^[\\]]*])(?!])/gi, '')\n .replace(/(\\[(?!\\[|@)(?!(?:entity|attribute)])([a-z]\\w+)])(?!])/gi, '')\n .replace(/(\\[(?!\\[)@[^[\\]]+])(?!])/gi, '')\n .replace(/\\[(\\[[^[\\]]+])]/gi, '$1')\n\nexport const getDottedQuestionName = (question = DEFAULT_SELECTED_QUESTION) =>\n (question !== DEFAULT_SELECTED_QUESTION && question.replace(/(\\d+)([a-z]+)/gi, '$1.$2')) || ''\n\nexport const getLastNodePath = (node = {}, path) => {\n const filtered = Object.keys(node).filter(itemKey => !['t', 'te', 'i', 'v'].includes(itemKey))\n return filtered[filtered.length - 1]\n ? getLastNodePath(node[filtered[filtered.length - 1]], `${path}${filtered[filtered.length - 1]}`)\n : getDottedQuestionName(path)\n}\n\nexport const questionByPath = (path, survey = {}, reportVirtual) => {\n const surveyObj = getSurvey(survey)\n const qn = path.split('.')[0]\n if (qn && qn.match(CUSTOM_QUESTION_REG)) return reportVirtual[qn]\n return surveyObj.questions[Number(qn.slice(1)) - 1]\n}\n\nexport const questionByPosition = (visual_position, survey = {}) => {\n const surveyObj = getSurvey(survey)\n return surveyObj.questions.find(q => q.visual_position === visual_position)\n}\n\n// Q/PQ*position* + anything -> position\nexport const extractQuestionPosition = str => {\n const res = str.match(/^p?q(\\d+)/i)\n return res && Array.isArray(res) ? Number(res[1]) : null\n}\n\n// Q/PQ*visual_position* -> position\nexport const questionIdToPosition = (id, mode, survey = {}) => {\n const surveyObj = getSurvey(survey)\n const m = id.match(/^(p?q)(\\d+)/i)\n switch (mode) {\n case 1:\n if ('pq' === m[1]) {\n return surveyObj.questions.find(q => q.pre_type && q.position === Number(m[2])).position\n } else {\n const pq_length = surveyObj.questions.filter(q => q.pre_type).length\n return surveyObj.questions.find(q => !q.pre_type && q.position === pq_length + Number(m[2])).position\n }\n default:\n return surveyObj.questions.find(q => q.position === Number(m[2])).position\n }\n}\n\n// position -> q/pq*visual_position*\nexport const questionPositionToId = (position, survey = {}) => {\n const surveyObj = getSurvey(survey)\n const question = surveyObj.questions.find(q => q.position === position)\n const type = question.pre_type != undefined ? 'pq' : 'q'\n return `${type}${question.visual_position}`\n}\n\n// q*position* -> q/pq*visual_position*\nexport const questionOldIdToId = (oldId, survey = {}) => {\n if (oldId && oldId.match(CUSTOM_QUESTION_REG)) return oldId\n const m = Number(oldId.slice(1))\n if (Number.isNaN(m)) return null\n return questionPositionToId(m, survey)\n}\n\n// q*position* + res of the path -> q/pq*visual_position* + rest of the path\nexport const pathQuestionIdToOld = (path, survey = {}) => {\n const subItems = getDottedQuestionName(path).split('.')\n if (!subItems[0].match(CUSTOM_QUESTION_REG)) subItems[0] = `q${questionIdToPosition(subItems[0], 1, survey)}`\n return subItems.join('.').replace('sq', 'b')\n}\n\n// q*position* + res of the path -> q/pq*visual_position* + rest of the path\nexport const pathQuestionOldIdToId = (path, survey = {}) => {\n const subItems = path.split('.')\n if (!subItems[0].match(CUSTOM_QUESTION_REG)) subItems[0] = questionOldIdToId(subItems[0], survey)\n return subItems.join('.')\n}\n\nexport const responseTagsByPath = (response, key) => {\n const re = RegExp(`^${key}`)\n return (response.tags || []).filter(t => re.test(t.path))\n}\n\nexport const cleanSearchData = (input = []) =>\n JSON.parse(JSON.stringify(input)).map(item => {\n // hm cluster\n if (null !== item.qid) {\n item.value =\n 'string' == typeof item.value ? item.value.replace(new RegExp(`^${item.qid}__`, 'i'), '') : item.value || ''\n item.label =\n 'string' == typeof item.label ? item.label.replace(new RegExp(`^${item.qid}: `, 'i'), '') : item.label || ''\n }\n // sentiment\n if ('sentiment' === item.type) {\n item.tag = item.value\n item.value = item.sentiment\n delete item.sentiment\n delete item.label\n }\n\n const ret = {\n type: item.type\n }\n if (item.type !== 'batch') ret.value = item.value\n if (null !== item.qid) ret.qid = item.qid\n if (null !== item.path) ret.path = item.path\n if (null !== item.tag) ret.tag = item.tag\n return ret\n })\n\nexport const mapReportSearchQuery = (input = []) =>\n input.map(item => {\n if (null !== item.qid && 'cluster' === item.type && !RegExp(`^${item.qid}__`, 'i').test(item.value)) {\n item.value = `${item.qid}__${item.label}`\n item.label = `${item.qid.toUpperCase()}: ${item.label}`\n }\n return item\n })\n\nexport const getSearchInputOptions = (\n survey = {},\n questionOptions,\n tagsList = [],\n selectedQuestion = null,\n query = [],\n isTagsManagementDisabled = true,\n isSentimentsManagementDisabled = true\n // eslint-disable-next-line max-params\n) => {\n let result = []\n\n if (!isSentimentsManagementDisabled) {\n result = [\n ...result,\n ...SENTIMENTS.map(({ value, label, type, sentiment }) => {\n return {\n value,\n label: `sentiment: ${label}`,\n type,\n sentiment\n }\n })\n ]\n }\n\n const question =\n null !== selectedQuestion && selectedQuestion !== DEFAULT_SELECTED_QUESTION\n ? questionOptions.find(q => q.value === selectedQuestion) || null\n : null\n const position = (null !== selectedQuestion && extractQuestionPosition(selectedQuestion)) || null\n\n // get the list of heatmap batches\n if (null !== question && 'hm' === question.type && null !== position) {\n const visual_position = questionIdToPosition(selectedQuestion, 1, survey)\n const questionObj = survey.questions?.find(item => item.position === visual_position)\n\n if (questionObj?.batches) {\n questionObj.batches.forEach(batch => {\n if (batch.comments) {\n const path = `q${position}.sq${batch.position}`\n if (!query.some(item => 'batch' === item.type && item.path === path)) {\n result.push({\n value: `q${position}.sq${batch.position}: ${batch.text}`,\n label: `Q${position}.SQ${batch.position}: ${batch.text}`,\n color: batch.color,\n path,\n type: 'batch'\n })\n }\n }\n })\n }\n }\n\n const surveyObj = getSurvey(survey)\n\n // get the list of heatmap clusters\n if (surveyObj.assets && surveyObj.assets['hm.cluster']) {\n surveyObj.assets['hm.cluster'].forEach(cluster => {\n if (\n (!question || (question && null !== position && RegExp(`^${cluster.qid}([a-zA-Z]+|$)`).test(question.value))) &&\n questionOptions.some(q => RegExp(`^${cluster.qid}([a-zA-Z]+|$)`).test(q.value))\n ) {\n const title = cluster.title.replace(/</g, '<').replace(/>/g, '>').replace(/&/g, '&')\n const value = `${cluster.qid}__${title}`\n if (!query.some(item => 'cluster' === item.type && item.qid === cluster.qid && item.value === value)) {\n result.push({\n value,\n label: `${cluster.qid.toUpperCase()}: ${title}`,\n qid: cluster.qid,\n type: 'cluster'\n })\n }\n }\n })\n }\n\n if (!isTagsManagementDisabled && tagsList.length) {\n result = [\n ...result,\n ...tagsList.map(tag => {\n tag.type = 'tag'\n return tag\n })\n ]\n }\n\n // cleanup aytm logic\n return result.map(item => {\n item.label = removeLogicFromText(item.label)\n return item\n })\n}\n\nexport const getAnswerText = (prefix, text, lvl) =>\n `
${prefix}: ${text}
`\n\nexport const isXpertOrVirtualType = q => {\n if (!q || null === q) return false\n\n let xpertOrVirtual = q.type && ['dlv', 'dlc', 'dlx', 'dld', 'dlt'].includes(q.type)\n if (!xpertOrVirtual) xpertOrVirtual = q.value && RegExp(/^(vq|xq)/i).test(q.value)\n return xpertOrVirtual\n}\n// export const isVideoOrImageType = q => q.type && ['ir', 'va', 'vr'].includes(q.type)\nexport const isVideoOrImageType = q => q.type && ['ir'].includes(q.type)\n\nexport const getQuestionObject = (\n type,\n value,\n prefix,\n text = '',\n image = null,\n lvl,\n questionNumber,\n isFullQuestionName,\n isOptionHidden = false\n // eslint-disable-next-line max-params\n) => {\n const ret = {\n type,\n text: getAnswerText(\n isFullQuestionName\n ? getDottedQuestionName(\n value.toUpperCase().includes(prefix)\n ? value.toUpperCase()\n : value.replace(/b(\\d*)/g, `${prefix}`).toUpperCase()\n )\n : prefix,\n text,\n lvl\n ),\n value,\n prefix,\n image,\n lvl,\n questionText: text,\n questionNumber: isFullQuestionName ? value.toUpperCase() : questionNumber,\n isOptionHidden\n }\n return ret\n}\n\nconst hasCommentableAnswerVariants = (node = {}) => {\n if (node.comments) return true\n if (node.answerVariants) {\n return node.answerVariants.some(subNode => subNode && hasCommentableAnswerVariants(subNode))\n }\n return false\n}\n\nconst hasSpecificCommentableAnswerVariants = (type, question, node = {}, survey = {}) => {\n const surveyObj = getSurvey(survey)\n if ('dlv' === type) {\n if (\n surveyObj.virtual &&\n surveyObj.virtual[question.id] &&\n surveyObj.virtual[question.id].answerVariants &&\n surveyObj.virtual[question.id].answerVariants[node.position - 1] &&\n surveyObj.virtual[question.id].answerVariants[node.position - 1].comments\n )\n return true\n return false\n }\n return true\n}\n\nexport const getQuestionType = (question, survey = {}) => {\n const surveyObj = getSurvey(survey)\n if (null === question) return {}\n let type = question.type\n let chart = null\n if ('dlx' == type && surveyObj.scripts) {\n const questions = Object.keys(surveyObj.scripts.questions || {})\n .reduce((acc, cur) => {\n if (`${question.id}_` == surveyObj.scripts.questions[cur].id.slice(0, question.id.length + 1))\n acc.push(surveyObj.scripts.questions[cur])\n return acc\n }, [])\n .filter(v => v != undefined && null !== v)\n const iv = questions.find(q => q.blocks && q.blocks.find(b => 'chart' == b.type))\n if (iv != undefined) {\n chart = iv.blocks.find(b => 'chart' == b.type)\n type = chart.subtype\n }\n }\n return { type, chart }\n}\n\nexport const getAnswerVariants = ({\n survey,\n question,\n answerVariants,\n selectedQuestion,\n position,\n prefix,\n text = '',\n questionNumber,\n lvl = 0,\n flag = false,\n isFullQuestionName = false,\n isOmitCheck = false\n} = {}) => {\n const { image } = question\n const { type } = getQuestionType(question, survey)\n\n let result = []\n if (\n answerVariants &&\n answerVariants.some(\n av =>\n null !== av &&\n (isOmitCheck ||\n `${position}a${av.position}` == selectedQuestion ||\n (ANSWER_VARIANTS_COMMENTABLE.includes(type) &&\n hasSpecificCommentableAnswerVariants(type, question, av, survey)) ||\n hasCommentableAnswerVariants(av))\n )\n ) {\n if (!flag) {\n result = [\n ...result,\n getQuestionObject(type, position, prefix, text, image, lvl, questionNumber, isFullQuestionName)\n ]\n }\n answerVariants.forEach(av => {\n if (\n null !== av &&\n (isOmitCheck ||\n `${position}a${av.position}` == selectedQuestion ||\n (ANSWER_VARIANTS_COMMENTABLE.includes(type) &&\n hasSpecificCommentableAnswerVariants(type, question, av, survey)) ||\n hasCommentableAnswerVariants(av))\n ) {\n const isOptionHidden = 'hm' == type ? true : false\n result = [\n ...result,\n getQuestionObject(\n type,\n `${position}a${av.position}`,\n `A${av.position}`,\n av.text,\n av.image,\n lvl + 1,\n questionNumber,\n isFullQuestionName,\n isOptionHidden\n )\n ]\n if (av.answerVariants) {\n result = [\n ...result,\n ...getAnswerVariants({\n survey,\n question: Object.assign({}, question, { image: av.image }),\n answerVariants: av.answerVariants,\n selectedQuestion,\n position: `${position}a${av.position}`,\n prefix: `A${av.position}`,\n text: av.text,\n questionNumber,\n lvl: lvl + 1,\n flag: true,\n isFullQuestionName,\n isOmitCheck\n })\n ]\n }\n }\n })\n }\n return result\n}\n\nexport const getBatches = (\n question = {},\n survey = {},\n selectedQuestion,\n text = '',\n isFullQuestionName,\n isOmitCheck\n) => {\n let result = []\n let titleAdded = false\n const { id, position, image } = question\n const pos = id && id.match(CUSTOM_QUESTION_REG) ? id : questionPositionToId(position, survey)\n const { type, chart } = getQuestionType(question, survey)\n const prefix = 'SQ'\n const batches = (chart || question).batches\n batches.forEach(batch => {\n const { answerVariants, comments } = batch\n if (answerVariants && (comments || answerVariants.some(item => item.comments))) {\n if (!titleAdded) {\n titleAdded = true\n result = [...result, getQuestionObject(type, pos, pos.toUpperCase(), text, image, 0, pos, isFullQuestionName)]\n }\n result = [\n ...result,\n ...getAnswerVariants({\n survey,\n question: Object.assign({}, question, { image: batch.image }),\n answerVariants,\n selectedQuestion,\n position: `${pos}sq${batch.position}`,\n prefix: `${prefix}${batch.position}`,\n text: batch.text,\n questionNumber: pos,\n lvl: 1,\n isFullQuestionName,\n isOmitCheck: comments || isOmitCheck\n })\n ]\n }\n })\n return result\n}\n\nexport const getQuestionOptions = (\n question,\n survey = {},\n selectedQuestion,\n isFullQuestionName = false,\n isOmitCheck = false\n) => {\n const surveyObj = getSurvey(survey)\n const { id: questionID, position: questionPosition, image: questionImage = null, args: questionArgs } = question\n const pos = ['dlv', 'dlc', 'dlx', 'dld', 'dlt'].includes(question.type)\n ? questionID\n : questionPositionToId(questionPosition, survey)\n const { type, chart } = getQuestionType(question, surveyObj)\n const text = ('dlx' === question.type && questionArgs && questionArgs.header) || question.text || ''\n\n let result = []\n switch (type) {\n case 'ir':\n case 'vr':\n case 'va':\n case 'oe': {\n result = [getQuestionObject(type, pos, pos.toUpperCase(), text, questionImage, 0, pos, isFullQuestionName)]\n break\n }\n case 'cb':\n case 'rb':\n case 'scx':\n case 'dlv':\n case 'cx':\n case 'oex':\n case 'sh':\n case 'cn':\n case 'sft': {\n result = getAnswerVariants({\n survey: surveyObj,\n question,\n answerVariants: (chart || question).answerVariants,\n selectedQuestion,\n position: pos,\n prefix: pos.toUpperCase(),\n text,\n questionNumber: pos,\n isFullQuestionName,\n isOmitCheck\n })\n break\n }\n case 'mx': {\n if (chart) result = getBatches(question, surveyObj, selectedQuestion, text, isFullQuestionName, isOmitCheck)\n break\n }\n case 'mp':\n case 'hm': {\n result = getBatches(question, surveyObj, selectedQuestion, text, isFullQuestionName, isOmitCheck)\n break\n }\n default:\n break\n }\n return result\n}\n\nexport const getQuestionsOptionsList = (\n survey = {},\n reportVirtual,\n reportSchema,\n selectedQuestion,\n specialMode = 'comments'\n) => {\n const surveyObj = getSurvey(survey)\n let result = [{ text: 'All Questions', value: DEFAULT_SELECTED_QUESTION }]\n\n if (!surveyObj.questions) return List(result.map(item => Map(item)))\n\n let questionsList = surveyObj.questions\n if (reportSchema.length) {\n questionsList = []\n const questions = reportVirtual\n ? [...surveyObj.questions, ...Object.keys(reportVirtual).map(k => reportVirtual[k])]\n : surveyObj.questions\n reportSchema.forEach(schemaKey => {\n const question = questions.find(\n q =>\n (q.position > 0 && `q${q.position}` == schemaKey) || ((!q.position || q.position <= 0) && q.id == schemaKey)\n )\n\n if (!question) return\n questionsList.push(question)\n })\n }\n questionsList.forEach(question => {\n switch (specialMode) {\n case 'image-responses':\n if (!['ir'].includes(question.type)) return\n break\n case 'video-responses':\n if (!['va'].includes(question.type)) return\n break\n default:\n // if (['ir', 'vr', 'va'].includes(question.type)) return\n if (['vr', 'va'].includes(question.type)) return\n break\n }\n\n const options = getQuestionOptions(question, surveyObj, selectedQuestion, true)\n result = [...result, ...options]\n })\n if ('video-responses' === specialMode) {\n const videoResponse = result[1]\n if (videoResponse) {\n result[0] = {\n ...videoResponse,\n value: DEFAULT_SELECTED_QUESTION\n }\n }\n }\n result = result.map(item => Map(item))\n\n return List(result)\n}\n\nexport const getDownloadUrl = (question, answer) => {\n if (['ir', 'vr', 'va'].includes(question.type)) {\n switch (question.type) {\n case 'ir':\n return answer.i && answer.i.original && answer.i.original.url\n case 'vr':\n case 'va':\n default:\n return answer.v && answer.v.mp4File\n }\n }\n return null\n}\n\nexport const arrayToHash = (arr, defaultVal = 'true') => {\n return {\n ...arr.reduce((map, item) => {\n map[item] = defaultVal\n return map\n }, {})\n }\n}\n\nexport const tagValue = tag => tag.tag || tag.value || tag.entity\n\nexport const tagDisplayValue = tag =>\n 'sentiment' === tag.type\n ? tag.tag\n : 'junk' === tag.type\n ? 'junk'\n : tag.type.startsWith('NER')\n ? tag.entity\n : tag.type.startsWith('complexity-')\n ? tag.value.toFixed(0)\n : tag.tag\n\nexport const getSpellcheckerDiff = (text, fixedText) => {\n // const diff = Diff.diffChars(text, fixedText)\n const diff = Diff.diffWords(text.replace(/
/gi, '\\n'), fixedText.replace(/
/gi, '\\n'))\n return diff.reduce((res, part) => {\n const [back2, back1] = res.slice(-2)\n if (!part.added && !part.removed && 0 === part.value.trim().length && 1 < res.length) {\n if (back2.removed && back1.added) {\n back1.value += part.value\n back2.value += part.value\n } else {\n res.push(part)\n }\n } else if (back2 && part.removed && back2.removed) {\n back2.value += part.value\n } else if (back2 && part.added && back2.added) {\n back2.value += part.value\n } else if (back1 && part.added && back1.added) {\n back1.value += part.value\n } else {\n res.push(part)\n }\n return res\n }, [])\n}\n\nexport const highlightSearchString = (text, query) => {\n if (!query.length || !query.some(item => 'plain' === item.type)) return text\n let str = text\n let searchStringArr = []\n\n query.forEach(item => {\n if ('plain' === item.type) {\n searchStringArr = [...searchStringArr, item.value]\n }\n })\n for (const word of [...new Set(searchStringArr)]) {\n if ('@junk' === word.trim()) continue\n let strArray = str.split(//)\n strArray = strArray.flatMap(w => w.split(/<\\/em>/))\n const re = RegExp(escapeRegExp(word.trim()), 'gim')\n str = strArray.map((w, i) => (0 < i % 2 && `${w}`) || w.replace(re, m => `${m}`)).join('')\n }\n return str\n}\n\nconst getNestedSubquestions = subQuestionsList =>\n subQuestionsList.reduce((acc, currentValue) => {\n if (!subQuestionsList.some(item => new RegExp(`^${currentValue}(?!\\\\d+)[^\\\\s]+`, 'i').test(item))) {\n acc.push(currentValue)\n }\n return acc\n }, [])\n\nconst getSubQuestionsByPath = (path, questionsList, ret = []) => {\n if (questionsList.some(q => q.value === path)) {\n const subQuestions =\n path === DEFAULT_SELECTED_QUESTION\n ? questionsList.filter(q => q.value !== DEFAULT_SELECTED_QUESTION)\n : questionsList.filter(q => new RegExp(`^${path}(?!\\\\d+)[^\\\\s]+`, 'i').test(q.value))\n\n if (subQuestions.length > 0) {\n subQuestions.forEach(sq => getSubQuestionsByPath(sq.value, questionsList, ret))\n }\n\n if (path && path !== DEFAULT_SELECTED_QUESTION && !ret.includes(path)) {\n ret.push(path)\n }\n }\n return ret\n}\n\nexport const quotedStringToAytmLogic = (str = '') => {\n // convert string with quotes & double-quotes to a corresponding aytm logic \"STR STR+\" expression\n const q = str.includes(\"'\")\n const dq = str.includes('\"')\n if (!q) {\n return `'${str}'`\n } else if (q && !dq) {\n return `\"${str}\"`\n } else {\n const cq = str.match(/'/g).length\n const cdq = str.match(/\"/g).length\n const split = cq < cdq ? str.split(\"'\").map(v => `'${v}'`) : str.split('\"').map(v => `\"${v}\"`)\n return split\n .slice(0, -1)\n .reduce((a, v) => a.concat([v, cq < cdq ? `\"'\"` : `'\"'`]), [])\n .concat(split.slice(-1))\n .join('')\n }\n}\n\nexport const searchToFilterLogic = (\n query,\n selectedQuestion,\n questionsList = [],\n survey = {},\n separator = ' or ',\n subSeparator = ' or '\n) => {\n const surveyObj = getSurvey(survey)\n const ret = []\n\n // plain text nodes for commentable questions part\n let prefix = ''\n const logic = []\n const question =\n selectedQuestion !== DEFAULT_SELECTED_QUESTION ? questionsList.find(q => q.value == selectedQuestion) : null\n const { type: questionType } = getQuestionType(question, surveyObj)\n if ('cx' == questionType) {\n const parts = selectedQuestion.toUpperCase().split('A')\n if (1 < parts.length)\n prefix = parts\n .slice(1)\n .map((v, i) => `${parts[0]}R${i + 1}V = ${v}`)\n .join(' and ')\n }\n\n const searchStringArr = [\n ...new Set(query.filter(queryItem => 'plain' === queryItem.type).map(queryItem => queryItem.value))\n ]\n if (!searchStringArr.length) {\n searchStringArr.push('')\n }\n const addSearchStringArrToSubitems = (path, subitems) => {\n searchStringArr.forEach(subStr => {\n const str = quotedStringToAytmLogic(subStr)\n const subitem = subStr.trim() ? `${path} like ${str}` : `${path} != ''`\n if (!subitems.includes(subitem)) subitems.push(subitem)\n })\n }\n const subQuestionsList = getSubQuestionsByPath(selectedQuestion, questionsList)\n subQuestionsList.forEach(subQuestion => {\n const subitems = []\n const q = questionsList.find(q => q.value == subQuestion)\n const { type: qType } = getQuestionType(q, surveyObj)\n switch (qType) {\n case 'cx': {\n const p = subQuestion.toUpperCase().split('A')\n if (1 < p.length) {\n const path = `${p[0]}R${p.length - 1}C`\n if (undefined != surveyObj.refsList[path]) {\n addSearchStringArrToSubitems(path, subitems)\n }\n }\n break\n }\n default: {\n const reg = new RegExp(`^(X?Q)(\\\\d+)(?:SQ(\\\\d+))?(?:A(\\\\d+))?`, 'i')\n const p = subQuestion.toUpperCase().match(reg)\n if (null !== p) {\n const path =\n p[3] != undefined && p[4] != undefined\n ? `${p[1]}${p[2]}SQ${p[3]}A${p[4]}C`\n : p[4] != undefined\n ? `${p[1]}${p[2]}A${p[4]}C`\n : `${p[1]}${p[2]}C`\n if (undefined != surveyObj.refsList[path]) {\n addSearchStringArrToSubitems(path, subitems)\n }\n }\n }\n }\n if (separator != subSeparator)\n logic.push(1 < subitems.length ? `(${subitems.join(subSeparator)})` : subitems.join())\n else logic.push(...subitems)\n })\n const logicTextFiltered = logic.filter((val, id, array) => array.indexOf(val) == id)\n const logicText = logicTextFiltered.join(separator)\n if (logicText) {\n ret.push(\n `(${\n prefix.length\n ? 1 < logicTextFiltered.length\n ? `${prefix} and (${logicText})`\n : `${prefix} and ${logicText}`\n : logicText\n })`\n )\n }\n\n // response uid part\n const responseUidArr = [\n ...new Set(query.filter(queryItem => 'uid' === queryItem.type).map(queryItem => `uid=${queryItem.value}`))\n ]\n if (responseUidArr.length) {\n ret.push(`(${responseUidArr.join(separator)})`)\n }\n\n // Heatmap clusters part\n const hmClusterObj = {}\n query\n .filter(queryItem => 'cluster' === queryItem.type)\n .forEach(queryItem => {\n let qid = `${queryItem.qid.toUpperCase()}`\n if (\n selectedQuestion !== DEFAULT_SELECTED_QUESTION &&\n new RegExp(`^${qid}([a-zA-Z]+|$)`, 'i').test(selectedQuestion)\n ) {\n qid = selectedQuestion.toUpperCase().replace(new RegExp(`([0-9]+)B([0-9]+)`, 'i'), '$1SQ$2')\n }\n if (!hmClusterObj[qid]) {\n hmClusterObj[qid] = []\n }\n const clusterVal = queryItem.label.replace(new RegExp(`^${queryItem.qid}: `, 'i'), '')\n hmClusterObj[qid].push(`\"${clusterVal}\"`)\n })\n const clusterArr = []\n if (Object.keys(hmClusterObj).length) {\n Object.keys(hmClusterObj).forEach(item => {\n // clusterArr.push(`${item}R in cluster ${hmClusterObj[item].join(', ')}`)\n hmClusterObj[item].forEach(pinItem => {\n clusterArr.push(\n `${item}R in cluster ${pinItem.replace(/&/g, '&').replace(//g, '>')}`\n )\n })\n })\n ret.push(`(${clusterArr.join(separator)})`)\n }\n\n // tags, sentiment and junk part\n ;['tag', 'sentiment'].forEach(entityType => {\n const entityArr = query.filter(queryItem => entityType === queryItem.type).map(tag => `'${tag.value}'`)\n if (entityArr.length) {\n const hasJunk = 'tag' === entityType ? query.some(queryItem => 'junk' === queryItem.type) : false\n let qid\n if (question) {\n switch (question.type) {\n case 'cx': {\n const p = selectedQuestion.toUpperCase().split('A')\n // cascade Q3A1A2A3 -> Q3\n if (p.length) {\n qid = p[0]\n }\n break\n }\n default: {\n qid = selectedQuestion.toUpperCase().replace(new RegExp(`([0-9]+)B([0-9]+)`, 'i'), '$1SQ$2')\n }\n }\n }\n ret.push(\n `(tag${'sentiment' === entityType ? '.SENTIMENT' : hasJunk ? '.JUNK' : ''} ${qid ? qid : ''} ${\n entityArr.length > 1 ? 'in' : '='\n } ${entityArr.length > 1 ? entityArr.join(',') : entityArr[0]})`\n )\n }\n })\n\n return ret.join(' and ')\n}\n\nexport const filterLogicToSearch = (filter = '', separator = ' or ') => {\n const ret = []\n const filterData = filter.match(/q(\\d+)c/gi)\n if (filterData) {\n // eslint-disable-next-line no-unused-vars\n const arr = filterData.split(separator)\n }\n return ret\n}\n\nexport const getRejectsAndKudos = (cs = []) => {\n const kudos = {}\n const reject = {}\n cs.forEach(item => {\n if (item.extra && item.extra.kudos) {\n kudos[item.response.uid] = item.extra.kudos.revertable ? 'revertable' : 'true'\n }\n if (item.status && ['open-ended-admin-rejected', 'open-ended-rejected'].includes(item.status)) {\n reject[item.response.uid] = 'true'\n }\n })\n return { kudos, reject }\n}\n\nexport const getAnswerByPath = (answer, path) => path.split('.').reduce((o, i) => (o ? o[i] : {}), answer)\n\nexport const hasNestedAnswers = (answer, path) => {\n const answerByPath = getAnswerByPath(answer, pathQuestionIdToOld(path))\n return answerByPath != undefined && null !== answerByPath\n ? Object.keys(answerByPath).some(itemKey => !['t', 'te', 'i', 'v'].includes(itemKey))\n : false\n}\n\nexport const hasNestedQuestions = (questionOptions, nodeOptions, selectedQuestion) =>\n 1 <\n questionOptions.filter(\n item =>\n !item.isOptionHidden &&\n item.questionNumber.startsWith(nodeOptions.questionNumber) &&\n (selectedQuestion === DEFAULT_SELECTED_QUESTION ||\n (selectedQuestion !== DEFAULT_SELECTED_QUESTION &&\n item.questionNumber.startsWith(selectedQuestion.toUpperCase())))\n ).length\n\n// TODO !!!\n// is given params == default params\nexport const getIsDefaultReportParams = (params = {}, specialType = 'comments') => {\n const {\n query = [],\n selectedQuestion = '',\n pageSize,\n orderBy = DEFAULT_ORDER_BY,\n orderDirection = DEFAULT_ORDER_DIRECTION,\n isShowAllTools,\n isShowAllTraits\n } = params\n return (\n !query.length &&\n (!selectedQuestion.length || selectedQuestion === DEFAULT_SELECTED_QUESTION) &&\n (!pageSize ||\n pageSize ===\n ('image-responses' === specialType\n ? DEFAULT_PER_PAGE_IMAGE_RESPONSES\n : 'video-responses' === specialType\n ? DEFAULT_PER_PAGE_VIDEO_RESPONSES\n : DEFAULT_PER_PAGE)) &&\n orderBy === DEFAULT_ORDER_BY &&\n orderDirection === DEFAULT_ORDER_DIRECTION &&\n isShowAllTools != true &&\n isShowAllTraits != true\n )\n}\n\nexport const getDefaultData = (surveyData = {}) => {\n return {\n status: 'OK',\n totals: surveyData.totals || {},\n survey: surveyData.survey || {},\n cs: []\n }\n}\n\nexport const showSpellcheckerDiff = (text, fixedText, correctionsLevel, style) => {\n switch (correctionsLevel) {\n case CORRECTIONS: {\n const diff = getSpellcheckerDiff(text, fixedText)\n return diff\n .reduce((result, part) => {\n const color =\n !(0 == part.value.trim().length && /[!,.]/.test(result[result.length - 1])) && part.added\n ? 'added'\n : part.removed\n ? 'removed'\n : null\n return (\n result +\n `${color ? `` : ''}${part.value}${color ? '' : ''}`\n )\n }, '')\n .replace(/\\n/g, '
')\n }\n case CORRECTED_SPELLING:\n return fixedText\n case ORIGINALS:\n default:\n return text\n }\n}\n\nexport const checkSentimentStatus = (path = '', sentimentOptions = null) => {\n if (!path || !sentimentOptions) return true\n const pathArr = path.split('.')\n let res = true\n pathArr.reduce((acc, item) => {\n acc.push(item)\n if (false === sentimentOptions[acc.join('.')]) {\n res = false\n }\n return acc\n }, [])\n return res\n}\n\nexport const getSentiment = (path, tags) => tags.find(t => 'sentiment' == t.type && path == t.path) || null\n\nexport const getNestedSentiment = (tags = [], path, node, sentimentOptions = null) => {\n const sentimentStatus = checkSentimentStatus(path, sentimentOptions)\n if (!sentimentStatus) return false\n if (tags.length) {\n const sentiment = getSentiment(path, tags)\n if (null !== sentiment) {\n return sentiment\n }\n }\n const filtered = !node.t ? Object.keys(node).find(itemKey => !['t', 'te', 'i', 'v'].includes(itemKey)) : null\n return filtered && null !== filtered\n ? getNestedSentiment(tags, `${path}.${filtered}`, node[filtered], sentimentOptions)\n : null\n}\n\nexport const getLastItemPath = (questionsKeys, selectedQuestion, response) => {\n const lastAnswer = questionsKeys[questionsKeys.length - 1]\n if (!lastAnswer) return null\n return selectedQuestion !== DEFAULT_SELECTED_QUESTION && !hasNestedAnswers(response.answer, selectedQuestion)\n ? getDottedQuestionName(pathQuestionIdToOld(selectedQuestion))\n : getLastNodePath(response.answer[lastAnswer?.keyName], pathQuestionIdToOld(lastAnswer?.path))\n}\n\nexport const getLastSentimentValue = (lastItemPath, response) => {\n if (!response.tags || null === response.tags) return null\n const sentiments = response.tags.filter(tag => 'sentiment' === tag.type)\n if (!sentiments.length) return null\n\n return (sentiments.find(item => item.path === lastItemPath) || { tag: '' }).tag\n}\n\nexport const getNodeCommentablePaths = (node = {}, tagType = 'manual', pathPrefix = '', list = []) => {\n let newList = list\n Object.keys(node).forEach(key => {\n if (!key.match(CUSTOM_QUESTION_REG)) {\n if (\n Object.keys(node[key]).some(item =>\n ('sentiment' === tagType ? ['t', 'te', 'v'] : ['t', 'te', 'i', 'v']).includes(item)\n )\n ) {\n newList.push(pathPrefix ? `${pathPrefix}.${key}` : key)\n }\n const filtered = Object.keys(node[key])\n .filter(ikey => !['t', 'te', 'i', 'v'].includes(ikey))\n .reduce((obj, ikey) => {\n return {\n ...obj,\n [ikey]: node[key][ikey]\n }\n }, {})\n\n if (Object.keys(filtered).length) {\n newList = getNodeCommentablePaths(filtered, tagType, `${pathPrefix ? `${pathPrefix}.` : ''}${key}`, newList)\n }\n }\n })\n return newList\n}\n\nexport const getCommentsCount = (data, tag, sentimentOptions = {}) => {\n const count = data.reduce((count, item) => {\n const commentableNodes = getNodeCommentablePaths(item.answer, tag.type || 'manual').filter(node =>\n tag.type !== 'sentiment' ? true : sentimentOptions ? sentimentOptions[node] !== false : true\n )\n // eslint-disable-next-line no-param-reassign\n count += commentableNodes.length\n return count\n }, 0)\n return null !== tag.countOnPage ? (count >= tag.countOnPage ? count - tag.countOnPage : 0) : count\n}\n\nexport const getTagOccurrence = (tag, type, data = [], selectedQuestion = null) =>\n data.reduce((count, item = {}) => {\n let path\n if (selectedQuestion && selectedQuestion !== DEFAULT_SELECTED_QUESTION) {\n path = pathQuestionIdToOld(selectedQuestion)\n }\n const commentablePaths = getCommentsCount([item], { tag, type })\n if ('None' === tag && 'sentiment' === type) {\n // eslint-disable-next-line no-param-reassign\n count +=\n !item.tags || item.tags.filter(tagItem => 'sentiment' === tagItem.type).length < commentablePaths\n ? commentablePaths - (item.tags || []).filter(tagItem => 'sentiment' === tagItem.type).length\n : (item.tags || []).filter(\n tagItem =>\n ((tagItem.tag === tag && tagItem.type === type) || ('junk' === tag && 'junk' === tagItem.type)) &&\n (!path ? true : 0 === tagItem.path.lastIndexOf(path, 0))\n ).length\n } else {\n const commentableNodes = getNodeCommentablePaths(item.answer, type || 'manual')\n // eslint-disable-next-line no-param-reassign\n count += (commentableNodes || []).filter(node =>\n (item.tags || []).some(tagObj => tagObj.tag === tag && tagObj.type === type && tagObj.path === node)\n ).length\n }\n return count\n }, 0)\n\nconst getTagListObject = ({ tag, type, isForSelect, noCount, tagCounters, ret, cs, selectedQuestion }) => {\n const val = {\n // type: 'junk' === type ? 'manual' : type\n type\n }\n val.tag = 'junk' === type ? 'junk' : tag\n if (isForSelect) {\n val.value = tag\n val.label = tag\n }\n if (!noCount) {\n // search scope count\n val.count = 0\n if (ret && tagCounters[type]) {\n val.count = tagCounters[type][tag] || 0\n }\n // page data count\n if (cs.length) {\n val.countOnPage = getTagOccurrence(tag, type, cs, selectedQuestion)\n }\n }\n if (!ret.some(item => (item.tag === tag || item.value === tag) && item.type === type)) {\n return val\n }\n return null\n}\n\nexport const getTagsList = (\n tags = {},\n {\n excludeTypes = ['sentiment'],\n isForSelect = false,\n noCount = false,\n tagCounters = {},\n cs = [],\n selectedQuestion = null,\n isSentimentsManagementDisabled = true\n } = {}\n) => {\n let ret = []\n // tags from survey.tags\n Object.keys(tags).forEach(type => {\n if (!excludeTypes.includes(type)) {\n const keys = Array.isArray(tags[type]) ? tags[type] : Object.keys(tags[type])\n keys.forEach(tag => {\n const val = getTagListObject({\n tag,\n type,\n isForSelect,\n noCount,\n tagCounters,\n ret,\n cs,\n selectedQuestion\n })\n if (val) ret.push(val)\n })\n }\n })\n // tags from cs.tags\n if (tagCounters) {\n Object.keys(tagCounters).forEach(type => {\n if (!excludeTypes.includes(type)) {\n Object.keys(tagCounters[type]).forEach(tag => {\n const val = getTagListObject({\n tag,\n type,\n isForSelect,\n noCount,\n tagCounters,\n ret,\n cs,\n selectedQuestion\n })\n if (val) ret.push(val)\n })\n }\n })\n }\n\n // merging same tags of different types\n ret = [...new Set(ret.map(s => s.tag))]\n .map(tag =>\n ret.find(s => {\n if (s.tag === tag) {\n const sameTagToMerge = ret.filter(as => as.tag === s.tag && as.type !== s.type)\n if (sameTagToMerge.length) {\n sameTagToMerge.forEach(itemToMerge => {\n s.count += itemToMerge.count || 0\n s.countOnPage = (s.tag !== 'junk' ? s.countOnPage + itemToMerge.countOnPage : s.countOnPage) || 0\n })\n }\n return s\n }\n return null\n })\n )\n // sort alphabetically for now\n .sort((a, b) => collator.compare(a.tag, b.tag))\n\n // adding sentiments to the list\n if (!isSentimentsManagementDisabled && !noCount) {\n ret = [\n ...ret.filter(item => item.type !== 'sentiment'),\n ...SENTIMENTS.map(({ value, type, sentiment }) => {\n // const itm = ret.find(item => 'sentiment' === item.type && value === item.tag.toLowerCase())\n const itm = ret.find(item => 'sentiment' === item.type && value === item.tag)\n return {\n value,\n label: `Sentiment: ${value}`,\n type,\n tag: value,\n sentiment,\n count: itm && itm.count ? itm.count : 0,\n countOnPage: itm && itm.countOnPage ? itm.countOnPage : 0\n }\n })\n ]\n }\n\n //put junk tag at the end\n const junkTag = ret.find(item => 'junk' === item.tag) || {\n type: 'manual',\n tag: 'junk',\n label: 'junk',\n value: 'junk',\n count: 0\n }\n ret = ret.filter(t => !(!noCount ? SIDEBAR_HIDDEN_TAG_TYPES : HIDDEN_TAG_TYPES).includes(t.type) && t.tag !== 'junk')\n if ('junk' === junkTag.type) {\n junkTag.type = 'manual'\n }\n ret.push(junkTag)\n\n return ret\n}\n\nexport const mapTagsToCounters = (counters, tags) =>\n counters && null !== counters\n ? Object.keys(tags || {}).reduce((acc, cur) => {\n acc[cur] = {\n ...(tags[cur] || []).reduce((_acc, _cur) => {\n _acc[_cur] = 0\n return _acc\n }, {}),\n ...(counters[cur] || {})\n }\n return acc\n }, {})\n : Object.keys(tags || {}).reduce((acc, cur) => {\n acc[cur] = {\n ...(tags[cur] || []).reduce((_acc, _cur) => {\n _acc[_cur] = 0\n return _acc\n }, {})\n }\n return acc\n }, {})\n\nexport const fixPathByQuestionType = (path, questionType) => {\n let ret = path\n if ('hm' === questionType) {\n ret = ret.split('.')\n ret.pop()\n ret = ret.join('.')\n }\n return ret\n}\n\nexport const range = (start, end) => {\n if (start === end) return [start]\n return [start, ...range(start + 1, end)]\n}\n\nexport const stripTags = (_html, ...args) => {\n const _tags = []\n let _tag = ''\n for (let _a = 1; _a < args.length; _a++) {\n _tag = args[_a].replace(/<|>/g, '').trim()\n if (args[_a].length > 0) _tags.push(_tag, '/' + _tag)\n }\n\n if (!('string' == typeof _html) && !(_html instanceof String)) return ''\n else if (0 == _tags.length) return _html.replace(/<(\\s*\\/?)[^>]+>/g, '')\n else {\n const _re = new RegExp('<(?!(' + _tags.join('|') + ')s*/?)[^>]+>', 'g')\n return _html.replace(_re, '')\n }\n}\n\nexport const preSanitize = value => (value || '').replace(/&/gi, '&').replace(/</gi, '<').replace(/>/gi, '>')\n\nexport const sanitizeReactSelectOption = value => {\n delete value.__isNew__\n return value\n}\n\nexport const maybePluralize = (count, noun, suffix = 's') => `${noun}${count !== 1 ? suffix : ''}`\n\nexport const mergePageData = (pageData, cs = [], processedQA = []) => {\n const ret = pageData || []\n cs.forEach(item => {\n if (!ret.some(retItem => retItem.response.uid === item.response.uid) && !processedQA.includes(item.response.uid)) {\n ret.push(item)\n }\n })\n return ret\n}\n\nexport const convertBasicToAdvanced = (query, joinOperator = 'or') => {\n const groupedObject = query.reduce((acc, item) => {\n const type = 'junk' === item.type ? 'tag' : item.type\n if (null === acc[type]) {\n acc[type] = []\n }\n if (!acc[type].includes(item.value)) {\n acc[type].push(type !== 'uid' ? `'${item.value}'` : item.value)\n }\n return acc\n }, {})\n\n const stringed = Object.keys(groupedObject).reduce((acc, key) => {\n if (groupedObject[key].length > 1) {\n acc.push(`${key} in ${groupedObject[key].join(', ')}`)\n } else {\n acc.push(`${key} ${'plain' === key ? '=' : '='} ${groupedObject[key]}`)\n }\n return acc\n }, [])\n\n return stringed.join(` ${joinOperator} `)\n}\n\nexport const convertAdvancedToBasic = tree => {\n const ret = []\n Object.keys(tree).forEach(key => {\n const type = key.toLowerCase()\n if (Array.isArray(tree[key].v)) {\n tree[key].v.forEach(value => {\n if (!ret.some(item => item.value === value && item.type === type)) {\n ret.push({\n type: 'tag' === type && 'junk' === value ? 'junk' : type,\n value,\n label: value\n })\n }\n })\n } else {\n ret.push({\n type: 'tag' === type && 'junk' === tree[key].v ? 'junk' : type,\n value: tree[key].v,\n label: tree[key].v\n })\n }\n })\n return ret\n}\n\nconst getTagsSidebarActionName = action => {\n switch (action) {\n case 'delete':\n case 'remove_found':\n case 'remove_page': {\n return 'removal'\n }\n case 'assign': {\n return 'assignment'\n }\n default:\n return action\n }\n}\n\nexport const getTagsSidebarItemOptionsList = ({\n tag,\n selectedAction,\n onActionCancel,\n onActionConfirm,\n onActionClick\n}) => {\n let ret = []\n\n if (selectedAction) {\n ret = [\n {\n label: (\n <>\n \n Main menu\n >\n ),\n onClick: () => onActionCancel()\n },\n {\n label: `Confirm ${getTagsSidebarActionName(selectedAction)}`,\n onClick: () => onActionConfirm()\n },\n {\n label: 'Cancel',\n onClick: () => onActionCancel(true)\n }\n ]\n } else {\n if (!('sentiment' === tag.type && 'None' === tag.tag)) {\n ret = [\n {\n label: (\n <>\n Remove tag from {tag.countOnPage} {maybePluralize(tag.countOnPage || 0, 'comment')} on page\n >\n ),\n onClick: () => (tag.countOnPage > 0 ? onActionClick('remove_page') : undefined)\n },\n {\n label: (\n <>\n Remove tag from all {tag.count} {maybePluralize(tag.count, 'found comment')}\n >\n ),\n onClick: () => (tag.count > 0 ? onActionClick('remove_found') : undefined)\n }\n ]\n }\n\n if (tag.tag !== 'junk' && tag.type !== 'sentiment') {\n ret.push({ label: 'Rename the tag', onClick: () => onActionClick('update') })\n }\n ret.push({ label: 'Assign to multiple comments', onClick: () => onActionClick('assign') })\n if (tag.tag !== 'junk' && tag.type !== 'sentiment') {\n ret.push({\n label: (\n <>\n \n Delete tag itself from all reports\n >\n ),\n onClick: () => onActionClick('delete')\n })\n }\n }\n return ret\n}\n\nexport const hasVirtualOrXpert = (questionsList = [], selectedQuestion) => {\n let isVirtualOrXpertInScope = questionsList.some(q => isXpertOrVirtualType(q))\n let isOnlyVirtualOrXpert = !questionsList.some(q => q.type && !isXpertOrVirtualType(q))\n if (isVirtualOrXpertInScope && selectedQuestion && selectedQuestion !== DEFAULT_SELECTED_QUESTION) {\n const question =\n selectedQuestion !== DEFAULT_SELECTED_QUESTION ? questionsList.find(q => q.value == selectedQuestion) : null\n if (isXpertOrVirtualType(question)) {\n isOnlyVirtualOrXpert = true\n } else {\n isVirtualOrXpertInScope = false\n }\n }\n return [isVirtualOrXpertInScope, isOnlyVirtualOrXpert]\n}\n\nexport const hasDisabledSentimentInScope = (questionsList = [], sentimentOptions, selectedQuestion = '') => {\n const isDisabledSentimentInScope = sentimentOptions\n ? getSubQuestionsByPath(selectedQuestion, questionsList).some(q =>\n sentimentOptions && q !== DEFAULT_SELECTED_QUESTION\n ? false === checkSentimentStatus(pathQuestionIdToOld(q), sentimentOptions)\n : false\n )\n : false\n\n let isOnlyDisabledSentiment = false\n if (isDisabledSentimentInScope) {\n if (selectedQuestion && selectedQuestion !== DEFAULT_SELECTED_QUESTION) {\n isOnlyDisabledSentiment = false === checkSentimentStatus(pathQuestionIdToOld(selectedQuestion), sentimentOptions)\n if (!isOnlyDisabledSentiment) {\n const nestedSQs = getNestedSubquestions(getSubQuestionsByPath(selectedQuestion, questionsList))\n isOnlyDisabledSentiment = !nestedSQs.some(sq =>\n checkSentimentStatus(pathQuestionIdToOld(sq.replace(/sq/i, 'b')), sentimentOptions)\n )\n }\n } else {\n isOnlyDisabledSentiment = !questionsList.some(q => {\n if (q.value === DEFAULT_SELECTED_QUESTION) return false\n return checkSentimentStatus(pathQuestionIdToOld(q.value), sentimentOptions)\n })\n }\n }\n\n return [isDisabledSentimentInScope, isOnlyDisabledSentiment]\n}\n","const toString = Object.prototype.toString\nconst isEnumerable = Object.prototype.propertyIsEnumerable\nconst getSymbols = Object.getOwnPropertySymbols\n\nconst assignSymbols = (target, ...args) => {\n if (!isObject(target)) {\n throw new TypeError('expected the first argument to be an object')\n }\n\n if (0 === args.length || 'function' !== typeof Symbol || 'function' !== typeof getSymbols) {\n return target\n }\n\n for (const arg of args) {\n const names = getSymbols(arg)\n\n for (const key of names) {\n if (isEnumerable.call(arg, key)) {\n target[key] = arg[key]\n }\n }\n }\n return target\n}\n\nfunction isObject(val) {\n return 'function' === typeof val || '[object Object]' === toString.call(val) || Array.isArray(val)\n}\n\nconst assignDeep = (_target, ...args) => {\n let target = _target\n let i = 0\n if (isPrimitive(target)) target = args[i++]\n if (!target) target = {}\n for (; i < args.length; i++) {\n if (isObject(args[i])) {\n for (const key of Object.keys(args[i])) {\n if (isObject(target[key]) && isObject(args[i][key])) {\n assignDeep(target[key], args[i][key])\n } else {\n target[key] = args[i][key]\n }\n }\n assignSymbols(target, args[i])\n }\n }\n return target\n}\n\nfunction isPrimitive(val) {\n return 'object' === typeof val ? null === val : 'function' !== typeof val\n}\n\nexport default assignDeep\n"],"names":["ConvertToBasicError","SchemaRules","questionAnswerRegExp","RegExp","BasicFilters","_this","options","arguments","length","undefined","_classCallCheck","_filterEq","f1","f2","is","Object","keys","filter","k","reduce","res","Array","af1","af2","sa","la","v","includes","String","toLowerCase","this","operators","clusters","surveySchema","deepAllowed","longAllowed","tagsAllowed","tagsSentimentsAllowed","isAdmin","arrTraitsList","traits","t","type","map","id","toUpperCase","arrTraits","trait","_ref","_ref$variables","variables","_ref$pipingVariables","pipingVariables","_ref$customVariables","customVariables","arrVariables","concat","_toConsumableArray","entries","_ref2","_ref3","_slicedToArray","name","variable","key","value","_this2","tree","filterGroups","convertToGroups","g","_treeToFilter","acc","arr","_transformFilterGroup","root","isArray","_acc","_cur","assign","shift","flatMap","r","isBasic","basicKeys","index","errors","every","flattenFilter","filters","_mergeBasicFilter","_cleanUpMergedFilter","forEach","_getQuestionTypeByRef","basic","_isBasicTraitFilter","_isBasicVariableFilter","_isBasicTagFilter","_filterGroups$reduce","_ref4","_ref5","checkedKeys","offKeys","apply","hasOwn","getIn","_filterGroups$reduce2","sortedCheckedKeys","uniq","sort","sflag","isEqual","slice","_surveySchema$variabl","_surveySchema$pipingV","_surveySchema$customV","x","_key$match2","match","p","ref","isVirtual","isXpert","isPreQ","visualPosition","parseInt","virtual","xquestions","find","q","questions","pre_type","visual_position","_ref6","_getQuestionByRef","variant","foo","prototype","vv","raw","some","minAge","_minAgeRangeLowerBound","maxAge","_maxAgeRangeUpperBound","ranges","values","replace","split","Number","i1","indexOf","i2","_defineProperty","from","_","i","traitKey","_ref9","refsList","hasOwnProperty","call","traitValue","_valueToCase","_this$_maxAgeRangeLow2","_maxAgeRangeLowerBound","maxAgeRange","all","val","_ref10","_surveySchema$refsLis","_surveySchema$variabl2","_surveySchema$pipingV2","_surveySchema$customV2","schemaVars","long","vrbl","casecmp","_key$split2","token","_ref11","sentiments","_this$surveySchema$ta","tags","manual","question","answerVariants","batches","b","position","av","parseFloat","text","join","sq","bPos","filterValues","filter_values","isNaN","TypeError","j","test","responses","a","full","_ref12","_ref13","answer","_isBasicQuestionPSFilter","_isBasicQuestionVKFilter","_isBasicQuestionHMFilter","NAME","obj","_this$surveySchema","_this$surveySchema$va","_this$surveySchema$pi","_this$surveySchema$cu","path","setIn","push","splice","m","_this$_parseIdentifie","_parseIdentifier","node","operator","left","right","_parseBinaryExpression","assignDeep","_identifierToFilter","argument","elements","scope","_this3","object","property","groupsMerge","_this4","_parseTagExpression","_this5","inverse","_ref15","_parseTagsExpression","opeator","_surveySchema$variabl3","_surveySchema$pipingV3","_surveySchema$customV3","item","Math","max","min","_surveySchema$variabl4","_surveySchema$pipingV4","_surveySchema$customV4","_this$_parseIdentifie3","qUid","questionClusters","title","cluster","cl","collator","uid","minAgeRange","_this6","checkDiffs","diff","result","filterObject","_this6$_maxAgeRangeLo2","assocPath","_step","assets","c","qid","negatives","_iterator","_createForOfIteratorHelper","_ret","_loop","negative","s","n","done","err","e","f","_isBasicQuestionFilter","omit","str","opt","dim","_ranges","Boolean","h","ceil","unary","_step2","hp","state","region","_iterator2","_this7","range","toString","_ref17","sw","_loop2","_ref16","_Object$entries","_i","_key","_value","_transformString","_this8","_ref18","_ref18$variables","_ref18$pipingVariable","_ref18$customVariable","_step3","_iterator3","_loop3","_v","_i2","_values2","_convertToDefaultAdvanced","_this9","_ref19","_ref20","_convertToAgeAdvanced","_convertToStateRegionAdvanced","_surveySchema$variabl5","_surveySchema$pipingV5","_surveySchema$customV5","_convertToQuestionAdvanced","groups","Colors","_random","random","rgbToHex","rgb","hex","floor","hexToRgb","_hex","rgbToHsl","l","d","hslToRgb","hue2rgb","_t","hexToHsl","hslToHex","hsl","hexToRgba","_a","colorsBlend","c1","c2","pr","r1","r2","g1","g2","b1","b2","colorsGradients","colorStart","colorEnd","colorCount","start","end","saida","transformHex","matrix","randomHex","sMin","sMax","lMin","lMax","harmonizedParams","complementary","step","split_complementary","triadic","tetradic","analogous","analogous_hue","analogous_random","RANDOM_METHODS","RANDOM_METHODS_D","harmonized","method","reverse","_harmonizedParams$met","colors","List","color","size","get","monochromatic","randomTypes","calculate","total","randomTypesIndex","mapSearchDataForFetch","_ref$currentPage","currentPage","_ref$pageSize","pageSize","_ref$includeSchema","includeSchema","_ref$query","query","_ref$selectedQuestion","selectedQuestion","DEFAULT_SELECTED_QUESTION","_ref$orderBy","orderBy","_ref$orderDirection","orderDirection","_ref$isQAMode","isQAMode","_ref$nocache","nocache","_ref$includeFilter","includeFilter","_ref$flattenAnswers","flattenAnswers","_ref$uidsToApprove","uidsToApprove","_ref$responsesOptions","responsesOptions","search","data","page","qaMode","qaModeApprove","ret","includeAssets","survey","reportVirtual","reportSchema","questionsList","getQuestionsOptionsList","toJS","searchToFilterLogic","da","cleanSearchData","getDottedQuestionName","order","direction","convertValuesToTree","option","valueName","cur","subkey","convertTreeToValues","o","findIndex","Intl","Collator","sensitivity","updateIn","mutator","lastIndex","array","element","Type","target","constructor","assocPathRecur","properties","omitted","pick","picked","compare","arraycmp","createErrorType","initFunction","E","message","Error","captureStackTrace","stack","create","generateUID","Date","now","round","encodeText","decodeText","tenPow","pow","formatAmounts","attr","toFixed","_attr","ParseError","ParserTypeError","ParserTimeoutError","defaultProp","Symbol","HEATMAP_CLUSTER","RANGE_ID","rangeRegExp","REF_ID","baseGrammar","lex","macros","startConditions","INITIAL","inclusive","rules","PARENTHESES","ebnf","expressions","statement","grammarBNFtree","tag","tag_path","tag_path_list","bref","ne","prec","te","str_list","list","removeQuotes","saveArray","savePlain","el","memberExpressionFromString","lastIndexOf","computed","$1","$2","prop","parseMemberExpression","logicalExpressionNode","parseRangePattern","callback","yy","alias","subtype","location","initialAlias","level","div","Infinity","startSym","leftPart","rightPart","endSym","limits","comma","isoDateRegexps","rgxp","normalizeISODate","regex","dateString","toISOString","BOOLEAN_OPERATORS","NUMERIC_OPERATORS","saveRef","_options$clusters","_options$geoTraitsRef","geoTraitsRefs","_options$allowUndefs","allowUndefs","_options$saveRefs","saveRefs","addRefPosition","refs","positions","addTagPosition","_ref7","subText","lcAlias","scopeQid","clusterChecker","clusterNode","saveTokensFromParser","_ref8","parser","tokens","lexDebugger","parenthesesDepth","lexerStack","st","tokenPosition","tokenName","tokenText","expected","_initParser","_this$options","getSurveySchema","insertPosVariables","insertPosTraits","textTraitsList","textTraits","geoTraits","numTraits","_ref9$variables","_ref9$pipingVariables","_ref9$customVariables","_reduce","_ref14","textVariables","numVariables","_reduce2","grammar","JSON","parse","stringify","rule","jison","_getParser","_getGrammar","lexer","parseError","hash","_ref16$filter","_ref16$allowUndefs","_ref16$fixErrors","fixErrors","_ref16$saveTokens","saveTokens","_ref16$numberAllowed","numberAllowed","_ref16$clusters","expression","expressionText","trim","isInteger","status","lexDebuggerReduceTokens","parseRef","error","Function","_ref18$type","_ref18$location","retryCount","retryLimit","tryFixExpression","jisonError","errorMessage","errorSubstringEllipsis","jisonParseError","unassociativeOp","operatorPrecedenceList","operatorStringMap","not_in","tag_eq","tag_neq","tag_in","operatorToString","operatorPrecedence","gr","stackTop","parenthesize","checkAllowedTime","inception","findDeepOperator","op","newStack","unaryExpressionNode","prefix","operatorsInverse","in","_flattenInShape","_objectSpread","_flatten","parent","cleanUp","flatten","_unused","traitsOrder","convertQuotas","quotas","target_market","_q","label","filtered","convertTraits","kind","locale","en","sortOrder","names","singularNames","isExternalSurvey","class","version","REJECTED_OPTIONS","Map","render","ANSWER_VARIANTS_COMMENTABLE","QUESTIONS_ORDER_OPTIONS","DEFAULT_QUESTIONS_ORDER","SENTIMENTS","sentiment","ORDER_BY_OPTIONS","isSimple","defaultOrder","description","notForType","forType","ORDER_BY_OPTIONS_IMAGES","DEFAULT_ORDER_BY","DEFAULT_ORDER_DIRECTION","ORIGINALS","CORRECTIONS","CORRECTED_SPELLING","PER_PAGE_OPTIONS","QA_PER_PAGE_OPTIONS","IMAGE_RESPONSES_PER_PAGE_OPTIONS","DEFAULT_PER_PAGE","DEFAULT_PER_PAGE_QA","DEFAULT_PER_PAGE_IMAGE_RESPONSES","DEFAULT_PER_PAGE_VIDEO_RESPONSES","DEFAULT_FETCH_TIMEOUT","FETCH_TIMEOUT_STEP","SIDEBAR_HIDDEN_TAG_TYPES","HIDDEN_TAG_TYPES","ALLOWED_HTML_TAGS","PIPING_MASK_REGEX","JUNK_REGEX","QUESTION_TITLE_PIPING_THUMB_WIDTH","QUESTION_TITLE_PIPING_THUMB_HEIGHT","QUESTION_TITLE_PIPING_IMAGE_WIDTH","QUESTION_TITLE_PIPING_IMAGE_HEIGHT","QUESTION_TITLE_PIPING_IMAGE_MIN_WIDTH","QUESTION_TITLE_PIPING_IMAGE_MAX_WIDTH","QUESTION_TITLE_PIPING_IMAGE_MIN_HEIGHT","QUESTION_TITLE_PIPING_IMAGE_MAX_HEIGHT","TAG_MIN_LENGTH","TAG_MAX_LENGTH","kudosText","DEFAULT_COMMENT_STATUSES_STATE","kudos","reject","approve","MASS_OPERATION_HASH","delete","update","SENTIMENTS_ICON_HASH","Mixed","Positive","Negative","None","Neutral","DEFAULT_SEARCH_STATE","isSurveyOwner","isSurveyGuest","isQALoading","isLoading","isProcessing","isShowAllTraits","isShowAllTools","isShowSentiments","isResponseOrder","isPreserveState","isHighlightSearchTerms","isFetchDataNeeded","isTagsManagementDisabled","isSentimentsManagementDisabled","isQAModeDisabled","isQAModeDelayed","isUpdateQATotal","qaCounter","qaTotal","qaAction","qaProcessedResponseId","disabled","correctionsLevel","CSRF","pageData","processedQA","tagsList","sentimentOptions","tagsData","request","totalPages","totalComments","totalImageResponses","totalVideoResponses","totalResponses","totalRespondents","qaModeCounter","AytmLocale","referenceWarning","referenceError","questionDoesntExist","traitDoesntExist","syntaxError","clusterDoesntExist","notValidRule","enableAutocomplete","disableAutocomplete","CUSTOM_QUESTION_REG","getSurvey","window","removeLogicFromText","getLastNodePath","itemKey","questionByPath","surveyObj","qn","questionByPosition","extractQuestionPosition","questionIdToPosition","mode","pq_length","questionPositionToId","questionOldIdToId","oldId","pathQuestionIdToOld","subItems","pathQuestionOldIdToId","responseTagsByPath","response","re","input","mapReportSearchQuery","getSearchInputOptions","questionOptions","_survey$questions","questionObj","batch","comments","getAnswerText","lvl","isXpertOrVirtualType","xpertOrVirtual","isVideoOrImageType","getQuestionObject","image","questionNumber","isFullQuestionName","isOptionHidden","questionText","hasCommentableAnswerVariants","subNode","hasSpecificCommentableAnswerVariants","getQuestionType","chart","scripts","iv","blocks","getAnswerVariants","_ref2$text","_ref2$lvl","_ref2$flag","flag","_ref2$isFullQuestionN","_ref2$isOmitCheck","isOmitCheck","getBatches","titleAdded","pos","_getQuestionType2","getQuestionOptions","questionID","questionPosition","_question$image","questionImage","questionArgs","args","_getQuestionType3","header","specialMode","schemaKey","videoResponse","getDownloadUrl","original","url","mp4File","arrayToHash","defaultVal","tagValue","entity","tagDisplayValue","startsWith","getSpellcheckerDiff","fixedText","Diff","part","_res$slice2","back2","back1","added","removed","highlightSearchString","searchStringArr","word","_arr","strArray","w","escapeRegExp","Set","getSubQuestionsByPath","subQuestions","quotedStringToAytmLogic","dq","cq","cdq","separator","subSeparator","logic","parts","queryItem","addSearchStringArrToSubitems","subitems","subStr","subitem","subQuestion","reg","logicTextFiltered","logicText","responseUidArr","hmClusterObj","clusterVal","clusterArr","pinItem","entityType","entityArr","hasJunk","filterLogicToSearch","filterData","getRejectsAndKudos","extra","revertable","getAnswerByPath","hasNestedAnswers","answerByPath","hasNestedQuestions","nodeOptions","getIsDefaultReportParams","params","specialType","_params$query","_params$selectedQuest","_params$orderBy","_params$orderDirectio","getDefaultData","surveyData","totals","cs","showSpellcheckerDiff","style","classNames","checkSentimentStatus","pathArr","getSentiment","getNestedSentiment","getLastItemPath","questionsKeys","lastAnswer","keyName","getLastSentimentValue","lastItemPath","getNodeCommentablePaths","tagType","pathPrefix","newList","ikey","getCommentsCount","count","countOnPage","getTagOccurrence","commentablePaths","tagItem","tagObj","getTagListObject","isForSelect","noCount","tagCounters","getTagsList","_ref4$excludeTypes","excludeTypes","_ref4$isForSelect","_ref4$noCount","_ref4$tagCounters","_ref4$cs","_ref4$selectedQuestio","_ref4$isSentimentsMan","sameTagToMerge","as","itemToMerge","itm","junkTag","mapTagsToCounters","counters","fixPathByQuestionType","questionType","pop","stripTags","_html","_tags","_tag","_len","_re","preSanitize","sanitizeReactSelectOption","__isNew__","maybePluralize","noun","mergePageData","retItem","convertBasicToAdvanced","joinOperator","groupedObject","convertAdvancedToBasic","getTagsSidebarActionName","action","getTagsSidebarItemOptionsList","selectedAction","onActionCancel","onActionConfirm","onActionClick","React","className","onClick","hasVirtualOrXpert","isVirtualOrXpertInScope","isOnlyVirtualOrXpert","hasDisabledSentimentInScope","subQuestionsList","isDisabledSentimentInScope","isOnlyDisabledSentiment","currentValue","isEnumerable","propertyIsEnumerable","getSymbols","getOwnPropertySymbols","assignSymbols","isObject","_args","arg","_target","_len2","_key2","_Object$keys"],"sourceRoot":""}