analytica-frontend-lib
Version:
Repositório público dos componentes utilizados nas plataformas da Analytica Ensino
195 lines (188 loc) • 7 kB
JavaScript
;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// src/utils/utils.ts
var utils_exports = {};
__export(utils_exports, {
areFiltersEqual: () => areFiltersEqual,
cn: () => cn,
formatDateToBrazilian: () => formatDateToBrazilian,
formatQuestionNumbers: () => formatQuestionNumbers,
formatTimeSpent: () => formatTimeSpent,
getSelectedIdsFromCategories: () => getSelectedIdsFromCategories,
getStatusBadgeConfig: () => getStatusBadgeConfig,
getSubjectColorWithOpacity: () => getSubjectColorWithOpacity,
mapQuestionTypeToEnum: () => mapQuestionTypeToEnum,
mapQuestionTypeToEnumRequired: () => mapQuestionTypeToEnumRequired,
syncDropdownState: () => syncDropdownState,
toggleArrayItem: () => toggleArrayItem,
toggleSingleValue: () => toggleSingleValue
});
module.exports = __toCommonJS(utils_exports);
var import_clsx = require("clsx");
var import_tailwind_merge = require("tailwind-merge");
// src/utils/dropdown.ts
var syncDropdownState = (open, isActive, setActiveStates, key) => {
if (!open && isActive) {
setActiveStates((prev) => ({ ...prev, [key]: false }));
}
};
// 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] = category?.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 arraysEqual(a, b, comparator) {
if (a.length !== b.length) return false;
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]);
}
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.knowledgeIds, filters2.knowledgeIds) && arraysEqual(filters1.topicIds, filters2.topicIds) && arraysEqual(filters1.subtopicIds, filters2.subtopicIds) && arraysEqual(filters1.contentIds, filters2.contentIds);
}
// 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 */,
LIGAR_PONTOS: "LIGAR_PONTOS" /* LIGAR_PONTOS */,
PREENCHER: "PREENCHER" /* PREENCHER */
};
return typeMap[upperType] ?? fallback ?? null;
}
function mapQuestionTypeToEnumRequired(type, fallback = "ALTERNATIVA" /* ALTERNATIVA */) {
return mapQuestionTypeToEnum(type, fallback) ?? fallback;
}
// src/types/activityDetails.ts
var STUDENT_ACTIVITY_STATUS = {
CONCLUIDO: "CONCLUIDO",
AGUARDANDO_CORRECAO: "AGUARDANDO_CORRECAO",
AGUARDANDO_RESPOSTA: "AGUARDANDO_RESPOSTA",
NAO_ENTREGUE: "NAO_ENTREGUE"
};
// src/utils/activityDetailsUtils.ts
var getStatusBadgeConfig = (status) => {
const configs = {
[STUDENT_ACTIVITY_STATUS.CONCLUIDO]: {
label: "Conclu\xEDdo",
bgColor: "bg-green-50",
textColor: "text-green-800"
},
[STUDENT_ACTIVITY_STATUS.AGUARDANDO_CORRECAO]: {
label: "Aguardando Corre\xE7\xE3o",
bgColor: "bg-yellow-50",
textColor: "text-yellow-800"
},
[STUDENT_ACTIVITY_STATUS.AGUARDANDO_RESPOSTA]: {
label: "Aguardando Resposta",
bgColor: "bg-blue-50",
textColor: "text-blue-800"
},
[STUDENT_ACTIVITY_STATUS.NAO_ENTREGUE]: {
label: "N\xE3o Entregue",
bgColor: "bg-red-50",
textColor: "text-red-800"
},
default: {
label: "Desconhecido",
bgColor: "bg-gray-50",
textColor: "text-gray-800"
}
};
return configs[status] ?? configs.default;
};
var formatTimeSpent = (seconds) => {
const hours = Math.floor(seconds / 3600);
const minutes = Math.floor(seconds % 3600 / 60);
const secs = seconds % 60;
return `${String(hours).padStart(2, "0")}:${String(minutes).padStart(2, "0")}:${String(secs).padStart(2, "0")}`;
};
var formatQuestionNumbers = (numbers) => {
if (numbers.length === 0) return "-";
return numbers.map((n) => String(n + 1).padStart(2, "0")).join(", ");
};
var formatDateToBrazilian = (dateString) => {
const date = new Date(dateString);
const day = String(date.getUTCDate()).padStart(2, "0");
const month = String(date.getUTCMonth() + 1).padStart(2, "0");
const year = date.getUTCFullYear();
return `${day}/${month}/${year}`;
};
// src/utils/utils.ts
function cn(...inputs) {
return (0, import_tailwind_merge.twMerge)((0, import_clsx.clsx)(inputs));
}
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;
}
}
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
areFiltersEqual,
cn,
formatDateToBrazilian,
formatQuestionNumbers,
formatTimeSpent,
getSelectedIdsFromCategories,
getStatusBadgeConfig,
getSubjectColorWithOpacity,
mapQuestionTypeToEnum,
mapQuestionTypeToEnumRequired,
syncDropdownState,
toggleArrayItem,
toggleSingleValue
});
//# sourceMappingURL=index.js.map