{
  "version": 3,
  "sources": ["ssg:https://asset.29cm.co.kr/contents/framer/components/primitives/Schedulable/Schedulable.types.js", "ssg:https://asset.29cm.co.kr/contents/framer/components/primitives/Schedulable/Schedulable.utils.js", "ssg:https://asset.29cm.co.kr/contents/framer/components/primitives/Schedulable/Schedulable.hooks.js", "ssg:https://asset.29cm.co.kr/contents/framer/components/primitives/Schedulable/Schedulable.js", "ssg:https://framerusercontent.com/modules/bv2yzxT3iEOjAMleVPGP/8UbCcuQA0I1fhMsF0CR6/Schedulable.js"],
  "sourcesContent": ["var ScheduleType = /* @__PURE__ */ ((ScheduleType2) => {\n  ScheduleType2[ScheduleType2[\"MANUAL\"] = 0] = \"MANUAL\";\n  ScheduleType2[ScheduleType2[\"REPEAT\"] = 1] = \"REPEAT\";\n  return ScheduleType2;\n})(ScheduleType || {});\nexport {\n  ScheduleType\n};\n", "import { createKRTimeZoneDate } from \"../../../utils/createUTCDate.js\";\nimport { ScheduleType } from \"./Schedulable.types.js\";\nimport { isAbove, composeFramerDateTime } from \"../../../utils/date.js\";\nimport { isWithinInterval } from \"../../../node_modules/date-fns/isWithinInterval.js\";\nimport { differenceInCalendarDays } from \"../../../node_modules/date-fns/differenceInCalendarDays.js\";\nconst findCurrentSchedule = (schedules) => {\n  const now = createKRTimeZoneDate();\n  return schedules.find((schedule, index) => {\n    const {\n      scheduledAt\n    } = schedule;\n    const nextSchedule = schedules[index + 1];\n    const nextScheduledAt = (nextSchedule == null ? void 0 : nextSchedule.scheduledAt) ? nextSchedule.scheduledAt : null;\n    const hasNextSchedule = nextScheduledAt != null;\n    const isLast = !hasNextSchedule && isAbove(now, scheduledAt);\n    const isWithin = hasNextSchedule && isWithinInterval(now, {\n      start: scheduledAt,\n      end: nextScheduledAt\n    });\n    return isLast || isWithin;\n  });\n};\nconst toSchedules = (scheduleType, manualSchedules, repeatSchedules) => {\n  const schedules = [];\n  switch (scheduleType) {\n    case ScheduleType.MANUAL:\n      schedules.push(...convertManualSchedulesToSchedules(manualSchedules));\n      break;\n    case ScheduleType.REPEAT:\n      schedules.push(...convertRepeatSchedulesToSchedules(repeatSchedules));\n      break;\n  }\n  return sortSchedulesAscending(schedules);\n};\nconst convertManualSchedulesToSchedules = (manualSchedules) => {\n  return manualSchedules.map(({\n    scheduledAt,\n    sequence\n  }) => ({\n    scheduledAt: composeFramerDateTime(scheduledAt),\n    sequence\n  }));\n};\nconst convertRepeatSchedulesToSchedules = (repeatSchedules) => {\n  const isMultiple = repeatSchedules.length > 1;\n  return repeatSchedules.flatMap((repeatSchedule, repeatScheduleIndex) => {\n    const {\n      startAt,\n      endAt,\n      repeatAt\n    } = repeatSchedule;\n    const diff = differenceInCalendarDays(endAt, startAt);\n    return Array.from({\n      length: diff + 1\n    }, (_, index) => {\n      const date = createKRTimeZoneDate(startAt);\n      const {\n        hours,\n        minutes,\n        seconds\n      } = repeatAt;\n      date.setDate(date.getDate() + index);\n      date.setHours(hours, minutes, seconds);\n      return {\n        scheduledAt: date,\n        sequence: (isMultiple ? repeatScheduleIndex : index) + 1\n      };\n    });\n  });\n};\nconst sortSchedulesAscending = (schedules) => {\n  return [...schedules].sort((x, y) => x.scheduledAt.getTime() - y.scheduledAt.getTime());\n};\nexport {\n  findCurrentSchedule,\n  toSchedules\n};\n", "import { useMemo, useState } from \"react\";\nimport { toSchedules, findCurrentSchedule } from \"./Schedulable.utils.js\";\nimport useInterval from \"../../../node_modules/react-use/esm/useInterval.js\";\nconst MS_IN_SECOND = 1e3;\nconst useCurrentSchedule = (scheduleType, manualSchedules, repeatSchedules) => {\n  const schedules = useMemo(() => toSchedules(scheduleType, manualSchedules, repeatSchedules), [scheduleType, manualSchedules, repeatSchedules]);\n  const [schedule, setSchedule] = useState(findCurrentSchedule(schedules));\n  useInterval(() => {\n    const current = findCurrentSchedule(schedules);\n    const isEquals = (schedule == null ? void 0 : schedule.scheduledAt) === (current == null ? void 0 : current.scheduledAt);\n    if (isEquals) {\n      return;\n    }\n    setSchedule(current);\n  }, MS_IN_SECOND);\n  return schedule;\n};\nexport {\n  useCurrentSchedule\n};\n", "import { jsx } from \"react/jsx-runtime\";\nimport { withCSS, addPropertyControls, ControlType } from \"framer\";\nimport { ScheduleType } from \"./Schedulable.types.js\";\nimport { useCurrentSchedule } from \"./Schedulable.hooks.js\";\nimport { Placeholder } from \"../../@shared/Placeholder/Placeholder.js\";\nimport { useIsMounted } from \"../../../hooks/useIsMounted.js\";\nconst COMPONENT_NAME = \"schedulable\";\nconst css = [`\n    .${COMPONENT_NAME}-container {\n      width: 100%;\n      height: auto;\n    }\n  `, `\n    .${COMPONENT_NAME}-container > div {\n      width: 100% !important;\n    }\n  `];\nconst Schedulable = withCSS(({\n  scheduleType,\n  schedules,\n  repeatSchedules,\n  components\n}) => {\n  const schedule = useCurrentSchedule(scheduleType, schedules, repeatSchedules);\n  const isMounted = useIsMounted();\n  const hasSequence = (schedule == null ? void 0 : schedule.sequence) !== void 0;\n  if (components.length === 0) {\n    return /* @__PURE__ */ jsx(Placeholder, {});\n  }\n  if (!isMounted) {\n    return null;\n  }\n  return /* @__PURE__ */ jsx(\"div\", { className: `${COMPONENT_NAME}-container`, children: hasSequence ? components[schedule.sequence - 1] : null }, `schedulable-${(schedule == null ? void 0 : schedule.sequence) ?? 0}`);\n}, css);\naddPropertyControls(Schedulable, {\n  scheduleType: {\n    type: ControlType.Enum,\n    title: \"\uB178\uCD9C \uC608\uC57D \uC720\uD615\",\n    options: [ScheduleType.MANUAL, ScheduleType.REPEAT],\n    optionTitles: [\"\uC218\uB3D9\", \"\uBC18\uBCF5\"],\n    displaySegmentedControl: true\n  },\n  schedules: {\n    hidden: ({\n      scheduleType\n    }) => scheduleType !== ScheduleType.MANUAL,\n    title: \"\uC218\uB3D9 \uB178\uCD9C \uC77C\uC815 \uBAA9\uB85D\",\n    type: ControlType.Array,\n    control: {\n      title: \"\uB0A0\uC9DC \uBC0F \uC694\uC18C \uBC88\uD638\",\n      type: ControlType.Object,\n      controls: {\n        scheduledAt: {\n          title: \"\uC694\uC18C \uB178\uCD9C \uC2DC\uC791\uC77C\uC2DC\",\n          type: ControlType.Object,\n          controls: {\n            date: {\n              type: ControlType.Date,\n              title: \"\uB0A0\uC9DC\",\n              defaultValue: (/* @__PURE__ */ new Date()).toString()\n            },\n            hours: {\n              type: ControlType.Number,\n              title: \"\uC2DC\",\n              description: \"0 ~ 23\uC2DC \uAE30\uC900\",\n              defaultValue: 0,\n              min: 0,\n              max: 23,\n              unit: \"\uC2DC\",\n              step: 1,\n              displayStepper: true\n            },\n            minutes: {\n              type: ControlType.Number,\n              title: \"\uBD84\",\n              defaultValue: 0,\n              min: 0,\n              max: 59,\n              unit: \"\uBD84\",\n              step: 1,\n              displayStepper: true\n            },\n            seconds: {\n              type: ControlType.Number,\n              title: \"\uCD08\",\n              defaultValue: 0,\n              min: 0,\n              max: 59,\n              unit: \"\uCD08\",\n              step: 1,\n              displayStepper: true\n            }\n          }\n        },\n        sequence: {\n          title: \"\uC694\uC18C \uBC88\uD638\",\n          type: ControlType.Number,\n          defaultValue: 1,\n          unit: \"\uBC88\uC9F8\",\n          min: 1,\n          displayStepper: true\n        }\n      }\n    }\n  },\n  repeatSchedules: {\n    hidden: ({\n      scheduleType\n    }) => scheduleType !== ScheduleType.REPEAT,\n    type: ControlType.Array,\n    title: \"\uBC18\uBCF5 \uB178\uCD9C \uC77C\uC815 \uBAA9\uB85D\",\n    description: \"\uD558\uB098\uC758 \uC77C\uC815\uB9CC \uC785\uB825\uD55C \uACBD\uC6B0 - \uD558\uB098\uC758 \uC77C\uC815\uC5D0 \uB530\uB77C \uC694\uC18C\uB4E4\uC774 \uBC18\uBCF5\uB429\uB2C8\uB2E4.\\nex. \uC77C\uC815 A \uC5D0 \uB530\uB77C \uC694\uC18C X, Y \uBC18\uBCF5\\n\\n\uC5EC\uB7EC \uC77C\uC815\uC744 \uC785\uB825\uD55C \uACBD\uC6B0 - \uC5EC\uB7EC \uAC1C\uC758 \uC77C\uC815\uC5D0 \uB530\uB77C \uC694\uC18C\uB4E4\uC774 \uAC01\uAC01 \uBC18\uBCF5\uB429\uB2C8\uB2E4.\\nex. \uC77C\uC815 A \uC5D0 \uC694\uC18C X, \uC77C\uC815 B \uC5D0 \uC694\uC18C Y \uBC18\uBCF5\",\n    control: {\n      type: ControlType.Object,\n      title: \"\uBC18\uBCF5 \uC77C\uC815\",\n      controls: {\n        startAt: {\n          type: ControlType.Date,\n          title: \"\uC2DC\uC791\uC77C\",\n          description: \"\uBC18\uBCF5 \uC77C\uC815\uC774 \uC2DC\uC791\uB418\uB294 \uB0A0\uC9DC\uB97C \uC785\uB825\uD569\uB2C8\uB2E4.\",\n          defaultValue: (/* @__PURE__ */ new Date()).toString()\n        },\n        endAt: {\n          type: ControlType.Date,\n          title: \"\uC885\uB8CC\uC77C\",\n          description: \"\uBC18\uBCF5 \uC77C\uC815\uC774 \uC885\uB8CC\uB418\uB294 \uB0A0\uC9DC\uB97C \uC785\uB825\uD569\uB2C8\uB2E4.\",\n          defaultValue: (/* @__PURE__ */ new Date()).toString()\n        },\n        repeatAt: {\n          type: ControlType.Object,\n          title: \"\uBC18\uBCF5 \uC2DC\uC791 \uC2DC\uAC04\",\n          description: \"\uC77C\uC815\uC774 \uB9E4\uC77C \uBC18\uBCF5\uB418\uB294 \uC2DC\uAC04\uC744 \uC785\uB825\uD569\uB2C8\uB2E4.\\nex) 10\uC2DC 0\uBD84 0\uCD08 \uC785\uB825 -> \uB9E4\uC77C \uC624\uC804 10\uC2DC\uC5D0 \uCEF4\uD3EC\uB10C\uD2B8 \uBCC0\uACBD\",\n          controls: {\n            hours: {\n              type: ControlType.Number,\n              title: \"\uC2DC\",\n              defaultValue: 0,\n              min: 0,\n              max: 23,\n              unit: \"\uC2DC\",\n              step: 1,\n              displayStepper: true\n            },\n            minutes: {\n              type: ControlType.Number,\n              title: \"\uBD84\",\n              defaultValue: 0,\n              min: 0,\n              max: 59,\n              unit: \"\uBD84\",\n              step: 1,\n              displayStepper: true\n            },\n            seconds: {\n              type: ControlType.Number,\n              title: \"\uCD08\",\n              defaultValue: 0,\n              min: 0,\n              max: 59,\n              unit: \"\uCD08\",\n              step: 1,\n              displayStepper: true\n            }\n          }\n        }\n      }\n    }\n  },\n  components: {\n    title: \"\uC694\uC18C \uBAA9\uB85D\",\n    description: \"\uCD5C\uC0C1\uB2E8\uBD80\uD130 1\uBC88\uC9F8\uB85C \uC2DC\uC791\",\n    type: ControlType.Array,\n    control: {\n      title: \"\uC694\uC18C\",\n      type: ControlType.ComponentInstance\n    }\n  }\n});\nexport {\n  Schedulable\n};\n", "import{Schedulable}from\"https://asset.29cm.co.kr/contents/framer/components/primitives/Schedulable/Schedulable.js\";Schedulable.displayName=\"Schedulable\";/**\n * @framerDisableUnlink\n */export default Schedulable;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Schedulable\",\"slots\":[],\"annotations\":{\"framerDisableUnlink\":\"\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Schedulable.map"],
  "mappings": "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",
  "names": ["ScheduleType", "ScheduleType2", "findCurrentSchedule", "schedules", "now", "createKRTimeZoneDate", "schedule", "index", "scheduledAt", "nextSchedule", "nextScheduledAt", "hasNextSchedule", "isLast", "isAbove", "isWithin", "isWithinInterval", "toSchedules", "scheduleType", "manualSchedules", "repeatSchedules", "ScheduleType", "convertManualSchedulesToSchedules", "convertRepeatSchedulesToSchedules", "sortSchedulesAscending", "sequence", "composeFramerDateTime", "isMultiple", "repeatSchedule", "repeatScheduleIndex", "startAt", "endAt", "repeatAt", "diff", "differenceInCalendarDays", "_", "date", "hours", "minutes", "seconds", "x", "y", "MS_IN_SECOND", "useCurrentSchedule", "scheduleType", "manualSchedules", "repeatSchedules", "schedules", "se", "toSchedules", "schedule", "setSchedule", "ye", "findCurrentSchedule", "useInterval", "current", "COMPONENT_NAME", "css", "Schedulable", "withCSS", "scheduleType", "schedules", "repeatSchedules", "components", "schedule", "useCurrentSchedule", "isMounted", "useIsMounted", "hasSequence", "p", "Placeholder", "addPropertyControls", "ControlType", "ScheduleType", "Schedulable", "Schedulable_default"]
}
