akfatimeline 1.0.2 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (63) hide show
  1. package/.babelrc +5 -3
  2. package/CHANGELOG.md +35 -0
  3. package/dist/Timeline.js +3277 -1
  4. package/dist/dist/components/Timeline/DatePickerComponent.js +17 -0
  5. package/dist/dist/components/Timeline/DragAndDropHandler.js +35 -0
  6. package/dist/dist/components/Timeline/EventTooltip.js +206 -0
  7. package/dist/dist/components/Timeline/Indicator.js +29 -0
  8. package/dist/dist/components/Timeline/MasterHeader.js +68 -0
  9. package/dist/dist/components/Timeline/Resources.js +53 -0
  10. package/dist/dist/components/Timeline/ResourcesHeader.js +14 -0
  11. package/dist/dist/components/Timeline/Timeline.css +616 -0
  12. package/dist/dist/components/Timeline/Timeline.js +304 -0
  13. package/dist/dist/components/Timeline/TimelineCell.js +8 -0
  14. package/dist/dist/components/Timeline/TimelineContent.js +447 -0
  15. package/dist/dist/components/Timeline/TimelineEvents.js +114 -0
  16. package/dist/dist/components/Timeline/TimelineHeader.js +43 -0
  17. package/dist/dist/components/Timeline/TimelineMonthContainer.js +29 -0
  18. package/dist/dist/components/Timeline/TimelineResources.js +16 -0
  19. package/dist/dist/hooks/useDragAndDrop.js +80 -0
  20. package/dist/dist/hooks/useEventDragDrop.js +126 -0
  21. package/dist/dist/hooks/useExtendEvent.js +28 -0
  22. package/dist/dist/utils/HorizontalVirtualScroll.js +0 -0
  23. package/dist/dist/utils/dateUtils.js +36 -0
  24. package/dist/dist/utils/filterTimelineData.js +21 -0
  25. package/dist/dist/utils/timelineUtils.js +40 -0
  26. package/package.json +2 -1
  27. package/public/dist/Timeline.js +3277 -0
  28. package/public/dist/dist/components/Timeline/DatePickerComponent.js +17 -0
  29. package/public/dist/dist/components/Timeline/DragAndDropHandler.js +35 -0
  30. package/public/dist/dist/components/Timeline/EventTooltip.js +206 -0
  31. package/public/dist/dist/components/Timeline/Indicator.js +29 -0
  32. package/public/dist/dist/components/Timeline/MasterHeader.js +68 -0
  33. package/public/dist/dist/components/Timeline/Resources.js +53 -0
  34. package/public/dist/dist/components/Timeline/ResourcesHeader.js +14 -0
  35. package/public/dist/dist/components/Timeline/Timeline.css +616 -0
  36. package/public/dist/dist/components/Timeline/Timeline.js +304 -0
  37. package/public/dist/dist/components/Timeline/TimelineCell.js +8 -0
  38. package/public/dist/dist/components/Timeline/TimelineContent.js +447 -0
  39. package/public/dist/dist/components/Timeline/TimelineEvents.js +114 -0
  40. package/public/dist/dist/components/Timeline/TimelineHeader.js +43 -0
  41. package/public/dist/dist/components/Timeline/TimelineMonthContainer.js +29 -0
  42. package/public/dist/dist/components/Timeline/TimelineResources.js +16 -0
  43. package/public/dist/dist/hooks/useDragAndDrop.js +80 -0
  44. package/public/dist/dist/hooks/useEventDragDrop.js +126 -0
  45. package/public/dist/dist/hooks/useExtendEvent.js +28 -0
  46. package/public/dist/dist/utils/HorizontalVirtualScroll.js +0 -0
  47. package/public/dist/dist/utils/dateUtils.js +36 -0
  48. package/public/dist/dist/utils/filterTimelineData.js +21 -0
  49. package/public/dist/dist/utils/timelineUtils.js +40 -0
  50. package/public/index kutuphane /304/261c/304/261n.html" +43 -0
  51. package/public/index tasarim icin.html +20 -0
  52. package/src/App.js +161 -154
  53. package/src/components/Timeline/DatePickerComponent.js +17 -0
  54. package/src/components/Timeline/EventTooltip.js +1 -1
  55. package/src/components/Timeline/Indicator.js +1 -2
  56. package/src/components/Timeline/MasterHeader.js +36 -23
  57. package/src/components/Timeline/Timeline.css +90 -8
  58. package/src/components/Timeline/Timeline.js +71 -44
  59. package/src/components/Timeline/TimelineContent.js +154 -129
  60. package/src/hooks/useEventDragDrop.js +22 -16
  61. package/webpack.config.js +25 -7
  62. package/src/App copy.js +0 -185
  63. package/src/components/Timeline/TimelineContent copy.js +0 -421
