{"version":3,"file":"get-visible-columns.cjs","names":[],"sources":["../../../src/components/MonthView/get-visible-columns.ts"],"sourcesContent":["const DAYS_IN_WEEK = 7;\nconst COLUMN_WIDTH = 100 / DAYS_IN_WEEK;\n\n/**\n * Builds a map from a full week-day index (0–6, relative to the first day of\n * the week) to its visible column index. Hidden columns are mapped to -1.\n */\nexport function getVisibleColumnMap(hiddenColumns: number[]): number[] {\n  const hidden = new Set(hiddenColumns);\n  const map: number[] = [];\n  let column = 0;\n\n  for (let index = 0; index < DAYS_IN_WEEK; index += 1) {\n    if (hidden.has(index)) {\n      map.push(-1);\n    } else {\n      map.push(column);\n      column += 1;\n    }\n  }\n\n  return map;\n}\n\nexport interface VisibleColumnSpan {\n  startOffset: number;\n  width: number;\n}\n\n/**\n * Clips a span defined by full week-day indices (`startColumn`–`endColumn`,\n * inclusive) to the visible columns, returning one entry per contiguous run of\n * visible columns. Offsets and widths are expressed in percent of the visible\n * grid width.\n */\nexport function clipSpanToVisibleColumns(\n  startColumn: number,\n  endColumn: number,\n  visibleColumnMap: number[],\n  columnsCount: number\n): VisibleColumnSpan[] {\n  if (columnsCount <= 0) {\n    return [];\n  }\n\n  const spans: VisibleColumnSpan[] = [];\n  let runStart: number | null = null;\n  let runEnd: number | null = null;\n\n  const flush = () => {\n    if (runStart !== null && runEnd !== null) {\n      spans.push({\n        startOffset: (runStart / columnsCount) * 100,\n        width: ((runEnd - runStart + 1) / columnsCount) * 100,\n      });\n      runStart = null;\n      runEnd = null;\n    }\n  };\n\n  for (let index = startColumn; index <= endColumn; index += 1) {\n    const visible = visibleColumnMap[index];\n\n    if (visible === undefined || visible === -1) {\n      flush();\n      continue;\n    }\n\n    if (runStart === null) {\n      runStart = visible;\n    }\n\n    runEnd = visible;\n  }\n\n  flush();\n\n  return spans;\n}\n\nexport { DAYS_IN_WEEK, COLUMN_WIDTH };\n"],"mappings":";;;;;AAOA,SAAgB,oBAAoB,eAAmC;CACrE,MAAM,SAAS,IAAI,IAAI,aAAa;CACpC,MAAM,MAAgB,CAAC;CACvB,IAAI,SAAS;CAEb,KAAK,IAAI,QAAQ,GAAG,QAAA,GAAsB,SAAS,GACjD,IAAI,OAAO,IAAI,KAAK,GAClB,IAAI,KAAK,EAAE;MACN;EACL,IAAI,KAAK,MAAM;EACf,UAAU;CACZ;CAGF,OAAO;AACT;;;;;;;AAaA,SAAgB,yBACd,aACA,WACA,kBACA,cACqB;CACrB,IAAI,gBAAgB,GAClB,OAAO,CAAC;CAGV,MAAM,QAA6B,CAAC;CACpC,IAAI,WAA0B;CAC9B,IAAI,SAAwB;CAE5B,MAAM,cAAc;EAClB,IAAI,aAAa,QAAQ,WAAW,MAAM;GACxC,MAAM,KAAK;IACT,aAAc,WAAW,eAAgB;IACzC,QAAS,SAAS,WAAW,KAAK,eAAgB;GACpD,CAAC;GACD,WAAW;GACX,SAAS;EACX;CACF;CAEA,KAAK,IAAI,QAAQ,aAAa,SAAS,WAAW,SAAS,GAAG;EAC5D,MAAM,UAAU,iBAAiB;EAEjC,IAAI,YAAY,KAAA,KAAa,YAAY,IAAI;GAC3C,MAAM;GACN;EACF;EAEA,IAAI,aAAa,MACf,WAAW;EAGb,SAAS;CACX;CAEA,MAAM;CAEN,OAAO;AACT"}