analytica-frontend-lib
Version:
Repositório público dos componentes utilizados nas plataformas da Analytica Ensino
175 lines (149 loc) • 7.54 kB
JavaScript
;Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }// src/utils/utils.ts
var _clsx = require('clsx');
var _tailwindmerge = require('tailwind-merge');
// src/utils/dropdown.ts
var syncDropdownState = (open, isActive, setActiveStates, key) => {
if (!open && isActive) {
setActiveStates((prev) => ({ ...prev, [key]: false }));
}
};
// src/utils/arraysEqual.ts
function arraysEqual(a, b, comparator) {
if (a.length !== b.length) return false;
if (a.length === 0 && b.length === 0) return true;
if (comparator) {
const sortedA2 = [...a].sort(comparator);
const sortedB2 = [...b].sort(comparator);
return sortedA2.every((val, index) => val === sortedB2[index]);
}
const sortedA = [...a].sort((x, y) => String(x).localeCompare(String(y)));
const sortedB = [...b].sort((x, y) => String(x).localeCompare(String(y)));
return sortedA.every((val, index) => val === sortedB[index]);
}
// src/utils/activityFilters.ts
function getSelectedIdsFromCategories(categories, keys) {
const result = {};
for (const [outputKey, categoryKey] of Object.entries(keys)) {
const category = categories.find((c) => c.key === categoryKey);
result[outputKey] = _optionalChain([category, 'optionalAccess', _ => _.selectedIds]) || [];
}
return result;
}
function toggleArrayItem(array, item) {
return array.includes(item) ? array.filter((i) => i !== item) : [...array, item];
}
function toggleSingleValue(currentValue, newValue) {
return currentValue === newValue ? null : newValue;
}
function areFiltersEqual(filters1, filters2) {
if (filters1 === filters2) return true;
if (!filters1 || !filters2) return false;
return arraysEqual(filters1.types, filters2.types) && arraysEqual(filters1.bankIds, filters2.bankIds) && arraysEqual(filters1.yearIds, filters2.yearIds) && arraysEqual(filters1.subjectIds, filters2.subjectIds) && arraysEqual(filters1.topicIds, filters2.topicIds) && arraysEqual(filters1.subtopicIds, filters2.subtopicIds) && arraysEqual(filters1.contentIds, filters2.contentIds);
}
function isValidBankYearItem(item, bankIds) {
return !!item && typeof item.id === "string" && typeof item.bankId === "string" && bankIds.includes(item.bankId);
}
function deriveYearIdsFromBankIds(yearItens, bankIds, explicitYearIds) {
if (explicitYearIds.length > 0) {
return explicitYearIds;
}
return yearItens.filter((item) => isValidBankYearItem(item, bankIds)).map((item) => item.id);
}
function mergeYearIdsForSelectedBanks(yearItens, bankIds, explicitYearIds) {
const validYears = yearItens.filter(
(item) => isValidBankYearItem(item, bankIds)
);
const explicitSet = new Set(explicitYearIds);
const result = new Set(explicitYearIds);
for (const bankId of bankIds) {
const yearsForBank = validYears.filter((year) => year.bankId === bankId);
const hasExplicitYear = yearsForBank.some(
(year) => explicitSet.has(year.id)
);
if (!hasExplicitYear) {
yearsForBank.forEach((year) => result.add(year.id));
}
}
return Array.from(result);
}
// src/utils/questionTypeUtils.ts
function mapQuestionTypeToEnum(type, fallback) {
const upperType = type.toUpperCase();
const typeMap = {
ALTERNATIVA: "ALTERNATIVA" /* ALTERNATIVA */,
DISSERTATIVA: "DISSERTATIVA" /* DISSERTATIVA */,
MULTIPLA_ESCOLHA: "MULTIPLA_ESCOLHA" /* MULTIPLA_ESCOLHA */,
VERDADEIRO_FALSO: "VERDADEIRO_FALSO" /* VERDADEIRO_FALSO */,
IMAGEM: "IMAGEM" /* IMAGEM */,
RELACIONAR: "RELACIONAR" /* RELACIONAR */,
PREENCHER_LACUNAS: "PREENCHER_LACUNAS" /* PREENCHER_LACUNAS */
};
return _nullishCoalesce(_nullishCoalesce(typeMap[upperType], () => ( fallback)), () => ( null));
}
function mapQuestionTypeToEnumRequired(type, fallback = "ALTERNATIVA" /* ALTERNATIVA */) {
return _nullishCoalesce(mapQuestionTypeToEnum(type, fallback), () => ( fallback));
}
// src/utils/formatScore.ts
function formatScore(value, scoreType) {
if (scoreType === "tri" /* TRI */) {
return Math.round(value).toString();
}
return `${value.toFixed(1).replace(".", ",")}%`;
}
// src/utils/utils.ts
function cn(...inputs) {
return _tailwindmerge.twMerge.call(void 0, _clsx.clsx.call(void 0, inputs));
}
function formatPercentageRounded(value) {
return `${Math.round(value)}%`;
}
function hexToRgba(hex, opacity) {
const result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
if (!result) return `rgba(107, 114, 128, ${opacity})`;
const r = Number.parseInt(result[1], 16);
const g = Number.parseInt(result[2], 16);
const b = Number.parseInt(result[3], 16);
return `rgba(${r}, ${g}, ${b}, ${opacity})`;
}
function bgClassToCssVar(bgClass) {
return `var(--color-${bgClass.replace("bg-", "")})`;
}
function polarToCartesian(cx, cy, r, angleDeg) {
const rad = (angleDeg - 90) * Math.PI / 180;
return { x: cx + r * Math.cos(rad), y: cy + r * Math.sin(rad) };
}
function describeArc(cx, cy, r, startAngle, endAngle) {
const span = endAngle - startAngle;
if (span >= 359.99) {
const midAngle = startAngle + 180;
const s2 = polarToCartesian(cx, cy, r, startAngle);
const m = polarToCartesian(cx, cy, r, midAngle);
return `M ${cx} ${cy} L ${s2.x} ${s2.y} A ${r} ${r} 0 1 1 ${m.x} ${m.y} A ${r} ${r} 0 1 1 ${s2.x} ${s2.y} Z`;
}
const s = polarToCartesian(cx, cy, r, endAngle);
const e = polarToCartesian(cx, cy, r, startAngle);
const largeArc = span > 180 ? 1 : 0;
return `M ${cx} ${cy} L ${s.x} ${s.y} A ${r} ${r} 0 ${largeArc} 0 ${e.x} ${e.y} Z`;
}
function getSubjectColorWithOpacity(hexColor, isDark) {
if (!hexColor) return void 0;
let color = hexColor.replace(/^#/, "").toLowerCase();
if (isDark) {
if (color.length === 8) {
color = color.slice(0, 6);
}
return `#${color}`;
} else {
let resultColor;
if (color.length === 6) {
resultColor = `#${color}4d`;
} else if (color.length === 8) {
resultColor = `#${color}`;
} else {
resultColor = `#${color}`;
}
return resultColor;
}
}
exports.syncDropdownState = syncDropdownState; exports.arraysEqual = arraysEqual; exports.getSelectedIdsFromCategories = getSelectedIdsFromCategories; exports.toggleArrayItem = toggleArrayItem; exports.toggleSingleValue = toggleSingleValue; exports.areFiltersEqual = areFiltersEqual; exports.deriveYearIdsFromBankIds = deriveYearIdsFromBankIds; exports.mergeYearIdsForSelectedBanks = mergeYearIdsForSelectedBanks; exports.mapQuestionTypeToEnum = mapQuestionTypeToEnum; exports.mapQuestionTypeToEnumRequired = mapQuestionTypeToEnumRequired; exports.formatScore = formatScore; exports.cn = cn; exports.formatPercentageRounded = formatPercentageRounded; exports.hexToRgba = hexToRgba; exports.bgClassToCssVar = bgClassToCssVar; exports.polarToCartesian = polarToCartesian; exports.describeArc = describeArc; exports.getSubjectColorWithOpacity = getSubjectColorWithOpacity;
//# sourceMappingURL=chunk-TN3AYOMV.js.map