package/dist/Timeline.js CHANGED
@@ -1 +1,3277 @@
1
- !function(e,n){"object"==typeof exports&&"object"==typeof module?module.exports=n(require("react")):"function"==typeof define&&define.amd?define(["react"],n):"object"==typeof exports?exports.AkfaTimeline=n(require("react")):e.AkfaTimeline=n(e.react)}(this,(e=>(()=>{"use strict";var n={27:(e,n,t)=>{t.d(n,{A:()=>i});var r=t(601),o=t.n(r),a=t(314),l=t.n(a)()(o());l.push([e.id,'/* src/components/Timeline/Timeline.css */\n\n/* \n Temel: "sales sayfası" temasıyla uyumlu renkler, \n light vs. dark tanımları \n*/\n\n:root {\n /* Light Tema Varsayılan Renkler */\n --background-color: #f5f5f2; /* Açık tema arka plan */\n --text-color: #666; /* Açık tema yazı rengi */\n --border-color: #bbb; /* Daha yumuşak border */\n\n /* Header */\n --header-background-color: #f5f5f2; /* Üst header, tablo header */\n --header-text-color: #666;\n\n /* Resources */\n --resource-background-color: #f5f5f2; \n --resource-text-color: #666;\n --group-header-background-color: #dadada;\n\n /* Timeline */\n --timeline-header-background-color: #f5f5f2;\n --timeline-cell-border-color: #ccc;\n --timeline-event-background-color: #fff;\n --timeline-event-border-color: #666;\n --timeline-event-text-color: #666;\n\n /* Scrollbar */\n --scrollbar-thumb-background: #aaa;\n --scrollbar-thumb-hover-background: #888;\n\n --resource-width: 150px;\n --cell-height: 40px;\n --header-height: 60px;\n --time-slot-height: 20px;\n --container-height: 480px;\n\n --timeline-new-event-background-color: #ff5722;\n --timeline-new-event-text-color: #fff;\n\n --timeline-event-background-color: #ff7f50; \n --timeline-event-text-color: #fff;\n --timeline-event-border-color: #fff;\n\n --timeline-cell-selected-bg: rgba(25,118,210,0.2);\n\n user-select: none; /* Metin seçimini engelle */\n}\n\n/* Koyu Tema */\n.dark-mode {\n /* Koyu tema */\n --background-color: #16202a; /* Koyu tema arka plan */\n --text-color: #ddd; /* Koyu tema yazı rengi */\n --border-color: #444;\n\n --header-background-color: #16202a;\n --header-text-color: #bbb;\n\n --resource-background-color: #16202a;\n --resource-text-color: #bbb;\n --group-header-background-color: #0d141b;\n\n --timeline-header-background-color: #16202a;\n --timeline-cell-border-color: #444;\n --timeline-event-background-color: #2a2a2a;\n --timeline-event-border-color: #222;\n --timeline-event-text-color: #ddd;\n\n --scrollbar-thumb-background: #555;\n --scrollbar-thumb-hover-background: #888;\n\n --timeline-new-event-background-color: #a83e20;\n --timeline-new-event-text-color: #eee;\n\n --timeline-event-background-color: #a83e20;\n --timeline-event-text-color: #fff;\n --timeline-event-border-color: #222;\n\n --timeline-cell-selected-bg: rgba(76,175,80,0.2);\n}\n\n/* Genel Timeline Konteyner */\n.timeline-container {\n display: flex;\n flex-direction: column;\n width: 100%;\n height: 100%;\n border: 1px solid var(--border-color);\n border-radius: 8px;\n overflow: hidden;\n box-sizing: border-box;\n background-color: var(--background-color);\n color: var(--text-color);\n}\n\n/* Master Header */\n.timeline-master-header {\n width: 100%;\n background-color: var(--header-background-color);\n color: var(--header-text-color);\n border-bottom: 1px solid var(--border-color);\n z-index: 10;\n padding: 10px;\n box-sizing: border-box;\n}\n\n/* Timeline Body */\n.timeline-body {\n display: flex;\n flex: 1;\n}\n\n/* Sol Kısım: Resources */\n.timeline-resources-container {\n width: var(--resource-width);\n display: flex;\n flex-direction: column;\n border-right: 1px solid var(--border-color);\n position: sticky;\n left: 0;\n top: var(--header-height);\n z-index: 2;\n background-color: var(--resource-background-color);\n overflow-y: auto;\n}\n\n/* Resources Header */\n.resources-header {\n background-color: var(--header-background-color);\n color: var(--resource-text-color);\n text-align: center;\n width: var(--resource-width);\n font-weight: bold;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n height: calc(var(--header-height) * 2); /* Üst üste iki header yüksekliği */\n border-right: 1px solid var(--border-color);\n box-sizing: border-box;\n}\n\n/* Grup Başlığı Hücreleri */\n.group-header-row {\n display: flex;\n height: var(--cell-height);\n background-color: var(--group-header-background-color);\n color: var(--resource-text-color);\n font-weight: bold;\n}\n\n.group-header-cell {\n flex: 1;\n border: 1px solid var(--border-color);\n text-align: center;\n background-color: var(--group-header-background-color);\n color: var(--resource-text-color);\n height: var(--cell-height);\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n/* Resource Grupları */\n.resource-group {\n display: flex;\n flex-direction: column;\n}\n\n/* Resource Grup Header */\n.resource-group-header {\n background-color: var(--group-header-background-color);\n color: var(--resource-text-color);\n font-weight: bold;\n height: var(--cell-height);\n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0 0px;\n cursor: pointer;\n border: 1px solid var(--border-color);\n}\n\n/* Resource Hücreleri */\n.resource-cell {\n padding: 0;\n text-align: left;\n background-color: var(--resource-background-color);\n color: var(--resource-text-color);\n height: var(--cell-height);\n display: flex;\n align-items: center;\n border: 0.3px solid var(--border-color);\n box-sizing: border-box;\n}\n\n/* Sağ Kısım: Timeline */\n.timeline-scrollable-container {\n flex: 1;\n overflow-x: auto;\n overflow-y: hidden;\n display: flex;\n flex-direction: column;\n position: relative;\n}\n\n/* Header ve Content Wrapper */\n.timeline-header-content-wrapper {\n display: flex;\n flex-direction: column;\n}\n\n/* Timeline Header */\n.timeline-header {\n display: flex;\n background-color: var(--timeline-header-background-color);\n color: var(--header-text-color);\n position: sticky;\n top: 0;\n z-index: 2;\n height: var(--header-height);\n overflow: hidden;\n box-sizing: border-box;\n}\n\n/* Timeline Content */\n.timeline-content {\n display: flex;\n flex-direction: column;\n}\n\n/* Grup Container */\n.group-container {\n display: flex;\n flex-direction: column;\n}\n\n/* Resource Satırları */\n.resource-row {\n display: flex;\n box-sizing: border-box;\n position: relative;\n height: var(--cell-height);\n border: 1px solid var(--border-color);\n margin-top: -1px;\n overflow: hidden;\n}\n\n/* Timeline Hücreleri */\n.timeline-cell {\n flex: 1;\n border: 1px solid var(--timeline-cell-border-color);\n height: 100%;\n box-sizing: border-box;\n}\n\n/* Hücre Seçili Durumu */\n.timeline-cell.selected {\n background-color: rgba(25, 118, 210, 0.2); /* satır içi/hover */\n}\n\n/* Event Stilleri */\n.event {\n position: absolute;\n background-color: var(--timeline-event-background-color);\n color: var(--timeline-event-text-color);\n font-size: 12px;\n padding: 2px 5px;\n border-radius: 4px;\n text-align: left;\n display: flex;\n flex-direction: column;\n justify-content: center;\n box-sizing: border-box;\n z-index: 10;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n border: 1px solid var(--timeline-event-border-color);\n cursor: pointer;\n}\n\n/* Event Time Stili */\n.event-time {\n font-size: 10px;\n margin-top: 2px;\n}\n\n/* Scrollbar için */\n.timeline-scrollable-container::-webkit-scrollbar {\n height: 10px;\n}\n\n.timeline-scrollable-container::-webkit-scrollbar-thumb {\n background: var(--scrollbar-thumb-background);\n border-radius: 5px;\n}\n\n.timeline-scrollable-container::-webkit-scrollbar-thumb:hover {\n background: var(--scrollbar-thumb-hover-background);\n}\n\n.resources-header {\n background-color: var(--header-background-color);\n color: var(--resource-text-color);\n text-align: center;\n width: var(--resource-width);\n font-weight: bold;\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n height: 80px;\n border-right: 1px solid var(--border-color);\n box-sizing: border-box;\n}\n\n/* TimelineHeader Container */\n.timeline-header-container {\n flex: 1;\n display: flex;\n flex-direction: column;\n}\n\n/* Ay + Yıl satırı */\n.timeline-header-month-row {\n display: flex;\n background-color: var(--header-background-color);\n color: var(--header-text-color);\n font-weight: bold;\n font-size: 16px;\n height: 40px;\n line-height: 40px;\n border-bottom: 1px solid var(--border-color);\n}\n\n/* Ay + Yıl hücreleri */\n.timeline-header-month-cell {\n text-align: center;\n display: flex;\n align-items: center;\n justify-content: center;\n /* border-right => dynamic, inline style if needed */\n box-sizing: border-box;\n}\n\n/* Günlük Hücreler (tarih satırı) */\n.timeline-header-day-row {\n display: flex;\n background-color: var(--timeline-header-background-color);\n color: var(--header-text-color);\n /* border-bottom: 1px solid var(--border-color); if needed */\n}\n\n/* Günlük hücre (her gün) */\n.timeline-header-day-cell {\n height: 40px;\n line-height: 40px;\n font-size: 14px;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n text-align: center;\n box-sizing: border-box;\n}\n\n\n/* src/components/Timeline/Timeline.css */\n/* Ekleme: MasterHeader stili */\n\n/* Kapsayıcı */\n.master-header-container {\n display: flex;\n align-items: center;\n padding: 10px;\n\n background-color: var(--header-background-color);\n color: var(--header-text-color);\n\n /* eğer border vs. istersen\n border-bottom: 1px solid var(--border-color);\n */\n}\n\n/* Butonlar */\n.master-header-btn {\n background-color: transparent;\n color: var(--header-text-color);\n border: 1px solid var(--border-color);\n border-radius: 4px;\n padding: 6px 12px;\n margin-right: 10px;\n cursor: pointer;\n font-size: 14px;\n transition: background-color 0.2s ease, color 0.2s ease;\n}\n\n.master-header-btn:hover {\n background-color: rgba(25, 118, 210, 0.2); /* Light tema hover */\n}\n\n.dark-mode .master-header-btn:hover {\n background-color: rgba(76, 175, 80, 0.2); /* Koyu tema hover */\n}\n\n.master-header-btn:focus {\n outline: none;\n}\n\n/* Select */\n.master-header-select {\n margin-left: 10px;\n background-color: transparent;\n color: var(--header-text-color);\n border: 1px solid var(--border-color);\n border-radius: 4px;\n padding: 4px 8px;\n font-size: 14px;\n cursor: pointer;\n}\n\n.master-header-select:focus {\n outline: none;\n}\n\n\n/* Container */\n.timeline-content-container {\n position: relative;\n width: 100%;\n height: auto; /* or as needed */\n display: flex;\n flex-direction: column;\n}\n\n/* Group container */\n.timeline-group-container {\n margin-bottom: 0px;\n display: flex;\n flex-direction: column;\n}\n\n/* Group header row */\n.timeline-group-header-row {\n display: flex;\n margin-top: -0.08rem;\n}\n\n.timeline-group-header-cell {\n flex: 1;\n height: 2.58rem;\n background-color: var(--group-header-background-color);\n border: 1px solid var(--border-color);\n \n box-sizing: border-box;\n display: flex;\n align-items: center;\n justify-content: center;\n}\n\n/* Resource row */\n.timeline-resource-row {\n display: flex;\n position: relative;\n height: var(--cell-height, 40px);\n border: 1px solid var(--border-color);\n box-sizing: border-box;\n}\n\n/* Each day cell */\n.timeline-cell {\n flex: 1;\n height: 100%;\n position: relative;\n border-left: 1px solid var(--border-color);\n border-right: 1px solid var(--border-color);\n box-sizing: border-box;\n cursor: pointer;\n}\n\n/* "selected" day cell */\n.timeline-cell.selected {\n background-color: var(--timeline-cell-selected-bg, rgba(25,118,210,0.2));\n}\n\n/* Event */\n.timeline-event {\n position: absolute;\n background-color: var(--timeline-event-background-color, #0093ce);\n color: var(--timeline-event-text-color, #fff);\n font-size: 14px;\n padding: 5px;\n border-radius: 20px;\n box-sizing: border-box;\n z-index: 10;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n border: 1px solid var(--timeline-event-border-color, #fff);\n top: 5px; /* or a variable offset if you want */\n /* "left" and "width" are inline from JS */\n}\n\n/* Extend handle */\n.timeline-event-extend-handle {\n position: absolute;\n right: 0;\n top: 0;\n width: 10px;\n height: 100%;\n background-color: rgba(0,0,0,0.2);\n cursor: col-resize;\n z-index: 20;\n}\n\n/* Temp event (while creating) */\n.timeline-temp-event {\n position: absolute;\n background-color: var(--timeline-new-event-background-color, #0093ce);\n color: var(--timeline-new-event-text-color, #fff);\n opacity: 0.7;\n border-radius: 20px;\n z-index: 9;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 14px;\n /* "left"/"width" from JS: " ...calculatePosition(tempEvent, dates)" */\n top: 5px;\n}\n',""]);const i=l},314:e=>{e.exports=function(e){var n=[];return n.toString=function(){return this.map((function(n){var t="",r=void 0!==n[5];return n[4]&&(t+="@supports (".concat(n[4],") {")),n[2]&&(t+="@media ".concat(n[2]," {")),r&&(t+="@layer".concat(n[5].length>0?" ".concat(n[5]):""," {")),t+=e(n),r&&(t+="}"),n[2]&&(t+="}"),n[4]&&(t+="}"),t})).join("")},n.i=function(e,t,r,o,a){"string"==typeof e&&(e=[[null,e,void 0]]);var l={};if(r)for(var i=0;i<this.length;i++){var c=this[i][0];null!=c&&(l[c]=!0)}for(var d=0;d<e.length;d++){var s=[].concat(e[d]);r&&l[s[0]]||(void 0!==a&&(void 0===s[5]||(s[1]="@layer".concat(s[5].length>0?" ".concat(s[5]):""," {").concat(s[1],"}")),s[5]=a),t&&(s[2]?(s[1]="@media ".concat(s[2]," {").concat(s[1],"}"),s[2]=t):s[2]=t),o&&(s[4]?(s[1]="@supports (".concat(s[4],") {").concat(s[1],"}"),s[4]=o):s[4]="".concat(o)),n.push(s))}},n}},601:e=>{e.exports=function(e){return e[1]}},72:e=>{var n=[];function t(e){for(var t=-1,r=0;r<n.length;r++)if(n[r].identifier===e){t=r;break}return t}function r(e,r){for(var a={},l=[],i=0;i<e.length;i++){var c=e[i],d=r.base?c[0]+r.base:c[0],s=a[d]||0,u="".concat(d," ").concat(s);a[d]=s+1;var p=t(u),f={css:c[1],media:c[2],sourceMap:c[3],supports:c[4],layer:c[5]};if(-1!==p)n[p].references++,n[p].updater(f);else{var m=o(f,r);r.byIndex=i,n.splice(i,0,{identifier:u,updater:m,references:1})}l.push(u)}return l}function o(e,n){var t=n.domAPI(n);return t.update(e),function(n){if(n){if(n.css===e.css&&n.media===e.media&&n.sourceMap===e.sourceMap&&n.supports===e.supports&&n.layer===e.layer)return;t.update(e=n)}else t.remove()}}e.exports=function(e,o){var a=r(e=e||[],o=o||{});return function(e){e=e||[];for(var l=0;l<a.length;l++){var i=t(a[l]);n[i].references--}for(var c=r(e,o),d=0;d<a.length;d++){var s=t(a[d]);0===n[s].references&&(n[s].updater(),n.splice(s,1))}a=c}}},659:e=>{var n={};e.exports=function(e,t){var r=function(e){if(void 0===n[e]){var t=document.querySelector(e);if(window.HTMLIFrameElement&&t instanceof window.HTMLIFrameElement)try{t=t.contentDocument.head}catch(e){t=null}n[e]=t}return n[e]}(e);if(!r)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");r.appendChild(t)}},540:e=>{e.exports=function(e){var n=document.createElement("style");return e.setAttributes(n,e.attributes),e.insert(n,e.options),n}},56:(e,n,t)=>{e.exports=function(e){var n=t.nc;n&&e.setAttribute("nonce",n)}},825:e=>{e.exports=function(e){if("undefined"==typeof document)return{update:function(){},remove:function(){}};var n=e.insertStyleElement(e);return{update:function(t){!function(e,n,t){var r="";t.supports&&(r+="@supports (".concat(t.supports,") {")),t.media&&(r+="@media ".concat(t.media," {"));var o=void 0!==t.layer;o&&(r+="@layer".concat(t.layer.length>0?" ".concat(t.layer):""," {")),r+=t.css,o&&(r+="}"),t.media&&(r+="}"),t.supports&&(r+="}");var a=t.sourceMap;a&&"undefined"!=typeof btoa&&(r+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(a))))," */")),n.styleTagTransform(r,e,n.options)}(n,e,t)},remove:function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(n)}}}},113:e=>{e.exports=function(e,n){if(n.styleSheet)n.styleSheet.cssText=e;else{for(;n.firstChild;)n.removeChild(n.firstChild);n.appendChild(document.createTextNode(e))}}},155:n=>{n.exports=e}},t={};function r(e){var o=t[e];if(void 0!==o)return o.exports;var a=t[e]={id:e,exports:{}};return n[e](a,a.exports,r),a.exports}r.n=e=>{var n=e&&e.__esModule?()=>e.default:()=>e;return r.d(n,{a:n}),n},r.d=(e,n)=>{for(var t in n)r.o(n,t)&&!r.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:n[t]})},r.o=(e,n)=>Object.prototype.hasOwnProperty.call(e,n),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nc=void 0;var o={};r.r(o),r.d(o,{default:()=>X});var a=r(155),l=r.n(a),i=r(72),c=r.n(i),d=r(825),s=r.n(d),u=r(659),p=r.n(u),f=r(56),m=r.n(f),g=r(540),b=r.n(g),v=r(113),h=r.n(v),x=r(27),y={};y.styleTagTransform=h(),y.setAttributes=m(),y.insert=p().bind(null,"head"),y.domAPI=s(),y.insertStyleElement=b(),c()(x.A,y),x.A&&x.A.locals&&x.A.locals;const w=e=>{let{onToday:n,onAdvance:t,onRetreat:r,onMonthAdvance:o,onMonthRetreat:a,dayRange:i,setDayRange:c,isDarkMode:d,toggleDarkMode:s}=e;return l().createElement("div",{className:"master-header-container"},l().createElement("button",{className:"master-header-btn",onClick:n},"Today"),l().createElement("button",{className:"master-header-btn",onClick:a},"1 Ay Geri"),l().createElement("button",{className:"master-header-btn",onClick:r},"5 Gün Geri"),l().createElement("button",{className:"master-header-btn",onClick:t},"5 Gün İleri"),l().createElement("button",{className:"master-header-btn",onClick:o},"1 Ay İleri"),l().createElement("select",{className:"master-header-select",value:i,onChange:e=>c(parseInt(e.target.value))},l().createElement("option",{value:30},"30 Gün"),l().createElement("option",{value:60},"60 Gün"),l().createElement("option",{value:90},"90 Gün")),l().createElement("button",{className:"master-header-btn",onClick:s},d?"Light Mode":"Dark Mode"))},D=e=>{let{content:n}=e;return l().createElement("div",{className:"resources-header"},n)},E=e=>{let{groupedResources:n=[],collapsedGroups:t={},toggleGroupCollapse:r,resourceSettings:o={showIdAsName:!1,isGrouped:!0,isCollapsible:!0}}=e;const{showIdAsName:a,isGrouped:i,isCollapsible:c}=o;return l().createElement("div",{className:"timeline-resources"},i?n.map(((e,n)=>l().createElement("div",{key:n,className:"resource-group"},l().createElement("div",{className:"resource-group-header",onClick:()=>c&&r(e.groupName)},e.groupName," ",c&&(t[e.groupName]?"▲":"▼")),!t[e.groupName]&&e.resources.map(((e,n)=>l().createElement("div",{key:n,className:"resource-cell"},a?e.id:e.name||e.id)))))):n.flatMap((e=>e.resources)).map(((e,n)=>l().createElement("div",{key:n,className:"resource-cell"},a?e.id:e.name||e.id))))},k=e=>{let{dates:n,monthHeaders:t}=e;return l().createElement("div",{className:"timeline-header-container"},l().createElement("div",{className:"timeline-header-month-row"},t.map(((e,n)=>l().createElement("div",{key:n,className:"timeline-header-month-cell",style:{flex:e.endIndex-e.startIndex+1,borderRight:n<t.length-1?"1px solid var(--border-color)":"none"}},e.monthName," ",e.year)))),l().createElement("div",{className:"timeline-header-day-row"},n.map(((e,t)=>l().createElement("div",{key:t,className:"timeline-header-day-cell",style:{flex:1,borderRight:t<n.length-1?"1px solid var(--border-color)":"none"}},e.display)))))},S=e=>{if(e instanceof Date)return e;if("string"==typeof e){const[n,t,r]=e.split("/").map(Number);return new Date(r,t-1,n)}return"object"==typeof e&&e.fullDate instanceof Date?new Date(e.fullDate.getTime()+6e4*e.fullDate.getTimezoneOffset()):(console.error("parseDate received invalid input:",e),new Date)};function O(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function j(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?O(Object(t),!0).forEach((function(n){I(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):O(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function I(e,n,t){return(n=function(e){var n=function(e){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var t=n.call(e,"string");if("object"!=typeof t)return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof n?n:n+""}(n))in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}const P=e=>{let{todayIndex:n,totalDays:t}=e;return n<0||n>=t?(console.log("Indicator not visible: Out of bounds"),null):(console.log("todayIndex:",n),console.log("totalDays:",t),l().createElement("div",{style:{position:"absolute",top:0,left:"calc(".concat((n+.5)/t," * 100%)"),width:"2px",height:"100%",backgroundColor:"transparent",zIndex:5,borderStyle:"dashed",borderWidth:"0 0 0 2px",borderColor:"red"}}))};function C(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function T(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?C(Object(t),!0).forEach((function(n){N(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):C(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function N(e,n,t){return(n=function(e){var n=function(e){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var t=n.call(e,"string");if("object"!=typeof t)return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof n?n:n+""}(n))in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function M(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function z(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?M(Object(t),!0).forEach((function(n){R(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):M(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function R(e,n,t){return(n=function(e){var n=function(e){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var t=n.call(e,"string");if("object"!=typeof t)return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof n?n:n+""}(n))in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}const A=e=>{let{groupedResources:n,dates:t,collapsedGroups:r,events:o,setEvents:i,onEventClick:c,todayIndex:d,indicatorOn:s,resourceSettings:u,setDropInfo:p,eventsDragOn:f=!0,eventsExtendOn:m=!0,createNewEventOn:g=!0,onDragInfo:b,onExtendInfo:v,onCreateEventInfo:h,onEventRightClick:x}=e;const y=(0,a.useRef)(null),{isDragging:w,dragStart:D,dragEnd:E}=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];const[n,t]=(0,a.useState)(!1),[r,o]=(0,a.useState)(null),[l,i]=(0,a.useState)(null),[c,d]=(0,a.useState)(e),s=()=>{t(!1),o(null),i(null)};return{events:c,isDragging:n,dragStart:r,dragEnd:l,startDrag:(e,n)=>{t(!0),o({resourceId:e,date:n}),i({resourceId:e,date:n})},updateDrag:(e,t)=>{n&&i({resourceId:e,date:t})},endDrag:e=>{if(!n||!r||!l)return;if(r.resourceId!==l.resourceId)return void s();const t=e.findIndex((e=>S(e.fullDate).toDateString()===S(r.date.fullDate).toDateString())),o=e.findIndex((e=>S(e.fullDate).toDateString()===S(l.date.fullDate).toDateString()));if(-1===t||-1===o)return void s();const a=Math.min(t,o),i=Math.max(t,o),c=e[a].fullDate,u=e[i].fullDate,p={id:Date.now(),title:"Yeni Etkinlik",resourceId:r.resourceId,startDate:c,endDate:u,color:"#ff7f50"};d((e=>[...e,p])),s()},setEvents:d}}(o,i),{handleDragStart:k,handleDragOver:O,handleDrop:I,handleDragEnd:C}=((e,n,t)=>{const[r,o]=(0,a.useState)(null),[l,i]=(0,a.useState)(0),[c,d]=(0,a.useState)(null);return{handleDragStart:(n,t)=>{if("extend"===c)return;n.stopPropagation();const r=n.target.getBoundingClientRect(),a=n.clientX-r.left;o(t),i(a),d("drag");const l=e.find((e=>e.id===t));l&&(console.log("Dragging Event Start:",l.startDate),console.log("Dragging Event End:",l.endDate))},handleExtendStart:(e,n)=>{e.stopPropagation(),o(n),d("extend")},handleDragOver:e=>{e.preventDefault()},handleDrop:(a,s,u)=>{if(a.preventDefault(),"drag"===c&&r){const o=e.find((e=>e.id===r));if(o){const e=o.endDate-o.startDate,i=a.target.offsetWidth||30,c=Math.floor(l/i),d=new Date(u.getTime()-24*c*60*60*1e3),p=new Date(d.getTime()+e);console.log("New Start Date:",d),console.log("New End Date:",p),n((e=>e.map((e=>e.id===r?j(j({},e),{},{resourceId:s,startDate:d,endDate:p}):e)))),t&&t({id:r,newResourceId:s,newStartDate:d,newEndDate:p})}}o(null),i(0),d(null)},handleExtend:(e,t,a)=>{"extend"===c&&r===t&&(n((e=>e.map((e=>e.id===t?j(j({},e),{},{endDate:a}):e)))),console.log("Extended Event ID:",t,"New End Date:",a),o(null),d(null))},handleDragEnd:()=>{o(null),i(0),d(null)}}})(o,i,p),{extendEvent:N}=((e,n)=>({extendEvent:(0,a.useCallback)(((e,t)=>{n((n=>n.map((n=>n.id===e?T(T({},n),{},{endDate:t}):n))))}),[n])}))(0,i),[M,R]=(0,a.useState)(null),[A,G]=(0,a.useState)(null),[H,L]=(0,a.useState)(null),[B,X]=(0,a.useState)(null),[K,V]=(0,a.useState)(!1),[W,Y]=(0,a.useState)(null),[F,J]=(0,a.useState)(null),[_,q]=(0,a.useState)({top:0,left:0}),U=t.length;(0,a.useEffect)((()=>{if(!g)return;if(!K)return;if("extend"===M)return void console.log(">>> 'extend' mode, skip new event creation");const e=e=>{if(!K||!W)return;const n=document.elementFromPoint(e.clientX,e.clientY),t=(null==n?void 0:n.offsetWidth)||30,r=W.startX||e.clientX,o=e.clientX-r,a=Math.max(1,Math.floor(o/t)),l=new Date(W.startDate.getTime());l.setDate(l.getDate()+a),Y(z(z({},W),{},{endDate:l,startX:r,title:"".concat(a," Gece")}))},n=()=>{K&&W&&(i([...o,W]),h&&h(W)),Y(null),V(!1)};return window.addEventListener("mousemove",e),window.addEventListener("mouseup",n),()=>{window.removeEventListener("mousemove",e),window.removeEventListener("mouseup",n)}}),[g,K,M,W,o,h,i]),(0,a.useEffect)((()=>{if("extend"===M){const e=e=>(e=>{if("extend"!==M||!A)return;if(!m)return;const n=e.clientX-(null!=B?B:0),t=Math.floor(n/30),r=new Date((null!=H?H:new Date).getTime());r.setDate(r.getDate()+t),console.log(">>> Extending ID:",A.id,"=>",r),i((e=>e.map((e=>e.id===A.id?z(z({},e),{},{endDate:r}):e))))})(e),n=()=>(()=>{if(console.log(">>> Extend finished ID:",null==A?void 0:A.id),v&&A){const e=o.find((e=>e.id===A.id));e&&v({eventId:A.id,newEndDate:e.endDate})}R(null),G(null),L(null),X(null)})();return document.addEventListener("mousemove",e),document.addEventListener("mouseup",n),()=>{document.removeEventListener("mousemove",e),document.removeEventListener("mouseup",n)}}}),[M,A,m,H,B]);const $=(e,n)=>{if(!D||!E)return!1;if(e!==D.resourceId)return!1;const r=t.findIndex((e=>S(e.fullDate).getTime()===S(D.date).getTime())),o=t.findIndex((e=>S(e.fullDate).getTime()===S(E.date).getTime())),a=t.findIndex((e=>S(e.fullDate).getTime()===S(n.fullDate).getTime()));return-1!==r&&-1!==o&&-1!==a&&a>=Math.min(r,o)&&a<=Math.max(r,o)},Q=(e,n)=>{const t=S(e.startDate),r=S(e.endDate),o=n.findIndex((e=>S(e.fullDate).toDateString()===t.toDateString())),a=n.findIndex((e=>S(e.fullDate).toDateString()===r.toDateString())),l=n.length;if(o<0&&a<0)return{isVisible:!1,left:0,width:0,isPartialStart:!1,isPartialEnd:!1};if(o>=l&&a>=l)return{isVisible:!1,left:0,width:0,isPartialStart:!1,isPartialEnd:!1};const i=o<0,c=a>=l,d=(Math.max(o,0)+(i?0:.5))/l*100,s=(Math.min(a,l-1)+(c?1:.5))/l*100-d;return{isVisible:!0,left:"".concat(d,"%"),width:"".concat(s,"%"),isPartialStart:i,isPartialEnd:c}};return l().createElement("div",{ref:y,className:"timeline-content-container"},s&&l().createElement(P,{todayIndex:d,totalDays:U}),n.map(((e,n)=>l().createElement("div",{key:n,className:"timeline-group-container"},u.isGrouped&&l().createElement("div",{className:"timeline-group-header-row"},t.map(((e,t)=>l().createElement("div",{key:"group-header-".concat(n,"-").concat(t),className:"timeline-group-header-cell"})))),!r[e.groupName]&&e.resources.map(((e,r)=>{const a=o.filter((n=>n.resourceId===e.id));return l().createElement("div",{key:e.id,className:"timeline-resource-row"},a.map((e=>{const{isVisible:n,left:r,width:o,isPartialStart:a,isPartialEnd:i}=Q(e,t);return n?l().createElement("div",{key:e.id,className:"timeline-event",draggable:"extend"!==M&&f,onDragStart:n=>{"extend"!==M?((e,n)=>{f?k(e,n):e.preventDefault()})(n,e.id):n.preventDefault()},onDragEnd:e=>{"extend"!==M?(e=>{f?C():e.preventDefault()})(e):e.preventDefault()},onContextMenu:n=>((e,n)=>{n.preventDefault(),x&&x(e,n)})(e,n),onClick:n=>((e,n)=>{n.stopPropagation(),c&&c(e,n);const t=n.currentTarget;if(t){const n=t.getBoundingClientRect();q({top:n.top+window.scrollY,left:n.left+n.width/2+window.scrollX}),J(e)}})(e,n),style:{left:r,width:o,top:"5px",borderTopLeftRadius:a?"0px":"20px",borderBottomLeftRadius:a?"0px":"20px",borderTopRightRadius:i?"0px":"20px",borderBottomRightRadius:i?"0px":"20px",cursor:"extend"===M?"col-resize":"grab"}},e.title,m&&l().createElement("div",{className:"timeline-event-extend-handle",onMouseDown:n=>{n.stopPropagation(),((e,n)=>{m&&(e.stopPropagation(),console.log(">>> Extend start ID:",n.id),R("extend"),G(n),L(n.endDate),X(e.clientX))})(n,e)}})):null})),W&&W.resourceId===e.id&&l().createElement("div",{className:"timeline-temp-event",style:z(z({},Q(W,t)),{},{top:"5px"})},W.title),t.map(((t,o)=>l().createElement("div",{key:"cell-".concat(n,"-").concat(r,"-").concat(o),className:"timeline-cell ".concat($(e.id,t)?"selected":""),"data-date":JSON.stringify(t),"data-resource-id":e.id,onMouseDown:()=>((e,n)=>{if(!g)return;const t=S(n.fullDate),r={id:Date.now(),title:"1 Gece",startDate:t,endDate:new Date(t.getTime()+864e5),resourceId:e,color:""};Y(r),V(!0)})(e.id,t),onDragOver:e=>O(e),onDrop:n=>I(n,e.id,S(t.fullDate))}))))}))))),F&&l().createElement("div",{style:{position:"absolute",top:_.top,left:_.left,backgroundColor:"#333",color:"#fff",padding:"5px",borderRadius:"4px",zIndex:999}},l().createElement("button",{onClick:()=>{J(null)}},"X"),F.title))},G=e=>{let{event:n,position:t={top:0,left:0},onClose:r,onEdit:o,onDelete:a}=e;if(!n)return null;const{top:i,left:c}=t,d=(e=>{switch(e){case"Confirmed":return"#4caf50";case"Pending":return"#ff9800";case"Cancelled":return"#f44336";case"Completed":return"#2196f3";default:return"#9e9e9e"}})(n.status);return l().createElement("div",{style:{position:"absolute",top:i-30,left:c+70,transform:"translateX(-50%)",backgroundColor:"#ffffff",color:"#333333",borderRadius:"10px",boxShadow:"0 8px 16px rgba(0, 0, 0, 0.2)",fontSize:"16px",zIndex:1e3,pointerEvents:"auto",whiteSpace:"normal",maxWidth:"400px",width:"100%",transition:"opacity 0.3s ease, transform 0.3s ease"}},r&&l().createElement("button",{onClick:r,style:{position:"absolute",top:"10px",right:"15px",background:"transparent",border:"none",color:"#aaa",fontSize:"24px",cursor:"pointer",transition:"color 0.2s"},"aria-label":"Kapat",onMouseOver:e=>e.target.style.color="#000",onMouseOut:e=>e.target.style.color="#aaa"},"×"),l().createElement("div",{style:{backgroundColor:d,color:"#ffffff",padding:"15px 20px",borderTopLeftRadius:"10px",borderTopRightRadius:"10px",display:"flex",flexDirection:"column",gap:"5px"}},l().createElement("div",{style:{fontWeight:"bold",fontSize:"18px"}},n.title),l().createElement("div",{style:{fontSize:"14px"}},"Rezervasyon ID: ",n.reservationId)),l().createElement("div",{style:{padding:"20px",display:"flex",flexDirection:"column",gap:"15px"}},Array.isArray(n.guestNames)&&l().createElement("div",null,l().createElement("strong",null,"Misafirler:")," ",n.guestNames.join(", ")),l().createElement("div",{style:{display:"flex",justifyContent:"space-between",marginBottom:"10px"}},l().createElement("div",null,l().createElement("strong",null,"Giriş:")," ",new Date(n.startDate).toLocaleDateString()),l().createElement("div",null,l().createElement("strong",null,"Çıkış:")," ",new Date(n.endDate).toLocaleDateString())),(void 0!==n.totalAmount||void 0!==n.amountPaid)&&l().createElement("div",{style:{display:"flex",justifyContent:"space-between",marginBottom:"10px"}},void 0!==n.amountPaid&&l().createElement("div",null,l().createElement("strong",null,"Ödenen Miktar:")," $",n.amountPaid.toFixed(2)),void 0!==n.totalAmount&&l().createElement("div",null,l().createElement("strong",null,"Toplam Borç:")," $",n.totalAmount.toFixed(2))),n.status&&l().createElement("div",null,l().createElement("strong",null,"Durum:")," ",n.status),n.note&&l().createElement("div",null,l().createElement("strong",null,"Not:")," ",n.note)),l().createElement("div",{style:{padding:"15px 20px",borderTop:"1px solid #ddd",display:"flex",justifyContent:"flex-end",gap:"10px",borderBottomLeftRadius:"10px",borderBottomRightRadius:"10px"}},o&&l().createElement("button",{onClick:()=>o(n),style:{padding:"8px 16px",backgroundColor:"#2196f3",color:"#ffffff",border:"none",borderRadius:"4px",cursor:"pointer",fontSize:"14px",display:"flex",alignItems:"center",gap:"5px",transition:"background-color 0.2s"},onMouseOver:e=>e.target.style.backgroundColor="#1976d2",onMouseOut:e=>e.target.style.backgroundColor="#2196f3"},l().createElement("span",{role:"img","aria-label":"Düzenle"},"✏️"),"Düzenle"),a&&l().createElement("button",{onClick:()=>a(n.id),style:{padding:"8px 16px",backgroundColor:"#f44336",color:"#ffffff",border:"none",borderRadius:"4px",cursor:"pointer",fontSize:"14px",display:"flex",alignItems:"center",gap:"5px",transition:"background-color 0.2s"},onMouseOver:e=>e.target.style.backgroundColor="#d32f2f",onMouseOut:e=>e.target.style.backgroundColor="#f44336"},l().createElement("span",{role:"img","aria-label":"Sil"},"🗑️"),"Sil")))};function H(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);n&&(r=r.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,r)}return t}function L(e){for(var n=1;n<arguments.length;n++){var t=null!=arguments[n]?arguments[n]:{};n%2?H(Object(t),!0).forEach((function(n){B(e,n,t[n])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):H(Object(t)).forEach((function(n){Object.defineProperty(e,n,Object.getOwnPropertyDescriptor(t,n))}))}return e}function B(e,n,t){return(n=function(e){var n=function(e){if("object"!=typeof e||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var t=n.call(e,"string");if("object"!=typeof t)return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof n?n:n+""}(n))in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}const X=e=>{let{resources:n,programDate:t=null,events:r=[],resourceSettings:o={showIdAsName:!1,isGrouped:!0,isCollapsible:!0},indicatorOn:i=!1,dropInfo:c,setDropInfo:d,masterHeaderView:s=!0,resourceHeaderContent:u="Akfa Timeline",eventsDragOn:p=!0,eventsExtendOn:f=!0,createNewEventOn:m=!0,onDragInfo:g,onExtendInfo:b,onCreateEventInfo:v,onEventClick:h,onEventRightClick:x,horizontalScrollOn:y=!1}=e;const S=(()=>{const e=["Paz","Pzt","Sal","Çar","Per","Cum","Cmt"],n=["Ocak","Şubat","Mart","Nisan","Mayıs","Haziran","Temmuz","Ağustos","Eylül","Ekim","Kasım","Aralık"],t=[],r=[];for(let o=2020;o<=2030;o++)for(let a=1;a<=12;a++){const l=new Date(o,a,0).getDate(),i=t.length;for(let n=1;n<=l;n++){const r=new Date(o,a-1,n),l=e[r.getDay()];t.push({fullDate:r,display:"".concat(n," ").concat(l)})}const c=t.length-1;r.push({monthName:n[a-1],year:o,startIndex:i,endIndex:c,totalDays:c-i+1})}return{dates:t,monthHeaders:r}})(),{dates:O,monthHeaders:j}=S,[I,P]=(0,a.useState)({}),[C,T]=(0,a.useState)((()=>{const e=t?new Date(t):new Date;return e.setDate(e.getDate()-3),e})),[N,M]=(0,a.useState)(r),[z,R]=(0,a.useState)(null),[H,B]=(0,a.useState)({top:0,left:0}),[X,K]=(0,a.useState)(30),[V,W]=(0,a.useState)(!1),Y=56.95*X,F=O.findIndex((e=>e.fullDate>=C)),J=F+X,_=-1!==F?O.slice(F,Math.min(J,O.length)):[],q=t?new Date(t):new Date,U=_.findIndex((e=>new Date(e.fullDate).toDateString()===q.toDateString())),$=_.length,Q=e=>{P((n=>L(L({},n),{},{[e]:!n[e]})))};(0,a.useEffect)((()=>{document.body.classList.toggle("dark-mode",V)}),[V]);const Z=j.map((e=>{const n=Math.max(e.startIndex,F),t=Math.min(e.endIndex,J-1);return L(L({},e),{},{startIndex:n,endIndex:t})})).filter((e=>e.startIndex<=e.endIndex));return l().createElement("div",{className:"timeline-container ".concat(V?"dark-mode":"")},s&&l().createElement("div",{className:"timeline-master-header"},l().createElement(w,{onToday:()=>{const e=t?new Date(t):new Date;e.setDate(e.getDate()-3),T(e)},onAdvance:()=>T((e=>new Date(e.getTime()+432e6))),onRetreat:()=>T((e=>new Date(e.getTime()-432e6))),onMonthAdvance:()=>T((e=>{const n=new Date(e);return n.setMonth(n.getMonth()+1),n})),onMonthRetreat:()=>T((e=>{const n=new Date(e);return n.setMonth(n.getMonth()-1),n})),dayRange:X,setDayRange:K,isDarkMode:V,toggleDarkMode:()=>{W((e=>!e))}})),l().createElement("div",{className:"timeline-body"},l().createElement("div",{className:"timeline-resources-container"},l().createElement(D,{content:u}),l().createElement(E,{groupedResources:n,toggleGroupCollapse:Q,collapsedGroups:I,resourceSettings:o})),l().createElement("div",{className:"timeline-scrollable-container",style:{overflowX:y?"auto":"hidden"}},l().createElement("div",{className:"timeline-header-content-wrapper",style:{width:y?"".concat(Y,"px"):"100%"}},l().createElement(k,{dates:_,monthHeaders:Z}),l().createElement(A,{groupedResources:n,dates:_,collapsedGroups:I,events:N,setEvents:M,onEventClick:(e,n)=>{h&&h(e,n);const t=n.currentTarget;if(t){const n=t.getBoundingClientRect();B({top:n.top+window.scrollY,left:n.left+n.width/2+window.scrollX}),R(e)}},todayIndex:U,totalDays:$,indicatorOn:i,resourceSettings:o,toggleGroupCollapse:Q,setDropInfo:d,eventsDragOn:p,eventsExtendOn:f,createNewEventOn:m,onDragInfo:g,onExtendInfo:b,onCreateEventInfo:v,onEventRightClick:x}),z&&l().createElement(G,{event:z,position:H,onClose:()=>{R(null)},onDelete:e=>M((n=>n.filter((n=>n.id!==e))))})))))};return o})()));
1
+ (function webpackUniversalModuleDefinition(root, factory) {
2
+ if(typeof exports === 'object' && typeof module === 'object')
3
+ module.exports = factory(require("react"));
4
+ else if(typeof define === 'function' && define.amd)
5
+ define(["react"], factory);
6
+ else if(typeof exports === 'object')
7
+ exports["AkfaTimeline"] = factory(require("react"));
8
+ else
9
+ root["AkfaTimeline"] = factory(root["react"]);
10
+ })(this, (__WEBPACK_EXTERNAL_MODULE__155__) => {
11
+ return /******/ (() => { // webpackBootstrap
12
+ /******/ "use strict";
13
+ /******/ var __webpack_modules__ = ({
14
+
15
+ /***/ 941:
16
+ /***/ ((module, __webpack_exports__, __webpack_require__) => {
17
+
18
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
19
+ /* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__)
20
+ /* harmony export */ });
21
+ /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(601);
22
+ /* harmony import */ var _css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);
23
+ /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(314);
24
+ /* harmony import */ var _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);
25
+ // Imports
26
+
27
+
28
+ var ___CSS_LOADER_EXPORT___ = _css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
29
+ // Module
30
+ ___CSS_LOADER_EXPORT___.push([module.id, `.flatpickr-calendar {
31
+ background: transparent;
32
+ opacity: 0;
33
+ display: none;
34
+ text-align: center;
35
+ visibility: hidden;
36
+ padding: 0;
37
+ -webkit-animation: none;
38
+ animation: none;
39
+ direction: ltr;
40
+ border: 0;
41
+ font-size: 14px;
42
+ line-height: 24px;
43
+ border-radius: 5px;
44
+ position: absolute;
45
+ width: 307.875px;
46
+ -webkit-box-sizing: border-box;
47
+ box-sizing: border-box;
48
+ -ms-touch-action: manipulation;
49
+ touch-action: manipulation;
50
+ -webkit-box-shadow: 0 3px 13px rgba(0,0,0,0.08);
51
+ box-shadow: 0 3px 13px rgba(0,0,0,0.08);
52
+ }
53
+ .flatpickr-calendar.open,
54
+ .flatpickr-calendar.inline {
55
+ opacity: 1;
56
+ max-height: 640px;
57
+ visibility: visible;
58
+ }
59
+ .flatpickr-calendar.open {
60
+ display: inline-block;
61
+ z-index: 99999;
62
+ }
63
+ .flatpickr-calendar.animate.open {
64
+ -webkit-animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);
65
+ animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);
66
+ }
67
+ .flatpickr-calendar.inline {
68
+ display: block;
69
+ position: relative;
70
+ top: 2px;
71
+ }
72
+ .flatpickr-calendar.static {
73
+ position: absolute;
74
+ top: calc(100% + 2px);
75
+ }
76
+ .flatpickr-calendar.static.open {
77
+ z-index: 999;
78
+ display: block;
79
+ }
80
+ .flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7) {
81
+ -webkit-box-shadow: none !important;
82
+ box-shadow: none !important;
83
+ }
84
+ .flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1) {
85
+ -webkit-box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
86
+ box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
87
+ }
88
+ .flatpickr-calendar .hasWeeks .dayContainer,
89
+ .flatpickr-calendar .hasTime .dayContainer {
90
+ border-bottom: 0;
91
+ border-bottom-right-radius: 0;
92
+ border-bottom-left-radius: 0;
93
+ }
94
+ .flatpickr-calendar .hasWeeks .dayContainer {
95
+ border-left: 0;
96
+ }
97
+ .flatpickr-calendar.hasTime .flatpickr-time {
98
+ height: 40px;
99
+ border-top: 1px solid rgba(72,72,72,0.2);
100
+ }
101
+ .flatpickr-calendar.hasTime .flatpickr-innerContainer {
102
+ border-bottom: 0;
103
+ }
104
+ .flatpickr-calendar.hasTime .flatpickr-time {
105
+ border: 1px solid rgba(72,72,72,0.2);
106
+ }
107
+ .flatpickr-calendar.noCalendar.hasTime .flatpickr-time {
108
+ height: auto;
109
+ }
110
+ .flatpickr-calendar:before,
111
+ .flatpickr-calendar:after {
112
+ position: absolute;
113
+ display: block;
114
+ pointer-events: none;
115
+ border: solid transparent;
116
+ content: '';
117
+ height: 0;
118
+ width: 0;
119
+ left: 22px;
120
+ }
121
+ .flatpickr-calendar.rightMost:before,
122
+ .flatpickr-calendar.arrowRight:before,
123
+ .flatpickr-calendar.rightMost:after,
124
+ .flatpickr-calendar.arrowRight:after {
125
+ left: auto;
126
+ right: 22px;
127
+ }
128
+ .flatpickr-calendar.arrowCenter:before,
129
+ .flatpickr-calendar.arrowCenter:after {
130
+ left: 50%;
131
+ right: 50%;
132
+ }
133
+ .flatpickr-calendar:before {
134
+ border-width: 5px;
135
+ margin: 0 -5px;
136
+ }
137
+ .flatpickr-calendar:after {
138
+ border-width: 4px;
139
+ margin: 0 -4px;
140
+ }
141
+ .flatpickr-calendar.arrowTop:before,
142
+ .flatpickr-calendar.arrowTop:after {
143
+ bottom: 100%;
144
+ }
145
+ .flatpickr-calendar.arrowTop:before {
146
+ border-bottom-color: rgba(72,72,72,0.2);
147
+ }
148
+ .flatpickr-calendar.arrowTop:after {
149
+ border-bottom-color: #1bbc9b;
150
+ }
151
+ .flatpickr-calendar.arrowBottom:before,
152
+ .flatpickr-calendar.arrowBottom:after {
153
+ top: 100%;
154
+ }
155
+ .flatpickr-calendar.arrowBottom:before {
156
+ border-top-color: rgba(72,72,72,0.2);
157
+ }
158
+ .flatpickr-calendar.arrowBottom:after {
159
+ border-top-color: #1bbc9b;
160
+ }
161
+ .flatpickr-calendar:focus {
162
+ outline: 0;
163
+ }
164
+ .flatpickr-wrapper {
165
+ position: relative;
166
+ display: inline-block;
167
+ }
168
+ .flatpickr-months {
169
+ display: -webkit-box;
170
+ display: -webkit-flex;
171
+ display: -ms-flexbox;
172
+ display: flex;
173
+ }
174
+ .flatpickr-months .flatpickr-month {
175
+ border-radius: 5px 5px 0 0;
176
+ background: #1bbc9b;
177
+ color: #fff;
178
+ fill: #fff;
179
+ height: 34px;
180
+ line-height: 1;
181
+ text-align: center;
182
+ position: relative;
183
+ -webkit-user-select: none;
184
+ -moz-user-select: none;
185
+ -ms-user-select: none;
186
+ user-select: none;
187
+ overflow: hidden;
188
+ -webkit-box-flex: 1;
189
+ -webkit-flex: 1;
190
+ -ms-flex: 1;
191
+ flex: 1;
192
+ }
193
+ .flatpickr-months .flatpickr-prev-month,
194
+ .flatpickr-months .flatpickr-next-month {
195
+ -webkit-user-select: none;
196
+ -moz-user-select: none;
197
+ -ms-user-select: none;
198
+ user-select: none;
199
+ text-decoration: none;
200
+ cursor: pointer;
201
+ position: absolute;
202
+ top: 0;
203
+ height: 34px;
204
+ padding: 10px;
205
+ z-index: 3;
206
+ color: #fff;
207
+ fill: #fff;
208
+ }
209
+ .flatpickr-months .flatpickr-prev-month.flatpickr-disabled,
210
+ .flatpickr-months .flatpickr-next-month.flatpickr-disabled {
211
+ display: none;
212
+ }
213
+ .flatpickr-months .flatpickr-prev-month i,
214
+ .flatpickr-months .flatpickr-next-month i {
215
+ position: relative;
216
+ }
217
+ .flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,
218
+ .flatpickr-months .flatpickr-next-month.flatpickr-prev-month {
219
+ /*
220
+ /*rtl:begin:ignore*/
221
+ /*
222
+ */
223
+ left: 0;
224
+ /*
225
+ /*rtl:end:ignore*/
226
+ /*
227
+ */
228
+ }
229
+ /*
230
+ /*rtl:begin:ignore*/
231
+ /*
232
+ /*rtl:end:ignore*/
233
+ .flatpickr-months .flatpickr-prev-month.flatpickr-next-month,
234
+ .flatpickr-months .flatpickr-next-month.flatpickr-next-month {
235
+ /*
236
+ /*rtl:begin:ignore*/
237
+ /*
238
+ */
239
+ right: 0;
240
+ /*
241
+ /*rtl:end:ignore*/
242
+ /*
243
+ */
244
+ }
245
+ /*
246
+ /*rtl:begin:ignore*/
247
+ /*
248
+ /*rtl:end:ignore*/
249
+ .flatpickr-months .flatpickr-prev-month:hover,
250
+ .flatpickr-months .flatpickr-next-month:hover {
251
+ color: #bbb;
252
+ }
253
+ .flatpickr-months .flatpickr-prev-month:hover svg,
254
+ .flatpickr-months .flatpickr-next-month:hover svg {
255
+ fill: #f64747;
256
+ }
257
+ .flatpickr-months .flatpickr-prev-month svg,
258
+ .flatpickr-months .flatpickr-next-month svg {
259
+ width: 14px;
260
+ height: 14px;
261
+ }
262
+ .flatpickr-months .flatpickr-prev-month svg path,
263
+ .flatpickr-months .flatpickr-next-month svg path {
264
+ -webkit-transition: fill 0.1s;
265
+ transition: fill 0.1s;
266
+ fill: inherit;
267
+ }
268
+ .numInputWrapper {
269
+ position: relative;
270
+ height: auto;
271
+ }
272
+ .numInputWrapper input,
273
+ .numInputWrapper span {
274
+ display: inline-block;
275
+ }
276
+ .numInputWrapper input {
277
+ width: 100%;
278
+ }
279
+ .numInputWrapper input::-ms-clear {
280
+ display: none;
281
+ }
282
+ .numInputWrapper input::-webkit-outer-spin-button,
283
+ .numInputWrapper input::-webkit-inner-spin-button {
284
+ margin: 0;
285
+ -webkit-appearance: none;
286
+ }
287
+ .numInputWrapper span {
288
+ position: absolute;
289
+ right: 0;
290
+ width: 14px;
291
+ padding: 0 4px 0 2px;
292
+ height: 50%;
293
+ line-height: 50%;
294
+ opacity: 0;
295
+ cursor: pointer;
296
+ border: 1px solid rgba(72,72,72,0.15);
297
+ -webkit-box-sizing: border-box;
298
+ box-sizing: border-box;
299
+ }
300
+ .numInputWrapper span:hover {
301
+ background: rgba(0,0,0,0.1);
302
+ }
303
+ .numInputWrapper span:active {
304
+ background: rgba(0,0,0,0.2);
305
+ }
306
+ .numInputWrapper span:after {
307
+ display: block;
308
+ content: "";
309
+ position: absolute;
310
+ }
311
+ .numInputWrapper span.arrowUp {
312
+ top: 0;
313
+ border-bottom: 0;
314
+ }
315
+ .numInputWrapper span.arrowUp:after {
316
+ border-left: 4px solid transparent;
317
+ border-right: 4px solid transparent;
318
+ border-bottom: 4px solid rgba(72,72,72,0.6);
319
+ top: 26%;
320
+ }
321
+ .numInputWrapper span.arrowDown {
322
+ top: 50%;
323
+ }
324
+ .numInputWrapper span.arrowDown:after {
325
+ border-left: 4px solid transparent;
326
+ border-right: 4px solid transparent;
327
+ border-top: 4px solid rgba(72,72,72,0.6);
328
+ top: 40%;
329
+ }
330
+ .numInputWrapper span svg {
331
+ width: inherit;
332
+ height: auto;
333
+ }
334
+ .numInputWrapper span svg path {
335
+ fill: rgba(255,255,255,0.5);
336
+ }
337
+ .numInputWrapper:hover {
338
+ background: rgba(0,0,0,0.05);
339
+ }
340
+ .numInputWrapper:hover span {
341
+ opacity: 1;
342
+ }
343
+ .flatpickr-current-month {
344
+ font-size: 135%;
345
+ line-height: inherit;
346
+ font-weight: 300;
347
+ color: inherit;
348
+ position: absolute;
349
+ width: 75%;
350
+ left: 12.5%;
351
+ padding: 7.48px 0 0 0;
352
+ line-height: 1;
353
+ height: 34px;
354
+ display: inline-block;
355
+ text-align: center;
356
+ -webkit-transform: translate3d(0px, 0px, 0px);
357
+ transform: translate3d(0px, 0px, 0px);
358
+ }
359
+ .flatpickr-current-month span.cur-month {
360
+ font-family: inherit;
361
+ font-weight: 700;
362
+ color: inherit;
363
+ display: inline-block;
364
+ margin-left: 0.5ch;
365
+ padding: 0;
366
+ }
367
+ .flatpickr-current-month span.cur-month:hover {
368
+ background: rgba(0,0,0,0.05);
369
+ }
370
+ .flatpickr-current-month .numInputWrapper {
371
+ width: 6ch;
372
+ width: 7ch\\0;
373
+ display: inline-block;
374
+ }
375
+ .flatpickr-current-month .numInputWrapper span.arrowUp:after {
376
+ border-bottom-color: #fff;
377
+ }
378
+ .flatpickr-current-month .numInputWrapper span.arrowDown:after {
379
+ border-top-color: #fff;
380
+ }
381
+ .flatpickr-current-month input.cur-year {
382
+ background: transparent;
383
+ -webkit-box-sizing: border-box;
384
+ box-sizing: border-box;
385
+ color: inherit;
386
+ cursor: text;
387
+ padding: 0 0 0 0.5ch;
388
+ margin: 0;
389
+ display: inline-block;
390
+ font-size: inherit;
391
+ font-family: inherit;
392
+ font-weight: 300;
393
+ line-height: inherit;
394
+ height: auto;
395
+ border: 0;
396
+ border-radius: 0;
397
+ vertical-align: initial;
398
+ -webkit-appearance: textfield;
399
+ -moz-appearance: textfield;
400
+ appearance: textfield;
401
+ }
402
+ .flatpickr-current-month input.cur-year:focus {
403
+ outline: 0;
404
+ }
405
+ .flatpickr-current-month input.cur-year[disabled],
406
+ .flatpickr-current-month input.cur-year[disabled]:hover {
407
+ font-size: 100%;
408
+ color: rgba(255,255,255,0.5);
409
+ background: transparent;
410
+ pointer-events: none;
411
+ }
412
+ .flatpickr-current-month .flatpickr-monthDropdown-months {
413
+ appearance: menulist;
414
+ background: #1bbc9b;
415
+ border: none;
416
+ border-radius: 0;
417
+ box-sizing: border-box;
418
+ color: inherit;
419
+ cursor: pointer;
420
+ font-size: inherit;
421
+ font-family: inherit;
422
+ font-weight: 300;
423
+ height: auto;
424
+ line-height: inherit;
425
+ margin: -1px 0 0 0;
426
+ outline: none;
427
+ padding: 0 0 0 0.5ch;
428
+ position: relative;
429
+ vertical-align: initial;
430
+ -webkit-box-sizing: border-box;
431
+ -webkit-appearance: menulist;
432
+ -moz-appearance: menulist;
433
+ width: auto;
434
+ }
435
+ .flatpickr-current-month .flatpickr-monthDropdown-months:focus,
436
+ .flatpickr-current-month .flatpickr-monthDropdown-months:active {
437
+ outline: none;
438
+ }
439
+ .flatpickr-current-month .flatpickr-monthDropdown-months:hover {
440
+ background: rgba(0,0,0,0.05);
441
+ }
442
+ .flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month {
443
+ background-color: #1bbc9b;
444
+ outline: none;
445
+ padding: 0;
446
+ }
447
+ .flatpickr-weekdays {
448
+ background: #1bbc9b;
449
+ text-align: center;
450
+ overflow: hidden;
451
+ width: 100%;
452
+ display: -webkit-box;
453
+ display: -webkit-flex;
454
+ display: -ms-flexbox;
455
+ display: flex;
456
+ -webkit-box-align: center;
457
+ -webkit-align-items: center;
458
+ -ms-flex-align: center;
459
+ align-items: center;
460
+ height: 28px;
461
+ }
462
+ .flatpickr-weekdays .flatpickr-weekdaycontainer {
463
+ display: -webkit-box;
464
+ display: -webkit-flex;
465
+ display: -ms-flexbox;
466
+ display: flex;
467
+ -webkit-box-flex: 1;
468
+ -webkit-flex: 1;
469
+ -ms-flex: 1;
470
+ flex: 1;
471
+ }
472
+ span.flatpickr-weekday {
473
+ cursor: default;
474
+ font-size: 90%;
475
+ background: #1bbc9b;
476
+ color: rgba(0,0,0,0.54);
477
+ line-height: 1;
478
+ margin: 0;
479
+ text-align: center;
480
+ display: block;
481
+ -webkit-box-flex: 1;
482
+ -webkit-flex: 1;
483
+ -ms-flex: 1;
484
+ flex: 1;
485
+ font-weight: bolder;
486
+ }
487
+ .dayContainer,
488
+ .flatpickr-weeks {
489
+ padding: 1px 0 0 0;
490
+ }
491
+ .flatpickr-days {
492
+ position: relative;
493
+ overflow: hidden;
494
+ display: -webkit-box;
495
+ display: -webkit-flex;
496
+ display: -ms-flexbox;
497
+ display: flex;
498
+ -webkit-box-align: start;
499
+ -webkit-align-items: flex-start;
500
+ -ms-flex-align: start;
501
+ align-items: flex-start;
502
+ width: 307.875px;
503
+ border-left: 1px solid rgba(72,72,72,0.2);
504
+ border-right: 1px solid rgba(72,72,72,0.2);
505
+ }
506
+ .flatpickr-days:focus {
507
+ outline: 0;
508
+ }
509
+ .dayContainer {
510
+ padding: 0;
511
+ outline: 0;
512
+ text-align: left;
513
+ width: 307.875px;
514
+ min-width: 307.875px;
515
+ max-width: 307.875px;
516
+ -webkit-box-sizing: border-box;
517
+ box-sizing: border-box;
518
+ display: inline-block;
519
+ display: -ms-flexbox;
520
+ display: -webkit-box;
521
+ display: -webkit-flex;
522
+ display: flex;
523
+ -webkit-flex-wrap: wrap;
524
+ flex-wrap: wrap;
525
+ -ms-flex-wrap: wrap;
526
+ -ms-flex-pack: justify;
527
+ -webkit-justify-content: space-around;
528
+ justify-content: space-around;
529
+ -webkit-transform: translate3d(0px, 0px, 0px);
530
+ transform: translate3d(0px, 0px, 0px);
531
+ opacity: 1;
532
+ }
533
+ .dayContainer + .dayContainer {
534
+ -webkit-box-shadow: -1px 0 0 rgba(72,72,72,0.2);
535
+ box-shadow: -1px 0 0 rgba(72,72,72,0.2);
536
+ }
537
+ .flatpickr-day {
538
+ background: none;
539
+ border: 1px solid transparent;
540
+ border-radius: 150px;
541
+ -webkit-box-sizing: border-box;
542
+ box-sizing: border-box;
543
+ color: #484848;
544
+ cursor: pointer;
545
+ font-weight: 400;
546
+ width: 14.2857143%;
547
+ -webkit-flex-basis: 14.2857143%;
548
+ -ms-flex-preferred-size: 14.2857143%;
549
+ flex-basis: 14.2857143%;
550
+ max-width: 39px;
551
+ height: 39px;
552
+ line-height: 39px;
553
+ margin: 0;
554
+ display: inline-block;
555
+ position: relative;
556
+ -webkit-box-pack: center;
557
+ -webkit-justify-content: center;
558
+ -ms-flex-pack: center;
559
+ justify-content: center;
560
+ text-align: center;
561
+ }
562
+ .flatpickr-day.inRange,
563
+ .flatpickr-day.prevMonthDay.inRange,
564
+ .flatpickr-day.nextMonthDay.inRange,
565
+ .flatpickr-day.today.inRange,
566
+ .flatpickr-day.prevMonthDay.today.inRange,
567
+ .flatpickr-day.nextMonthDay.today.inRange,
568
+ .flatpickr-day:hover,
569
+ .flatpickr-day.prevMonthDay:hover,
570
+ .flatpickr-day.nextMonthDay:hover,
571
+ .flatpickr-day:focus,
572
+ .flatpickr-day.prevMonthDay:focus,
573
+ .flatpickr-day.nextMonthDay:focus {
574
+ cursor: pointer;
575
+ outline: 0;
576
+ background: #e2e2e2;
577
+ border-color: #e2e2e2;
578
+ }
579
+ .flatpickr-day.today {
580
+ border-color: #bbb;
581
+ }
582
+ .flatpickr-day.today:hover,
583
+ .flatpickr-day.today:focus {
584
+ border-color: #bbb;
585
+ background: #bbb;
586
+ color: #fff;
587
+ }
588
+ .flatpickr-day.selected,
589
+ .flatpickr-day.startRange,
590
+ .flatpickr-day.endRange,
591
+ .flatpickr-day.selected.inRange,
592
+ .flatpickr-day.startRange.inRange,
593
+ .flatpickr-day.endRange.inRange,
594
+ .flatpickr-day.selected:focus,
595
+ .flatpickr-day.startRange:focus,
596
+ .flatpickr-day.endRange:focus,
597
+ .flatpickr-day.selected:hover,
598
+ .flatpickr-day.startRange:hover,
599
+ .flatpickr-day.endRange:hover,
600
+ .flatpickr-day.selected.prevMonthDay,
601
+ .flatpickr-day.startRange.prevMonthDay,
602
+ .flatpickr-day.endRange.prevMonthDay,
603
+ .flatpickr-day.selected.nextMonthDay,
604
+ .flatpickr-day.startRange.nextMonthDay,
605
+ .flatpickr-day.endRange.nextMonthDay {
606
+ background: #1bbc9b;
607
+ -webkit-box-shadow: none;
608
+ box-shadow: none;
609
+ color: #fff;
610
+ border-color: #1bbc9b;
611
+ }
612
+ .flatpickr-day.selected.startRange,
613
+ .flatpickr-day.startRange.startRange,
614
+ .flatpickr-day.endRange.startRange {
615
+ border-radius: 50px 0 0 50px;
616
+ }
617
+ .flatpickr-day.selected.endRange,
618
+ .flatpickr-day.startRange.endRange,
619
+ .flatpickr-day.endRange.endRange {
620
+ border-radius: 0 50px 50px 0;
621
+ }
622
+ .flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),
623
+ .flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),
624
+ .flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)) {
625
+ -webkit-box-shadow: -10px 0 0 #1bbc9b;
626
+ box-shadow: -10px 0 0 #1bbc9b;
627
+ }
628
+ .flatpickr-day.selected.startRange.endRange,
629
+ .flatpickr-day.startRange.startRange.endRange,
630
+ .flatpickr-day.endRange.startRange.endRange {
631
+ border-radius: 50px;
632
+ }
633
+ .flatpickr-day.inRange {
634
+ border-radius: 0;
635
+ -webkit-box-shadow: -5px 0 0 #e2e2e2, 5px 0 0 #e2e2e2;
636
+ box-shadow: -5px 0 0 #e2e2e2, 5px 0 0 #e2e2e2;
637
+ }
638
+ .flatpickr-day.flatpickr-disabled,
639
+ .flatpickr-day.flatpickr-disabled:hover,
640
+ .flatpickr-day.prevMonthDay,
641
+ .flatpickr-day.nextMonthDay,
642
+ .flatpickr-day.notAllowed,
643
+ .flatpickr-day.notAllowed.prevMonthDay,
644
+ .flatpickr-day.notAllowed.nextMonthDay {
645
+ color: rgba(72,72,72,0.3);
646
+ background: transparent;
647
+ border-color: transparent;
648
+ cursor: default;
649
+ }
650
+ .flatpickr-day.flatpickr-disabled,
651
+ .flatpickr-day.flatpickr-disabled:hover {
652
+ cursor: not-allowed;
653
+ color: rgba(72,72,72,0.1);
654
+ }
655
+ .flatpickr-day.week.selected {
656
+ border-radius: 0;
657
+ -webkit-box-shadow: -5px 0 0 #1bbc9b, 5px 0 0 #1bbc9b;
658
+ box-shadow: -5px 0 0 #1bbc9b, 5px 0 0 #1bbc9b;
659
+ }
660
+ .flatpickr-day.hidden {
661
+ visibility: hidden;
662
+ }
663
+ .rangeMode .flatpickr-day {
664
+ margin-top: 1px;
665
+ }
666
+ .flatpickr-weekwrapper {
667
+ float: left;
668
+ }
669
+ .flatpickr-weekwrapper .flatpickr-weeks {
670
+ padding: 0 12px;
671
+ border-left: 1px solid rgba(72,72,72,0.2);
672
+ }
673
+ .flatpickr-weekwrapper .flatpickr-weekday {
674
+ float: none;
675
+ width: 100%;
676
+ line-height: 28px;
677
+ }
678
+ .flatpickr-weekwrapper span.flatpickr-day,
679
+ .flatpickr-weekwrapper span.flatpickr-day:hover {
680
+ display: block;
681
+ width: 100%;
682
+ max-width: none;
683
+ color: rgba(72,72,72,0.3);
684
+ background: transparent;
685
+ cursor: default;
686
+ border: none;
687
+ }
688
+ .flatpickr-innerContainer {
689
+ display: block;
690
+ display: -webkit-box;
691
+ display: -webkit-flex;
692
+ display: -ms-flexbox;
693
+ display: flex;
694
+ -webkit-box-sizing: border-box;
695
+ box-sizing: border-box;
696
+ overflow: hidden;
697
+ background: #fff;
698
+ border-bottom: 1px solid rgba(72,72,72,0.2);
699
+ }
700
+ .flatpickr-rContainer {
701
+ display: inline-block;
702
+ padding: 0;
703
+ -webkit-box-sizing: border-box;
704
+ box-sizing: border-box;
705
+ }
706
+ .flatpickr-time {
707
+ text-align: center;
708
+ outline: 0;
709
+ display: block;
710
+ height: 0;
711
+ line-height: 40px;
712
+ max-height: 40px;
713
+ -webkit-box-sizing: border-box;
714
+ box-sizing: border-box;
715
+ overflow: hidden;
716
+ display: -webkit-box;
717
+ display: -webkit-flex;
718
+ display: -ms-flexbox;
719
+ display: flex;
720
+ background: #fff;
721
+ border-radius: 0 0 5px 5px;
722
+ }
723
+ .flatpickr-time:after {
724
+ content: "";
725
+ display: table;
726
+ clear: both;
727
+ }
728
+ .flatpickr-time .numInputWrapper {
729
+ -webkit-box-flex: 1;
730
+ -webkit-flex: 1;
731
+ -ms-flex: 1;
732
+ flex: 1;
733
+ width: 40%;
734
+ height: 40px;
735
+ float: left;
736
+ }
737
+ .flatpickr-time .numInputWrapper span.arrowUp:after {
738
+ border-bottom-color: #484848;
739
+ }
740
+ .flatpickr-time .numInputWrapper span.arrowDown:after {
741
+ border-top-color: #484848;
742
+ }
743
+ .flatpickr-time.hasSeconds .numInputWrapper {
744
+ width: 26%;
745
+ }
746
+ .flatpickr-time.time24hr .numInputWrapper {
747
+ width: 49%;
748
+ }
749
+ .flatpickr-time input {
750
+ background: transparent;
751
+ -webkit-box-shadow: none;
752
+ box-shadow: none;
753
+ border: 0;
754
+ border-radius: 0;
755
+ text-align: center;
756
+ margin: 0;
757
+ padding: 0;
758
+ height: inherit;
759
+ line-height: inherit;
760
+ color: #484848;
761
+ font-size: 14px;
762
+ position: relative;
763
+ -webkit-box-sizing: border-box;
764
+ box-sizing: border-box;
765
+ -webkit-appearance: textfield;
766
+ -moz-appearance: textfield;
767
+ appearance: textfield;
768
+ }
769
+ .flatpickr-time input.flatpickr-hour {
770
+ font-weight: bold;
771
+ }
772
+ .flatpickr-time input.flatpickr-minute,
773
+ .flatpickr-time input.flatpickr-second {
774
+ font-weight: 400;
775
+ }
776
+ .flatpickr-time input:focus {
777
+ outline: 0;
778
+ border: 0;
779
+ }
780
+ .flatpickr-time .flatpickr-time-separator,
781
+ .flatpickr-time .flatpickr-am-pm {
782
+ height: inherit;
783
+ float: left;
784
+ line-height: inherit;
785
+ color: #484848;
786
+ font-weight: bold;
787
+ width: 2%;
788
+ -webkit-user-select: none;
789
+ -moz-user-select: none;
790
+ -ms-user-select: none;
791
+ user-select: none;
792
+ -webkit-align-self: center;
793
+ -ms-flex-item-align: center;
794
+ align-self: center;
795
+ }
796
+ .flatpickr-time .flatpickr-am-pm {
797
+ outline: 0;
798
+ width: 18%;
799
+ cursor: pointer;
800
+ text-align: center;
801
+ font-weight: 400;
802
+ }
803
+ .flatpickr-time input:hover,
804
+ .flatpickr-time .flatpickr-am-pm:hover,
805
+ .flatpickr-time input:focus,
806
+ .flatpickr-time .flatpickr-am-pm:focus {
807
+ background: #eaeaea;
808
+ }
809
+ .flatpickr-input[readonly] {
810
+ cursor: pointer;
811
+ }
812
+ @-webkit-keyframes fpFadeInDown {
813
+ from {
814
+ opacity: 0;
815
+ -webkit-transform: translate3d(0, -20px, 0);
816
+ transform: translate3d(0, -20px, 0);
817
+ }
818
+ to {
819
+ opacity: 1;
820
+ -webkit-transform: translate3d(0, 0, 0);
821
+ transform: translate3d(0, 0, 0);
822
+ }
823
+ }
824
+ @keyframes fpFadeInDown {
825
+ from {
826
+ opacity: 0;
827
+ -webkit-transform: translate3d(0, -20px, 0);
828
+ transform: translate3d(0, -20px, 0);
829
+ }
830
+ to {
831
+ opacity: 1;
832
+ -webkit-transform: translate3d(0, 0, 0);
833
+ transform: translate3d(0, 0, 0);
834
+ }
835
+ }
836
+ `, ""]);
837
+ // Exports
838
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
839
+
840
+
841
+ /***/ }),
842
+
843
+ /***/ 27:
844
+ /***/ ((module, __webpack_exports__, __webpack_require__) => {
845
+
846
+ /* harmony export */ __webpack_require__.d(__webpack_exports__, {
847
+ /* harmony export */ A: () => (__WEBPACK_DEFAULT_EXPORT__)
848
+ /* harmony export */ });
849
+ /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(601);
850
+ /* harmony import */ var _node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0__);
851
+ /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(314);
852
+ /* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__);
853
+ /* harmony import */ var _node_modules_css_loader_dist_cjs_js_node_modules_flatpickr_dist_themes_material_green_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(941);
854
+ // Imports
855
+
856
+
857
+
858
+ var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_noSourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default()));
859
+ ___CSS_LOADER_EXPORT___.i(_node_modules_css_loader_dist_cjs_js_node_modules_flatpickr_dist_themes_material_green_css__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .A);
860
+ // Module
861
+ ___CSS_LOADER_EXPORT___.push([module.id, `/* src/components/Timeline/Timeline.css */
862
+
863
+ /*
864
+ Temel: "sales sayfası" temasıyla uyumlu renkler,
865
+ light vs. dark tanımları
866
+ */
867
+
868
+ :root {
869
+ /* Light Tema Varsayılan Renkler */
870
+ --background-color: #f5f5f2; /* Açık tema arka plan */
871
+ --text-color: #666; /* Açık tema yazı rengi */
872
+ --border-color: #bbb; /* Daha yumuşak border */
873
+
874
+ /* Header */
875
+ --header-background-color: #f5f5f2; /* Üst header, tablo header */
876
+ --header-text-color: #666;
877
+
878
+ /* Resources */
879
+ --resource-background-color: #f5f5f2;
880
+ --resource-text-color: #666;
881
+ --group-header-background-color: #dadada;
882
+
883
+ /* Timeline */
884
+ --timeline-header-background-color: #f5f5f2;
885
+ --timeline-cell-border-color: #ccc;
886
+ --timeline-event-background-color: #fff;
887
+ --timeline-event-border-color: #666;
888
+ --timeline-event-text-color: #666;
889
+
890
+ /* Scrollbar */
891
+ --scrollbar-thumb-background: #aaa;
892
+ --scrollbar-thumb-hover-background: #888;
893
+
894
+ --resource-width: 150px;
895
+ --cell-height: 40px;
896
+ --header-height: 60px;
897
+ --time-slot-height: 20px;
898
+ --container-height: 480px;
899
+
900
+ --timeline-new-event-background-color: #ff5722;
901
+ --timeline-new-event-text-color: #fff;
902
+
903
+ --timeline-event-background-color: #ff7f50;
904
+ --timeline-event-text-color: #fff;
905
+ --timeline-event-border-color: #fff;
906
+
907
+ --timeline-cell-selected-bg: rgba(25,118,210,0.2);
908
+
909
+ user-select: none; /* Metin seçimini engelle */
910
+ }
911
+
912
+ /* Koyu Tema */
913
+ .dark-mode {
914
+ /* Koyu tema */
915
+ --background-color: #16202a; /* Koyu tema arka plan */
916
+ --text-color: #ddd; /* Koyu tema yazı rengi */
917
+ --border-color: #444;
918
+
919
+ --header-background-color: #16202a;
920
+ --header-text-color: #bbb;
921
+
922
+ --resource-background-color: #16202a;
923
+ --resource-text-color: #bbb;
924
+ --group-header-background-color: #0d141b;
925
+
926
+ --timeline-header-background-color: #16202a;
927
+ --timeline-cell-border-color: #444;
928
+ --timeline-event-background-color: #2a2a2a;
929
+ --timeline-event-border-color: #222;
930
+ --timeline-event-text-color: #ddd;
931
+
932
+ --scrollbar-thumb-background: #555;
933
+ --scrollbar-thumb-hover-background: #888;
934
+
935
+ --timeline-new-event-background-color: #a83e20;
936
+ --timeline-new-event-text-color: #eee;
937
+
938
+ --timeline-event-background-color: #a83e20;
939
+ --timeline-event-text-color: #fff;
940
+ --timeline-event-border-color: #222;
941
+
942
+ --timeline-cell-selected-bg: rgba(76,175,80,0.2);
943
+ }
944
+
945
+ /* Genel Timeline Konteyner */
946
+ .timeline-container {
947
+ display: flex;
948
+ flex-direction: column;
949
+ width: 100%;
950
+ height: 100%;
951
+ border: 1px solid var(--border-color);
952
+ border-radius: 8px;
953
+ overflow: hidden;
954
+ box-sizing: border-box;
955
+ background-color: var(--background-color);
956
+ color: var(--text-color);
957
+ }
958
+
959
+ /* Master Header */
960
+ .timeline-master-header {
961
+ width: 100%;
962
+ background-color: var(--header-background-color);
963
+ color: var(--header-text-color);
964
+ border-bottom: 1px solid var(--border-color);
965
+ z-index: 10;
966
+ padding: 10px;
967
+ box-sizing: border-box;
968
+ }
969
+
970
+ /* Timeline Body */
971
+ .timeline-body {
972
+ display: flex;
973
+ flex: 1;
974
+ }
975
+
976
+ /* Sol Kısım: Resources */
977
+ .timeline-resources-container {
978
+ width: var(--resource-width);
979
+ display: flex;
980
+ flex-direction: column;
981
+ border-right: 1px solid var(--border-color);
982
+ position: sticky;
983
+ left: 0;
984
+ top: var(--header-height);
985
+ z-index: 2;
986
+ background-color: var(--resource-background-color);
987
+ overflow-y: auto;
988
+ }
989
+
990
+ /* Resources Header */
991
+ .resources-header {
992
+ background-color: var(--header-background-color);
993
+ color: var(--resource-text-color);
994
+ text-align: center;
995
+ width: var(--resource-width);
996
+ font-weight: bold;
997
+ display: flex;
998
+ flex-direction: column;
999
+ justify-content: center;
1000
+ align-items: center;
1001
+ height: calc(var(--header-height) * 2); /* Üst üste iki header yüksekliği */
1002
+ border-right: 1px solid var(--border-color);
1003
+ box-sizing: border-box;
1004
+ }
1005
+
1006
+ /* Grup Başlığı Hücreleri */
1007
+ .group-header-row {
1008
+ display: flex;
1009
+ height: var(--cell-height);
1010
+ background-color: var(--group-header-background-color);
1011
+ color: var(--resource-text-color);
1012
+ font-weight: bold;
1013
+ }
1014
+
1015
+ .group-header-cell {
1016
+ flex: 1;
1017
+ border: 1px solid var(--border-color);
1018
+ text-align: center;
1019
+ background-color: var(--group-header-background-color);
1020
+ color: var(--resource-text-color);
1021
+ height: var(--cell-height);
1022
+ display: flex;
1023
+ align-items: center;
1024
+ justify-content: center;
1025
+ }
1026
+
1027
+ /* Resource Grupları */
1028
+ .resource-group {
1029
+ display: flex;
1030
+ flex-direction: column;
1031
+ }
1032
+
1033
+ /* Resource Grup Header */
1034
+ .resource-group-header {
1035
+ background-color: var(--group-header-background-color);
1036
+ color: var(--resource-text-color);
1037
+ font-weight: bold;
1038
+ height: var(--cell-height);
1039
+ box-sizing: border-box;
1040
+ display: flex;
1041
+ align-items: center;
1042
+ justify-content: space-between;
1043
+ padding: 0 0px;
1044
+ cursor: pointer;
1045
+ border: 1px solid var(--border-color);
1046
+ }
1047
+
1048
+ /* Resource Hücreleri */
1049
+ .resource-cell {
1050
+ padding: 0;
1051
+ text-align: left;
1052
+ background-color: var(--resource-background-color);
1053
+ color: var(--resource-text-color);
1054
+ height: var(--cell-height);
1055
+ display: flex;
1056
+ align-items: center;
1057
+ border: 0.3px solid var(--border-color);
1058
+ box-sizing: border-box;
1059
+ }
1060
+
1061
+ /* Sağ Kısım: Timeline */
1062
+ .timeline-scrollable-container {
1063
+ flex: 1;
1064
+ overflow-x: auto;
1065
+ overflow-y: hidden;
1066
+ display: flex;
1067
+ flex-direction: column;
1068
+ position: relative;
1069
+ }
1070
+
1071
+ /* Header ve Content Wrapper */
1072
+ .timeline-header-content-wrapper {
1073
+ display: flex;
1074
+ flex-direction: column;
1075
+ }
1076
+
1077
+ /* Timeline Header */
1078
+ .timeline-header {
1079
+ display: flex;
1080
+ background-color: var(--timeline-header-background-color);
1081
+ color: var(--header-text-color);
1082
+ position: sticky;
1083
+ top: 0;
1084
+ z-index: 2;
1085
+ height: var(--header-height);
1086
+ overflow: hidden;
1087
+ box-sizing: border-box;
1088
+ }
1089
+
1090
+ /* Timeline Content */
1091
+ .timeline-content {
1092
+ display: flex;
1093
+ flex-direction: column;
1094
+ }
1095
+
1096
+ /* Grup Container */
1097
+ .group-container {
1098
+ display: flex;
1099
+ flex-direction: column;
1100
+ }
1101
+
1102
+ /* Resource Satırları */
1103
+ .resource-row {
1104
+ display: flex;
1105
+ box-sizing: border-box;
1106
+ position: relative;
1107
+ height: var(--cell-height);
1108
+ border: 1px solid var(--border-color);
1109
+ margin-top: -1px;
1110
+ overflow: hidden;
1111
+ }
1112
+
1113
+ /* Timeline Hücreleri */
1114
+ .timeline-cell {
1115
+ flex: 1;
1116
+ border: 1px solid var(--timeline-cell-border-color);
1117
+ height: 100%;
1118
+ box-sizing: border-box;
1119
+ }
1120
+
1121
+ /* Hücre Seçili Durumu */
1122
+ .timeline-cell.selected {
1123
+ background-color: rgba(25, 118, 210, 0.2); /* satır içi/hover */
1124
+ }
1125
+
1126
+ /* Event Stilleri */
1127
+ .event {
1128
+ position: absolute;
1129
+ background-color: var(--timeline-event-background-color);
1130
+ color: var(--timeline-event-text-color);
1131
+ font-size: 12px;
1132
+ padding: 2px 5px;
1133
+ border-radius: 4px;
1134
+ text-align: left;
1135
+ display: flex;
1136
+ flex-direction: column;
1137
+ justify-content: center;
1138
+ box-sizing: border-box;
1139
+ z-index: 10;
1140
+ overflow: hidden;
1141
+ text-overflow: ellipsis;
1142
+ white-space: nowrap;
1143
+ border: 1px solid var(--timeline-event-border-color);
1144
+ cursor: pointer;
1145
+ }
1146
+
1147
+ /* Event Time Stili */
1148
+ .event-time {
1149
+ font-size: 10px;
1150
+ margin-top: 2px;
1151
+ }
1152
+
1153
+ /* Scrollbar için */
1154
+ .timeline-scrollable-container::-webkit-scrollbar {
1155
+ height: 10px;
1156
+ }
1157
+
1158
+ .timeline-scrollable-container::-webkit-scrollbar-thumb {
1159
+ background: var(--scrollbar-thumb-background);
1160
+ border-radius: 5px;
1161
+ }
1162
+
1163
+ .timeline-scrollable-container::-webkit-scrollbar-thumb:hover {
1164
+ background: var(--scrollbar-thumb-hover-background);
1165
+ }
1166
+
1167
+ .resources-header {
1168
+ background-color: var(--header-background-color);
1169
+ color: var(--resource-text-color);
1170
+ text-align: center;
1171
+ width: var(--resource-width);
1172
+ font-weight: bold;
1173
+ display: flex;
1174
+ flex-direction: column;
1175
+ justify-content: center;
1176
+ align-items: center;
1177
+ height: 80px;
1178
+ border-right: 1px solid var(--border-color);
1179
+ box-sizing: border-box;
1180
+ }
1181
+
1182
+ /* TimelineHeader Container */
1183
+ .timeline-header-container {
1184
+ flex: 1;
1185
+ display: flex;
1186
+ flex-direction: column;
1187
+ }
1188
+
1189
+ /* Ay + Yıl satırı */
1190
+ .timeline-header-month-row {
1191
+ display: flex;
1192
+ background-color: var(--header-background-color);
1193
+ color: var(--header-text-color);
1194
+ font-weight: bold;
1195
+ font-size: 16px;
1196
+ height: 40px;
1197
+ line-height: 40px;
1198
+ border-bottom: 1px solid var(--border-color);
1199
+ }
1200
+
1201
+ /* Ay + Yıl hücreleri */
1202
+ .timeline-header-month-cell {
1203
+ text-align: center;
1204
+ display: flex;
1205
+ align-items: center;
1206
+ justify-content: center;
1207
+ /* border-right => dynamic, inline style if needed */
1208
+ box-sizing: border-box;
1209
+ }
1210
+
1211
+ /* Günlük Hücreler (tarih satırı) */
1212
+ .timeline-header-day-row {
1213
+ display: flex;
1214
+ background-color: var(--timeline-header-background-color);
1215
+ color: var(--header-text-color);
1216
+ /* border-bottom: 1px solid var(--border-color); if needed */
1217
+ }
1218
+
1219
+ /* Günlük hücre (her gün) */
1220
+ .timeline-header-day-cell {
1221
+ height: 40px;
1222
+ line-height: 40px;
1223
+ font-size: 14px;
1224
+ white-space: nowrap;
1225
+ overflow: hidden;
1226
+ text-overflow: ellipsis;
1227
+ text-align: center;
1228
+ box-sizing: border-box;
1229
+ }
1230
+
1231
+
1232
+ /* src/components/Timeline/Timeline.css */
1233
+ /* Ekleme: MasterHeader stili */
1234
+
1235
+ /* Kapsayıcı */
1236
+ .master-header-container {
1237
+ display: flex;
1238
+ align-items: center;
1239
+ justify-content: space-between; /* Butonlar solda, select sağda */
1240
+ padding: 10px;
1241
+ background-color: var(--header-background-color);
1242
+ color: var(--header-text-color);
1243
+ }
1244
+
1245
+ .master-header-buttons {
1246
+ display: flex; /* Yan yana dizilim */
1247
+ align-items: center; /* Dikey hizalama */
1248
+ }
1249
+
1250
+ .master-header-btn {
1251
+ background-color: transparent;
1252
+ color: var(--header-text-color);
1253
+ border: 1px solid var(--border-color);
1254
+ border-radius: 4px;
1255
+ padding: 6px 12px;
1256
+ margin-right: 10px; /* Butonlar arasında mesafe */
1257
+ cursor: pointer;
1258
+ font-size: 14px;
1259
+ transition: background-color 0.2s ease, color 0.2s ease;
1260
+ }
1261
+
1262
+ .master-header-btn:hover {
1263
+ background-color: rgba(25, 118, 210, 0.2); /* Açık tema hover */
1264
+ }
1265
+
1266
+ .dark-mode .master-header-btn:hover {
1267
+ background-color: rgba(76, 175, 80, 0.2); /* Koyu tema hover */
1268
+ }
1269
+
1270
+ .master-header-btn:focus {
1271
+ outline: none;
1272
+ }
1273
+
1274
+
1275
+
1276
+ /* Tarih seçici (Date Picker) */
1277
+ .master-header-date-picker {
1278
+ background-color: transparent;
1279
+ color: var(--header-text-color);
1280
+ border: 1px solid var(--border-color);
1281
+ border-radius: 4px;
1282
+ padding: 5px 12px;
1283
+ margin-right: 10px; /* Butonlar arasında mesafe */
1284
+ cursor: pointer;
1285
+ font-size: 14px;
1286
+ transition: background-color 0.2s ease, color 0.2s ease;
1287
+ }
1288
+
1289
+ .master-header-date-picker:hover {
1290
+ background-color: rgba(25, 118, 210, 0.2); /* Açık tema hover */
1291
+ }
1292
+
1293
+ .dark-mode .master-header-date-picker:hover {
1294
+ background-color: rgba(76, 175, 80, 0.2); /* Koyu tema hover */
1295
+ }
1296
+
1297
+ .master-header-date-picker:focus {
1298
+ outline: none;
1299
+ }
1300
+
1301
+ /* Select */
1302
+ .master-header-select {
1303
+ margin-left: auto; /* Sağa yaslamak için */
1304
+ background-color: transparent;
1305
+ color: var(--header-text-color);
1306
+ border: 1px solid var(--border-color);
1307
+ border-radius: 4px;
1308
+ padding: 4px 8px;
1309
+ font-size: 14px;
1310
+ cursor: pointer;
1311
+ }
1312
+
1313
+ .master-header-select:focus {
1314
+ outline: none;
1315
+ }
1316
+
1317
+ /* Flatpickr Takvim Kutusu */
1318
+ .flatpickr-calendar {
1319
+ background-color: var(--background-color);
1320
+ color: var(--text-color);
1321
+ border: 1px solid var(--border-color);
1322
+ box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2); /* Gölge efekti */
1323
+ }
1324
+
1325
+
1326
+ /* Flatpickr Günü */
1327
+ .flatpickr-day {
1328
+ background-color: var(--background-color); /* Arka plan rengi */
1329
+ color: var(--text-color); /* Yazı rengi */
1330
+ border-radius: 4px; /* Köşeleri yuvarlat */
1331
+ cursor: pointer;
1332
+ }
1333
+
1334
+ .flatpickr-day:hover {
1335
+ background-color: rgba(25, 118, 210, 0.2); /* Hover efekti */
1336
+ }
1337
+
1338
+ .dark-mode .flatpickr-day:hover {
1339
+ background-color: rgba(76, 175, 80, 0.2); /* Koyu tema hover efekti */
1340
+ }
1341
+
1342
+ /* Seçili Gün */
1343
+ .flatpickr-day.selected {
1344
+ background-color: #4caf50; /* Seçili gün rengi */
1345
+ color: white; /* Seçili gün yazı rengi */
1346
+ }
1347
+
1348
+ /* Flatpickr Ay ve Yıl */
1349
+ .flatpickr-months .flatpickr-month {
1350
+ background-color: var(--background-color);
1351
+ color: var(--text-color);
1352
+ }
1353
+
1354
+ /* Flatpickr Ay İleri ve Geri Düğmeleri */
1355
+ .flatpickr-prev-month, .flatpickr-next-month {
1356
+ color: var(--text-color);
1357
+ cursor: pointer;
1358
+ }
1359
+
1360
+ /* Koyu Tema Örnekleri */
1361
+ .dark-mode .flatpickr-calendar {
1362
+ background-color: #1f2937; /* Koyu tema arka plan */
1363
+ color: #ffffff; /* Koyu tema yazı rengi */
1364
+ }
1365
+
1366
+ .dark-mode .flatpickr-day.selected {
1367
+ background-color: #4caf50;
1368
+ color: white;
1369
+ }
1370
+
1371
+
1372
+ /* Container */
1373
+ .timeline-content-container {
1374
+ position: relative;
1375
+ width: 100%;
1376
+ height: auto; /* or as needed */
1377
+ display: flex;
1378
+ flex-direction: column;
1379
+ }
1380
+
1381
+ /* Group container */
1382
+ .timeline-group-container {
1383
+ margin-bottom: 0px;
1384
+ display: flex;
1385
+ flex-direction: column;
1386
+ }
1387
+
1388
+ /* Group header row */
1389
+ .timeline-group-header-row {
1390
+ display: flex;
1391
+ margin-top: -0.08rem;
1392
+ }
1393
+
1394
+ .timeline-group-header-cell {
1395
+ flex: 1;
1396
+ height: 2.58rem;
1397
+ background-color: var(--group-header-background-color);
1398
+ border: 1px solid var(--border-color);
1399
+
1400
+ box-sizing: border-box;
1401
+ display: flex;
1402
+ align-items: center;
1403
+ justify-content: center;
1404
+ }
1405
+
1406
+ /* Resource row */
1407
+ .timeline-resource-row {
1408
+ display: flex;
1409
+ position: relative;
1410
+ height: var(--cell-height, 40px);
1411
+ border: 1px solid var(--border-color);
1412
+ box-sizing: border-box;
1413
+ }
1414
+
1415
+ /* Each day cell */
1416
+ .timeline-cell {
1417
+ flex: 1;
1418
+ height: 100%;
1419
+ position: relative;
1420
+ border-left: 1px solid var(--border-color);
1421
+ border-right: 1px solid var(--border-color);
1422
+ box-sizing: border-box;
1423
+ cursor: pointer;
1424
+ }
1425
+
1426
+ /* "selected" day cell */
1427
+ .timeline-cell.selected {
1428
+ background-color: var(--timeline-cell-selected-bg, rgba(25,118,210,0.2));
1429
+ }
1430
+
1431
+ /* Event */
1432
+ .timeline-event {
1433
+ position: absolute;
1434
+ background-color: var(--timeline-event-background-color, #0093ce);
1435
+ color: var(--timeline-event-text-color, #fff);
1436
+ font-size: 14px;
1437
+ padding: 5px;
1438
+ border-radius: 20px;
1439
+ box-sizing: border-box;
1440
+ z-index: 10;
1441
+ overflow: hidden;
1442
+ text-overflow: ellipsis;
1443
+ white-space: nowrap;
1444
+ border: 1px solid var(--timeline-event-border-color, #fff);
1445
+ top: 5px; /* or a variable offset if you want */
1446
+ /* "left" and "width" are inline from JS */
1447
+ }
1448
+
1449
+ /* Extend handle */
1450
+ .timeline-event-extend-handle {
1451
+ position: absolute;
1452
+ right: 0;
1453
+ top: 0;
1454
+ width: 10px;
1455
+ height: 100%;
1456
+ background-color: rgba(0,0,0,0.2);
1457
+ cursor: col-resize;
1458
+ z-index: 20;
1459
+ }
1460
+
1461
+ /* Temp event (while creating) */
1462
+ .timeline-temp-event {
1463
+ position: absolute;
1464
+ background-color: var(--timeline-new-event-background-color, #0093ce);
1465
+ color: var(--timeline-new-event-text-color, #fff);
1466
+ opacity: 0.7;
1467
+ border-radius: 20px;
1468
+ z-index: 9;
1469
+ display: flex;
1470
+ align-items: center;
1471
+ justify-content: center;
1472
+ font-size: 14px;
1473
+ /* "left"/"width" from JS: " ...calculatePosition(tempEvent, dates)" */
1474
+ top: 5px;
1475
+ }
1476
+ `, ""]);
1477
+ // Exports
1478
+ /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
1479
+
1480
+
1481
+ /***/ }),
1482
+
1483
+ /***/ 314:
1484
+ /***/ ((module) => {
1485
+
1486
+
1487
+
1488
+ /*
1489
+ MIT License http://www.opensource.org/licenses/mit-license.php
1490
+ Author Tobias Koppers @sokra
1491
+ */
1492
+ module.exports = function (cssWithMappingToString) {
1493
+ var list = [];
1494
+
1495
+ // return the list of modules as css string
1496
+ list.toString = function toString() {
1497
+ return this.map(function (item) {
1498
+ var content = "";
1499
+ var needLayer = typeof item[5] !== "undefined";
1500
+ if (item[4]) {
1501
+ content += "@supports (".concat(item[4], ") {");
1502
+ }
1503
+ if (item[2]) {
1504
+ content += "@media ".concat(item[2], " {");
1505
+ }
1506
+ if (needLayer) {
1507
+ content += "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {");
1508
+ }
1509
+ content += cssWithMappingToString(item);
1510
+ if (needLayer) {
1511
+ content += "}";
1512
+ }
1513
+ if (item[2]) {
1514
+ content += "}";
1515
+ }
1516
+ if (item[4]) {
1517
+ content += "}";
1518
+ }
1519
+ return content;
1520
+ }).join("");
1521
+ };
1522
+
1523
+ // import a list of modules into the list
1524
+ list.i = function i(modules, media, dedupe, supports, layer) {
1525
+ if (typeof modules === "string") {
1526
+ modules = [[null, modules, undefined]];
1527
+ }
1528
+ var alreadyImportedModules = {};
1529
+ if (dedupe) {
1530
+ for (var k = 0; k < this.length; k++) {
1531
+ var id = this[k][0];
1532
+ if (id != null) {
1533
+ alreadyImportedModules[id] = true;
1534
+ }
1535
+ }
1536
+ }
1537
+ for (var _k = 0; _k < modules.length; _k++) {
1538
+ var item = [].concat(modules[_k]);
1539
+ if (dedupe && alreadyImportedModules[item[0]]) {
1540
+ continue;
1541
+ }
1542
+ if (typeof layer !== "undefined") {
1543
+ if (typeof item[5] === "undefined") {
1544
+ item[5] = layer;
1545
+ } else {
1546
+ item[1] = "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {").concat(item[1], "}");
1547
+ item[5] = layer;
1548
+ }
1549
+ }
1550
+ if (media) {
1551
+ if (!item[2]) {
1552
+ item[2] = media;
1553
+ } else {
1554
+ item[1] = "@media ".concat(item[2], " {").concat(item[1], "}");
1555
+ item[2] = media;
1556
+ }
1557
+ }
1558
+ if (supports) {
1559
+ if (!item[4]) {
1560
+ item[4] = "".concat(supports);
1561
+ } else {
1562
+ item[1] = "@supports (".concat(item[4], ") {").concat(item[1], "}");
1563
+ item[4] = supports;
1564
+ }
1565
+ }
1566
+ list.push(item);
1567
+ }
1568
+ };
1569
+ return list;
1570
+ };
1571
+
1572
+ /***/ }),
1573
+
1574
+ /***/ 601:
1575
+ /***/ ((module) => {
1576
+
1577
+
1578
+
1579
+ module.exports = function (i) {
1580
+ return i[1];
1581
+ };
1582
+
1583
+ /***/ }),
1584
+
1585
+ /***/ 72:
1586
+ /***/ ((module) => {
1587
+
1588
+
1589
+
1590
+ var stylesInDOM = [];
1591
+ function getIndexByIdentifier(identifier) {
1592
+ var result = -1;
1593
+ for (var i = 0; i < stylesInDOM.length; i++) {
1594
+ if (stylesInDOM[i].identifier === identifier) {
1595
+ result = i;
1596
+ break;
1597
+ }
1598
+ }
1599
+ return result;
1600
+ }
1601
+ function modulesToDom(list, options) {
1602
+ var idCountMap = {};
1603
+ var identifiers = [];
1604
+ for (var i = 0; i < list.length; i++) {
1605
+ var item = list[i];
1606
+ var id = options.base ? item[0] + options.base : item[0];
1607
+ var count = idCountMap[id] || 0;
1608
+ var identifier = "".concat(id, " ").concat(count);
1609
+ idCountMap[id] = count + 1;
1610
+ var indexByIdentifier = getIndexByIdentifier(identifier);
1611
+ var obj = {
1612
+ css: item[1],
1613
+ media: item[2],
1614
+ sourceMap: item[3],
1615
+ supports: item[4],
1616
+ layer: item[5]
1617
+ };
1618
+ if (indexByIdentifier !== -1) {
1619
+ stylesInDOM[indexByIdentifier].references++;
1620
+ stylesInDOM[indexByIdentifier].updater(obj);
1621
+ } else {
1622
+ var updater = addElementStyle(obj, options);
1623
+ options.byIndex = i;
1624
+ stylesInDOM.splice(i, 0, {
1625
+ identifier: identifier,
1626
+ updater: updater,
1627
+ references: 1
1628
+ });
1629
+ }
1630
+ identifiers.push(identifier);
1631
+ }
1632
+ return identifiers;
1633
+ }
1634
+ function addElementStyle(obj, options) {
1635
+ var api = options.domAPI(options);
1636
+ api.update(obj);
1637
+ var updater = function updater(newObj) {
1638
+ if (newObj) {
1639
+ if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap && newObj.supports === obj.supports && newObj.layer === obj.layer) {
1640
+ return;
1641
+ }
1642
+ api.update(obj = newObj);
1643
+ } else {
1644
+ api.remove();
1645
+ }
1646
+ };
1647
+ return updater;
1648
+ }
1649
+ module.exports = function (list, options) {
1650
+ options = options || {};
1651
+ list = list || [];
1652
+ var lastIdentifiers = modulesToDom(list, options);
1653
+ return function update(newList) {
1654
+ newList = newList || [];
1655
+ for (var i = 0; i < lastIdentifiers.length; i++) {
1656
+ var identifier = lastIdentifiers[i];
1657
+ var index = getIndexByIdentifier(identifier);
1658
+ stylesInDOM[index].references--;
1659
+ }
1660
+ var newLastIdentifiers = modulesToDom(newList, options);
1661
+ for (var _i = 0; _i < lastIdentifiers.length; _i++) {
1662
+ var _identifier = lastIdentifiers[_i];
1663
+ var _index = getIndexByIdentifier(_identifier);
1664
+ if (stylesInDOM[_index].references === 0) {
1665
+ stylesInDOM[_index].updater();
1666
+ stylesInDOM.splice(_index, 1);
1667
+ }
1668
+ }
1669
+ lastIdentifiers = newLastIdentifiers;
1670
+ };
1671
+ };
1672
+
1673
+ /***/ }),
1674
+
1675
+ /***/ 659:
1676
+ /***/ ((module) => {
1677
+
1678
+
1679
+
1680
+ var memo = {};
1681
+
1682
+ /* istanbul ignore next */
1683
+ function getTarget(target) {
1684
+ if (typeof memo[target] === "undefined") {
1685
+ var styleTarget = document.querySelector(target);
1686
+
1687
+ // Special case to return head of iframe instead of iframe itself
1688
+ if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {
1689
+ try {
1690
+ // This will throw an exception if access to iframe is blocked
1691
+ // due to cross-origin restrictions
1692
+ styleTarget = styleTarget.contentDocument.head;
1693
+ } catch (e) {
1694
+ // istanbul ignore next
1695
+ styleTarget = null;
1696
+ }
1697
+ }
1698
+ memo[target] = styleTarget;
1699
+ }
1700
+ return memo[target];
1701
+ }
1702
+
1703
+ /* istanbul ignore next */
1704
+ function insertBySelector(insert, style) {
1705
+ var target = getTarget(insert);
1706
+ if (!target) {
1707
+ throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");
1708
+ }
1709
+ target.appendChild(style);
1710
+ }
1711
+ module.exports = insertBySelector;
1712
+
1713
+ /***/ }),
1714
+
1715
+ /***/ 540:
1716
+ /***/ ((module) => {
1717
+
1718
+
1719
+
1720
+ /* istanbul ignore next */
1721
+ function insertStyleElement(options) {
1722
+ var element = document.createElement("style");
1723
+ options.setAttributes(element, options.attributes);
1724
+ options.insert(element, options.options);
1725
+ return element;
1726
+ }
1727
+ module.exports = insertStyleElement;
1728
+
1729
+ /***/ }),
1730
+
1731
+ /***/ 56:
1732
+ /***/ ((module, __unused_webpack_exports, __webpack_require__) => {
1733
+
1734
+
1735
+
1736
+ /* istanbul ignore next */
1737
+ function setAttributesWithoutAttributes(styleElement) {
1738
+ var nonce = true ? __webpack_require__.nc : 0;
1739
+ if (nonce) {
1740
+ styleElement.setAttribute("nonce", nonce);
1741
+ }
1742
+ }
1743
+ module.exports = setAttributesWithoutAttributes;
1744
+
1745
+ /***/ }),
1746
+
1747
+ /***/ 825:
1748
+ /***/ ((module) => {
1749
+
1750
+
1751
+
1752
+ /* istanbul ignore next */
1753
+ function apply(styleElement, options, obj) {
1754
+ var css = "";
1755
+ if (obj.supports) {
1756
+ css += "@supports (".concat(obj.supports, ") {");
1757
+ }
1758
+ if (obj.media) {
1759
+ css += "@media ".concat(obj.media, " {");
1760
+ }
1761
+ var needLayer = typeof obj.layer !== "undefined";
1762
+ if (needLayer) {
1763
+ css += "@layer".concat(obj.layer.length > 0 ? " ".concat(obj.layer) : "", " {");
1764
+ }
1765
+ css += obj.css;
1766
+ if (needLayer) {
1767
+ css += "}";
1768
+ }
1769
+ if (obj.media) {
1770
+ css += "}";
1771
+ }
1772
+ if (obj.supports) {
1773
+ css += "}";
1774
+ }
1775
+ var sourceMap = obj.sourceMap;
1776
+ if (sourceMap && typeof btoa !== "undefined") {
1777
+ css += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), " */");
1778
+ }
1779
+
1780
+ // For old IE
1781
+ /* istanbul ignore if */
1782
+ options.styleTagTransform(css, styleElement, options.options);
1783
+ }
1784
+ function removeStyleElement(styleElement) {
1785
+ // istanbul ignore if
1786
+ if (styleElement.parentNode === null) {
1787
+ return false;
1788
+ }
1789
+ styleElement.parentNode.removeChild(styleElement);
1790
+ }
1791
+
1792
+ /* istanbul ignore next */
1793
+ function domAPI(options) {
1794
+ if (typeof document === "undefined") {
1795
+ return {
1796
+ update: function update() {},
1797
+ remove: function remove() {}
1798
+ };
1799
+ }
1800
+ var styleElement = options.insertStyleElement(options);
1801
+ return {
1802
+ update: function update(obj) {
1803
+ apply(styleElement, options, obj);
1804
+ },
1805
+ remove: function remove() {
1806
+ removeStyleElement(styleElement);
1807
+ }
1808
+ };
1809
+ }
1810
+ module.exports = domAPI;
1811
+
1812
+ /***/ }),
1813
+
1814
+ /***/ 113:
1815
+ /***/ ((module) => {
1816
+
1817
+
1818
+
1819
+ /* istanbul ignore next */
1820
+ function styleTagTransform(css, styleElement) {
1821
+ if (styleElement.styleSheet) {
1822
+ styleElement.styleSheet.cssText = css;
1823
+ } else {
1824
+ while (styleElement.firstChild) {
1825
+ styleElement.removeChild(styleElement.firstChild);
1826
+ }
1827
+ styleElement.appendChild(document.createTextNode(css));
1828
+ }
1829
+ }
1830
+ module.exports = styleTagTransform;
1831
+
1832
+ /***/ }),
1833
+
1834
+ /***/ 155:
1835
+ /***/ ((module) => {
1836
+
1837
+ module.exports = __WEBPACK_EXTERNAL_MODULE__155__;
1838
+
1839
+ /***/ })
1840
+
1841
+ /******/ });
1842
+ /************************************************************************/
1843
+ /******/ // The module cache
1844
+ /******/ var __webpack_module_cache__ = {};
1845
+ /******/
1846
+ /******/ // The require function
1847
+ /******/ function __webpack_require__(moduleId) {
1848
+ /******/ // Check if module is in cache
1849
+ /******/ var cachedModule = __webpack_module_cache__[moduleId];
1850
+ /******/ if (cachedModule !== undefined) {
1851
+ /******/ return cachedModule.exports;
1852
+ /******/ }
1853
+ /******/ // Create a new module (and put it into the cache)
1854
+ /******/ var module = __webpack_module_cache__[moduleId] = {
1855
+ /******/ id: moduleId,
1856
+ /******/ // no module.loaded needed
1857
+ /******/ exports: {}
1858
+ /******/ };
1859
+ /******/
1860
+ /******/ // Execute the module function
1861
+ /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
1862
+ /******/
1863
+ /******/ // Return the exports of the module
1864
+ /******/ return module.exports;
1865
+ /******/ }
1866
+ /******/
1867
+ /************************************************************************/
1868
+ /******/ /* webpack/runtime/compat get default export */
1869
+ /******/ (() => {
1870
+ /******/ // getDefaultExport function for compatibility with non-harmony modules
1871
+ /******/ __webpack_require__.n = (module) => {
1872
+ /******/ var getter = module && module.__esModule ?
1873
+ /******/ () => (module['default']) :
1874
+ /******/ () => (module);
1875
+ /******/ __webpack_require__.d(getter, { a: getter });
1876
+ /******/ return getter;
1877
+ /******/ };
1878
+ /******/ })();
1879
+ /******/
1880
+ /******/ /* webpack/runtime/define property getters */
1881
+ /******/ (() => {
1882
+ /******/ // define getter functions for harmony exports
1883
+ /******/ __webpack_require__.d = (exports, definition) => {
1884
+ /******/ for(var key in definition) {
1885
+ /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
1886
+ /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
1887
+ /******/ }
1888
+ /******/ }
1889
+ /******/ };
1890
+ /******/ })();
1891
+ /******/
1892
+ /******/ /* webpack/runtime/hasOwnProperty shorthand */
1893
+ /******/ (() => {
1894
+ /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
1895
+ /******/ })();
1896
+ /******/
1897
+ /******/ /* webpack/runtime/make namespace object */
1898
+ /******/ (() => {
1899
+ /******/ // define __esModule on exports
1900
+ /******/ __webpack_require__.r = (exports) => {
1901
+ /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
1902
+ /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
1903
+ /******/ }
1904
+ /******/ Object.defineProperty(exports, '__esModule', { value: true });
1905
+ /******/ };
1906
+ /******/ })();
1907
+ /******/
1908
+ /******/ /* webpack/runtime/nonce */
1909
+ /******/ (() => {
1910
+ /******/ __webpack_require__.nc = undefined;
1911
+ /******/ })();
1912
+ /******/
1913
+ /************************************************************************/
1914
+ var __webpack_exports__ = {};
1915
+ // ESM COMPAT FLAG
1916
+ __webpack_require__.r(__webpack_exports__);
1917
+
1918
+ // EXPORTS
1919
+ __webpack_require__.d(__webpack_exports__, {
1920
+ "default": () => (/* binding */ components_Timeline_Timeline)
1921
+ });
1922
+
1923
+ // EXTERNAL MODULE: external "react"
1924
+ var external_react_ = __webpack_require__(155);
1925
+ var external_react_default = /*#__PURE__*/__webpack_require__.n(external_react_);
1926
+ // EXTERNAL MODULE: ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js
1927
+ var injectStylesIntoStyleTag = __webpack_require__(72);
1928
+ var injectStylesIntoStyleTag_default = /*#__PURE__*/__webpack_require__.n(injectStylesIntoStyleTag);
1929
+ // EXTERNAL MODULE: ./node_modules/style-loader/dist/runtime/styleDomAPI.js
1930
+ var styleDomAPI = __webpack_require__(825);
1931
+ var styleDomAPI_default = /*#__PURE__*/__webpack_require__.n(styleDomAPI);
1932
+ // EXTERNAL MODULE: ./node_modules/style-loader/dist/runtime/insertBySelector.js
1933
+ var insertBySelector = __webpack_require__(659);
1934
+ var insertBySelector_default = /*#__PURE__*/__webpack_require__.n(insertBySelector);
1935
+ // EXTERNAL MODULE: ./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js
1936
+ var setAttributesWithoutAttributes = __webpack_require__(56);
1937
+ var setAttributesWithoutAttributes_default = /*#__PURE__*/__webpack_require__.n(setAttributesWithoutAttributes);
1938
+ // EXTERNAL MODULE: ./node_modules/style-loader/dist/runtime/insertStyleElement.js
1939
+ var insertStyleElement = __webpack_require__(540);
1940
+ var insertStyleElement_default = /*#__PURE__*/__webpack_require__.n(insertStyleElement);
1941
+ // EXTERNAL MODULE: ./node_modules/style-loader/dist/runtime/styleTagTransform.js
1942
+ var styleTagTransform = __webpack_require__(113);
1943
+ var styleTagTransform_default = /*#__PURE__*/__webpack_require__.n(styleTagTransform);
1944
+ // EXTERNAL MODULE: ./node_modules/css-loader/dist/cjs.js!./src/components/Timeline/Timeline.css
1945
+ var Timeline = __webpack_require__(27);
1946
+ ;// ./src/components/Timeline/Timeline.css
1947
+
1948
+
1949
+
1950
+
1951
+
1952
+
1953
+
1954
+
1955
+
1956
+
1957
+
1958
+ var options = {};
1959
+
1960
+ options.styleTagTransform = (styleTagTransform_default());
1961
+ options.setAttributes = (setAttributesWithoutAttributes_default());
1962
+ options.insert = insertBySelector_default().bind(null, "head");
1963
+ options.domAPI = (styleDomAPI_default());
1964
+ options.insertStyleElement = (insertStyleElement_default());
1965
+
1966
+ var update = injectStylesIntoStyleTag_default()(Timeline/* default */.A, options);
1967
+
1968
+
1969
+
1970
+
1971
+ /* harmony default export */ const Timeline_Timeline = (Timeline/* default */.A && Timeline/* default */.A.locals ? Timeline/* default */.A.locals : undefined);
1972
+
1973
+ // EXTERNAL MODULE: ./node_modules/css-loader/dist/cjs.js!./node_modules/flatpickr/dist/themes/material_green.css
1974
+ var material_green = __webpack_require__(941);
1975
+ ;// ./node_modules/flatpickr/dist/themes/material_green.css
1976
+
1977
+
1978
+
1979
+
1980
+
1981
+
1982
+
1983
+
1984
+
1985
+
1986
+
1987
+ var material_green_options = {};
1988
+
1989
+ material_green_options.styleTagTransform = (styleTagTransform_default());
1990
+ material_green_options.setAttributes = (setAttributesWithoutAttributes_default());
1991
+ material_green_options.insert = insertBySelector_default().bind(null, "head");
1992
+ material_green_options.domAPI = (styleDomAPI_default());
1993
+ material_green_options.insertStyleElement = (insertStyleElement_default());
1994
+
1995
+ var material_green_update = injectStylesIntoStyleTag_default()(material_green/* default */.A, material_green_options);
1996
+
1997
+
1998
+
1999
+
2000
+ /* harmony default export */ const themes_material_green = (material_green/* default */.A && material_green/* default */.A.locals ? material_green/* default */.A.locals : undefined);
2001
+
2002
+ ;// ./src/components/Timeline/MasterHeader.js
2003
+
2004
+ // veya MasterHeader.css, eğer ayrı dosyaya koyacaksan
2005
+ // Flatpickr Tema
2006
+
2007
+ const MasterHeader = _ref => {
2008
+ let {
2009
+ selectedDate,
2010
+ onDateSelect,
2011
+ onToday,
2012
+ onAdvance,
2013
+ onRetreat,
2014
+ onMonthAdvance,
2015
+ onMonthRetreat,
2016
+ dayRange,
2017
+ setDayRange
2018
+ } = _ref;
2019
+ const formattedDate = new Date(selectedDate.getTime() + 24 * 60 * 60 * 1000 - selectedDate.getTimezoneOffset() * 60000).toISOString().split("T")[0]; // YYYY-MM-DD formatı
2020
+
2021
+ return /*#__PURE__*/external_react_default().createElement("div", {
2022
+ className: "master-header-container"
2023
+ }, /*#__PURE__*/external_react_default().createElement("div", {
2024
+ className: "master-header-buttons"
2025
+ }, /*#__PURE__*/external_react_default().createElement("button", {
2026
+ className: "master-header-btn",
2027
+ onClick: onMonthRetreat
2028
+ }, "1 Ay Geri"), /*#__PURE__*/external_react_default().createElement("button", {
2029
+ className: "master-header-btn",
2030
+ onClick: onRetreat
2031
+ }, "5 G\xFCn Geri"), /*#__PURE__*/external_react_default().createElement("input", {
2032
+ type: "date",
2033
+ className: "master-header-date-picker",
2034
+ value: formattedDate // Seçili tarih burada gösteriliyor
2035
+ ,
2036
+ onChange: e => onDateSelect(e.target.value) // Tarih seçimi
2037
+ ,
2038
+ onKeyDown: e => e.preventDefault() // Manuel girişleri engelle
2039
+ }), /*#__PURE__*/external_react_default().createElement("button", {
2040
+ className: "master-header-btn",
2041
+ onClick: onAdvance
2042
+ }, "5 G\xFCn \u0130leri"), /*#__PURE__*/external_react_default().createElement("button", {
2043
+ className: "master-header-btn",
2044
+ onClick: onMonthAdvance
2045
+ }, "1 Ay \u0130leri"), /*#__PURE__*/external_react_default().createElement("button", {
2046
+ className: "master-header-btn",
2047
+ onClick: onToday
2048
+ }, "Bug\xFCn")), /*#__PURE__*/external_react_default().createElement("select", {
2049
+ className: "master-header-select",
2050
+ value: dayRange,
2051
+ onChange: e => setDayRange(parseInt(e.target.value, 10))
2052
+ }, /*#__PURE__*/external_react_default().createElement("option", {
2053
+ value: 30
2054
+ }, "30 G\xFCn"), /*#__PURE__*/external_react_default().createElement("option", {
2055
+ value: 60
2056
+ }, "60 G\xFCn"), /*#__PURE__*/external_react_default().createElement("option", {
2057
+ value: 90
2058
+ }, "90 G\xFCn")));
2059
+ };
2060
+ /* harmony default export */ const Timeline_MasterHeader = (MasterHeader);
2061
+ ;// ./src/components/Timeline/ResourcesHeader.js
2062
+ // ResourcesHeader.js
2063
+
2064
+
2065
+ const ResourcesHeader = _ref => {
2066
+ let {
2067
+ content
2068
+ } = _ref;
2069
+ return /*#__PURE__*/external_react_default().createElement("div", {
2070
+ className: "resources-header"
2071
+ }, content);
2072
+ };
2073
+ /* harmony default export */ const Timeline_ResourcesHeader = (ResourcesHeader);
2074
+ ;// ./src/components/Timeline/Resources.js
2075
+
2076
+ const Resources = _ref => {
2077
+ let {
2078
+ groupedResources = [],
2079
+ // Kaynakların listesi
2080
+ collapsedGroups = {},
2081
+ // Grupların açık/kapalı durumunu tutan nesne
2082
+ toggleGroupCollapse,
2083
+ // Grupları açma/kapama fonksiyonu
2084
+ resourceSettings = {
2085
+ showIdAsName: false,
2086
+ // Varsayılan: `name` varsa onu göster, yoksa `id`
2087
+ isGrouped: true,
2088
+ // Varsayılan: Gruplama açık
2089
+ isCollapsible: true // Varsayılan: Gruplar açılıp kapanabilir
2090
+ }
2091
+ } = _ref;
2092
+ const {
2093
+ showIdAsName,
2094
+ isGrouped,
2095
+ isCollapsible
2096
+ } = resourceSettings;
2097
+ return /*#__PURE__*/external_react_default().createElement("div", {
2098
+ className: "timeline-resources"
2099
+ }, isGrouped ?
2100
+ // Gruplama aktif
2101
+ groupedResources.map((group, groupIndex) => /*#__PURE__*/external_react_default().createElement("div", {
2102
+ key: groupIndex,
2103
+ className: "resource-group"
2104
+ }, /*#__PURE__*/external_react_default().createElement("div", {
2105
+ className: "resource-group-header",
2106
+ onClick: () => isCollapsible && toggleGroupCollapse(group.groupName)
2107
+ }, group.groupName, " ", isCollapsible && (collapsedGroups[group.groupName] ? "▲" : "▼")), !collapsedGroups[group.groupName] && group.resources.map((resource, resourceIndex) => /*#__PURE__*/external_react_default().createElement("div", {
2108
+ key: resourceIndex,
2109
+ className: "resource-cell"
2110
+ }, showIdAsName ? resource.id : resource.name || resource.id)))) :
2111
+ // Gruplama yok
2112
+ groupedResources.flatMap(group => group.resources).map((resource, resourceIndex) => /*#__PURE__*/external_react_default().createElement("div", {
2113
+ key: resourceIndex,
2114
+ className: "resource-cell"
2115
+ }, showIdAsName ? resource.id : resource.name || resource.id)));
2116
+ };
2117
+ /* harmony default export */ const Timeline_Resources = (Resources);
2118
+ ;// ./src/components/Timeline/TimelineHeader.js
2119
+
2120
+ // CSS dosyasını import etmeyi unutma
2121
+
2122
+ const TimelineHeader = _ref => {
2123
+ let {
2124
+ dates,
2125
+ monthHeaders
2126
+ } = _ref;
2127
+ return /*#__PURE__*/external_react_default().createElement("div", {
2128
+ className: "timeline-header-container"
2129
+ }, /*#__PURE__*/external_react_default().createElement("div", {
2130
+ className: "timeline-header-month-row"
2131
+ }, monthHeaders.map((monthHeader, index) => /*#__PURE__*/external_react_default().createElement("div", {
2132
+ key: index,
2133
+ className: "timeline-header-month-cell",
2134
+ style: {
2135
+ flex: monthHeader.endIndex - monthHeader.startIndex + 1,
2136
+ borderRight: index < monthHeaders.length - 1 ? "1px solid var(--border-color)" : "none"
2137
+ }
2138
+ }, monthHeader.monthName, " ", monthHeader.year))), /*#__PURE__*/external_react_default().createElement("div", {
2139
+ className: "timeline-header-day-row"
2140
+ }, dates.map((date, index) => /*#__PURE__*/external_react_default().createElement("div", {
2141
+ key: index,
2142
+ className: "timeline-header-day-cell",
2143
+ style: {
2144
+ flex: 1,
2145
+ borderRight: index < dates.length - 1 ? "1px solid var(--border-color)" : "none"
2146
+ }
2147
+ }, date.display))));
2148
+ };
2149
+ /* harmony default export */ const Timeline_TimelineHeader = (TimelineHeader);
2150
+ ;// ./src/utils/dateUtils.js
2151
+ // src/utils/dateUtils.js
2152
+
2153
+ /**
2154
+ * "dd/mm/yyyy" formatındaki bir tarih string'ini Date objesine dönüştürür.
2155
+ * Eğer dateInput bir string değilse, direkt Date objesini döndürür.
2156
+ * @param {string | Object | Date} dateInput - "dd/mm/yyyy" formatında tarih stringi veya {fullDate: Date, display: string} objesi veya Date objesi.
2157
+ * @returns {Date} - Date objesi.
2158
+ */
2159
+ const parseDate = dateInput => {
2160
+ if (dateInput instanceof Date) {
2161
+ return dateInput;
2162
+ }
2163
+ if (typeof dateInput === 'string') {
2164
+ const [day, month, year] = dateInput.split("/").map(Number);
2165
+ return new Date(year, month - 1, day);
2166
+ } else if (typeof dateInput === 'object' && dateInput.fullDate instanceof Date) {
2167
+ return new Date(dateInput.fullDate.getTime() + dateInput.fullDate.getTimezoneOffset() * 60000);
2168
+ } else {
2169
+ console.error("parseDate received invalid input:", dateInput);
2170
+ return new Date(); // veya hata fırlat
2171
+ }
2172
+ };
2173
+
2174
+ /**
2175
+ * Bir tarihin belirli bir aralık içinde olup olmadığını kontrol eder.
2176
+ * @param {string | Object | Date} date - "dd/mm/yyyy" formatında tarih stringi, {fullDate: Date, display: string} objesi veya Date objesi.
2177
+ * @param {string | Object | Date} startDate - "dd/mm/yyyy" formatında başlangıç tarihi stringi, {fullDate: Date, display: string} objesi veya Date objesi.
2178
+ * @param {string | Object | Date} endDate - "dd/mm/yyyy" formatında bitiş tarihi stringi, {fullDate: Date, display: string} objesi veya Date objesi.
2179
+ * @returns {boolean} - Tarih aralık içinde ise true, değilse false.
2180
+ */
2181
+ const isDateInRange = (date, startDate, endDate) => {
2182
+ const d = parseDate(date);
2183
+ const start = parseDate(startDate);
2184
+ const end = parseDate(endDate);
2185
+ return d >= start && d <= end;
2186
+ };
2187
+ ;// ./src/hooks/useDragAndDrop.js
2188
+ // src/hooks/useDragAndDrop.js
2189
+
2190
+ // Named import
2191
+
2192
+ const useDragAndDrop = function () {
2193
+ let initialEvents = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
2194
+ const [isDragging, setIsDragging] = (0,external_react_.useState)(false);
2195
+ const [dragStart, setDragStart] = (0,external_react_.useState)(null);
2196
+ const [dragEnd, setDragEnd] = (0,external_react_.useState)(null);
2197
+ const [events, setEvents] = (0,external_react_.useState)(initialEvents);
2198
+
2199
+ // Sürükleme başlat
2200
+ const startDrag = (resourceId, date) => {
2201
+ setIsDragging(true);
2202
+ setDragStart({
2203
+ resourceId,
2204
+ date
2205
+ });
2206
+ setDragEnd({
2207
+ resourceId,
2208
+ date
2209
+ });
2210
+ };
2211
+
2212
+ // Sürükleme hareketi
2213
+ const updateDrag = (resourceId, date) => {
2214
+ if (!isDragging) return;
2215
+ setDragEnd({
2216
+ resourceId,
2217
+ date
2218
+ });
2219
+ };
2220
+
2221
+ // Sürükleme bitişi
2222
+ const endDrag = dates => {
2223
+ if (!isDragging || !dragStart || !dragEnd) return;
2224
+ if (dragStart.resourceId !== dragEnd.resourceId) {
2225
+ resetDrag();
2226
+ return;
2227
+ }
2228
+ const startDateIndex = dates.findIndex(d => parseDate(d.fullDate).toDateString() === parseDate(dragStart.date.fullDate).toDateString());
2229
+ const endDateIndex = dates.findIndex(d => parseDate(d.fullDate).toDateString() === parseDate(dragEnd.date.fullDate).toDateString());
2230
+ if (startDateIndex === -1 || endDateIndex === -1) {
2231
+ resetDrag();
2232
+ return;
2233
+ }
2234
+ const sortedStartIndex = Math.min(startDateIndex, endDateIndex);
2235
+ const sortedEndIndex = Math.max(startDateIndex, endDateIndex);
2236
+ const startDate = dates[sortedStartIndex].fullDate;
2237
+ const endDate = dates[sortedEndIndex].fullDate;
2238
+ const newEvent = {
2239
+ id: Date.now(),
2240
+ title: "Yeni Etkinlik",
2241
+ resourceId: dragStart.resourceId,
2242
+ startDate: startDate,
2243
+ endDate: endDate,
2244
+ color: "#ff7f50"
2245
+ };
2246
+ setEvents(prev => [...prev, newEvent]);
2247
+ resetDrag();
2248
+ };
2249
+ const resetDrag = () => {
2250
+ setIsDragging(false);
2251
+ setDragStart(null);
2252
+ setDragEnd(null);
2253
+ };
2254
+ return {
2255
+ events,
2256
+ isDragging,
2257
+ dragStart,
2258
+ dragEnd,
2259
+ startDrag,
2260
+ updateDrag,
2261
+ endDrag,
2262
+ setEvents
2263
+ };
2264
+ };
2265
+ /* harmony default export */ const hooks_useDragAndDrop = (useDragAndDrop);
2266
+ ;// ./src/hooks/useEventDragDrop.js
2267
+ function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
2268
+ function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
2269
+ function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
2270
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
2271
+ function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
2272
+
2273
+ const useEventDragDrop = (events, setEvents, setDropInfo) => {
2274
+ const [draggingEvent, setDraggingEvent] = (0,external_react_.useState)(null);
2275
+ const [dragOffset, setDragOffset] = (0,external_react_.useState)(0);
2276
+ const [mode, setMode] = (0,external_react_.useState)(null); // "drag" veya "extend"
2277
+
2278
+ const handleDragStart = (event, eventId) => {
2279
+ if (mode === "extend") return; // Uzatma modundaysa taşıma işlemini başlatma
2280
+
2281
+ event.stopPropagation();
2282
+ const eventElement = event.target;
2283
+ const eventRect = eventElement.getBoundingClientRect();
2284
+ const offset = event.clientX - eventRect.left;
2285
+ setDraggingEvent(eventId);
2286
+ setDragOffset(offset);
2287
+ setMode("drag"); // Modu taşıma olarak ayarla
2288
+
2289
+ const draggedEvent = events.find(evt => evt.id === eventId);
2290
+ if (draggedEvent) {
2291
+ console.log("Dragging Event Start:", draggedEvent.startDate);
2292
+ console.log("Dragging Event End:", draggedEvent.endDate);
2293
+ }
2294
+ };
2295
+ const handleExtendStart = (event, eventId) => {
2296
+ event.stopPropagation();
2297
+ setDraggingEvent(eventId);
2298
+ setMode("extend"); // Modu uzatma olarak ayarla
2299
+ };
2300
+ const handleDragOver = event => {
2301
+ event.preventDefault();
2302
+ };
2303
+ const handleDrop = (event, resourceId, targetDate) => {
2304
+ event.preventDefault();
2305
+ if (mode === "drag" && draggingEvent) {
2306
+ const draggedEvent = events.find(evt => evt.id === draggingEvent);
2307
+ if (draggedEvent) {
2308
+ const duration = draggedEvent.endDate - draggedEvent.startDate;
2309
+ const cellWidth = event.target.offsetWidth || 30;
2310
+ const offsetDays = Math.floor(dragOffset / cellWidth);
2311
+ const newStartDate = new Date(targetDate.getTime() - offsetDays * 24 * 60 * 60 * 1000);
2312
+ const newEndDate = new Date(newStartDate.getTime() + duration);
2313
+
2314
+ // Callback kontrolü ve loglama
2315
+ if (setDropInfo) {
2316
+ console.log("setDropInfo is being called with:", {
2317
+ id: draggingEvent,
2318
+ newResourceId: resourceId,
2319
+ newStartDate,
2320
+ newEndDate
2321
+ });
2322
+ setDropInfo({
2323
+ id: draggingEvent,
2324
+ newResourceId: resourceId,
2325
+ newStartDate,
2326
+ newEndDate
2327
+ });
2328
+ }
2329
+
2330
+ // Event güncellemesi
2331
+ setEvents(prevEvents => prevEvents.map(evt => evt.id === draggingEvent ? _objectSpread(_objectSpread({}, evt), {}, {
2332
+ resourceId,
2333
+ startDate: newStartDate,
2334
+ endDate: newEndDate
2335
+ }) : evt));
2336
+ }
2337
+ }
2338
+ setDraggingEvent(null);
2339
+ setDragOffset(0);
2340
+ setMode(null);
2341
+ };
2342
+ const handleExtend = (event, eventId, newEndDate) => {
2343
+ if (mode !== "extend" || draggingEvent !== eventId) return;
2344
+ setEvents(prevEvents => prevEvents.map(evt => evt.id === eventId ? _objectSpread(_objectSpread({}, evt), {}, {
2345
+ endDate: newEndDate
2346
+ }) : evt));
2347
+ console.log("Extended Event ID:", eventId, "New End Date:", newEndDate);
2348
+ setDraggingEvent(null);
2349
+ setMode(null);
2350
+ };
2351
+ const handleDragEnd = () => {
2352
+ setDraggingEvent(null);
2353
+ setDragOffset(0);
2354
+ setMode(null);
2355
+ };
2356
+ return {
2357
+ handleDragStart,
2358
+ handleExtendStart,
2359
+ handleDragOver,
2360
+ handleDrop,
2361
+ handleExtend,
2362
+ handleDragEnd
2363
+ };
2364
+ };
2365
+ /* harmony default export */ const hooks_useEventDragDrop = (useEventDragDrop);
2366
+ ;// ./src/components/Timeline/Indicator.js
2367
+
2368
+ const Indicator = _ref => {
2369
+ let {
2370
+ todayIndex,
2371
+ totalDays
2372
+ } = _ref;
2373
+ if (todayIndex < 0 || todayIndex >= totalDays) {
2374
+ console.log("Indicator not visible: Out of bounds");
2375
+ return null; // Bugün timeline dışında ise çizgiyi gösterme
2376
+ }
2377
+ return /*#__PURE__*/external_react_default().createElement("div", {
2378
+ style: {
2379
+ position: "absolute",
2380
+ top: 0,
2381
+ left: "calc(".concat((todayIndex + 0.5) / totalDays, " * 100%)"),
2382
+ // Günün ortasına yerleştirmek için +0.5
2383
+ width: "2px",
2384
+ height: "100%",
2385
+ backgroundColor: "transparent",
2386
+ zIndex: 5,
2387
+ borderStyle: "dashed",
2388
+ // Kesikli çizgi için
2389
+ borderWidth: "0 0 0 2px",
2390
+ // Sadece sol tarafa kesikli çizgi
2391
+ borderColor: "red"
2392
+ }
2393
+ });
2394
+ };
2395
+ /* harmony default export */ const Timeline_Indicator = (Indicator);
2396
+ ;// ./src/hooks/useExtendEvent.js
2397
+ function useExtendEvent_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
2398
+ function useExtendEvent_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? useExtendEvent_ownKeys(Object(t), !0).forEach(function (r) { useExtendEvent_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : useExtendEvent_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
2399
+ function useExtendEvent_defineProperty(e, r, t) { return (r = useExtendEvent_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
2400
+ function useExtendEvent_toPropertyKey(t) { var i = useExtendEvent_toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
2401
+ function useExtendEvent_toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
2402
+
2403
+ const useExtendEvent = (events, setEvents) => {
2404
+ /**
2405
+ * Etkinliği uzatmak veya kısaltmak için kullanılan işlev.
2406
+ * @param {number} eventId - Güncellenmesi gereken etkinliğin ID'si.
2407
+ * @param {Date} newEndDate - Etkinliğin yeni bitiş tarihi.
2408
+ */
2409
+ const extendEvent = (0,external_react_.useCallback)((eventId, newEndDate) => {
2410
+ setEvents(prevEvents => prevEvents.map(event => event.id === eventId ? useExtendEvent_objectSpread(useExtendEvent_objectSpread({}, event), {}, {
2411
+ endDate: newEndDate // Yeni bitiş tarihini günceller
2412
+ }) : event // Diğer etkinlikler aynı kalır
2413
+ ));
2414
+ }, [setEvents]);
2415
+ return {
2416
+ extendEvent
2417
+ };
2418
+ };
2419
+ /* harmony default export */ const hooks_useExtendEvent = (useExtendEvent);
2420
+ ;// ./src/components/Timeline/TimelineContent.js
2421
+ function TimelineContent_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
2422
+ function TimelineContent_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? TimelineContent_ownKeys(Object(t), !0).forEach(function (r) { TimelineContent_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : TimelineContent_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
2423
+ function TimelineContent_defineProperty(e, r, t) { return (r = TimelineContent_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
2424
+ function TimelineContent_toPropertyKey(t) { var i = TimelineContent_toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
2425
+ function TimelineContent_toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
2426
+
2427
+
2428
+
2429
+
2430
+
2431
+
2432
+ // import "./Timeline.css"; // varsayalım "Timeline.css" globalde import ediliyor
2433
+
2434
+ const TimelineContent = _ref => {
2435
+ let {
2436
+ groupedResources,
2437
+ dates,
2438
+ collapsedGroups,
2439
+ events,
2440
+ setEvents,
2441
+ onEventClick,
2442
+ todayIndex,
2443
+ indicatorOn,
2444
+ resourceSettings,
2445
+ setDropInfo,
2446
+ eventsDragOn = true,
2447
+ eventsExtendOn = true,
2448
+ createNewEventOn = true,
2449
+ onExtendInfo,
2450
+ onCreateEventInfo,
2451
+ onEventRightClick,
2452
+ eventTooltipOn = true,
2453
+ tooltipComponent: TooltipComponent,
2454
+ tempEventStyle = {},
2455
+ eventStyleResolver = () => ({})
2456
+ } = _ref;
2457
+ // ------------------- HOOKS & STATE -------------------
2458
+ const containerRef = (0,external_react_.useRef)(null);
2459
+
2460
+ // Drag
2461
+ const {
2462
+ isDragging,
2463
+ dragStart,
2464
+ dragEnd
2465
+ } = hooks_useDragAndDrop(events, setEvents);
2466
+ const {
2467
+ handleDragStart,
2468
+ handleDragOver,
2469
+ handleDrop,
2470
+ handleDragEnd
2471
+ } = hooks_useEventDragDrop(events, setEvents, setDropInfo // Doğrudan setDropInfo'yu geçiriyoruz
2472
+ );
2473
+
2474
+ // Extend
2475
+ const {
2476
+ extendEvent
2477
+ } = hooks_useExtendEvent(events, setEvents);
2478
+ const [mode, setMode] = (0,external_react_.useState)(null); // null | "extend"
2479
+ const [extendingEvent, setExtendingEvent] = (0,external_react_.useState)(null);
2480
+ const [originalEndDate, setOriginalEndDate] = (0,external_react_.useState)(null);
2481
+ const [startMouseX, setStartMouseX] = (0,external_react_.useState)(null);
2482
+
2483
+ // Create new event
2484
+ const [isCreating, setIsCreating] = (0,external_react_.useState)(false);
2485
+ const [tempEvent, setTempEvent] = (0,external_react_.useState)(null);
2486
+
2487
+ // Tooltip
2488
+ const [selectedEvent, setSelectedEvent] = (0,external_react_.useState)(null);
2489
+ const [tooltipPosition, setTooltipPosition] = (0,external_react_.useState)({
2490
+ top: 0,
2491
+ left: 0
2492
+ });
2493
+ const totalDays = dates.length;
2494
+
2495
+ // ------------------- Tooltip Logic -------------------
2496
+ const handleEventClickInternal = (event, e) => {
2497
+ e.stopPropagation();
2498
+ // Eğer mod "extend" ise tooltip'i açma
2499
+ if (mode === "extend") {
2500
+ return;
2501
+ }
2502
+
2503
+ // Harici callback
2504
+ if (onEventClick) onEventClick(event, e);
2505
+
2506
+ // Tooltip göstermek
2507
+ const eventElement = e.currentTarget;
2508
+ if (eventElement) {
2509
+ const rect = eventElement.getBoundingClientRect();
2510
+ setTooltipPosition({
2511
+ top: rect.top + window.scrollY,
2512
+ left: rect.left + rect.width / 2 + window.scrollX
2513
+ });
2514
+ setSelectedEvent(event);
2515
+ }
2516
+ };
2517
+ const handleCloseTooltip = () => {
2518
+ setSelectedEvent(null);
2519
+ };
2520
+
2521
+ // ------------------- Create New Event -------------------
2522
+ const handleCellClick = (resourceId, date) => {
2523
+ if (!createNewEventOn) return; // create devrede değilse
2524
+
2525
+ const startDate = parseDate(date.fullDate);
2526
+ const newEvent = {
2527
+ id: Date.now(),
2528
+ title: "1 Gece",
2529
+ startDate,
2530
+ endDate: new Date(startDate.getTime() + 24 * 60 * 60 * 1000),
2531
+ resourceId,
2532
+ // color => var(--timeline-new-event-background-color) => => Sonra inline style yerine className
2533
+ color: "" // Bunu .css’te "var(--timeline-new-event-background-color)" atayabilirsin
2534
+ };
2535
+ setTempEvent(newEvent);
2536
+ setIsCreating(true);
2537
+ };
2538
+ (0,external_react_.useEffect)(() => {
2539
+ if (!createNewEventOn) return;
2540
+ if (!isCreating) return;
2541
+ if (mode === "extend") {
2542
+ console.log(">>> 'extend' mode, skip new event creation");
2543
+ return;
2544
+ }
2545
+ const handleMouseMove = e => {
2546
+ if (!isCreating || !tempEvent) return;
2547
+ const cell = document.elementFromPoint(e.clientX, e.clientY);
2548
+ const cellW = (cell === null || cell === void 0 ? void 0 : cell.offsetWidth) || 30;
2549
+ const startX = tempEvent.startX || e.clientX;
2550
+ const deltaX = e.clientX - startX;
2551
+ const daysToAdd = Math.max(1, Math.floor(deltaX / cellW));
2552
+ const newEndDate = new Date(tempEvent.startDate.getTime());
2553
+ newEndDate.setDate(newEndDate.getDate() + daysToAdd);
2554
+ setTempEvent(TimelineContent_objectSpread(TimelineContent_objectSpread({}, tempEvent), {}, {
2555
+ endDate: newEndDate,
2556
+ startX: startX,
2557
+ title: "".concat(daysToAdd, " Gece")
2558
+ }));
2559
+ };
2560
+ const handleMouseUp = () => {
2561
+ if (isCreating && tempEvent) {
2562
+ setEvents([...events, tempEvent]);
2563
+ if (onCreateEventInfo) {
2564
+ onCreateEventInfo(tempEvent);
2565
+ }
2566
+ }
2567
+ setTempEvent(null);
2568
+ setIsCreating(false);
2569
+ };
2570
+ window.addEventListener("mousemove", handleMouseMove);
2571
+ window.addEventListener("mouseup", handleMouseUp);
2572
+ return () => {
2573
+ window.removeEventListener("mousemove", handleMouseMove);
2574
+ window.removeEventListener("mouseup", handleMouseUp);
2575
+ };
2576
+ }, [createNewEventOn, isCreating, mode, tempEvent, events, onCreateEventInfo, setEvents]);
2577
+
2578
+ // ------------------- Drag Logic -------------------
2579
+ const handleDragStartSafe = (e, eventId) => {
2580
+ if (!eventsDragOn) {
2581
+ e.preventDefault();
2582
+ return;
2583
+ }
2584
+ handleDragStart(e, eventId);
2585
+ };
2586
+ const handleDragEndSafe = e => {
2587
+ if (!eventsDragOn) {
2588
+ e.preventDefault();
2589
+ return;
2590
+ }
2591
+ handleDragEnd();
2592
+ };
2593
+
2594
+ // ------------------- Extend Logic -------------------
2595
+ const handleMouseDownExtend = (mouseEvent, event) => {
2596
+ if (!eventsExtendOn) return;
2597
+ mouseEvent.stopPropagation();
2598
+ console.log(">>> Extend start ID:", event.id);
2599
+ setMode("extend");
2600
+ setExtendingEvent(event);
2601
+ setOriginalEndDate(event.endDate);
2602
+ setStartMouseX(mouseEvent.clientX);
2603
+ };
2604
+ const handleMouseMoveExtend = e => {
2605
+ if (mode !== "extend" || !extendingEvent) return;
2606
+ if (!eventsExtendOn) return;
2607
+ const currentMouseX = e.clientX;
2608
+ const deltaX = currentMouseX - (startMouseX !== null && startMouseX !== void 0 ? startMouseX : 0);
2609
+ const cellW = 30;
2610
+ const daysToAdd = Math.floor(deltaX / cellW);
2611
+ const newEndDate = new Date((originalEndDate !== null && originalEndDate !== void 0 ? originalEndDate : new Date()).getTime());
2612
+ newEndDate.setDate(newEndDate.getDate() + daysToAdd);
2613
+ console.log(">>> Extending ID:", extendingEvent.id, "=>", newEndDate);
2614
+ setEvents(prev => prev.map(evt => evt.id === extendingEvent.id ? TimelineContent_objectSpread(TimelineContent_objectSpread({}, evt), {}, {
2615
+ endDate: newEndDate
2616
+ }) : evt));
2617
+ };
2618
+ const handleMouseUpExtend = () => {
2619
+ console.log(">>> Extend finished ID:", extendingEvent === null || extendingEvent === void 0 ? void 0 : extendingEvent.id);
2620
+ if (onExtendInfo && extendingEvent) {
2621
+ // callback
2622
+ const updatedEvent = events.find(ev => ev.id === extendingEvent.id);
2623
+ if (updatedEvent) {
2624
+ onExtendInfo({
2625
+ eventId: extendingEvent.id,
2626
+ newEndDate: updatedEvent.endDate
2627
+ });
2628
+ }
2629
+ }
2630
+
2631
+ // Tooltip açılmasını engellemek için modun null olmasını geciktiriyoruz
2632
+ setTimeout(() => {
2633
+ setMode(null);
2634
+ }, 100); // 100ms gecikme
2635
+ setExtendingEvent(null);
2636
+ setOriginalEndDate(null);
2637
+ setStartMouseX(null);
2638
+ };
2639
+ (0,external_react_.useEffect)(() => {
2640
+ if (mode === "extend") {
2641
+ const onMove = e => handleMouseMoveExtend(e);
2642
+ const onUp = () => handleMouseUpExtend();
2643
+ document.addEventListener("mousemove", onMove);
2644
+ document.addEventListener("mouseup", onUp);
2645
+ return () => {
2646
+ document.removeEventListener("mousemove", onMove);
2647
+ document.removeEventListener("mouseup", onUp);
2648
+ };
2649
+ }
2650
+ }, [mode, extendingEvent, eventsExtendOn, originalEndDate, startMouseX]);
2651
+
2652
+ // ------------------- Right Click (context) -------------------
2653
+ const handleRightClickEvent = (evt, reactEvent) => {
2654
+ reactEvent.preventDefault();
2655
+ if (onEventRightClick) onEventRightClick(evt, reactEvent);
2656
+ };
2657
+
2658
+ // ------------------- Helper isCellSelected -------------------
2659
+ const isCellSelected = (resourceId, date) => {
2660
+ if (!dragStart || !dragEnd) return false;
2661
+ if (resourceId !== dragStart.resourceId) return false;
2662
+ const startIndex = dates.findIndex(d => parseDate(d.fullDate).getTime() === parseDate(dragStart.date).getTime());
2663
+ const endIndex = dates.findIndex(d => parseDate(d.fullDate).getTime() === parseDate(dragEnd.date).getTime());
2664
+ const currentIndex = dates.findIndex(d => parseDate(d.fullDate).getTime() === parseDate(date.fullDate).getTime());
2665
+ if (startIndex === -1 || endIndex === -1 || currentIndex === -1) return false;
2666
+ return currentIndex >= Math.min(startIndex, endIndex) && currentIndex <= Math.max(startIndex, endIndex);
2667
+ };
2668
+
2669
+ // ------------------- calculatePosition -------------------
2670
+ const calculatePosition = (ev, dateArr) => {
2671
+ const startDate = parseDate(ev.startDate);
2672
+ const endDate = parseDate(ev.endDate);
2673
+ const startIndex = dateArr.findIndex(d => parseDate(d.fullDate).toDateString() === startDate.toDateString());
2674
+ const endIndex = dateArr.findIndex(d => parseDate(d.fullDate).toDateString() === endDate.toDateString());
2675
+ const totalDays = dateArr.length;
2676
+ if (startIndex < 0 && endIndex < 0) {
2677
+ return {
2678
+ isVisible: false,
2679
+ left: 0,
2680
+ width: 0,
2681
+ isPartialStart: false,
2682
+ isPartialEnd: false
2683
+ };
2684
+ }
2685
+ if (startIndex >= totalDays && endIndex >= totalDays) {
2686
+ return {
2687
+ isVisible: false,
2688
+ left: 0,
2689
+ width: 0,
2690
+ isPartialStart: false,
2691
+ isPartialEnd: false
2692
+ };
2693
+ }
2694
+ const effectiveStartIndex = Math.max(startIndex, 0);
2695
+ const effectiveEndIndex = Math.min(endIndex, totalDays - 1);
2696
+ const isPartialStart = startIndex < 0;
2697
+ const isPartialEnd = endIndex >= totalDays;
2698
+ const leftPercentage = (effectiveStartIndex + (isPartialStart ? 0 : 0.5)) / totalDays * 100;
2699
+ const rightPercentage = (effectiveEndIndex + (isPartialEnd ? 1 : 0.5)) / totalDays * 100;
2700
+ const widthPercentage = rightPercentage - leftPercentage;
2701
+ return {
2702
+ isVisible: true,
2703
+ left: "".concat(leftPercentage, "%"),
2704
+ width: "".concat(widthPercentage, "%"),
2705
+ isPartialStart,
2706
+ isPartialEnd
2707
+ };
2708
+ };
2709
+
2710
+ // ------------------- RENDER -------------------
2711
+ return /*#__PURE__*/external_react_default().createElement("div", {
2712
+ ref: containerRef,
2713
+ className: "timeline-content-container" // Yeni class, stilini timeline.css'e ekleyebilirsin
2714
+ }, indicatorOn && /*#__PURE__*/external_react_default().createElement(Timeline_Indicator, {
2715
+ todayIndex: todayIndex,
2716
+ totalDays: totalDays
2717
+ }), groupedResources.map((group, groupIndex) => /*#__PURE__*/external_react_default().createElement("div", {
2718
+ key: groupIndex,
2719
+ className: "timeline-group-container"
2720
+ }, resourceSettings.isGrouped && /*#__PURE__*/external_react_default().createElement("div", {
2721
+ className: "timeline-group-header-row"
2722
+ }, dates.map((dateObj, colIndex) => /*#__PURE__*/external_react_default().createElement("div", {
2723
+ key: "group-header-".concat(groupIndex, "-").concat(colIndex),
2724
+ className: "timeline-group-header-cell"
2725
+ }))), !collapsedGroups[group.groupName] && group.resources.map((resource, rowIndex) => {
2726
+ const resourceEvents = events.filter(ev => ev.resourceId === resource.id);
2727
+ return /*#__PURE__*/external_react_default().createElement("div", {
2728
+ key: resource.id,
2729
+ className: "timeline-resource-row"
2730
+ }, resourceEvents.map(event => {
2731
+ const {
2732
+ isVisible,
2733
+ left,
2734
+ width,
2735
+ isPartialStart,
2736
+ isPartialEnd
2737
+ } = calculatePosition(event, dates);
2738
+ if (!isVisible) return null;
2739
+
2740
+ // Kullanıcıdan gelen stil
2741
+ const eventStyle = eventStyleResolver ? eventStyleResolver(event) : {};
2742
+ return /*#__PURE__*/external_react_default().createElement("div", {
2743
+ key: event.id,
2744
+ className: "timeline-event",
2745
+ draggable: mode !== "extend" && eventsDragOn,
2746
+ onDragStart: e => {
2747
+ if (mode === "extend") {
2748
+ e.preventDefault();
2749
+ return;
2750
+ }
2751
+ handleDragStartSafe(e, event.id);
2752
+ },
2753
+ onDragEnd: e => {
2754
+ if (mode === "extend") {
2755
+ e.preventDefault();
2756
+ return;
2757
+ }
2758
+ handleDragEndSafe(e);
2759
+ },
2760
+ onContextMenu: reactEvent => handleRightClickEvent(event, reactEvent),
2761
+ onClick: ev => handleEventClickInternal(event, ev),
2762
+ style: TimelineContent_objectSpread({
2763
+ left,
2764
+ width,
2765
+ top: "5px",
2766
+ borderTopLeftRadius: isPartialStart ? "0px" : "20px",
2767
+ borderBottomLeftRadius: isPartialStart ? "0px" : "20px",
2768
+ borderTopRightRadius: isPartialEnd ? "0px" : "20px",
2769
+ borderBottomRightRadius: isPartialEnd ? "0px" : "20px",
2770
+ cursor: mode === "extend" ? "col-resize" : "grab"
2771
+ }, eventStyle)
2772
+ }, event.title, eventsExtendOn && /*#__PURE__*/external_react_default().createElement("div", {
2773
+ className: "timeline-event-extend-handle",
2774
+ onMouseDown: mouseEvent => {
2775
+ mouseEvent.stopPropagation();
2776
+ handleMouseDownExtend(mouseEvent, event);
2777
+ }
2778
+ }));
2779
+ }), tempEvent && tempEvent.resourceId === resource.id && /*#__PURE__*/external_react_default().createElement("div", {
2780
+ className: "timeline-temp-event",
2781
+ style: TimelineContent_objectSpread(TimelineContent_objectSpread({}, calculatePosition(tempEvent, dates)), tempEventStyle)
2782
+ }, tempEvent.title), dates.map((dateObj, colIndex) => /*#__PURE__*/external_react_default().createElement("div", {
2783
+ key: "cell-".concat(groupIndex, "-").concat(rowIndex, "-").concat(colIndex),
2784
+ className: "timeline-cell ".concat(isCellSelected(resource.id, dateObj) ? "selected" : ""),
2785
+ "data-date": JSON.stringify(dateObj),
2786
+ "data-resource-id": resource.id,
2787
+ onMouseDown: () => handleCellClick(resource.id, dateObj),
2788
+ onDragOver: e => handleDragOver(e),
2789
+ onDrop: e => handleDrop(e, resource.id, parseDate(dateObj.fullDate))
2790
+ })));
2791
+ }))), eventTooltipOn && selectedEvent && TooltipComponent && mode !== "extend" && /*#__PURE__*/external_react_default().createElement(TooltipComponent, {
2792
+ event: selectedEvent,
2793
+ position: tooltipPosition,
2794
+ onClose: handleCloseTooltip
2795
+ }));
2796
+ };
2797
+ /* harmony default export */ const Timeline_TimelineContent = (TimelineContent);
2798
+ ;// ./src/components/Timeline/EventTooltip.js
2799
+ // src/components/Timeline/EventTooltip.js
2800
+
2801
+ const EventTooltip = _ref => {
2802
+ let {
2803
+ event,
2804
+ position = {
2805
+ top: 0,
2806
+ left: 0
2807
+ },
2808
+ onClose,
2809
+ onEdit,
2810
+ onDelete
2811
+ } = _ref;
2812
+ if (!event) return null;
2813
+ const {
2814
+ top,
2815
+ left
2816
+ } = position;
2817
+
2818
+ // Rezervasyon durumuna göre renk belirleme
2819
+ const getStatusColor = status => {
2820
+ switch (status) {
2821
+ case "Confirmed":
2822
+ return "#4caf50";
2823
+ // Yeşil
2824
+ case "Pending":
2825
+ return "#ff9800";
2826
+ // Turuncu
2827
+ case "Cancelled":
2828
+ return "#f44336";
2829
+ // Kırmızı
2830
+ case "Completed":
2831
+ return "#2196f3";
2832
+ // Mavi
2833
+ default:
2834
+ return "#9e9e9e";
2835
+ // Gri
2836
+ }
2837
+ };
2838
+ const statusColor = getStatusColor(event.status);
2839
+ return /*#__PURE__*/external_react_default().createElement("div", {
2840
+ style: {
2841
+ position: "absolute",
2842
+ top: top - 200,
2843
+ // Tooltip'in biraz yukarıda görünmesi için
2844
+ left: left + 70,
2845
+ transform: "translateX(-50%)",
2846
+ backgroundColor: "#ffffff",
2847
+ color: "#333333",
2848
+ borderRadius: "10px",
2849
+ boxShadow: "0 8px 16px rgba(0, 0, 0, 0.2)",
2850
+ fontSize: "16px",
2851
+ zIndex: 1000,
2852
+ pointerEvents: "auto",
2853
+ // Tooltip'in tıklanabilir olmasını sağlar
2854
+ whiteSpace: "normal",
2855
+ maxWidth: "400px",
2856
+ width: "100%",
2857
+ transition: "opacity 0.3s ease, transform 0.3s ease"
2858
+ }
2859
+ }, onClose && /*#__PURE__*/external_react_default().createElement("button", {
2860
+ onClick: onClose,
2861
+ style: {
2862
+ position: "absolute",
2863
+ top: "10px",
2864
+ right: "15px",
2865
+ background: "transparent",
2866
+ border: "none",
2867
+ color: "#aaa",
2868
+ fontSize: "24px",
2869
+ cursor: "pointer",
2870
+ transition: "color 0.2s"
2871
+ },
2872
+ "aria-label": "Kapat",
2873
+ onMouseOver: e => e.target.style.color = "#000",
2874
+ onMouseOut: e => e.target.style.color = "#aaa"
2875
+ }, "\xD7"), /*#__PURE__*/external_react_default().createElement("div", {
2876
+ style: {
2877
+ backgroundColor: statusColor,
2878
+ color: "#ffffff",
2879
+ padding: "15px 20px",
2880
+ borderTopLeftRadius: "10px",
2881
+ borderTopRightRadius: "10px",
2882
+ display: "flex",
2883
+ flexDirection: "column",
2884
+ gap: "5px"
2885
+ }
2886
+ }, /*#__PURE__*/external_react_default().createElement("div", {
2887
+ style: {
2888
+ fontWeight: "bold",
2889
+ fontSize: "18px"
2890
+ }
2891
+ }, event.title), /*#__PURE__*/external_react_default().createElement("div", {
2892
+ style: {
2893
+ fontSize: "14px"
2894
+ }
2895
+ }, "Rezervasyon ID: ", event.reservationId)), /*#__PURE__*/external_react_default().createElement("div", {
2896
+ style: {
2897
+ padding: "20px",
2898
+ display: "flex",
2899
+ flexDirection: "column",
2900
+ gap: "15px"
2901
+ }
2902
+ }, Array.isArray(event.guestNames) && /*#__PURE__*/external_react_default().createElement("div", null, /*#__PURE__*/external_react_default().createElement("strong", null, "Misafirler:"), " ", event.guestNames.join(", ")), /*#__PURE__*/external_react_default().createElement("div", {
2903
+ style: {
2904
+ display: "flex",
2905
+ justifyContent: "space-between",
2906
+ marginBottom: "10px"
2907
+ }
2908
+ }, /*#__PURE__*/external_react_default().createElement("div", null, /*#__PURE__*/external_react_default().createElement("strong", null, "Giri\u015F:"), " ", new Date(event.startDate).toLocaleDateString()), /*#__PURE__*/external_react_default().createElement("div", null, /*#__PURE__*/external_react_default().createElement("strong", null, "\xC7\u0131k\u0131\u015F:"), " ", new Date(event.endDate).toLocaleDateString())), (event.totalAmount !== undefined || event.amountPaid !== undefined) && /*#__PURE__*/external_react_default().createElement("div", {
2909
+ style: {
2910
+ display: "flex",
2911
+ justifyContent: "space-between",
2912
+ marginBottom: "10px"
2913
+ }
2914
+ }, event.amountPaid !== undefined && /*#__PURE__*/external_react_default().createElement("div", null, /*#__PURE__*/external_react_default().createElement("strong", null, "\xD6denen Miktar:"), " $", event.amountPaid.toFixed(2)), event.totalAmount !== undefined && /*#__PURE__*/external_react_default().createElement("div", null, /*#__PURE__*/external_react_default().createElement("strong", null, "Toplam Bor\xE7:"), " $", event.totalAmount.toFixed(2))), event.status && /*#__PURE__*/external_react_default().createElement("div", null, /*#__PURE__*/external_react_default().createElement("strong", null, "Durum:"), " ", event.status), event.note && /*#__PURE__*/external_react_default().createElement("div", null, /*#__PURE__*/external_react_default().createElement("strong", null, "Not:"), " ", event.note)), /*#__PURE__*/external_react_default().createElement("div", {
2915
+ style: {
2916
+ padding: "15px 20px",
2917
+ borderTop: "1px solid #ddd",
2918
+ display: "flex",
2919
+ justifyContent: "flex-end",
2920
+ gap: "10px",
2921
+ borderBottomLeftRadius: "10px",
2922
+ borderBottomRightRadius: "10px"
2923
+ }
2924
+ }, onEdit && /*#__PURE__*/external_react_default().createElement("button", {
2925
+ onClick: () => onEdit(event),
2926
+ style: {
2927
+ padding: "8px 16px",
2928
+ backgroundColor: "#2196f3",
2929
+ color: "#ffffff",
2930
+ border: "none",
2931
+ borderRadius: "4px",
2932
+ cursor: "pointer",
2933
+ fontSize: "14px",
2934
+ display: "flex",
2935
+ alignItems: "center",
2936
+ gap: "5px",
2937
+ transition: "background-color 0.2s"
2938
+ },
2939
+ onMouseOver: e => e.target.style.backgroundColor = "#1976d2",
2940
+ onMouseOut: e => e.target.style.backgroundColor = "#2196f3"
2941
+ }, /*#__PURE__*/external_react_default().createElement("span", {
2942
+ role: "img",
2943
+ "aria-label": "D\xFCzenle"
2944
+ }, "\u270F\uFE0F"), "D\xFCzenle"), onDelete && /*#__PURE__*/external_react_default().createElement("button", {
2945
+ onClick: () => onDelete(event.id),
2946
+ style: {
2947
+ padding: "8px 16px",
2948
+ backgroundColor: "#f44336",
2949
+ color: "#ffffff",
2950
+ border: "none",
2951
+ borderRadius: "4px",
2952
+ cursor: "pointer",
2953
+ fontSize: "14px",
2954
+ display: "flex",
2955
+ alignItems: "center",
2956
+ gap: "5px",
2957
+ transition: "background-color 0.2s"
2958
+ },
2959
+ onMouseOver: e => e.target.style.backgroundColor = "#d32f2f",
2960
+ onMouseOut: e => e.target.style.backgroundColor = "#f44336"
2961
+ }, /*#__PURE__*/external_react_default().createElement("span", {
2962
+ role: "img",
2963
+ "aria-label": "Sil"
2964
+ }, "\uD83D\uDDD1\uFE0F"), "Sil")));
2965
+ };
2966
+ /* harmony default export */ const Timeline_EventTooltip = (EventTooltip);
2967
+ ;// ./src/utils/timelineUtils.js
2968
+ // src/utils/timelineUtils.js
2969
+
2970
+ const generateTimelineData = (startYear, endYear) => {
2971
+ const dayNames = ["Paz", "Pzt", "Sal", "Çar", "Per", "Cum", "Cmt"];
2972
+ const monthNames = ["Ocak", "Şubat", "Mart", "Nisan", "Mayıs", "Haziran", "Temmuz", "Ağustos", "Eylül", "Ekim", "Kasım", "Aralık"];
2973
+ const dates = [];
2974
+ const monthHeaders = [];
2975
+ for (let year = startYear; year <= endYear; year++) {
2976
+ for (let month = 1; month <= 12; month++) {
2977
+ const daysInMonth = new Date(year, month, 0).getDate();
2978
+ const startIndex = dates.length;
2979
+ for (let day = 1; day <= daysInMonth; day++) {
2980
+ const date = new Date(year, month - 1, day);
2981
+ const dayName = dayNames[date.getDay()];
2982
+ dates.push({
2983
+ fullDate: date,
2984
+ display: "".concat(day, " ").concat(dayName)
2985
+ });
2986
+ }
2987
+ const endIndex = dates.length - 1;
2988
+ monthHeaders.push({
2989
+ monthName: monthNames[month - 1],
2990
+ year,
2991
+ startIndex,
2992
+ endIndex,
2993
+ totalDays: endIndex - startIndex + 1
2994
+ });
2995
+ }
2996
+ }
2997
+ return {
2998
+ dates,
2999
+ monthHeaders
3000
+ };
3001
+ };
3002
+ ;// ./src/components/Timeline/Timeline.js
3003
+ function Timeline_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
3004
+ function Timeline_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? Timeline_ownKeys(Object(t), !0).forEach(function (r) { Timeline_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : Timeline_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
3005
+ function Timeline_defineProperty(e, r, t) { return (r = Timeline_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
3006
+ function Timeline_toPropertyKey(t) { var i = Timeline_toPrimitive(t, "string"); return "symbol" == typeof i ? i : i + ""; }
3007
+ function Timeline_toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
3008
+
3009
+
3010
+
3011
+
3012
+
3013
+
3014
+
3015
+
3016
+
3017
+ const Timeline_Timeline_Timeline = _ref => {
3018
+ let {
3019
+ resources,
3020
+ programDate = null,
3021
+ events = [],
3022
+ resourceSettings = {
3023
+ showIdAsName: false,
3024
+ isGrouped: true,
3025
+ isCollapsible: true
3026
+ },
3027
+ indicatorOn = false,
3028
+ dropInfo,
3029
+ setDropInfo,
3030
+ masterHeaderView = true,
3031
+ resourceHeaderContent = "Akfa Timeline",
3032
+ eventsDragOn = true,
3033
+ eventsExtendOn = true,
3034
+ createNewEventOn = true,
3035
+ onDragInfo,
3036
+ onExtendInfo,
3037
+ onCreateEventInfo,
3038
+ // İsteğe bağlı event tıklama callback'leri
3039
+ onEventClick,
3040
+ onEventRightClick,
3041
+ // Yatay scroll özelliği aç/kapa
3042
+ horizontalScrollOn = false,
3043
+ // Varsayılan false
3044
+
3045
+ dayRange = 30,
3046
+ setDayRange,
3047
+ themeType = "light",
3048
+ // Tema bilgisi varsayılan olarak light
3049
+
3050
+ eventTooltipOn = true,
3051
+ tooltipComponent: TooltipComponent,
3052
+ // Özelleştirilebilir Tooltip bileşeni
3053
+ tempEventStyle = {},
3054
+ eventStyleResolver = () => ({}),
3055
+ onToday,
3056
+ onAdvance,
3057
+ onRetreat,
3058
+ onMonthAdvance,
3059
+ onMonthRetreat
3060
+ } = _ref;
3061
+ // ---------------------------------------------------------
3062
+ // 1) timelineData oluştur (dates, monthHeaders vs.)
3063
+ // ---------------------------------------------------------
3064
+ const timelineData = generateTimelineData(2020, 2030); // 10 yıllık veri
3065
+ const {
3066
+ dates,
3067
+ monthHeaders
3068
+ } = timelineData;
3069
+ const [selectedDate, setSelectedDate] = (0,external_react_.useState)(() => {
3070
+ const date = programDate ? new Date(programDate) : new Date();
3071
+ date.setDate(date.getDate() - 3); // Program tarihinden 3 gün öncesini al
3072
+ return date;
3073
+ });
3074
+
3075
+ // ---------------------------------------------------------
3076
+ // 2) local state
3077
+ // ---------------------------------------------------------
3078
+ const [collapsedGroups, setCollapsedGroups] = (0,external_react_.useState)({});
3079
+ const [localEvents, setLocalEvents] = (0,external_react_.useState)(events);
3080
+ const [selectedEvent, setSelectedEvent] = (0,external_react_.useState)(null);
3081
+ const [tooltipPosition, setTooltipPosition] = (0,external_react_.useState)({
3082
+ top: 0,
3083
+ left: 0
3084
+ });
3085
+
3086
+ // dayRange = ekranda göstermeyi istediğimiz gün/hücre sayısı (ör. 30 gün)
3087
+
3088
+ const [isDarkMode, setIsDarkMode] = (0,external_react_.useState)(themeType === "dark");
3089
+ (0,external_react_.useEffect)(() => {
3090
+ if (themeType !== undefined) {
3091
+ setIsDarkMode(themeType === "dark");
3092
+ }
3093
+ }, [themeType]);
3094
+ const toggleDarkMode = () => {
3095
+ setIsDarkMode(prev => !prev);
3096
+ };
3097
+ // ---------------------------------------------------------
3098
+ // 3) Sabit hücre genişliği (örneğin 56.95 px)
3099
+ // Container genişliği = dayRange * cellWidth
3100
+ // ---------------------------------------------------------
3101
+ const cellWidth = 56.95; // her gün/hücre ~57 piksel
3102
+ const containerWidth = dayRange * cellWidth;
3103
+ // örneğin dayRange=30 => containerWidth=30*56.95=1708.5 px
3104
+
3105
+ // ---------------------------------------------------------
3106
+ // 4) Event Tooltip logic
3107
+ // ---------------------------------------------------------
3108
+ const handleEventClick = (event, e) => {
3109
+ // Harici onEventClick callback'i varsa, önce onu tetikleyelim
3110
+ if (onEventClick) {
3111
+ onEventClick(event, e);
3112
+ }
3113
+ // Ardından tooltip göstermek istiyorsak:
3114
+ const eventElement = e.currentTarget;
3115
+ if (eventElement) {
3116
+ const rect = eventElement.getBoundingClientRect();
3117
+ setTooltipPosition({
3118
+ top: rect.top + window.scrollY,
3119
+ left: rect.left + rect.width / 2 + window.scrollX
3120
+ });
3121
+ setSelectedEvent(event);
3122
+ }
3123
+ };
3124
+ const handleCloseTooltip = () => {
3125
+ setSelectedEvent(null);
3126
+ };
3127
+
3128
+ // ---------------------------------------------------------
3129
+ // 5) Tarih filtreleme => filteredDates
3130
+ // ---------------------------------------------------------
3131
+ const startIndex = dates.findIndex(d => d.fullDate >= selectedDate);
3132
+ const endIndex = startIndex + dayRange;
3133
+ const filteredDates = startIndex !== -1 ? dates.slice(startIndex, Math.min(endIndex, dates.length)) : [];
3134
+ const today = programDate ? new Date(programDate) : new Date();
3135
+ const todayIndex = filteredDates.findIndex(d => new Date(d.fullDate).toDateString() === today.toDateString());
3136
+ const totalDays = filteredDates.length;
3137
+
3138
+ // ---------------------------------------------------------
3139
+ // 6) Grupları aç/kapa
3140
+ // ---------------------------------------------------------
3141
+ const toggleGroupCollapse = groupName => {
3142
+ setCollapsedGroups(prev => Timeline_objectSpread(Timeline_objectSpread({}, prev), {}, {
3143
+ [groupName]: !prev[groupName]
3144
+ }));
3145
+ };
3146
+
3147
+ // ---------------------------------------------------------
3148
+ // 7) Navigation fonksiyonları
3149
+ // --------------------------------------------------------- const { dates, monthHeaders } = timelineData;
3150
+
3151
+ const handleDateChange = newDate => {
3152
+ setSelectedDate(new Date(newDate));
3153
+ };
3154
+ const handleToday = () => {
3155
+ const today = new Date();
3156
+ today.setDate(today.getDate() - 3); // Bugünden 3 gün öncesini ayarla
3157
+ setSelectedDate(today);
3158
+ };
3159
+ const handleAdvance = () => {
3160
+ setSelectedDate(prev => new Date(prev.getTime() + 5 * 24 * 60 * 60 * 1000));
3161
+ };
3162
+ const handleRetreat = () => {
3163
+ setSelectedDate(prev => new Date(prev.getTime() - 5 * 24 * 60 * 60 * 1000));
3164
+ };
3165
+ const handleMonthAdvance = () => {
3166
+ setSelectedDate(prev => {
3167
+ const newDate = new Date(prev);
3168
+ newDate.setMonth(newDate.getMonth() + 1);
3169
+ return newDate;
3170
+ });
3171
+ };
3172
+ const handleMonthRetreat = () => {
3173
+ setSelectedDate(prev => {
3174
+ const newDate = new Date(prev);
3175
+ newDate.setMonth(newDate.getMonth() - 1);
3176
+ return newDate;
3177
+ });
3178
+ };
3179
+
3180
+ // ---------------------------------------------------------
3181
+ // 8) Dark Mode
3182
+ // ---------------------------------------------------------
3183
+
3184
+ // ---------------------------------------------------------
3185
+ // 9) Ay başlıklarını filtrele
3186
+ // ---------------------------------------------------------
3187
+ const filteredMonthHeaders = monthHeaders.map(header => {
3188
+ const adjustedStartIndex = Math.max(header.startIndex, startIndex);
3189
+ const adjustedEndIndex = Math.min(header.endIndex, endIndex - 1);
3190
+ return Timeline_objectSpread(Timeline_objectSpread({}, header), {}, {
3191
+ startIndex: adjustedStartIndex,
3192
+ endIndex: adjustedEndIndex
3193
+ });
3194
+ }).filter(header => header.startIndex <= header.endIndex);
3195
+
3196
+ // ---------------------------------------------------------
3197
+ // 10) Return
3198
+ // ---------------------------------------------------------
3199
+ return /*#__PURE__*/external_react_default().createElement("div", {
3200
+ className: "timeline-container ".concat(isDarkMode ? "dark-mode" : "")
3201
+ }, masterHeaderView && /*#__PURE__*/external_react_default().createElement("div", {
3202
+ className: "timeline-master-header"
3203
+ }, /*#__PURE__*/external_react_default().createElement(Timeline_MasterHeader, {
3204
+ selectedDate: selectedDate // Seçili tarihi gönder
3205
+ ,
3206
+ onDateSelect: handleDateChange,
3207
+ onToday: handleToday,
3208
+ onAdvance: handleAdvance,
3209
+ onRetreat: handleRetreat,
3210
+ onMonthAdvance: handleMonthAdvance,
3211
+ onMonthRetreat: handleMonthRetreat,
3212
+ dayRange: dayRange,
3213
+ setDayRange: setDayRange
3214
+ })), /*#__PURE__*/external_react_default().createElement("div", {
3215
+ className: "timeline-body"
3216
+ }, /*#__PURE__*/external_react_default().createElement("div", {
3217
+ className: "timeline-resources-container",
3218
+ style: {
3219
+ overflow: "hidden"
3220
+ }
3221
+ }, /*#__PURE__*/external_react_default().createElement(Timeline_ResourcesHeader, {
3222
+ content: resourceHeaderContent
3223
+ }), /*#__PURE__*/external_react_default().createElement(Timeline_Resources, {
3224
+ groupedResources: resources,
3225
+ toggleGroupCollapse: toggleGroupCollapse,
3226
+ collapsedGroups: collapsedGroups,
3227
+ resourceSettings: resourceSettings
3228
+ })), /*#__PURE__*/external_react_default().createElement("div", {
3229
+ className: "timeline-scrollable-container",
3230
+ style: {
3231
+ overflowX: horizontalScrollOn ? "auto" : "hidden"
3232
+ }
3233
+ }, /*#__PURE__*/external_react_default().createElement("div", {
3234
+ className: "timeline-header-content-wrapper",
3235
+ style: {
3236
+ width: horizontalScrollOn ? "".concat(containerWidth, "px") : "100%"
3237
+ }
3238
+ }, /*#__PURE__*/external_react_default().createElement(Timeline_TimelineHeader, {
3239
+ dates: filteredDates,
3240
+ monthHeaders: filteredMonthHeaders
3241
+ }), /*#__PURE__*/external_react_default().createElement(Timeline_TimelineContent, {
3242
+ groupedResources: resources,
3243
+ dates: filteredDates,
3244
+ collapsedGroups: collapsedGroups,
3245
+ events: localEvents,
3246
+ setEvents: setLocalEvents,
3247
+ onEventClick: onEventClick,
3248
+ todayIndex: filteredDates.findIndex(d => new Date(d.fullDate).toDateString() === new Date().toDateString()),
3249
+ indicatorOn: indicatorOn,
3250
+ resourceSettings: resourceSettings,
3251
+ toggleGroupCollapse: toggleGroupCollapse,
3252
+ setDropInfo: setDropInfo,
3253
+ eventsDragOn: eventsDragOn,
3254
+ eventsExtendOn: eventsExtendOn,
3255
+ createNewEventOn: createNewEventOn,
3256
+ onDragInfo: onDragInfo,
3257
+ onExtendInfo: onExtendInfo,
3258
+ onCreateEventInfo: onCreateEventInfo,
3259
+ onEventRightClick: onEventRightClick,
3260
+ eventTooltipOn: eventTooltipOn // Tooltip kontrolü
3261
+ ,
3262
+ tooltipComponent: TooltipComponent // Özelleştirilebilir Tooltip bileşeni
3263
+ ,
3264
+ tempEventStyle: tempEventStyle,
3265
+ eventStyleResolver: eventStyleResolver
3266
+ }), selectedEvent && /*#__PURE__*/external_react_default().createElement(Timeline_EventTooltip, {
3267
+ event: selectedEvent,
3268
+ position: tooltipPosition,
3269
+ onClose: handleCloseTooltip,
3270
+ onDelete: eventId => setLocalEvents(prev => prev.filter(e => e.id !== eventId))
3271
+ })))));
3272
+ };
3273
+ /* harmony default export */ const components_Timeline_Timeline = (Timeline_Timeline_Timeline);
3274
+ /******/ return __webpack_exports__;
3275
+ /******/ })()
3276
+ ;
3277
+ });