@topvisor/ui 1.5.9 → 1.5.10-animation.0

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 (154) hide show
  1. package/.chunks/api-nVBtzTDk.es.amd.js +2 -0
  2. package/.chunks/api-nVBtzTDk.es.amd.js.map +1 -0
  3. package/.chunks/{api-lAoAK33f.es.js → api-nVBtzTDk.es.js} +101 -51
  4. package/.chunks/api-nVBtzTDk.es.js.map +1 -0
  5. package/.chunks/app-BbV6AslA.es.amd.js +2 -0
  6. package/.chunks/app-BbV6AslA.es.amd.js.map +1 -0
  7. package/.chunks/{app-CY6euLQJ.es.js → app-BbV6AslA.es.js} +26 -25
  8. package/.chunks/{app-CY6euLQJ.es.js.map → app-BbV6AslA.es.js.map} +1 -1
  9. package/.chunks/{datepicker-CeUbso62.es.amd.js → datepicker-CpnGeB5y.es.amd.js} +2 -2
  10. package/.chunks/{datepicker-CeUbso62.es.amd.js.map → datepicker-CpnGeB5y.es.amd.js.map} +1 -1
  11. package/.chunks/{datepicker-CeUbso62.es.js → datepicker-CpnGeB5y.es.js} +2 -2
  12. package/.chunks/{datepicker-CeUbso62.es.js.map → datepicker-CpnGeB5y.es.js.map} +1 -1
  13. package/.chunks/{dialog-Cnx_s8X1.es.amd.js → dialog-CiK4MPcB.es.amd.js} +2 -2
  14. package/.chunks/{dialog-Cnx_s8X1.es.amd.js.map → dialog-CiK4MPcB.es.amd.js.map} +1 -1
  15. package/.chunks/{dialog-Cnx_s8X1.es.js → dialog-CiK4MPcB.es.js} +3 -3
  16. package/.chunks/{dialog-Cnx_s8X1.es.js.map → dialog-CiK4MPcB.es.js.map} +1 -1
  17. package/.chunks/{dialog_regionSelectorRegions-BCEJBT1H.es.amd.js → dialog_regionSelectorRegions-CRUwGUuz.es.amd.js} +2 -2
  18. package/.chunks/{dialog_regionSelectorRegions-BCEJBT1H.es.amd.js.map → dialog_regionSelectorRegions-CRUwGUuz.es.amd.js.map} +1 -1
  19. package/.chunks/{dialog_regionSelectorRegions-BCEJBT1H.es.js → dialog_regionSelectorRegions-CRUwGUuz.es.js} +4 -4
  20. package/.chunks/{dialog_regionSelectorRegions-BCEJBT1H.es.js.map → dialog_regionSelectorRegions-CRUwGUuz.es.js.map} +1 -1
  21. package/.chunks/forms-CjJD60m3.es.amd.js +2 -0
  22. package/.chunks/forms-CjJD60m3.es.amd.js.map +1 -0
  23. package/.chunks/{forms-Ch1q0UUt.es.js → forms-CjJD60m3.es.js} +601 -638
  24. package/.chunks/forms-CjJD60m3.es.js.map +1 -0
  25. package/.chunks/formsExt-B9hGGznb.es.amd.js +2 -0
  26. package/.chunks/formsExt-B9hGGznb.es.amd.js.map +1 -0
  27. package/.chunks/{formsExt-DtFeVRvE.es.js → formsExt-B9hGGznb.es.js} +110 -111
  28. package/.chunks/{formsExt-DtFeVRvE.es.js.map → formsExt-B9hGGznb.es.js.map} +1 -1
  29. package/.chunks/lazy-DQU-hLos.es.js.map +1 -1
  30. package/.chunks/mocker-h3ROH-VB.es.js.map +1 -1
  31. package/.chunks/{notice-40E7zRe5.es.amd.js → notice-BSVUBQ4B.es.amd.js} +2 -2
  32. package/.chunks/{notice-40E7zRe5.es.amd.js.map → notice-BSVUBQ4B.es.amd.js.map} +1 -1
  33. package/.chunks/{notice-40E7zRe5.es.js → notice-BSVUBQ4B.es.js} +2 -2
  34. package/.chunks/{notice-40E7zRe5.es.js.map → notice-BSVUBQ4B.es.js.map} +1 -1
  35. package/.chunks/popup-BoCCkzOM.es.amd.js +2 -0
  36. package/.chunks/popup-BoCCkzOM.es.amd.js.map +1 -0
  37. package/.chunks/{popup-l46cef9d.es.js → popup-BoCCkzOM.es.js} +26 -25
  38. package/.chunks/{popup-l46cef9d.es.js.map → popup-BoCCkzOM.es.js.map} +1 -1
  39. package/.chunks/{popup-DA17NrM5.es.amd.js → popup-q1PRZblX.es.amd.js} +2 -2
  40. package/.chunks/{popup-DA17NrM5.es.amd.js.map → popup-q1PRZblX.es.amd.js.map} +1 -1
  41. package/.chunks/{popup-DA17NrM5.es.js → popup-q1PRZblX.es.js} +3 -3
  42. package/.chunks/{popup-DA17NrM5.es.js.map → popup-q1PRZblX.es.js.map} +1 -1
  43. package/.chunks/utils-DzPB2u_5.es.amd.js +2 -0
  44. package/.chunks/utils-DzPB2u_5.es.amd.js.map +1 -0
  45. package/.chunks/{utils-C0Y5ido8.es.js → utils-DzPB2u_5.es.js} +5 -5
  46. package/.chunks/utils-DzPB2u_5.es.js.map +1 -0
  47. package/.chunks/utils-Xb6J5WcU.es.amd.js +2 -0
  48. package/.chunks/utils-Xb6J5WcU.es.amd.js.map +1 -0
  49. package/.chunks/{utils-hK-QjvqM.es.js → utils-Xb6J5WcU.es.js} +3 -3
  50. package/.chunks/{utils-hK-QjvqM.es.js.map → utils-Xb6J5WcU.es.js.map} +1 -1
  51. package/.chunks/worker-F-Y1IEi2.es.amd.js +2 -0
  52. package/.chunks/worker-F-Y1IEi2.es.amd.js.map +1 -0
  53. package/.chunks/{worker-D-5BEVm7.es.js → worker-F-Y1IEi2.es.js} +4 -3
  54. package/.chunks/{worker-D-5BEVm7.es.js.map → worker-F-Y1IEi2.es.js.map} +1 -1
  55. package/api/additional.amd.js +1 -1
  56. package/api/additional.amd.js.map +1 -1
  57. package/api/additional.js +1 -1
  58. package/api/index.amd.js +1 -1
  59. package/api/index.amd.js.map +1 -1
  60. package/api/index.js +2 -3
  61. package/assets/themes/dark-th.css +1 -1
  62. package/assets/themes/dark.css +1 -1
  63. package/assets/themes/light.css +1 -1
  64. package/autoload-css-manifest.amd.json +4 -4
  65. package/autoload-css-manifest.json +4 -4
  66. package/charts/charts.amd.js +1 -1
  67. package/charts/charts.amd.js.map +1 -1
  68. package/charts/charts.js +1 -1
  69. package/charts/charts.js.map +1 -1
  70. package/core/app.amd.js +1 -1
  71. package/core/app.amd.js.map +1 -1
  72. package/core/app.js +3 -3
  73. package/dialog/dialog.amd.js +1 -1
  74. package/dialog/dialog.amd.js.map +1 -1
  75. package/dialog/dialog.js +2 -2
  76. package/extra/extra.amd.js +1 -1
  77. package/extra/extra.amd.js.map +1 -1
  78. package/extra/extra.js +2 -0
  79. package/extra/extra.js.map +1 -1
  80. package/forms/forms.amd.js +1 -1
  81. package/forms/forms.amd.js.map +1 -1
  82. package/forms/forms.js +1 -1
  83. package/formsExt/formsExt.amd.js +1 -1
  84. package/formsExt/formsExt.amd.js.map +1 -1
  85. package/formsExt/formsExt.js +1 -1
  86. package/layout/layout.amd.js +1 -1
  87. package/layout/layout.amd.js.map +1 -1
  88. package/layout/layout.js +1 -1
  89. package/package.json +1 -1
  90. package/popup/popup.amd.js +1 -1
  91. package/popup/popup.amd.js.map +1 -1
  92. package/popup/popup.js +1 -1
  93. package/popup/worker.amd.js +1 -1
  94. package/popup/worker.amd.js.map +1 -1
  95. package/popup/worker.js +1 -1
  96. package/project/project.amd.js +1 -1
  97. package/project/project.amd.js.map +1 -1
  98. package/project/project.js +245 -246
  99. package/project/project.js.map +1 -1
  100. package/schedule/schedule.amd.js +1 -1
  101. package/schedule/schedule.amd.js.map +1 -1
  102. package/schedule/schedule.js +2 -2
  103. package/schedule/schedule.js.map +1 -1
  104. package/tabsView/tabsView.amd.js +1 -1
  105. package/tabsView/tabsView.amd.js.map +1 -1
  106. package/tabsView/tabsView.js +2 -2
  107. package/tabsView/tabsView.js.map +1 -1
  108. package/utils/clipboard.amd.js +1 -1
  109. package/utils/clipboard.amd.js.map +1 -1
  110. package/utils/clipboard.js +1 -1
  111. package/utils/date.amd.js +1 -1
  112. package/utils/date.amd.js.map +1 -1
  113. package/utils/date.js +1 -1
  114. package/utils/device.amd.js +1 -1
  115. package/utils/device.amd.js.map +1 -1
  116. package/utils/device.js +1 -1
  117. package/utils/dom.amd.js.map +1 -1
  118. package/utils/dom.js.map +1 -1
  119. package/utils/lodash.amd.js +1 -1
  120. package/utils/lodash.amd.js.map +1 -1
  121. package/utils/lodash.js +1 -1
  122. package/utils/price.amd.js +1 -1
  123. package/utils/price.amd.js.map +1 -1
  124. package/utils/price.js +1 -1
  125. package/utils/scroll.js.map +1 -1
  126. package/utils/string.amd.js +1 -1
  127. package/utils/string.amd.js.map +1 -1
  128. package/utils/string.js +1 -1
  129. package/utils/string.js.map +1 -1
  130. package/utils/system.amd.js.map +1 -1
  131. package/utils/system.js.map +1 -1
  132. package/.chunks/api-lAoAK33f.es.amd.js +0 -2
  133. package/.chunks/api-lAoAK33f.es.amd.js.map +0 -1
  134. package/.chunks/api-lAoAK33f.es.js.map +0 -1
  135. package/.chunks/app-CY6euLQJ.es.amd.js +0 -2
  136. package/.chunks/app-CY6euLQJ.es.amd.js.map +0 -1
  137. package/.chunks/field-DEusYVqS.es.amd.js +0 -2
  138. package/.chunks/field-DEusYVqS.es.amd.js.map +0 -1
  139. package/.chunks/field-DEusYVqS.es.js +0 -16
  140. package/.chunks/field-DEusYVqS.es.js.map +0 -1
  141. package/.chunks/forms-Ch1q0UUt.es.amd.js +0 -2
  142. package/.chunks/forms-Ch1q0UUt.es.amd.js.map +0 -1
  143. package/.chunks/forms-Ch1q0UUt.es.js.map +0 -1
  144. package/.chunks/formsExt-DtFeVRvE.es.amd.js +0 -2
  145. package/.chunks/formsExt-DtFeVRvE.es.amd.js.map +0 -1
  146. package/.chunks/popup-l46cef9d.es.amd.js +0 -2
  147. package/.chunks/popup-l46cef9d.es.amd.js.map +0 -1
  148. package/.chunks/utils-C0Y5ido8.es.amd.js +0 -2
  149. package/.chunks/utils-C0Y5ido8.es.amd.js.map +0 -1
  150. package/.chunks/utils-C0Y5ido8.es.js.map +0 -1
  151. package/.chunks/utils-hK-QjvqM.es.amd.js +0 -2
  152. package/.chunks/utils-hK-QjvqM.es.amd.js.map +0 -1
  153. package/.chunks/worker-D-5BEVm7.es.amd.js +0 -2
  154. package/.chunks/worker-D-5BEVm7.es.amd.js.map +0 -1
@@ -1,2 +1,2 @@
1
- define([`require`,`exports`,`../.chunks/forms-Ch1q0UUt.es.amd`,`../utils/check.amd`,`../utils/string.amd`,`vue`,`../.chunks/app-CY6euLQJ.es.amd`,`../require/css.amd!../assets/schedule.css`],function(e,t,n,r,i,a){"use strict";if(o===void 0)var o=window.Vue;Object.defineProperty(t,"__esModule",{value:!0}),t.TopScheduleSocials=t.TopScheduleEmails=t.TopSchedule=void 0;var s=e=>{let t=(0,n.E)();return(0,a.computed)(()=>{switch((0,a.toValue)(e)){case`dayOfMonth`:{let e=Array.from({length:27},(e,t)=>({value:String(t+1),title:String(t+1)}));return e.push({value:`LAST_OF_MONTH`,title:``,isIcon:!0}),e}case`dayOfWeek`:return[{value:`MONDAY`,title:t.Calendar.Dw_1},{value:`TUESDAY`,title:t.Calendar.Dw_2},{value:`WEDNESDAY`,title:t.Calendar.Dw_3},{value:`THURSDAY`,title:t.Calendar.Dw_4},{value:`FRIDAY`,title:t.Calendar.Dw_5},{value:`SATURDAY`,title:t.Calendar.Dw_6},{value:`SUNDAY`,title:t.Calendar.Dw_7}];default:return[]}})},c={class:`top-scheduleTimeSelector`},l=(0,a.defineComponent)({__name:`timeSelector`,props:(0,a.mergeModels)({modelValue:{},multipleTimes:{type:Boolean}},{modelValue:{required:!0},modelModifiers:{}}),emits:[`update:modelValue`],setup(e){let t=e,n=(0,a.useModel)(e,`modelValue`),r=Array.from({length:24},(e,t)=>({value:String(t),title:String(t).padStart(2,`0`)})),i=Array.from({length:4},(e,t)=>{let n=t*15;return{value:String(n),title:String(n).padStart(2,`0`)}}),o=(e,t)=>{let r=[...n.value];r[e]={...r[e],...t},n.value=r},s=()=>{n.value=[...n.value,{hour:`0`,minute:`0`}]},l=e=>{n.value=n.value.filter((t,n)=>n!==e)};return(e,u)=>{let d=(0,a.resolveComponent)(`TopSelect`),f=(0,a.resolveComponent)(`TopButton`);return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,c,[((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(n.value,(e,c)=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{key:c,class:`top-scheduleTimeSelector_item`},[(0,a.createVNode)(d,{class:`top-scheduleTimeSelector_hour`,modelValue:e.hour,options:(0,a.unref)(r),availableCustomValue:``,"onUpdate:modelValue":e=>o(c,{hour:e})},null,8,[`modelValue`,`options`,`onUpdate:modelValue`]),(0,a.createVNode)(d,{class:`top-scheduleTimeSelector_minute`,modelValue:e.minute,options:(0,a.unref)(i),availableCustomValue:``,"onUpdate:modelValue":e=>o(c,{minute:e})},null,8,[`modelValue`,`options`,`onUpdate:modelValue`]),t.multipleTimes||n.value.length>1?((0,a.openBlock)(),(0,a.createBlock)(f,{key:0,onClick:e=>c?l(c):s(),color:`theme`,icon:c?``:``},null,8,[`onClick`,`icon`])):(0,a.createCommentVNode)(``,!0)]))),128))])}}}),u={class:`top-scheduleCalendar`},d={class:`top-scheduleCalendar_header`},f={class:`top-scheduleCalendar_calendar`},p=[`value`,`checked`,`onChange`],m=[`data-top-icon`],h=(0,a.defineComponent)({__name:`calendar`,props:(0,a.mergeModels)({modelValue:{},mode:{},times:{},multipleTimes:{type:Boolean}},{modelValue:{required:!0},modelModifiers:{},times:{required:!0},timesModifiers:{}}),emits:[`update:modelValue`,`update:times`],setup(e){let t=e,n=(0,a.useModel)(e,`modelValue`),r=(0,a.useModel)(e,`times`),o=s(()=>t.mode),c=(0,a.computed)(()=>n.value.includes(`ALL`)||n.value.length===o.value.length),h=e=>{let t=n.value.includes(`ALL`)?o.value.map(e=>e.value):[...n.value],r=t.indexOf(e);r===-1?t.push(e):t.splice(r,1),n.value=t.length===o.value.length?[`ALL`]:t},g=()=>{n.value=c.value?[]:[`ALL`]};return(t,s)=>{let _=(0,a.resolveComponent)(`TopButton`);return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,u,[(0,a.createElementVNode)(`div`,d,[(0,a.createVNode)(l,{modelValue:r.value,"onUpdate:modelValue":s[0]||=e=>r.value=e,multipleTimes:e.multipleTimes},null,8,[`modelValue`,`multipleTimes`]),(0,a.createVNode)(_,{onClick:s[1]||=e=>g(),color:`theme`,tabindex:`0`},{default:(0,a.withCtx)(()=>[(0,a.createTextVNode)((0,a.toDisplayString)(c.value?t.$i18n.Common.Clear:t.$i18n.Common.Select_all),1)]),_:1})]),(0,a.createElementVNode)(`div`,f,[((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)((0,a.unref)(o),e=>((0,a.openBlock)(),(0,a.createElementBlock)(`label`,{class:`top-scheduleCalendar_calendarDay`,key:e.value},[(0,a.createElementVNode)(`input`,{class:`top-scheduleCalendar_calendarDayCheckbox`,type:`checkbox`,value:e.value,checked:n.value.includes(`ALL`)||n.value.includes(e.value),onChange:t=>h(e.value),tabindex:`0`},null,40,p),(0,a.createElementVNode)(`span`,{"data-top-icon":e.isIcon?e.title:void 0},[e.isIcon?(0,a.createCommentVNode)(``,!0):((0,a.openBlock)(),(0,a.createElementBlock)(a.Fragment,{key:0},[(0,a.createTextVNode)((0,a.toDisplayString)(e.title),1)],64))],8,m)]))),128))]),(0,a.createElementVNode)(`span`,{class:(0,a.normalizeClass)({"top-scheduleCalendar_selectionSummary":!0,"top-error":!n.value.length})},[(0,a.createTextVNode)((0,a.toDisplayString)(c.value?t.$i18n.Common.Every_day:n.value.length)+` `,1),r.value.length>1||!c.value?((0,a.openBlock)(),(0,a.createElementBlock)(a.Fragment,{key:0},[(0,a.createTextVNode)((0,a.toDisplayString)(r.value.length>1?` × ${r.value.length}`:``)+` `+(0,a.toDisplayString)((0,a.unref)(i.numberEnding)(r.value.length===1?n.value.length:r.value.length,t.$i18n.Common.time_a_0,t.$i18n.Common.time_a_0,t.$i18n.Common.time_a_2))+` `+(0,a.toDisplayString)(e.mode===`dayOfWeek`?t.$i18n.Common.a_week:t.$i18n.Common.a_month),1)],64)):(0,a.createCommentVNode)(``,!0)],2)])}}}),g=()=>{let e=(0,n.E)();return[{value:`0`,title:e.Projects.immediately},...Array.from({length:24},(t,n)=>({value:String(n+1),title:e(`Projects`,`in_hour`,{hour:n+1})}))]},_=e=>e===`dayOfWeek`||e===`dayOfMonth`,v=(e,t=`onDemand`)=>e.includes(`YANDEX_UPDATE`)?`afterYandexUpdated`:e.includes(`CHECK_POSITIONS`)?`afterCheck`:e.includes(`LAST_OF_MONTH`)||e.some(e=>/^\d+$/.test(e))?`dayOfMonth`:e.length?_(t)?t:`dayOfWeek`:t,y=[`onDemand`,`dayOfWeek`,`dayOfMonth`],b=[`onDemand`,`afterCheck`],x=(e,t)=>{let r=(0,n.E)();return(0,a.computed)(()=>{let n=e.type===`go`?[...y]:[...b];e.extraMods&&n.push(...e.extraMods),n.includes(t.value)||n.push(t.value);let i={onDemand:r.Projects.Settings_on_demand,dayOfWeek:r.Projects.Report_on_weekdays,dayOfMonth:r.Projects.Settings_particular_days,afterYandexUpdated:r.Projects.After_updates,afterCheck:n.includes(`afterCheck`)?r.Dynamics.Report_after_tracking_30min_1:``};return n.map(e=>({value:e,title:i[e]}))})},S=e=>({days:[...e.days],times:e.times.map(e=>({...e}))}),C=(e,t)=>{let n={daysByMode:{},timesByMode:{}};return(0,a.watch)(e,()=>{let r=S(e.value);n.daysByMode[t.value]=r.days,n.timesByMode[_(t.value)?`calendar`:t.value]=r.times},{deep:!0,immediate:!0}),n},w={class:`top-schedule_header`},T={class:`top-schedule_headerTitle`},E={key:0,class:`top-schedule_body`},D={key:2},O=(0,a.defineComponent)({__name:`schedule`,props:(0,a.mergeModels)({modelValue:{},type:{default:`go`},extraMods:{},multipleTimes:{type:Boolean},title:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:[`update:modelValue`],setup(e,{slots:t}){let r=String(Math.floor(Math.random()*7)+1),i=e,o=(0,a.useModel)(e,`modelValue`),s=(0,a.ref)(v(o.value.days)),c=x(i,s),l=g(),u=C(o,s);return(0,a.watch)(()=>o.value.days,()=>s.value=v(o.value.days,s.value),{deep:!0,immediate:!0}),(0,a.watch)(s,(e,t)=>{let n=u.daysByMode[e],i=u.timesByMode[_(e)?`calendar`:e],a={},s=t;switch(e){case`onDemand`:(s||o.value.days.length)&&(a.days=[]),(s||o.value.times.length)&&(a.times=[]);break;case`dayOfWeek`:case`dayOfMonth`:(s||!o.value.days.length)&&(a.days=n??[`ALL`]),(s||!o.value.times.length)&&(a.times=i?.length?i:[{hour:r,minute:`0`}]);break;case`afterYandexUpdated`:(s||o.value.days[0]!==`YANDEX_UPDATE`)&&(a.days=[`YANDEX_UPDATE`]),(s||!o.value.times.length)&&(a.times=i?.length?i:[{hour:`1`,minute:`0`}]);break;case`afterCheck`:(s||o.value.days[0]!==`CHECK_POSITIONS`)&&(a.days=[`CHECK_POSITIONS`]),(s||!o.value.times.length)&&(a.times=i?.length?i:[{hour:`0`,minute:`0`}])}Object.keys(a).length&&(o.value={...o.value,...a})},{immediate:!0}),(r,i)=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{class:(0,a.normalizeClass)([`top-schedule`,`top-schedule-type_`+e.type])},[(0,a.createElementVNode)(`div`,w,[(0,a.createElementVNode)(`div`,T,(0,a.toDisplayString)(e.title??(e.type===`go`?r.$i18n.Projects.Checks:r.$i18n.Projects.Reports)),1),(0,a.createVNode)(n.n,{class:`top-schedule_headerMods`,modelValue:s.value,"onUpdate:modelValue":i[0]||=e=>s.value=e,options:(0,a.unref)(c),size:`s`},null,8,[`modelValue`,`options`])]),s.value!==`onDemand`&&((0,a.unref)(_)(s.value)||s.value===`afterYandexUpdated`||t.default)?((0,a.openBlock)(),(0,a.createElementBlock)(`div`,E,[(0,a.unref)(_)(s.value)?((0,a.openBlock)(),(0,a.createBlock)(h,{key:0,modelValue:o.value.days,"onUpdate:modelValue":i[1]||=e=>o.value.days=e,times:o.value.times,"onUpdate:times":i[2]||=e=>o.value.times=e,mode:s.value,multipleTimes:e.multipleTimes},null,8,[`modelValue`,`times`,`mode`,`multipleTimes`])):(0,a.createCommentVNode)(``,!0),s.value===`afterYandexUpdated`&&o.value.times[0]?((0,a.openBlock)(),(0,a.createBlock)(n.n,{key:1,class:`top-schedule_afterYandexUpdatedDelay`,modelValue:o.value.times[0].hour,"onUpdate:modelValue":i[3]||=e=>o.value.times[0].hour=e,options:(0,a.unref)(l),size:`s`},null,8,[`modelValue`,`options`])):(0,a.createCommentVNode)(``,!0),((0,a.unref)(_)(s.value)||s.value===`afterYandexUpdated`)&&t.default?((0,a.openBlock)(),(0,a.createElementBlock)(`hr`,D)):(0,a.createCommentVNode)(``,!0),(0,a.renderSlot)(r.$slots,`default`,{mode:s.value})])):(0,a.createCommentVNode)(``,!0)],2))}}),k=(0,a.defineComponent)({__name:`selector`,props:(0,a.mergeModels)({modelValue:{},emails:{default:()=>[]},maxEmailsCount:{},getEmailSuggestions:{type:Function,default:()=>[]}},{modelValue:{required:!0},modelModifiers:{}}),emits:(0,a.mergeModels)([`update:modelValue`,`submit`],[`update:modelValue`]),setup(e,{emit:t}){let i=e,o=(0,a.useModel)(e,`modelValue`),s=t,c=(0,n.E)(),l=n.O.$,u=(0,a.ref)(),d=(0,a.ref)(),f=null,p={},m=(0,a.computed)(()=>!!i.maxEmailsCount&&i.emails.length>=i.maxEmailsCount),h=e=>e.filter(e=>!i.emails.includes(e)),g=(e=o.value)=>{let t=String(e).trim();if(t){if(!(0,r.isEmail)(t)){n.O.notice(c.Common.Enter_valid_email_notice,`error`);return}s(`submit`,t)}},_=async()=>{if(await(0,a.nextTick)(),f=d.value?.$el.querySelector(`input`)??null,f){if(!l?.ui?.autocomplete){console.info(`Для работы autocomplete требуется глобальная загрузка jQuery UI Autocomplete`);return}l(f).autocomplete({appendTo:u.value,minLength:0,source:async(e,t)=>{let n=e.term;n in p||(p[n]=await i.getEmailSuggestions(n)),t(h(p[n]).map(e=>({label:e,value:e})))},select:(e,t)=>{t.item&&f&&(e.preventDefault(),g(t.item.value),o.value=``,l(f).trigger(`focus`))}}),l(f).attr(`autocomplete`,`disabled`),l(f).on(`focus.scheduleEmailSelector`,()=>{f&&l(f).trigger(`input`)})}};return(0,a.onMounted)(()=>{_()}),(0,a.onBeforeUnmount)(()=>{l?.ui?.autocomplete&&f&&(l(f).off(`focus.scheduleEmailSelector`),l(f).autocomplete(`destroy`))}),(e,t)=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{class:`top-scheduleEmailSelector`,ref_key:`elRootRef`,ref:u},[(0,a.createVNode)(n.c,{ref_key:`elInputRef`,ref:d,modelValue:o.value,"onUpdate:modelValue":t[1]||=e=>o.value=e,onKeydown:t[2]||=(0,a.withKeys)((0,a.withModifiers)(e=>g(),[`prevent`]),[`enter`]),title:e.$i18n.Common.Enter_email,type:`email`,size:`m`,disabled:m.value},{default:(0,a.withCtx)(()=>[m.value?(0,a.createCommentVNode)(``,!0):((0,a.openBlock)(),(0,a.createBlock)(n.h,{key:0,class:`top-scheduleEmailSelector_submit`,color:`theme`,icon:``,onClick:t[0]||=(0,a.withModifiers)(e=>g(),[`prevent`])}))]),_:1},8,[`modelValue`,`title`,`disabled`])],512))}}),A={class:`top-scheduleEmail`},j={class:`top-scheduleEmail_title`},M={key:0,class:`top-scheduleEmail_emails`},N={class:`top-ellipsis1`},P=(0,a.defineComponent)({__name:`emails`,props:{emails:{default:()=>[]},getEmailSuggestions:{type:Function,default:()=>[]},maxEmailsCount:{}},emits:[`add:email`,`remove:email`],setup(e,{emit:t}){let n=e,r=t,i=(0,a.ref)(``),o=e=>{let t=e.trim();if(!t||n.emails.includes(t)){i.value=``;return}r(`add:email`,t),i.value=``};return(t,n)=>{let s=(0,a.resolveComponent)(`TopButton`);return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,A,[(0,a.createElementVNode)(`div`,j,(0,a.toDisplayString)(t.$i18n.Projects.Reports_send_to_address)+` E-mail: `,1),(0,a.createVNode)(k,{modelValue:i.value,"onUpdate:modelValue":n[0]||=e=>i.value=e,emails:e.emails,maxEmailsCount:e.maxEmailsCount,getEmailSuggestions:e.getEmailSuggestions,onSubmit:o},null,8,[`modelValue`,`emails`,`maxEmailsCount`,`getEmailSuggestions`]),e.emails.length?((0,a.openBlock)(),(0,a.createElementBlock)(`div`,M,[((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(e.emails,e=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{class:`top-scheduleEmail_emailsItem`,key:e},[(0,a.createElementVNode)(`span`,N,(0,a.toDisplayString)(e),1),(0,a.createVNode)(s,{onClick:t=>r(`remove:email`,e),color:`theme`,icon:``},null,8,[`onClick`])]))),128))])):(0,a.createCommentVNode)(``,!0)])}}}),F={class:`top-scheduleSocials`},I={class:`top-scheduleSocials_title`},L={class:`top-scheduleSocials_channels`},R=[`data-top-icon`],z={class:`top-scheduleSocials_channelLabel top-ellipsis1`},B={key:0,class:`top-scheduleSocials_channel`},V=[`data-top-icon`],H=[`href`],U=(0,a.defineComponent)({__name:`socials`,props:{channels:{},connectors:{}},emits:[`update:channelSelected`],setup(e,{emit:t}){let n=e,r=e=>n.channels.some(t=>t.source===e),i={informer:``,telegram:``};return(n,o)=>{let s=(0,a.resolveComponent)(`TopButton`),c=(0,a.resolveComponent)(`TopSwitcher`);return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,F,[(0,a.createElementVNode)(`div`,I,(0,a.toDisplayString)(n.$i18n.Projects.Reports_send_to_address),1),(0,a.createElementVNode)(`div`,L,[((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(e.channels,e=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{class:`top-scheduleSocials_channel`,key:`${e.source}-${e.id}`},[(0,a.createElementVNode)(`span`,{class:`top-scheduleSocials_channelIcon`,"data-top-icon":i[e.source]},null,8,R),(0,a.createElementVNode)(`span`,z,(0,a.toDisplayString)(e.label),1),e.settingLink?((0,a.openBlock)(),(0,a.createBlock)(s,{key:0,class:`top-scheduleSocials_channelSettings`,size:`xs`,href:e.settingLink,target:`_blank`,icon:``,color:`theme`,tabindex:`0`},null,8,[`href`])):(0,a.createCommentVNode)(``,!0),(0,a.createVNode)(c,{class:`top-scheduleSocials_channelSwitcher`,modelValue:e.selected,"onUpdate:modelValue":n=>t(`update:channelSelected`,{id:e.id,source:e.source,selected:n})},null,8,[`modelValue`,`onUpdate:modelValue`])]))),128)),((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(e.connectors,e=>((0,a.openBlock)(),(0,a.createElementBlock)(a.Fragment,{key:e.source},[r(e.source)?(0,a.createCommentVNode)(``,!0):((0,a.openBlock)(),(0,a.createElementBlock)(`div`,B,[(0,a.createElementVNode)(`span`,{class:`top-scheduleSocials_channelIcon`,"data-top-icon":i[e.source]},null,8,V),(0,a.createElementVNode)(`a`,{class:`top-scheduleSocials_channelLabel top-ellipsis1`,href:e.connectLink,target:`_blank`},(0,a.toDisplayString)(e.connectLabel),9,H)]))],64))),128))])])}}});t.TopSchedule=O,t.TopScheduleEmails=P,t.TopScheduleSocials=U});
1
+ define([`require`,`exports`,`../.chunks/forms-CjJD60m3.es.amd`,`../utils/check.amd`,`../utils/string.amd`,`vue`,`../.chunks/app-BbV6AslA.es.amd`,`../require/css.amd!../assets/schedule.css`],function(e,t,n,r,i,a){"use strict";if(o===void 0)var o=window.Vue;Object.defineProperty(t,"__esModule",{value:!0}),t.TopScheduleSocials=t.TopScheduleEmails=t.TopSchedule=void 0;var s=e=>{let t=(0,n.E)();return(0,a.computed)(()=>{switch((0,a.toValue)(e)){case`dayOfMonth`:{let e=Array.from({length:27},(e,t)=>({value:String(t+1),title:String(t+1)}));return e.push({value:`LAST_OF_MONTH`,title:``,isIcon:!0}),e}case`dayOfWeek`:return[{value:`MONDAY`,title:t.Calendar.Dw_1},{value:`TUESDAY`,title:t.Calendar.Dw_2},{value:`WEDNESDAY`,title:t.Calendar.Dw_3},{value:`THURSDAY`,title:t.Calendar.Dw_4},{value:`FRIDAY`,title:t.Calendar.Dw_5},{value:`SATURDAY`,title:t.Calendar.Dw_6},{value:`SUNDAY`,title:t.Calendar.Dw_7}];default:return[]}})},c={class:`top-scheduleTimeSelector`},l=(0,a.defineComponent)({__name:`timeSelector`,props:(0,a.mergeModels)({modelValue:{},multipleTimes:{type:Boolean}},{modelValue:{required:!0},modelModifiers:{}}),emits:[`update:modelValue`],setup(e){let t=e,n=(0,a.useModel)(e,`modelValue`),r=Array.from({length:24},(e,t)=>({value:String(t),title:String(t).padStart(2,`0`)})),i=Array.from({length:4},(e,t)=>{let n=t*15;return{value:String(n),title:String(n).padStart(2,`0`)}}),o=(e,t)=>{let r=[...n.value];r[e]={...r[e],...t},n.value=r},s=()=>{n.value=[...n.value,{hour:`0`,minute:`0`}]},l=e=>{n.value=n.value.filter((t,n)=>n!==e)};return(e,u)=>{let d=(0,a.resolveComponent)(`TopSelect`),f=(0,a.resolveComponent)(`TopButton`);return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,c,[((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(n.value,(e,c)=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{key:c,class:`top-scheduleTimeSelector_item`},[(0,a.createVNode)(d,{class:`top-scheduleTimeSelector_hour`,modelValue:e.hour,options:(0,a.unref)(r),availableCustomValue:``,"onUpdate:modelValue":e=>o(c,{hour:e})},null,8,[`modelValue`,`options`,`onUpdate:modelValue`]),(0,a.createVNode)(d,{class:`top-scheduleTimeSelector_minute`,modelValue:e.minute,options:(0,a.unref)(i),availableCustomValue:``,"onUpdate:modelValue":e=>o(c,{minute:e})},null,8,[`modelValue`,`options`,`onUpdate:modelValue`]),t.multipleTimes||n.value.length>1?((0,a.openBlock)(),(0,a.createBlock)(f,{key:0,onClick:e=>c?l(c):s(),color:`theme`,icon:c?``:``},null,8,[`onClick`,`icon`])):(0,a.createCommentVNode)(``,!0)]))),128))])}}}),u={class:`top-scheduleCalendar`},d={class:`top-scheduleCalendar_header`},f={class:`top-scheduleCalendar_calendar`},p=[`value`,`checked`,`onChange`],m=[`data-top-icon`],h=(0,a.defineComponent)({__name:`calendar`,props:(0,a.mergeModels)({modelValue:{},mode:{},times:{},multipleTimes:{type:Boolean}},{modelValue:{required:!0},modelModifiers:{},times:{required:!0},timesModifiers:{}}),emits:[`update:modelValue`,`update:times`],setup(e){let t=e,n=(0,a.useModel)(e,`modelValue`),r=(0,a.useModel)(e,`times`),o=s(()=>t.mode),c=(0,a.computed)(()=>n.value.includes(`ALL`)||n.value.length===o.value.length),h=e=>{let t=n.value.includes(`ALL`)?o.value.map(e=>e.value):[...n.value],r=t.indexOf(e);r===-1?t.push(e):t.splice(r,1),n.value=t.length===o.value.length?[`ALL`]:t},g=()=>{n.value=c.value?[]:[`ALL`]};return(t,s)=>{let _=(0,a.resolveComponent)(`TopButton`);return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,u,[(0,a.createElementVNode)(`div`,d,[(0,a.createVNode)(l,{modelValue:r.value,"onUpdate:modelValue":s[0]||=e=>r.value=e,multipleTimes:e.multipleTimes},null,8,[`modelValue`,`multipleTimes`]),(0,a.createVNode)(_,{onClick:s[1]||=e=>g(),color:`theme`,tabindex:`0`},{default:(0,a.withCtx)(()=>[(0,a.createTextVNode)((0,a.toDisplayString)(c.value?t.$i18n.Common.Clear:t.$i18n.Common.Select_all),1)]),_:1})]),(0,a.createElementVNode)(`div`,f,[((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)((0,a.unref)(o),e=>((0,a.openBlock)(),(0,a.createElementBlock)(`label`,{class:`top-scheduleCalendar_calendarDay`,key:e.value},[(0,a.createElementVNode)(`input`,{class:`top-scheduleCalendar_calendarDayCheckbox`,type:`checkbox`,value:e.value,checked:n.value.includes(`ALL`)||n.value.includes(e.value),onChange:t=>h(e.value),tabindex:`0`},null,40,p),(0,a.createElementVNode)(`span`,{"data-top-icon":e.isIcon?e.title:void 0},[e.isIcon?(0,a.createCommentVNode)(``,!0):((0,a.openBlock)(),(0,a.createElementBlock)(a.Fragment,{key:0},[(0,a.createTextVNode)((0,a.toDisplayString)(e.title),1)],64))],8,m)]))),128))]),(0,a.createElementVNode)(`span`,{class:(0,a.normalizeClass)({"top-scheduleCalendar_selectionSummary":!0,"top-error":!n.value.length})},[(0,a.createTextVNode)((0,a.toDisplayString)(c.value?t.$i18n.Common.Every_day:n.value.length)+` `,1),r.value.length>1||!c.value?((0,a.openBlock)(),(0,a.createElementBlock)(a.Fragment,{key:0},[(0,a.createTextVNode)((0,a.toDisplayString)(r.value.length>1?` × ${r.value.length}`:``)+` `+(0,a.toDisplayString)((0,a.unref)(i.numberEnding)(r.value.length===1?n.value.length:r.value.length,t.$i18n.Common.time_a_0,t.$i18n.Common.time_a_0,t.$i18n.Common.time_a_2))+` `+(0,a.toDisplayString)(e.mode===`dayOfWeek`?t.$i18n.Common.a_week:t.$i18n.Common.a_month),1)],64)):(0,a.createCommentVNode)(``,!0)],2)])}}}),g=()=>{let e=(0,n.E)();return[{value:`0`,title:e.Projects.immediately},...Array.from({length:24},(t,n)=>({value:String(n+1),title:e(`Projects`,`in_hour`,{hour:n+1})}))]},_=e=>e===`dayOfWeek`||e===`dayOfMonth`,v=(e,t=`onDemand`)=>e.includes(`YANDEX_UPDATE`)?`afterYandexUpdated`:e.includes(`CHECK_POSITIONS`)?`afterCheck`:e.includes(`LAST_OF_MONTH`)||e.some(e=>/^\d+$/.test(e))?`dayOfMonth`:e.length?_(t)?t:`dayOfWeek`:t,y=[`onDemand`,`dayOfWeek`,`dayOfMonth`],b=[`onDemand`,`afterCheck`],x=(e,t)=>{let r=(0,n.E)();return(0,a.computed)(()=>{let n=e.type===`go`?[...y]:[...b];e.extraMods&&n.push(...e.extraMods),n.includes(t.value)||n.push(t.value);let i={onDemand:r.Projects.Settings_on_demand,dayOfWeek:r.Projects.Report_on_weekdays,dayOfMonth:r.Projects.Settings_particular_days,afterYandexUpdated:r.Projects.After_updates,afterCheck:n.includes(`afterCheck`)?r.Dynamics.Report_after_tracking_30min_1:``};return n.map(e=>({value:e,title:i[e]}))})},S=e=>({days:[...e.days],times:e.times.map(e=>({...e}))}),C=(e,t)=>{let n={daysByMode:{},timesByMode:{}};return(0,a.watch)(e,()=>{let r=S(e.value);n.daysByMode[t.value]=r.days,n.timesByMode[_(t.value)?`calendar`:t.value]=r.times},{deep:!0,immediate:!0}),n},w={class:`top-schedule_header`},T={class:`top-schedule_headerTitle`},E={key:0,class:`top-schedule_body`},D={key:2},O=(0,a.defineComponent)({__name:`schedule`,props:(0,a.mergeModels)({modelValue:{},type:{default:`go`},extraMods:{},multipleTimes:{type:Boolean},title:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:[`update:modelValue`],setup(e,{slots:t}){let r=String(Math.floor(Math.random()*7)+1),i=e,o=(0,a.useModel)(e,`modelValue`),s=(0,a.ref)(v(o.value.days)),c=x(i,s),l=g(),u=C(o,s);return(0,a.watch)(()=>o.value.days,()=>s.value=v(o.value.days,s.value),{deep:!0,immediate:!0}),(0,a.watch)(s,(e,t)=>{let n=u.daysByMode[e],i=u.timesByMode[_(e)?`calendar`:e],a={},s=t;switch(e){case`onDemand`:(s||o.value.days.length)&&(a.days=[]),(s||o.value.times.length)&&(a.times=[]);break;case`dayOfWeek`:case`dayOfMonth`:(s||!o.value.days.length)&&(a.days=n??[`ALL`]),(s||!o.value.times.length)&&(a.times=i?.length?i:[{hour:r,minute:`0`}]);break;case`afterYandexUpdated`:(s||o.value.days[0]!==`YANDEX_UPDATE`)&&(a.days=[`YANDEX_UPDATE`]),(s||!o.value.times.length)&&(a.times=i?.length?i:[{hour:`1`,minute:`0`}]);break;case`afterCheck`:(s||o.value.days[0]!==`CHECK_POSITIONS`)&&(a.days=[`CHECK_POSITIONS`]),(s||!o.value.times.length)&&(a.times=i?.length?i:[{hour:`0`,minute:`0`}])}Object.keys(a).length&&(o.value={...o.value,...a})},{immediate:!0}),(r,i)=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{class:(0,a.normalizeClass)([`top-schedule`,`top-schedule-type_`+e.type])},[(0,a.createElementVNode)(`div`,w,[(0,a.createElementVNode)(`div`,T,(0,a.toDisplayString)(e.title??(e.type===`go`?r.$i18n.Projects.Checks:r.$i18n.Projects.Reports)),1),(0,a.createVNode)(n.n,{class:`top-schedule_headerMods`,modelValue:s.value,"onUpdate:modelValue":i[0]||=e=>s.value=e,options:(0,a.unref)(c),size:`s`},null,8,[`modelValue`,`options`])]),s.value!==`onDemand`&&((0,a.unref)(_)(s.value)||s.value===`afterYandexUpdated`||t.default)?((0,a.openBlock)(),(0,a.createElementBlock)(`div`,E,[(0,a.unref)(_)(s.value)?((0,a.openBlock)(),(0,a.createBlock)(h,{key:0,modelValue:o.value.days,"onUpdate:modelValue":i[1]||=e=>o.value.days=e,times:o.value.times,"onUpdate:times":i[2]||=e=>o.value.times=e,mode:s.value,multipleTimes:e.multipleTimes},null,8,[`modelValue`,`times`,`mode`,`multipleTimes`])):(0,a.createCommentVNode)(``,!0),s.value===`afterYandexUpdated`&&o.value.times[0]?((0,a.openBlock)(),(0,a.createBlock)(n.n,{key:1,class:`top-schedule_afterYandexUpdatedDelay`,modelValue:o.value.times[0].hour,"onUpdate:modelValue":i[3]||=e=>o.value.times[0].hour=e,options:(0,a.unref)(l),size:`s`},null,8,[`modelValue`,`options`])):(0,a.createCommentVNode)(``,!0),((0,a.unref)(_)(s.value)||s.value===`afterYandexUpdated`)&&t.default?((0,a.openBlock)(),(0,a.createElementBlock)(`hr`,D)):(0,a.createCommentVNode)(``,!0),(0,a.renderSlot)(r.$slots,`default`,{mode:s.value})])):(0,a.createCommentVNode)(``,!0)],2))}}),k=(0,a.defineComponent)({__name:`selector`,props:(0,a.mergeModels)({modelValue:{},emails:{default:()=>[]},maxEmailsCount:{},getEmailSuggestions:{type:Function,default:()=>[]}},{modelValue:{required:!0},modelModifiers:{}}),emits:(0,a.mergeModels)([`update:modelValue`,`submit`],[`update:modelValue`]),setup(e,{emit:t}){let i=e,o=(0,a.useModel)(e,`modelValue`),s=t,c=(0,n.E)(),l=n.O.$,u=(0,a.ref)(),d=(0,a.ref)(),f=null,p={},m=(0,a.computed)(()=>!!i.maxEmailsCount&&i.emails.length>=i.maxEmailsCount),h=e=>e.filter(e=>!i.emails.includes(e)),g=(e=o.value)=>{let t=String(e).trim();if(t){if(!(0,r.isEmail)(t)){n.O.notice(c.Common.Enter_valid_email_notice,`error`);return}s(`submit`,t)}},_=async()=>{if(await(0,a.nextTick)(),f=d.value?.$el.querySelector(`input`)??null,f){if(!l?.ui?.autocomplete){console.info(`Для работы autocomplete требуется глобальная загрузка jQuery UI Autocomplete`);return}l(f).autocomplete({appendTo:u.value,minLength:0,source:async(e,t)=>{let n=e.term;n in p||(p[n]=await i.getEmailSuggestions(n)),t(h(p[n]).map(e=>({label:e,value:e})))},select:(e,t)=>{t.item&&f&&(e.preventDefault(),g(t.item.value),o.value=``,l(f).trigger(`focus`))}}),l(f).attr(`autocomplete`,`disabled`),l(f).on(`focus.scheduleEmailSelector`,()=>{f&&l(f).trigger(`input`)})}};return(0,a.onMounted)(()=>{_()}),(0,a.onBeforeUnmount)(()=>{l?.ui?.autocomplete&&f&&(l(f).off(`focus.scheduleEmailSelector`),l(f).autocomplete(`destroy`))}),(e,t)=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{class:`top-scheduleEmailSelector`,ref_key:`elRootRef`,ref:u},[(0,a.createVNode)(n.c,{ref_key:`elInputRef`,ref:d,modelValue:o.value,"onUpdate:modelValue":t[1]||=e=>o.value=e,onKeydown:t[2]||=(0,a.withKeys)((0,a.withModifiers)(e=>g(),[`prevent`]),[`enter`]),title:e.$i18n.Common.Enter_email,type:`email`,size:`m`,disabled:m.value},{default:(0,a.withCtx)(()=>[m.value?(0,a.createCommentVNode)(``,!0):((0,a.openBlock)(),(0,a.createBlock)(n.h,{key:0,class:`top-scheduleEmailSelector_submit`,color:`theme`,icon:``,onClick:t[0]||=(0,a.withModifiers)(e=>g(),[`prevent`])}))]),_:1},8,[`modelValue`,`title`,`disabled`])],512))}}),A={class:`top-scheduleEmail`},j={class:`top-scheduleEmail_title`},M={key:0,class:`top-scheduleEmail_emails`},N={class:`top-ellipsis1`},P=(0,a.defineComponent)({__name:`emails`,props:{emails:{default:()=>[]},getEmailSuggestions:{type:Function,default:()=>[]},maxEmailsCount:{}},emits:[`add:email`,`remove:email`],setup(e,{emit:t}){let n=e,r=t,i=(0,a.ref)(``),o=e=>{let t=e.trim();if(!t||n.emails.includes(t)){i.value=``;return}r(`add:email`,t),i.value=``};return(t,n)=>{let s=(0,a.resolveComponent)(`TopButton`);return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,A,[(0,a.createElementVNode)(`div`,j,(0,a.toDisplayString)(t.$i18n.Projects.Reports_send_to_address)+` E-mail: `,1),(0,a.createVNode)(k,{modelValue:i.value,"onUpdate:modelValue":n[0]||=e=>i.value=e,emails:e.emails,maxEmailsCount:e.maxEmailsCount,getEmailSuggestions:e.getEmailSuggestions,onSubmit:o},null,8,[`modelValue`,`emails`,`maxEmailsCount`,`getEmailSuggestions`]),e.emails.length?((0,a.openBlock)(),(0,a.createElementBlock)(`div`,M,[((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(e.emails,e=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{class:`top-scheduleEmail_emailsItem`,key:e},[(0,a.createElementVNode)(`span`,N,(0,a.toDisplayString)(e),1),(0,a.createVNode)(s,{onClick:t=>r(`remove:email`,e),color:`theme`,icon:``},null,8,[`onClick`])]))),128))])):(0,a.createCommentVNode)(``,!0)])}}}),F={class:`top-scheduleSocials`},I={class:`top-scheduleSocials_title`},L={class:`top-scheduleSocials_channels`},R=[`data-top-icon`],z={class:`top-scheduleSocials_channelLabel top-ellipsis1`},B={key:0,class:`top-scheduleSocials_channel`},V=[`data-top-icon`],H=[`href`],U=(0,a.defineComponent)({__name:`socials`,props:{channels:{},connectors:{}},emits:[`update:channelSelected`],setup(e,{emit:t}){let n=e,r=e=>n.channels.some(t=>t.source===e),i={informer:``,telegram:``};return(n,o)=>{let s=(0,a.resolveComponent)(`TopButton`),c=(0,a.resolveComponent)(`TopSwitcher`);return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,F,[(0,a.createElementVNode)(`div`,I,(0,a.toDisplayString)(n.$i18n.Projects.Reports_send_to_address),1),(0,a.createElementVNode)(`div`,L,[((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(e.channels,e=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{class:`top-scheduleSocials_channel`,key:`${e.source}-${e.id}`},[(0,a.createElementVNode)(`span`,{class:`top-scheduleSocials_channelIcon`,"data-top-icon":i[e.source]},null,8,R),(0,a.createElementVNode)(`span`,z,(0,a.toDisplayString)(e.label),1),e.settingLink?((0,a.openBlock)(),(0,a.createBlock)(s,{key:0,class:`top-scheduleSocials_channelSettings`,size:`xs`,href:e.settingLink,target:`_blank`,icon:``,color:`theme`,tabindex:`0`},null,8,[`href`])):(0,a.createCommentVNode)(``,!0),(0,a.createVNode)(c,{class:`top-scheduleSocials_channelSwitcher`,modelValue:e.selected,"onUpdate:modelValue":n=>t(`update:channelSelected`,{id:e.id,source:e.source,selected:n})},null,8,[`modelValue`,`onUpdate:modelValue`])]))),128)),((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(e.connectors,e=>((0,a.openBlock)(),(0,a.createElementBlock)(a.Fragment,{key:e.source},[r(e.source)?(0,a.createCommentVNode)(``,!0):((0,a.openBlock)(),(0,a.createElementBlock)(`div`,B,[(0,a.createElementVNode)(`span`,{class:`top-scheduleSocials_channelIcon`,"data-top-icon":i[e.source]},null,8,V),(0,a.createElementVNode)(`a`,{class:`top-scheduleSocials_channelLabel top-ellipsis1`,href:e.connectLink,target:`_blank`},(0,a.toDisplayString)(e.connectLabel),9,H)]))],64))),128))])])}}});t.TopSchedule=O,t.TopScheduleEmails=P,t.TopScheduleSocials=U});
2
2
  //# sourceMappingURL=schedule.amd.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["schedule/schedule.js","../../src/components/schedule/schedule/components/calendar/composables/useDaysByCalendarMode.ts","../../src/components/schedule/schedule/components/timeSelector/timeSelector.vue","../../src/components/schedule/schedule/components/calendar/calendar.vue","../../src/components/schedule/schedule/utils.ts","../../src/components/schedule/schedule/composables/useModeOptions.ts","../../src/components/schedule/schedule/composables/useModelByModeCache.ts","../../src/components/schedule/schedule/schedule.vue","../../src/components/schedule/schedule/components/emails/selector/selector.vue","../../src/components/schedule/schedule/components/emails/emails.vue","../../src/components/schedule/schedule/components/socials/socials.vue"],"names":["vue","exports","N","n","forms_Ch1q0UUt_es_js_1","vue_1","t","P","F","a","o","c","p","h","s","I","L","R","z","B","V","i","l","g","string_js_1","H","U","W","G","K","q","e","te","J","Y","X","Z","Q","ne","r","re","f","v","C","w","T","E","D","O","check_js_1","A","ie","ae","oe","$","se","ce","le","ue","de","fe","pe","me","he","ge"],"mappings":"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","sourcesContent":["define([\"require\", \"exports\", \"../.chunks/forms-Ch1q0UUt.es.js\", \"../utils/check.js\", \"../utils/string.js\", \"vue\", \"../.chunks/app-CY6euLQJ.es.js\"], function (require, exports, forms_Ch1q0UUt_es_js_1, check_js_1, string_js_1, vue_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n exports.TopScheduleSocials = exports.TopScheduleEmails = exports.TopSchedule = void 0;\n //#region src/components/schedule/schedule/components/calendar/composables/useDaysByCalendarMode.ts\n var N = (t) => {\n let n = (0, forms_Ch1q0UUt_es_js_1.E)();\n return (0, vue_1.computed)(() => {\n switch ((0, vue_1.toValue)(t)) {\n case \"dayOfMonth\": {\n let e = Array.from({ length: 27 }, (e, t) => ({\n value: String(t + 1),\n title: String(t + 1)\n }));\n return e.push({\n value: \"LAST_OF_MONTH\",\n title: \"\",\n isIcon: !0\n }), e;\n }\n case \"dayOfWeek\": return [\n {\n value: \"MONDAY\",\n title: n.Calendar.Dw_1\n },\n {\n value: \"TUESDAY\",\n title: n.Calendar.Dw_2\n },\n {\n value: \"WEDNESDAY\",\n title: n.Calendar.Dw_3\n },\n {\n value: \"THURSDAY\",\n title: n.Calendar.Dw_4\n },\n {\n value: \"FRIDAY\",\n title: n.Calendar.Dw_5\n },\n {\n value: \"SATURDAY\",\n title: n.Calendar.Dw_6\n },\n {\n value: \"SUNDAY\",\n title: n.Calendar.Dw_7\n }\n ];\n default: return [];\n }\n });\n }, P = { class: \"top-scheduleTimeSelector\" }, F = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"timeSelector\",\n props: /*@__PURE__*/ (0, vue_1.mergeModels)({\n modelValue: {},\n multipleTimes: { type: Boolean }\n }, {\n modelValue: { required: !0 },\n modelModifiers: {}\n }),\n emits: [\"update:modelValue\"],\n setup(e) {\n let t = e, n = (0, vue_1.useModel)(e, \"modelValue\"), r = Array.from({ length: 24 }, (e, t) => ({\n value: String(t),\n title: String(t).padStart(2, \"0\")\n })), i = Array.from({ length: 4 }, (e, t) => {\n let n = t * 15;\n return {\n value: String(n),\n title: String(n).padStart(2, \"0\")\n };\n }), a = (e, t) => {\n let r = [...n.value];\n r[e] = {\n ...r[e],\n ...t\n }, n.value = r;\n }, o = () => {\n n.value = [...n.value, {\n hour: \"0\",\n minute: \"0\"\n }];\n }, c = (e) => {\n n.value = n.value.filter((t, n) => n !== e);\n };\n return (e, f) => {\n let p = (0, vue_1.resolveComponent)(\"TopSelect\"), h = (0, vue_1.resolveComponent)(\"TopButton\");\n return (0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", P, [((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)(n.value, (e, s) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n key: s,\n class: \"top-scheduleTimeSelector_item\"\n }, [\n (0, vue_1.createVNode)(p, {\n class: \"top-scheduleTimeSelector_hour\",\n modelValue: e.hour,\n options: (0, vue_1.unref)(r),\n availableCustomValue: \"\",\n \"onUpdate:modelValue\": (e) => a(s, { hour: e })\n }, null, 8, [\n \"modelValue\",\n \"options\",\n \"onUpdate:modelValue\"\n ]),\n (0, vue_1.createVNode)(p, {\n class: \"top-scheduleTimeSelector_minute\",\n modelValue: e.minute,\n options: (0, vue_1.unref)(i),\n availableCustomValue: \"\",\n \"onUpdate:modelValue\": (e) => a(s, { minute: e })\n }, null, 8, [\n \"modelValue\",\n \"options\",\n \"onUpdate:modelValue\"\n ]),\n t.multipleTimes || n.value.length > 1 ? ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(h, {\n key: 0,\n onClick: (e) => s ? c(s) : o(),\n color: \"theme\",\n icon: s ? \"\" : \"\"\n }, null, 8, [\"onClick\", \"icon\"])) : (0, vue_1.createCommentVNode)(\"\", !0)\n ]))), 128))]);\n };\n }\n }), I = { class: \"top-scheduleCalendar\" }, L = { class: \"top-scheduleCalendar_header\" }, R = { class: \"top-scheduleCalendar_calendar\" }, z = [\n \"value\",\n \"checked\",\n \"onChange\"\n ], B = [\"data-top-icon\"], V = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"calendar\",\n props: /*@__PURE__*/ (0, vue_1.mergeModels)({\n modelValue: {},\n mode: {},\n times: {},\n multipleTimes: { type: Boolean }\n }, {\n modelValue: { required: !0 },\n modelModifiers: {},\n times: { required: !0 },\n timesModifiers: {}\n }),\n emits: [\"update:modelValue\", \"update:times\"],\n setup(e) {\n let t = e, n = (0, vue_1.useModel)(e, \"modelValue\"), r = (0, vue_1.useModel)(e, \"times\"), i = N(() => t.mode), a = (0, vue_1.computed)(() => n.value.includes(\"ALL\") || n.value.length === i.value.length), l = (e) => {\n let t = n.value.includes(\"ALL\") ? i.value.map((e) => e.value) : [...n.value], r = t.indexOf(e);\n r === -1 ? t.push(e) : t.splice(r, 1), n.value = t.length === i.value.length ? [\"ALL\"] : t;\n }, h = () => {\n n.value = a.value ? [] : [\"ALL\"];\n };\n return (t, c) => {\n let g = (0, vue_1.resolveComponent)(\"TopButton\");\n return (0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", I, [\n (0, vue_1.createElementVNode)(\"div\", L, [(0, vue_1.createVNode)(F, {\n modelValue: r.value,\n \"onUpdate:modelValue\": c[0] ||= (e) => r.value = e,\n multipleTimes: e.multipleTimes\n }, null, 8, [\"modelValue\", \"multipleTimes\"]), (0, vue_1.createVNode)(g, {\n onClick: c[1] ||= (e) => h(),\n color: \"theme\",\n tabindex: \"0\"\n }, {\n default: (0, vue_1.withCtx)(() => [(0, vue_1.createTextVNode)((0, vue_1.toDisplayString)(a.value ? t.$i18n.Common.Clear : t.$i18n.Common.Select_all), 1)]),\n _: 1\n })]),\n (0, vue_1.createElementVNode)(\"div\", R, [((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)((0, vue_1.unref)(i), (e) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"label\", {\n class: \"top-scheduleCalendar_calendarDay\",\n key: e.value\n }, [(0, vue_1.createElementVNode)(\"input\", {\n class: \"top-scheduleCalendar_calendarDayCheckbox\",\n type: \"checkbox\",\n value: e.value,\n checked: n.value.includes(\"ALL\") || n.value.includes(e.value),\n onChange: (t) => l(e.value),\n tabindex: \"0\"\n }, null, 40, z), (0, vue_1.createElementVNode)(\"span\", { \"data-top-icon\": e.isIcon ? e.title : void 0 }, [e.isIcon ? (0, vue_1.createCommentVNode)(\"\", !0) : ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(vue_1.Fragment, { key: 0 }, [(0, vue_1.createTextVNode)((0, vue_1.toDisplayString)(e.title), 1)], 64))], 8, B)]))), 128))]),\n (0, vue_1.createElementVNode)(\"span\", { class: (0, vue_1.normalizeClass)({\n \"top-scheduleCalendar_selectionSummary\": !0,\n \"top-error\": !n.value.length\n }) }, [(0, vue_1.createTextVNode)((0, vue_1.toDisplayString)(a.value ? t.$i18n.Common.Every_day : n.value.length) + \" \", 1), r.value.length > 1 || !a.value ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(vue_1.Fragment, { key: 0 }, [(0, vue_1.createTextVNode)((0, vue_1.toDisplayString)(r.value.length > 1 ? ` × ${r.value.length}` : \"\") + \" \" + (0, vue_1.toDisplayString)((0, vue_1.unref)(string_js_1.numberEnding)(r.value.length === 1 ? n.value.length : r.value.length, t.$i18n.Common.time_a_0, t.$i18n.Common.time_a_0, t.$i18n.Common.time_a_2)) + \" \" + (0, vue_1.toDisplayString)(e.mode === \"dayOfWeek\" ? t.$i18n.Common.a_week : t.$i18n.Common.a_month), 1)], 64)) : (0, vue_1.createCommentVNode)(\"\", !0)], 2)\n ]);\n };\n }\n }), H = () => {\n let t = (0, forms_Ch1q0UUt_es_js_1.E)();\n return [{\n value: \"0\",\n title: t.Projects.immediately\n }, ...Array.from({ length: 24 }, (e, n) => ({\n value: String(n + 1),\n title: t(\"Projects\", \"in_hour\", { hour: n + 1 })\n }))];\n }, U = (e) => e === \"dayOfWeek\" || e === \"dayOfMonth\", W = (e, t = \"onDemand\") => e.includes(\"YANDEX_UPDATE\") ? \"afterYandexUpdated\" : e.includes(\"CHECK_POSITIONS\") ? \"afterCheck\" : e.includes(\"LAST_OF_MONTH\") || e.some((e) => /^\\d+$/.test(e)) ? \"dayOfMonth\" : e.length ? U(t) ? t : \"dayOfWeek\" : t, G = [\n \"onDemand\",\n \"dayOfWeek\",\n \"dayOfMonth\"\n ], K = [\"onDemand\", \"afterCheck\"], q = (t, n) => {\n let r = (0, forms_Ch1q0UUt_es_js_1.E)();\n return (0, vue_1.computed)(() => {\n let e = t.type === \"go\" ? [...G] : [...K];\n t.extraMods && e.push(...t.extraMods), e.includes(n.value) || e.push(n.value);\n let i = {\n onDemand: r.Projects.Settings_on_demand,\n dayOfWeek: r.Projects.Report_on_weekdays,\n dayOfMonth: r.Projects.Settings_particular_days,\n afterYandexUpdated: r.Projects.After_updates,\n afterCheck: e.includes(\"afterCheck\") ? r.Dynamics.Report_after_tracking_30min_1 : \"\"\n };\n return e.map((e) => ({\n value: e,\n title: i[e]\n }));\n });\n }, te = (e) => ({\n days: [...e.days],\n times: e.times.map((e) => ({ ...e }))\n }), J = (e, t) => {\n let n = {\n daysByMode: {},\n timesByMode: {}\n };\n return (0, vue_1.watch)(e, () => {\n let r = te(e.value);\n n.daysByMode[t.value] = r.days, n.timesByMode[U(t.value) ? \"calendar\" : t.value] = r.times;\n }, {\n deep: !0,\n immediate: !0\n }), n;\n }, Y = { class: \"top-schedule_header\" }, X = { class: \"top-schedule_headerTitle\" }, Z = {\n key: 0,\n class: \"top-schedule_body\"\n }, Q = { key: 2 }, ne = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"schedule\",\n props: /*@__PURE__*/ (0, vue_1.mergeModels)({\n modelValue: {},\n type: { default: \"go\" },\n extraMods: {},\n multipleTimes: { type: Boolean },\n title: {}\n }, {\n modelValue: { required: !0 },\n modelModifiers: {}\n }),\n emits: [\"update:modelValue\"],\n setup(e, { slots: t }) {\n let n = String(Math.floor(Math.random() * 7) + 1), r = e, a = (0, vue_1.useModel)(e, \"modelValue\"), o = (0, vue_1.ref)(W(a.value.days)), s = q(r, o), c = H(), p = J(a, o);\n return (0, vue_1.watch)(() => a.value.days, () => o.value = W(a.value.days, o.value), {\n deep: !0,\n immediate: !0\n }), (0, vue_1.watch)(o, (e, t) => {\n let r = p.daysByMode[e], i = p.timesByMode[U(e) ? \"calendar\" : e], o = {}, s = t;\n switch (e) {\n case \"onDemand\":\n (s || a.value.days.length) && (o.days = []), (s || a.value.times.length) && (o.times = []);\n break;\n case \"dayOfWeek\":\n case \"dayOfMonth\":\n (s || !a.value.days.length) && (o.days = r ?? [\"ALL\"]), (s || !a.value.times.length) && (o.times = i?.length ? i : [{\n hour: n,\n minute: \"0\"\n }]);\n break;\n case \"afterYandexUpdated\":\n (s || a.value.days[0] !== \"YANDEX_UPDATE\") && (o.days = [\"YANDEX_UPDATE\"]), (s || !a.value.times.length) && (o.times = i?.length ? i : [{\n hour: \"1\",\n minute: \"0\"\n }]);\n break;\n case \"afterCheck\": (s || a.value.days[0] !== \"CHECK_POSITIONS\") && (o.days = [\"CHECK_POSITIONS\"]), (s || !a.value.times.length) && (o.times = i?.length ? i : [{\n hour: \"0\",\n minute: \"0\"\n }]);\n }\n Object.keys(o).length && (a.value = {\n ...a.value,\n ...o\n });\n }, { immediate: !0 }), (n, r) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", { class: (0, vue_1.normalizeClass)([\"top-schedule\", \"top-schedule-type_\" + e.type]) }, [(0, vue_1.createElementVNode)(\"div\", Y, [(0, vue_1.createElementVNode)(\"div\", X, (0, vue_1.toDisplayString)(e.title ?? (e.type === \"go\" ? n.$i18n.Projects.Checks : n.$i18n.Projects.Reports)), 1), (0, vue_1.createVNode)(forms_Ch1q0UUt_es_js_1.n, {\n class: \"top-schedule_headerMods\",\n modelValue: o.value,\n \"onUpdate:modelValue\": r[0] ||= (e) => o.value = e,\n options: (0, vue_1.unref)(s),\n size: \"s\"\n }, null, 8, [\"modelValue\", \"options\"])]), o.value !== \"onDemand\" && ((0, vue_1.unref)(U)(o.value) || o.value === \"afterYandexUpdated\" || t.default) ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", Z, [\n (0, vue_1.unref)(U)(o.value) ? ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(V, {\n key: 0,\n modelValue: a.value.days,\n \"onUpdate:modelValue\": r[1] ||= (e) => a.value.days = e,\n times: a.value.times,\n \"onUpdate:times\": r[2] ||= (e) => a.value.times = e,\n mode: o.value,\n multipleTimes: e.multipleTimes\n }, null, 8, [\n \"modelValue\",\n \"times\",\n \"mode\",\n \"multipleTimes\"\n ])) : (0, vue_1.createCommentVNode)(\"\", !0),\n o.value === \"afterYandexUpdated\" && a.value.times[0] ? ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(forms_Ch1q0UUt_es_js_1.n, {\n key: 1,\n class: \"top-schedule_afterYandexUpdatedDelay\",\n modelValue: a.value.times[0].hour,\n \"onUpdate:modelValue\": r[3] ||= (e) => a.value.times[0].hour = e,\n options: (0, vue_1.unref)(c),\n size: \"s\"\n }, null, 8, [\"modelValue\", \"options\"])) : (0, vue_1.createCommentVNode)(\"\", !0),\n ((0, vue_1.unref)(U)(o.value) || o.value === \"afterYandexUpdated\") && t.default ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"hr\", Q)) : (0, vue_1.createCommentVNode)(\"\", !0),\n (0, vue_1.renderSlot)(n.$slots, \"default\", { mode: o.value })\n ])) : (0, vue_1.createCommentVNode)(\"\", !0)], 2));\n }\n }), re = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"selector\",\n props: /*@__PURE__*/ (0, vue_1.mergeModels)({\n modelValue: {},\n emails: { default: () => [] },\n maxEmailsCount: {},\n getEmailSuggestions: {\n type: Function,\n default: () => []\n }\n }, {\n modelValue: { required: !0 },\n modelModifiers: {}\n }),\n emits: /*@__PURE__*/ (0, vue_1.mergeModels)([\"update:modelValue\", \"submit\"], [\"update:modelValue\"]),\n setup(i, { emit: o }) {\n let s = i, f = (0, vue_1.useModel)(i, \"modelValue\"), p = o, h = (0, forms_Ch1q0UUt_es_js_1.E)(), g = forms_Ch1q0UUt_es_js_1.O.$, v = (0, vue_1.ref)(), C = (0, vue_1.ref)(), w = null, T = {}, E = (0, vue_1.computed)(() => !!s.maxEmailsCount && s.emails.length >= s.maxEmailsCount), D = (e) => e.filter((e) => !s.emails.includes(e)), O = (e = f.value) => {\n let n = String(e).trim();\n if (n) {\n if (!(0, check_js_1.isEmail)(n)) {\n forms_Ch1q0UUt_es_js_1.O.notice(h.Common.Enter_valid_email_notice, \"error\");\n return;\n }\n p(\"submit\", n);\n }\n }, A = async () => {\n if (await (0, vue_1.nextTick)(), w = C.value?.$el.querySelector(\"input\") ?? null, w) {\n if (!g?.ui?.autocomplete) {\n console.info(\"Для работы autocomplete требуется глобальная загрузка jQuery UI Autocomplete\");\n return;\n }\n g(w).autocomplete({\n appendTo: v.value,\n minLength: 0,\n source: async (e, t) => {\n let n = e.term;\n n in T || (T[n] = await s.getEmailSuggestions(n)), t(D(T[n]).map((e) => ({\n label: e,\n value: e\n })));\n },\n select: (e, t) => {\n t.item && w && (e.preventDefault(), O(t.item.value), f.value = \"\", g(w).trigger(\"focus\"));\n }\n }), g(w).attr(\"autocomplete\", \"disabled\"), g(w).on(\"focus.scheduleEmailSelector\", () => {\n w && g(w).trigger(\"input\");\n });\n }\n };\n return (0, vue_1.onMounted)(() => {\n A();\n }), (0, vue_1.onBeforeUnmount)(() => {\n g?.ui?.autocomplete && w && (g(w).off(\"focus.scheduleEmailSelector\"), g(w).autocomplete(\"destroy\"));\n }), (e, t) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n class: \"top-scheduleEmailSelector\",\n ref_key: \"elRootRef\",\n ref: v\n }, [(0, vue_1.createVNode)(forms_Ch1q0UUt_es_js_1.c, {\n ref_key: \"elInputRef\",\n ref: C,\n modelValue: f.value,\n \"onUpdate:modelValue\": t[1] ||= (e) => f.value = e,\n onKeydown: t[2] ||= (0, vue_1.withKeys)((0, vue_1.withModifiers)((e) => O(), [\"prevent\"]), [\"enter\"]),\n title: e.$i18n.Common.Enter_email,\n type: \"email\",\n size: \"m\",\n disabled: E.value\n }, {\n default: (0, vue_1.withCtx)(() => [E.value ? (0, vue_1.createCommentVNode)(\"\", !0) : ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(forms_Ch1q0UUt_es_js_1.h, {\n key: 0,\n class: \"top-scheduleEmailSelector_submit\",\n color: \"theme\",\n icon: \"\",\n onClick: t[0] ||= (0, vue_1.withModifiers)((e) => O(), [\"prevent\"])\n }))]),\n _: 1\n }, 8, [\n \"modelValue\",\n \"title\",\n \"disabled\"\n ])], 512));\n }\n }), ie = { class: \"top-scheduleEmail\" }, ae = { class: \"top-scheduleEmail_title\" }, oe = {\n key: 0,\n class: \"top-scheduleEmail_emails\"\n }, $ = { class: \"top-ellipsis1\" }, se = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"emails\",\n props: {\n emails: { default: () => [] },\n getEmailSuggestions: {\n type: Function,\n default: () => []\n },\n maxEmailsCount: {}\n },\n emits: [\"add:email\", \"remove:email\"],\n setup(e, { emit: t }) {\n let n = e, r = t, i = (0, vue_1.ref)(\"\"), a = (e) => {\n let t = e.trim();\n if (!t || n.emails.includes(t)) {\n i.value = \"\";\n return;\n }\n r(\"add:email\", t), i.value = \"\";\n };\n return (t, n) => {\n let o = (0, vue_1.resolveComponent)(\"TopButton\");\n return (0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", ie, [\n (0, vue_1.createElementVNode)(\"div\", ae, (0, vue_1.toDisplayString)(t.$i18n.Projects.Reports_send_to_address) + \" E-mail: \", 1),\n (0, vue_1.createVNode)(re, {\n modelValue: i.value,\n \"onUpdate:modelValue\": n[0] ||= (e) => i.value = e,\n emails: e.emails,\n maxEmailsCount: e.maxEmailsCount,\n getEmailSuggestions: e.getEmailSuggestions,\n onSubmit: a\n }, null, 8, [\n \"modelValue\",\n \"emails\",\n \"maxEmailsCount\",\n \"getEmailSuggestions\"\n ]),\n e.emails.length ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", oe, [((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)(e.emails, (e) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n class: \"top-scheduleEmail_emailsItem\",\n key: e\n }, [(0, vue_1.createElementVNode)(\"span\", $, (0, vue_1.toDisplayString)(e), 1), (0, vue_1.createVNode)(o, {\n onClick: (t) => r(\"remove:email\", e),\n color: \"theme\",\n icon: \"\"\n }, null, 8, [\"onClick\"])]))), 128))])) : (0, vue_1.createCommentVNode)(\"\", !0)\n ]);\n };\n }\n }), ce = { class: \"top-scheduleSocials\" }, le = { class: \"top-scheduleSocials_title\" }, ue = { class: \"top-scheduleSocials_channels\" }, de = [\"data-top-icon\"], fe = { class: \"top-scheduleSocials_channelLabel top-ellipsis1\" }, pe = {\n key: 0,\n class: \"top-scheduleSocials_channel\"\n }, me = [\"data-top-icon\"], he = [\"href\"], ge = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"socials\",\n props: {\n channels: {},\n connectors: {}\n },\n emits: [\"update:channelSelected\"],\n setup(e, { emit: t }) {\n let n = e, r = (e) => n.channels.some((t) => t.source === e), i = {\n informer: \"\",\n telegram: \"\"\n };\n return (n, a) => {\n let o = (0, vue_1.resolveComponent)(\"TopButton\"), c = (0, vue_1.resolveComponent)(\"TopSwitcher\");\n return (0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", ce, [(0, vue_1.createElementVNode)(\"div\", le, (0, vue_1.toDisplayString)(n.$i18n.Projects.Reports_send_to_address), 1), (0, vue_1.createElementVNode)(\"div\", ue, [((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)(e.channels, (e) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n class: \"top-scheduleSocials_channel\",\n key: `${e.source}-${e.id}`\n }, [\n (0, vue_1.createElementVNode)(\"span\", {\n class: \"top-scheduleSocials_channelIcon\",\n \"data-top-icon\": i[e.source]\n }, null, 8, de),\n (0, vue_1.createElementVNode)(\"span\", fe, (0, vue_1.toDisplayString)(e.label), 1),\n e.settingLink ? ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(o, {\n key: 0,\n class: \"top-scheduleSocials_channelSettings\",\n size: \"xs\",\n href: e.settingLink,\n target: \"_blank\",\n icon: \"\",\n color: \"theme\",\n tabindex: \"0\"\n }, null, 8, [\"href\"])) : (0, vue_1.createCommentVNode)(\"\", !0),\n (0, vue_1.createVNode)(c, {\n class: \"top-scheduleSocials_channelSwitcher\",\n modelValue: e.selected,\n \"onUpdate:modelValue\": (n) => t(\"update:channelSelected\", {\n id: e.id,\n source: e.source,\n selected: n\n })\n }, null, 8, [\"modelValue\", \"onUpdate:modelValue\"])\n ]))), 128)), ((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)(e.connectors, (e) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(vue_1.Fragment, { key: e.source }, [r(e.source) ? (0, vue_1.createCommentVNode)(\"\", !0) : ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", pe, [(0, vue_1.createElementVNode)(\"span\", {\n class: \"top-scheduleSocials_channelIcon\",\n \"data-top-icon\": i[e.source]\n }, null, 8, me), (0, vue_1.createElementVNode)(\"a\", {\n class: \"top-scheduleSocials_channelLabel top-ellipsis1\",\n href: e.connectLink,\n target: \"_blank\"\n }, (0, vue_1.toDisplayString)(e.connectLabel), 9, he)]))], 64))), 128))])]);\n };\n }\n });\n exports.TopSchedule = ne;\n exports.TopScheduleEmails = se;\n exports.TopScheduleSocials = ge;\n});\n//# sourceMappingURL=schedule.js.map\n","import { computed, type MaybeRefOrGetter, toValue } from 'vue';\nimport type { Day, Props } from '../types';\nimport { useI18n } from '@/core/app';\n\n/**\n * Формирует список дней для выбранного режима календаря.\n */\nexport const useDaysByCalendarMode = (mode: MaybeRefOrGetter<Props['mode']>) => {\n\tconst i18n = useI18n();\n\n\treturn computed<Day[]>(() => {\n\t\tswitch (toValue(mode)) {\n\t\t\t// Дни месяца\n\t\t\tcase 'dayOfMonth': {\n\t\t\t\tconst days: Day[] = Array.from({ length: 27 }, (_, index) => ({\n\t\t\t\t\tvalue: String(index + 1) as Day['value'],\n\t\t\t\t\ttitle: String(index + 1),\n\t\t\t\t}));\n\n\t\t\t\tdays.push({\n\t\t\t\t\tvalue: 'LAST_OF_MONTH',\n\t\t\t\t\ttitle: '',\n\t\t\t\t\tisIcon: true,\n\t\t\t\t});\n\n\t\t\t\treturn days;\n\t\t\t}\n\n\t\t\t// Дни недели\n\t\t\tcase 'dayOfWeek':\n\t\t\t\treturn [\n\t\t\t\t\t{ value: 'MONDAY', title: i18n.Calendar.Dw_1 },\n\t\t\t\t\t{ value: 'TUESDAY', title: i18n.Calendar.Dw_2 },\n\t\t\t\t\t{ value: 'WEDNESDAY', title: i18n.Calendar.Dw_3 },\n\t\t\t\t\t{ value: 'THURSDAY', title: i18n.Calendar.Dw_4 },\n\t\t\t\t\t{ value: 'FRIDAY', title: i18n.Calendar.Dw_5 },\n\t\t\t\t\t{ value: 'SATURDAY', title: i18n.Calendar.Dw_6 },\n\t\t\t\t\t{ value: 'SUNDAY', title: i18n.Calendar.Dw_7 },\n\t\t\t\t];\n\n\t\t\tdefault:\n\t\t\t\treturn [];\n\t\t}\n\t});\n};\n","<script setup lang=\"ts\">\nimport type { Props } from '@/components/schedule/schedule/components/timeSelector/types';\n\nconst props = defineProps<Props>();\n\nconst times = defineModel<Props['modelValue']>({\n\trequired: true,\n});\n\n/**\n * Варианты выбора часа от `00` до `23`.\n *\n * Поддерижвает вставку произвольного значения через `modelValue` для констант периода.\n */\nconst hourOptions = Array.from({ length: 24 }, (_, index) => ({\n\tvalue: String(index),\n\ttitle: String(index).padStart(2, '0'),\n}));\n\n/**\n * Предустановленные варианты минут.\n *\n * Поддерижвает вставку произвольного значения через `modelValue`.\n */\nconst minuteOptions = Array.from({ length: 4 }, (_, index) => {\n\tconst minute = index * 15;\n\n\treturn {\n\t\tvalue: String(minute),\n\t\ttitle: String(minute).padStart(2, '0'),\n\t};\n});\n\nconst updateTimeByIndex = (index: number, patch: Partial<Props['modelValue'][number]>) => {\n\tconst nextTimes = [...times.value];\n\tnextTimes[index] = { ...nextTimes[index], ...patch };\n\n\ttimes.value = nextTimes;\n};\n\n/**\n * Добавить временной слот.\n *\n * UX: Временной слот должен добавляться в конец списка:\n * - текущий временной слот не должен заменться новым и спускаться ниже\n * - пржений список сохраняет привычный порядок\n * - должно быть видно новый слот\n * - новый слот должно быть можно удалить\n */\nconst addTime = () => {\n\ttimes.value = [\n\t\t...times.value,\n\t\t{\n\t\t\thour: '0',\n\t\t\tminute: '0',\n\t\t},\n\t];\n};\n\nconst delTime = (index: number) => {\n\ttimes.value = times.value.filter((_, timeIndex) => timeIndex !== index);\n};\n</script>\n\n<template>\n\t<div class=\"top-scheduleTimeSelector\">\n\t\t<div v-for=\"(time, index) in times\" :key=\"index\" class=\"top-scheduleTimeSelector_item\">\n\t\t\t<TopSelect\n\t\t\t\tclass=\"top-scheduleTimeSelector_hour\"\n\t\t\t\t:modelValue=\"time.hour\"\n\t\t\t\t:options=\"hourOptions\"\n\t\t\t\tavailableCustomValue\n\t\t\t\t@update:modelValue=\"updateTimeByIndex(index, { hour: $event as Props['modelValue'][number]['hour'] })\"\n\t\t\t/>\n\n\t\t\t<TopSelect\n\t\t\t\tclass=\"top-scheduleTimeSelector_minute\"\n\t\t\t\t:modelValue=\"time.minute\"\n\t\t\t\t:options=\"minuteOptions\"\n\t\t\t\tavailableCustomValue\n\t\t\t\t@update:modelValue=\"updateTimeByIndex(index, { minute: $event as Props['modelValue'][number]['minute'] })\"\n\t\t\t/>\n\n\t\t\t<TopButton\n\t\t\t\tv-if=\"props.multipleTimes || times.length > 1\"\n\t\t\t\t@click=\"index ? delTime(index) : addTime()\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\t:icon=\"index ? '' : ''\"\n\t\t\t/>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport type { Props } from '@/components/schedule/schedule/components/calendar/types';\nimport { useDaysByCalendarMode } from './composables/useDaysByCalendarMode';\nimport { numberEnding } from '@/core/utils/string';\nimport { computed } from 'vue';\nimport TopScheduleTimeSelector from '@/components/schedule/schedule/components/timeSelector/timeSelector.vue';\n\nconst props = defineProps<Props>();\n\nconst selectedDays = defineModel<Props['modelValue']>({\n\trequired: true,\n});\n\nconst times = defineModel<Props['times']>('times', {\n\trequired: true,\n});\n\nconst days = useDaysByCalendarMode(() => props.mode);\n\nconst isAllDaysSelected = computed(() => selectedDays.value.includes('ALL') || selectedDays.value.length === days.value.length);\n\nconst toggleDay = (day: Props['modelValue'][number]) => {\n\tconst nextDays = selectedDays.value.includes('ALL') ? days.value.map(item => item.value) : [...selectedDays.value];\n\tconst dayIndex = nextDays.indexOf(day);\n\n\tif (dayIndex === -1) {\n\t\tnextDays.push(day);\n\t} else {\n\t\tnextDays.splice(dayIndex, 1);\n\t}\n\n\tselectedDays.value = nextDays.length === days.value.length ? ['ALL'] : nextDays;\n};\n\nconst toggleSelectAll = () => {\n\tselectedDays.value = isAllDaysSelected.value ? [] : ['ALL'];\n};\n</script>\n\n<template>\n\t<div class=\"top-scheduleCalendar\">\n\t\t<div class=\"top-scheduleCalendar_header\">\n\t\t\t<TopScheduleTimeSelector v-model=\"times\" :multipleTimes />\n\n\t\t\t<TopButton\n\t\t\t\t@click=\"toggleSelectAll()\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ttabindex=\"0\"\n\t\t\t>\n\t\t\t\t{{ isAllDaysSelected ? $i18n.Common.Clear : $i18n.Common.Select_all }}\n\t\t\t</TopButton>\n\t\t</div>\n\n\t\t<div class=\"top-scheduleCalendar_calendar\">\n\t\t\t<label\n\t\t\t\tclass=\"top-scheduleCalendar_calendarDay\"\n\t\t\t\tv-for=\"day in days\"\n\t\t\t\t:key=\"day.value\"\n\t\t\t>\n\t\t\t\t<input\n\t\t\t\t\tclass=\"top-scheduleCalendar_calendarDayCheckbox\"\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t:value=\"day.value\"\n\t\t\t\t\t:checked=\"selectedDays.includes('ALL') || selectedDays.includes(day.value)\"\n\t\t\t\t\t@change=\"toggleDay(day.value)\"\n\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t>\n\n\t\t\t\t<span :data-top-icon=\"day.isIcon ? day.title : undefined\">\n\t\t\t\t\t<template v-if=\"!day.isIcon\">\n\t\t\t\t\t\t{{ day.title }}\n\t\t\t\t\t</template>\n\t\t\t\t</span>\n\t\t\t</label>\n\t\t</div>\n\n\t\t<span\n\t\t\t:class=\"{\n\t\t\t\t'top-scheduleCalendar_selectionSummary': true,\n\t\t\t'top-error': !selectedDays.length\n\t\t\t}\"\n\t\t>\n\t\t\t<!-- Каждый день или Число проверок в неделю / месяц-->\n\t\t\t{{\n\t\t\t\tisAllDaysSelected ?\n\t\t\t\t\t$i18n.Common.Every_day :\n\t\t\t\t\tselectedDays.length\n\t\t\t}}\n\n\t\t\t<template v-if=\"times.length > 1 || !isAllDaysSelected\">\n\t\t\t\t<!-- Добавить число временных слотов, если их несколько -->\n\t\t\t\t{{ times.length > 1 ? ` × ${times.length}` : '' }}\n\n\t\t\t\t<!-- Суффикс \"раз\" -->\n\t\t\t\t{{\n\t\t\t\t\tnumberEnding(\n\t\t\t\t\t\ttimes.length === 1 ? selectedDays.length : times.length,\n\t\t\t\t\t\t$i18n.Common.time_a_0,\n\t\t\t\t\t\t$i18n.Common.time_a_0,\n\t\t\t\t\t\t$i18n.Common.time_a_2,\n\t\t\t\t\t)\n\t\t\t\t}}\n\n\t\t\t\t<!-- В неделю / месяц-->\n\t\t\t\t{{ mode === 'dayOfWeek' ? $i18n.Common.a_week : $i18n.Common.a_month }}\n\t\t\t</template>\n\t\t</span>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","import type { Props as CalendarProps } from '@/components/schedule/schedule/components/calendar/types';\nimport type { Mode, Props } from './types';\nimport type { Option as TopSelectOption } from '@/components/forms/select/types';\nimport { useI18n } from '@/core/plugins/i18n';\n\n/**\n * Генерирует варианты задержки запуска после апдейта Яндекса.\n *\n * См. Апометр\n */\nexport const genAfterYandexUpdatedOptions = (): TopSelectOption[] => {\n\tconst i18n = useI18n();\n\n\treturn [\n\t\t{\n\t\t\tvalue: '0',\n\t\t\ttitle: i18n.Projects.immediately,\n\t\t},\n\t\t...Array.from({ length: 24 }, (_, index) => ({\n\t\t\tvalue: String(index + 1),\n\t\t\ttitle: i18n('Projects', 'in_hour', { hour: index + 1 }),\n\t\t})),\n\t];\n};\n\n/**\n * Проверяет, относится ли режим к календарным режимам.\n *\n * Календарный режим, это режим с выбором дней недели или месяца.\n */\nexport const isCalendarMode = (value: Mode): value is CalendarProps['mode'] => value === 'dayOfWeek' || value === 'dayOfMonth';\n\n/**\n * Определяет режим расписания по выбранным дням.\n */\nexport const getModeByDays = (days: Props['modelValue']['days'], currentMode: Mode = 'onDemand'): Mode => {\n\tif (days.includes('YANDEX_UPDATE')) return 'afterYandexUpdated';\n\tif (days.includes('CHECK_POSITIONS')) return 'afterCheck';\n\tif (days.includes('LAST_OF_MONTH') || days.some(day => /^\\d+$/.test(day))) return 'dayOfMonth';\n\n\tif (days.length) {\n\t\t// Сохраняем текущий календарный режим\n\t\tif (isCalendarMode(currentMode)) return currentMode;\n\n\t\t// Режим по умолчанию для `ALL`\n\t\treturn 'dayOfWeek';\n\t}\n\n\treturn currentMode;\n};\n","import { computed, type Ref } from 'vue';\nimport type { Option as TopSelectOption } from '@/components/forms/select/types';\nimport { useI18n } from '@/core/plugins/i18n';\nimport type { Mode, Props } from '../types';\n\nconst defaultModsGo: readonly Mode[] = ['onDemand', 'dayOfWeek', 'dayOfMonth'];\nconst defaultModsReport: readonly Mode[] = ['onDemand', 'afterCheck'];\n\n/**\n * Формирует реактивный список режимов расписания с учетом дополнительных режимов.\n */\nexport const useModeOptions = (props: Props, mode: Ref<Mode>) => {\n\tconst i18n = useI18n();\n\n\treturn computed<TopSelectOption[]>(() => {\n\t\tconst modes: Mode[] = props.type === 'go' ? [...defaultModsGo] : [...defaultModsReport];\n\n\t\tif (props.extraMods) {\n\t\t\tmodes.push(...props.extraMods);\n\t\t}\n\n\t\t// Всегда отображать выбранный режим.\n\t\tif (!modes.includes(mode.value)) modes.push(mode.value);\n\n\t\t// Словарь Dynamics нужен только потребителям режима afterCheck.\n\t\tconst titles: Record<Mode, string> = {\n\t\t\tonDemand: i18n.Projects.Settings_on_demand,\n\t\t\tdayOfWeek: i18n.Projects.Report_on_weekdays,\n\t\t\tdayOfMonth: i18n.Projects.Settings_particular_days,\n\t\t\tafterYandexUpdated: i18n.Projects.After_updates,\n\t\t\tafterCheck: modes.includes('afterCheck') ? i18n.Dynamics.Report_after_tracking_30min_1 : '',\n\t\t};\n\n\t\treturn modes.map(value => ({ value, title: titles[value] }));\n\t});\n};\n","import { watch, type Ref } from 'vue';\nimport type { Mode, Props } from '../types';\nimport { isCalendarMode } from '../utils';\n\n/**\n * Создаёт независимую копию модели расписания.\n */\nconst cloneModel = (model: Props['modelValue']): Props['modelValue'] => ({\n\tdays: [...model.days],\n\ttimes: model.times.map(time => ({ ...time })),\n});\n\n/**\n * Сохраняет дни и временные слоты модели по режимам расписания.\n */\nexport const useModelByModeCache = (model: Ref<Props['modelValue']>, mode: Ref<Mode>) => {\n\ttype TimeCacheMode = Mode | 'calendar';\n\n\tconst cache = {\n\t\t// Дни календарных режимов кэшируем отдельно.\n\t\tdaysByMode: {} as Partial<Record<Mode, Props['modelValue']['days']>>,\n\n\t\t// Временные слоты храним по режимам, используя общий ключ `calendar` для недели и месяца.\n\t\ttimesByMode: {} as Partial<Record<TimeCacheMode, Props['modelValue']['times']>>,\n\t};\n\n\t// Сохранять настройки выбранного режима\n\twatch(model, () => {\n\t\tconst modelCached = cloneModel(model.value);\n\n\t\tcache.daysByMode[mode.value] = modelCached.days;\n\t\tcache.timesByMode[isCalendarMode(mode.value) ? 'calendar' : mode.value] = modelCached.times;\n\t}, { deep: true, immediate: true });\n\n\treturn cache;\n};\n","<script setup lang=\"ts\">\nimport { ref, watch } from 'vue';\nimport TopSelect from '@/components/forms/select/select.vue';\nimport TopScheduleCalendar from '@/components/schedule/schedule/components/calendar/calendar.vue';\nimport type { Mode, Props, Slots } from './types';\nimport { genAfterYandexUpdatedOptions, getModeByDays, isCalendarMode } from './utils';\nimport { useModeOptions } from './composables/useModeOptions';\nimport { useModelByModeCache } from './composables/useModelByModeCache';\n\n/**\n * Используется для размытия нагрузка на разное время\n */\nconst randomHour = String(Math.floor(Math.random() * 7) + 1) as Props['modelValue']['times'][number]['hour'];\n\nconst props = withDefaults(defineProps<Props>(), {\n\t// Тип `go` соответствует запуску инструмента по расписанию.\n\ttype: 'go',\n});\n\ndefineSlots<Slots>();\n\nconst model = defineModel<Props['modelValue']>({\n\trequired: true,\n});\n\n// Выбранный режим\nconst mode = ref<Mode>(getModeByDays(model.value.days));\n\n// Список режимов\nconst modeOptions = useModeOptions(props, mode);\n\nconst afterYandexUpdatedOptions = genAfterYandexUpdatedOptions();\n\n// Кэш дней по режимам и временных слотов по группам расписания.\nconst cache = useModelByModeCache(model, mode);\n\n/**\n * При смене `days` сразу проверяем доступное значение режима и обновляем его, если надо.\n *\n * @note 1 в цепочке перед `watch(mode)`, цепочки не цикличны\n */\nwatch(\n\t() => model.value.days,\n\t() => mode.value = getModeByDays(model.value.days, mode.value),\n\t{ deep: true, immediate: true },\n);\n\n/**\n * При смене режима устанавливаем соответствующие `days` и `times`.\n *\n * Для календарных режимов восстанавливаем ранее сохранённый выбор дней.\n *\n * @note 2 в цепочке после `watch(() => model.value.days)`, цепочки не цикличны\n */\nwatch(mode, (newMode, oldMode) => {\n\t// Для недели и месяца временные слоты берём из общего кэша `calendar`.\n\tconst daysCached = cache.daysByMode[newMode];\n\tconst timesCached = cache.timesByMode[isCalendarMode(newMode) ? 'calendar' : newMode];\n\n\tconst modelPath: Partial<Props['modelValue']> = {};\n\tconst modeChaged = oldMode;\n\n\tswitch (newMode) {\n\t\tcase 'onDemand':\n\t\t\tif (modeChaged || model.value.days.length) modelPath.days = [];\n\t\t\tif (modeChaged || model.value.times.length) modelPath.times = [];\n\n\t\t\tbreak;\n\t\tcase 'dayOfWeek':\n\t\tcase 'dayOfMonth': {\n\t\t\tif (modeChaged || !model.value.days.length) modelPath.days = daysCached ?? ['ALL'];\n\t\t\tif (modeChaged || !model.value.times.length) modelPath.times = timesCached?.length ? timesCached : [{ hour: randomHour, minute: '0' }];\n\n\t\t\tbreak;\n\t\t}\n\t\tcase 'afterYandexUpdated':\n\t\t\tif (modeChaged || model.value.days[0] !== 'YANDEX_UPDATE') modelPath.days = ['YANDEX_UPDATE'];\n\t\t\tif (modeChaged || !model.value.times.length) modelPath.times = timesCached?.length ? timesCached : [{ hour: '1', minute: '0' }];\n\n\t\t\tbreak;\n\t\tcase 'afterCheck':\n\t\t\tif (modeChaged || model.value.days[0] !== 'CHECK_POSITIONS') modelPath.days = ['CHECK_POSITIONS'];\n\t\t\tif (modeChaged || !model.value.times.length) modelPath.times = timesCached?.length ? timesCached : [{ hour: '0', minute: '0' }];\n\n\t\t\tbreak;\n\t}\n\n\t// Отправляем новое значение только тогда, когда хотя бы одно поле требует изменения.\n\tif (Object.keys(modelPath).length) model.value = { ...model.value, ...modelPath };\n}, { immediate: true });\n</script>\n\n<template>\n\t<div :class=\"['top-schedule', 'top-schedule-type_' + type]\">\n\t\t<div class=\"top-schedule_header\">\n\t\t\t<div class=\"top-schedule_headerTitle\">\n\t\t\t\t{{ title ?? (type === 'go' ? $i18n.Projects.Checks : $i18n.Projects.Reports) }}\n\t\t\t</div>\n\n\t\t\t<TopSelect\n\t\t\t\tclass=\"top-schedule_headerMods\"\n\t\t\t\tv-model=\"mode\"\n\t\t\t\t:options=\"modeOptions\"\n\t\t\t\tsize=\"s\"\n\t\t\t/>\n\t\t</div>\n\n\t\t<div v-if=\"mode !== 'onDemand' && (isCalendarMode(mode) || mode === 'afterYandexUpdated' || $slots.default)\" class=\"top-schedule_body\">\n\t\t\t<TopScheduleCalendar\n\t\t\t\tv-if=\"isCalendarMode(mode)\"\n\t\t\t\tv-model=\"model.days\"\n\t\t\t\tv-model:times=\"model.times\"\n\t\t\t\t:mode\n\t\t\t\t:multipleTimes\n\t\t\t/>\n\n\t\t\t<TopSelect\n\t\t\t\tv-if=\"mode === 'afterYandexUpdated' && model.times[0]\"\n\t\t\t\tclass=\"top-schedule_afterYandexUpdatedDelay\"\n\t\t\t\tv-model=\"model.times[0].hour\"\n\t\t\t\t:options=\"afterYandexUpdatedOptions\"\n\t\t\t\tsize=\"s\"\n\t\t\t/>\n\n\t\t\t<hr v-if=\"(isCalendarMode(mode) || mode === 'afterYandexUpdated') && $slots.default\">\n\n\t\t\t<slot :mode></slot>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { computed, nextTick, onBeforeUnmount, onMounted, ref } from 'vue';\nimport TopInput from '@/components/forms/input/input.vue';\nimport TopButton from '@/components/forms/button/button.vue';\nimport Core from '@/core/core/core';\nimport { isEmail } from '@/core/utils/check';\nimport { useI18n } from '@/core/plugins/i18n';\nimport type { Props, Emits } from '@/components/schedule/schedule/components/emails/selector/types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\temails: () => [],\n\tgetEmailSuggestions: () => [],\n});\n\nconst model = defineModel<Props['modelValue']>({ required: true });\n\nconst emit = defineEmits<Emits>();\n\nconst i18n = useI18n();\nconst $ = Core.$;\n\nconst elRootRef = ref<HTMLElement>();\nconst elInputRef = ref<InstanceType<typeof TopInput>>();\nlet elInput: HTMLInputElement | null = null;\nconst autocompleteCache: Record<string, string[]> = {};\n\n// При достижении лимита отключаем поле ввода и скрываем кнопку добавления.\nconst isLimitReached = computed(() => !!props.maxEmailsCount && props.emails.length >= props.maxEmailsCount);\n\nconst filterEmails = (emails: string[]) => emails.filter(email => !props.emails.includes(email));\n\nconst submit = (value: unknown = model.value) => {\n\tconst email = String(value).trim();\n\tif (!email) return;\n\n\tif (!isEmail(email)) {\n\t\tvoid Core.notice(i18n.Common.Enter_valid_email_notice, 'error');\n\n\t\treturn;\n\t}\n\n\temit('submit', email);\n};\n\nconst initAutocomplete = async () => {\n\tawait nextTick();\n\n\telInput = elInputRef.value?.$el.querySelector('input') ?? null;\n\tif (!elInput) return;\n\n\tif (!$?.ui?.autocomplete) {\n\t\tconsole.info('Для работы autocomplete требуется глобальная загрузка jQuery UI Autocomplete');\n\n\t\treturn;\n\t}\n\n\t$(elInput).autocomplete({\n\t\tappendTo: elRootRef.value,\n\t\tminLength: 0,\n\t\tsource: async (request: { term: string }, response: (items: Array<{ label: string, value: string }>) => void) => {\n\t\t\tconst term = request.term;\n\n\t\t\tif (!(term in autocompleteCache)) {\n\t\t\t\tautocompleteCache[term] = await props.getEmailSuggestions(term);\n\t\t\t}\n\n\t\t\tresponse(filterEmails(autocompleteCache[term]).map(email => ({\n\t\t\t\tlabel: email,\n\t\t\t\tvalue: email,\n\t\t\t})));\n\t\t},\n\t\tselect: (event: Event, ui: { item?: { value: string } }) => {\n\t\t\tif (!ui.item || !elInput) return;\n\n\t\t\tevent.preventDefault();\n\t\t\tsubmit(ui.item.value);\n\t\t\tmodel.value = '';\n\n\t\t\t$(elInput).trigger('focus');\n\t\t},\n\t});\n\n\t$(elInput).attr('autocomplete', 'disabled');\n\t$(elInput).on('focus.scheduleEmailSelector', () => {\n\t\tif (!elInput) return;\n\n\t\t$(elInput).trigger('input');\n\t});\n};\n\nonMounted(() => {\n\tvoid initAutocomplete();\n});\n\nonBeforeUnmount(() => {\n\tif (!$?.ui?.autocomplete || !elInput) return;\n\n\t$(elInput).off('focus.scheduleEmailSelector');\n\t$(elInput).autocomplete('destroy');\n});\n</script>\n\n<template>\n\t<div\n\t\tclass=\"top-scheduleEmailSelector\"\n\t\tref=\"elRootRef\"\n\t>\n\t\t<!-- UX: Компонент не должен скраываться, это приведет к CLS -->\n\t\t<TopInput\n\t\t\tref=\"elInputRef\"\n\t\t\tv-model=\"model\"\n\t\t\t@keydown.enter.prevent=\"submit()\"\n\t\t\t:title=\"$i18n.Common.Enter_email\"\n\t\t\ttype=\"email\"\n\t\t\tsize=\"m\"\n\t\t\t:disabled=\"isLimitReached\"\n\t\t>\n\t\t\t<TopButton\n\t\t\t\tv-if=\"!isLimitReached\"\n\t\t\t\tclass=\"top-scheduleEmailSelector_submit\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ticon=\"\"\n\t\t\t\t@click.prevent=\"submit()\"\n\t\t\t/>\n\t\t</TopInput>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport type { Emits, Props } from '@/components/schedule/schedule/components/emails/types';\nimport ScheduleEmailSelector from '@/components/schedule/schedule/components/emails/selector/selector.vue';\n\nconst props = withDefaults(defineProps<Props>(), {\n\temails: () => [],\n\tgetEmailSuggestions: () => [],\n});\n\nconst emit = defineEmits<Emits>();\n\nconst value = ref('');\n\nconst addEmail = (email: string) => {\n\tconst preparedEmail = email.trim();\n\n\tif (!preparedEmail || props.emails.includes(preparedEmail)) {\n\t\tvalue.value = '';\n\n\t\treturn;\n\t}\n\n\temit('add:email', preparedEmail);\n\n\tvalue.value = '';\n};\n</script>\n\n<template>\n\t<div class=\"top-scheduleEmail\">\n\t\t<div class=\"top-scheduleEmail_title\">\n\t\t\t{{ $i18n.Projects.Reports_send_to_address }} E-mail:\n\t\t</div>\n\n\t\t<ScheduleEmailSelector\n\t\t\tv-model=\"value\"\n\t\t\t:emails\n\t\t\t:maxEmailsCount\n\t\t\t:getEmailSuggestions\n\t\t\t@submit=\"addEmail\"\n\t\t/>\n\n\t\t<div\n\t\t\tv-if=\"emails.length\"\n\t\t\tclass=\"top-scheduleEmail_emails\"\n\t\t>\n\t\t\t<div\n\t\t\t\tclass=\"top-scheduleEmail_emailsItem\"\n\t\t\t\tv-for=\"email in emails\"\n\t\t\t\t:key=\"email\"\n\t\t\t>\n\t\t\t\t<span class=\"top-ellipsis1\">{{ email }}</span>\n\n\t\t\t\t<TopButton\n\t\t\t\t\t@click=\"emit('remove:email', email)\"\n\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\ticon=\"\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport type { Emits, Props } from '@/components/schedule/schedule/components/socials/types';\n\nconst props = defineProps<Props>();\ndefineEmits<Emits>();\n\ntype ReportChannelSource = Props['channels'][number]['source'];\n\nconst hasChannel = (source: ReportChannelSource) => props.channels.some(channel => channel.source === source);\n\nconst sourceIconBySource: Record<ReportChannelSource, string> = {\n\tinformer: '',\n\ttelegram: '',\n};\n</script>\n\n<template>\n\t<div class=\"top-scheduleSocials\">\n\t\t<div class=\"top-scheduleSocials_title\">\n\t\t\t{{ $i18n.Projects.Reports_send_to_address }}\n\t\t</div>\n\n\t\t<div class=\"top-scheduleSocials_channels\">\n\t\t\t<div\n\t\t\t\tclass=\"top-scheduleSocials_channel\"\n\t\t\t\tv-for=\"channel in channels\"\n\t\t\t\t:key=\"`${channel.source}-${channel.id}`\"\n\t\t\t>\n\t\t\t\t<span\n\t\t\t\t\tclass=\"top-scheduleSocials_channelIcon\"\n\t\t\t\t\t:data-top-icon=\"sourceIconBySource[channel.source]\"\n\t\t\t\t></span>\n\n\t\t\t\t<span class=\"top-scheduleSocials_channelLabel top-ellipsis1\">\n\t\t\t\t\t{{ channel.label }}\n\t\t\t\t</span>\n\n\t\t\t\t<TopButton\n\t\t\t\t\tv-if=\"channel.settingLink\"\n\t\t\t\t\tclass=\"top-scheduleSocials_channelSettings\"\n\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t:href=\"channel.settingLink\"\n\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\ticon=\"\"\n\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t></TopButton>\n\n\t\t\t\t<TopSwitcher\n\t\t\t\t\tclass=\"top-scheduleSocials_channelSwitcher\"\n\t\t\t\t\t:modelValue=\"channel.selected\"\n\t\t\t\t\t@update:modelValue=\"$emit('update:channelSelected', {\n\t\t\t\t\t\tid: channel.id,\n\t\t\t\t\t\tsource: channel.source,\n\t\t\t\t\t\tselected: $event as boolean,\n\t\t\t\t\t})\"\n\t\t\t\t/>\n\t\t\t</div>\n\n\t\t\t<template\n\t\t\t\tv-for=\"connector in connectors\"\n\t\t\t\t:key=\"connector.source\"\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tv-if=\"!hasChannel(connector.source)\"\n\t\t\t\tclass=\"top-scheduleSocials_channel\"\n\t\t\t\t>\n\t\t\t\t\t<span\n\t\t\t\t\t\tclass=\"top-scheduleSocials_channelIcon\"\n\t\t\t\t\t\t:data-top-icon=\"sourceIconBySource[connector.source]\"\n\t\t\t\t\t></span>\n\n\t\t\t\t\t<a\n\t\t\t\t\t\tclass=\"top-scheduleSocials_channelLabel top-ellipsis1\"\n\t\t\t\t\t\t:href=\"connector.connectLink\"\n\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{{ connector.connectLabel }}\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n"]}
1
+ {"version":3,"sources":["schedule/schedule.js","../../src/components/schedule/schedule/components/calendar/composables/useDaysByCalendarMode.ts","../../src/components/schedule/schedule/components/timeSelector/timeSelector.vue","../../src/components/schedule/schedule/components/calendar/calendar.vue","../../src/components/schedule/schedule/utils.ts","../../src/components/schedule/schedule/composables/useModeOptions.ts","../../src/components/schedule/schedule/composables/useModelByModeCache.ts","../../src/components/schedule/schedule/schedule.vue","../../src/components/schedule/schedule/components/emails/selector/selector.vue","../../src/components/schedule/schedule/components/emails/emails.vue","../../src/components/schedule/schedule/components/socials/socials.vue"],"names":["vue","exports","N","n","forms_CjJD60m3_es_js_1","vue_1","t","P","F","a","o","c","p","h","s","I","L","R","z","B","V","i","l","g","string_js_1","H","U","W","G","K","q","e","te","J","Y","X","Z","Q","ne","r","re","f","v","C","w","T","E","D","O","check_js_1","A","ie","ae","oe","$","se","ce","le","ue","de","fe","pe","me","he","ge"],"mappings":"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","sourcesContent":["define([\"require\", \"exports\", \"../.chunks/forms-CjJD60m3.es.js\", \"../utils/check.js\", \"../utils/string.js\", \"vue\", \"../.chunks/app-BbV6AslA.es.js\"], function (require, exports, forms_CjJD60m3_es_js_1, check_js_1, string_js_1, vue_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n exports.TopScheduleSocials = exports.TopScheduleEmails = exports.TopSchedule = void 0;\n //#region src/components/schedule/schedule/components/calendar/composables/useDaysByCalendarMode.ts\n var N = (t) => {\n let n = (0, forms_CjJD60m3_es_js_1.E)();\n return (0, vue_1.computed)(() => {\n switch ((0, vue_1.toValue)(t)) {\n case \"dayOfMonth\": {\n let e = Array.from({ length: 27 }, (e, t) => ({\n value: String(t + 1),\n title: String(t + 1)\n }));\n return e.push({\n value: \"LAST_OF_MONTH\",\n title: \"\",\n isIcon: !0\n }), e;\n }\n case \"dayOfWeek\": return [\n {\n value: \"MONDAY\",\n title: n.Calendar.Dw_1\n },\n {\n value: \"TUESDAY\",\n title: n.Calendar.Dw_2\n },\n {\n value: \"WEDNESDAY\",\n title: n.Calendar.Dw_3\n },\n {\n value: \"THURSDAY\",\n title: n.Calendar.Dw_4\n },\n {\n value: \"FRIDAY\",\n title: n.Calendar.Dw_5\n },\n {\n value: \"SATURDAY\",\n title: n.Calendar.Dw_6\n },\n {\n value: \"SUNDAY\",\n title: n.Calendar.Dw_7\n }\n ];\n default: return [];\n }\n });\n }, P = { class: \"top-scheduleTimeSelector\" }, F = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"timeSelector\",\n props: /*@__PURE__*/ (0, vue_1.mergeModels)({\n modelValue: {},\n multipleTimes: { type: Boolean }\n }, {\n modelValue: { required: !0 },\n modelModifiers: {}\n }),\n emits: [\"update:modelValue\"],\n setup(e) {\n let t = e, n = (0, vue_1.useModel)(e, \"modelValue\"), r = Array.from({ length: 24 }, (e, t) => ({\n value: String(t),\n title: String(t).padStart(2, \"0\")\n })), i = Array.from({ length: 4 }, (e, t) => {\n let n = t * 15;\n return {\n value: String(n),\n title: String(n).padStart(2, \"0\")\n };\n }), a = (e, t) => {\n let r = [...n.value];\n r[e] = {\n ...r[e],\n ...t\n }, n.value = r;\n }, o = () => {\n n.value = [...n.value, {\n hour: \"0\",\n minute: \"0\"\n }];\n }, c = (e) => {\n n.value = n.value.filter((t, n) => n !== e);\n };\n return (e, f) => {\n let p = (0, vue_1.resolveComponent)(\"TopSelect\"), h = (0, vue_1.resolveComponent)(\"TopButton\");\n return (0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", P, [((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)(n.value, (e, s) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n key: s,\n class: \"top-scheduleTimeSelector_item\"\n }, [\n (0, vue_1.createVNode)(p, {\n class: \"top-scheduleTimeSelector_hour\",\n modelValue: e.hour,\n options: (0, vue_1.unref)(r),\n availableCustomValue: \"\",\n \"onUpdate:modelValue\": (e) => a(s, { hour: e })\n }, null, 8, [\n \"modelValue\",\n \"options\",\n \"onUpdate:modelValue\"\n ]),\n (0, vue_1.createVNode)(p, {\n class: \"top-scheduleTimeSelector_minute\",\n modelValue: e.minute,\n options: (0, vue_1.unref)(i),\n availableCustomValue: \"\",\n \"onUpdate:modelValue\": (e) => a(s, { minute: e })\n }, null, 8, [\n \"modelValue\",\n \"options\",\n \"onUpdate:modelValue\"\n ]),\n t.multipleTimes || n.value.length > 1 ? ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(h, {\n key: 0,\n onClick: (e) => s ? c(s) : o(),\n color: \"theme\",\n icon: s ? \"\" : \"\"\n }, null, 8, [\"onClick\", \"icon\"])) : (0, vue_1.createCommentVNode)(\"\", !0)\n ]))), 128))]);\n };\n }\n }), I = { class: \"top-scheduleCalendar\" }, L = { class: \"top-scheduleCalendar_header\" }, R = { class: \"top-scheduleCalendar_calendar\" }, z = [\n \"value\",\n \"checked\",\n \"onChange\"\n ], B = [\"data-top-icon\"], V = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"calendar\",\n props: /*@__PURE__*/ (0, vue_1.mergeModels)({\n modelValue: {},\n mode: {},\n times: {},\n multipleTimes: { type: Boolean }\n }, {\n modelValue: { required: !0 },\n modelModifiers: {},\n times: { required: !0 },\n timesModifiers: {}\n }),\n emits: [\"update:modelValue\", \"update:times\"],\n setup(e) {\n let t = e, n = (0, vue_1.useModel)(e, \"modelValue\"), r = (0, vue_1.useModel)(e, \"times\"), i = N(() => t.mode), a = (0, vue_1.computed)(() => n.value.includes(\"ALL\") || n.value.length === i.value.length), l = (e) => {\n let t = n.value.includes(\"ALL\") ? i.value.map((e) => e.value) : [...n.value], r = t.indexOf(e);\n r === -1 ? t.push(e) : t.splice(r, 1), n.value = t.length === i.value.length ? [\"ALL\"] : t;\n }, h = () => {\n n.value = a.value ? [] : [\"ALL\"];\n };\n return (t, c) => {\n let g = (0, vue_1.resolveComponent)(\"TopButton\");\n return (0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", I, [\n (0, vue_1.createElementVNode)(\"div\", L, [(0, vue_1.createVNode)(F, {\n modelValue: r.value,\n \"onUpdate:modelValue\": c[0] ||= (e) => r.value = e,\n multipleTimes: e.multipleTimes\n }, null, 8, [\"modelValue\", \"multipleTimes\"]), (0, vue_1.createVNode)(g, {\n onClick: c[1] ||= (e) => h(),\n color: \"theme\",\n tabindex: \"0\"\n }, {\n default: (0, vue_1.withCtx)(() => [(0, vue_1.createTextVNode)((0, vue_1.toDisplayString)(a.value ? t.$i18n.Common.Clear : t.$i18n.Common.Select_all), 1)]),\n _: 1\n })]),\n (0, vue_1.createElementVNode)(\"div\", R, [((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)((0, vue_1.unref)(i), (e) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"label\", {\n class: \"top-scheduleCalendar_calendarDay\",\n key: e.value\n }, [(0, vue_1.createElementVNode)(\"input\", {\n class: \"top-scheduleCalendar_calendarDayCheckbox\",\n type: \"checkbox\",\n value: e.value,\n checked: n.value.includes(\"ALL\") || n.value.includes(e.value),\n onChange: (t) => l(e.value),\n tabindex: \"0\"\n }, null, 40, z), (0, vue_1.createElementVNode)(\"span\", { \"data-top-icon\": e.isIcon ? e.title : void 0 }, [e.isIcon ? (0, vue_1.createCommentVNode)(\"\", !0) : ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(vue_1.Fragment, { key: 0 }, [(0, vue_1.createTextVNode)((0, vue_1.toDisplayString)(e.title), 1)], 64))], 8, B)]))), 128))]),\n (0, vue_1.createElementVNode)(\"span\", { class: (0, vue_1.normalizeClass)({\n \"top-scheduleCalendar_selectionSummary\": !0,\n \"top-error\": !n.value.length\n }) }, [(0, vue_1.createTextVNode)((0, vue_1.toDisplayString)(a.value ? t.$i18n.Common.Every_day : n.value.length) + \" \", 1), r.value.length > 1 || !a.value ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(vue_1.Fragment, { key: 0 }, [(0, vue_1.createTextVNode)((0, vue_1.toDisplayString)(r.value.length > 1 ? ` × ${r.value.length}` : \"\") + \" \" + (0, vue_1.toDisplayString)((0, vue_1.unref)(string_js_1.numberEnding)(r.value.length === 1 ? n.value.length : r.value.length, t.$i18n.Common.time_a_0, t.$i18n.Common.time_a_0, t.$i18n.Common.time_a_2)) + \" \" + (0, vue_1.toDisplayString)(e.mode === \"dayOfWeek\" ? t.$i18n.Common.a_week : t.$i18n.Common.a_month), 1)], 64)) : (0, vue_1.createCommentVNode)(\"\", !0)], 2)\n ]);\n };\n }\n }), H = () => {\n let t = (0, forms_CjJD60m3_es_js_1.E)();\n return [{\n value: \"0\",\n title: t.Projects.immediately\n }, ...Array.from({ length: 24 }, (e, n) => ({\n value: String(n + 1),\n title: t(\"Projects\", \"in_hour\", { hour: n + 1 })\n }))];\n }, U = (e) => e === \"dayOfWeek\" || e === \"dayOfMonth\", W = (e, t = \"onDemand\") => e.includes(\"YANDEX_UPDATE\") ? \"afterYandexUpdated\" : e.includes(\"CHECK_POSITIONS\") ? \"afterCheck\" : e.includes(\"LAST_OF_MONTH\") || e.some((e) => /^\\d+$/.test(e)) ? \"dayOfMonth\" : e.length ? U(t) ? t : \"dayOfWeek\" : t, G = [\n \"onDemand\",\n \"dayOfWeek\",\n \"dayOfMonth\"\n ], K = [\"onDemand\", \"afterCheck\"], q = (t, n) => {\n let r = (0, forms_CjJD60m3_es_js_1.E)();\n return (0, vue_1.computed)(() => {\n let e = t.type === \"go\" ? [...G] : [...K];\n t.extraMods && e.push(...t.extraMods), e.includes(n.value) || e.push(n.value);\n let i = {\n onDemand: r.Projects.Settings_on_demand,\n dayOfWeek: r.Projects.Report_on_weekdays,\n dayOfMonth: r.Projects.Settings_particular_days,\n afterYandexUpdated: r.Projects.After_updates,\n afterCheck: e.includes(\"afterCheck\") ? r.Dynamics.Report_after_tracking_30min_1 : \"\"\n };\n return e.map((e) => ({\n value: e,\n title: i[e]\n }));\n });\n }, te = (e) => ({\n days: [...e.days],\n times: e.times.map((e) => ({ ...e }))\n }), J = (e, t) => {\n let n = {\n daysByMode: {},\n timesByMode: {}\n };\n return (0, vue_1.watch)(e, () => {\n let r = te(e.value);\n n.daysByMode[t.value] = r.days, n.timesByMode[U(t.value) ? \"calendar\" : t.value] = r.times;\n }, {\n deep: !0,\n immediate: !0\n }), n;\n }, Y = { class: \"top-schedule_header\" }, X = { class: \"top-schedule_headerTitle\" }, Z = {\n key: 0,\n class: \"top-schedule_body\"\n }, Q = { key: 2 }, ne = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"schedule\",\n props: /*@__PURE__*/ (0, vue_1.mergeModels)({\n modelValue: {},\n type: { default: \"go\" },\n extraMods: {},\n multipleTimes: { type: Boolean },\n title: {}\n }, {\n modelValue: { required: !0 },\n modelModifiers: {}\n }),\n emits: [\"update:modelValue\"],\n setup(e, { slots: t }) {\n let n = String(Math.floor(Math.random() * 7) + 1), r = e, a = (0, vue_1.useModel)(e, \"modelValue\"), o = (0, vue_1.ref)(W(a.value.days)), s = q(r, o), c = H(), p = J(a, o);\n return (0, vue_1.watch)(() => a.value.days, () => o.value = W(a.value.days, o.value), {\n deep: !0,\n immediate: !0\n }), (0, vue_1.watch)(o, (e, t) => {\n let r = p.daysByMode[e], i = p.timesByMode[U(e) ? \"calendar\" : e], o = {}, s = t;\n switch (e) {\n case \"onDemand\":\n (s || a.value.days.length) && (o.days = []), (s || a.value.times.length) && (o.times = []);\n break;\n case \"dayOfWeek\":\n case \"dayOfMonth\":\n (s || !a.value.days.length) && (o.days = r ?? [\"ALL\"]), (s || !a.value.times.length) && (o.times = i?.length ? i : [{\n hour: n,\n minute: \"0\"\n }]);\n break;\n case \"afterYandexUpdated\":\n (s || a.value.days[0] !== \"YANDEX_UPDATE\") && (o.days = [\"YANDEX_UPDATE\"]), (s || !a.value.times.length) && (o.times = i?.length ? i : [{\n hour: \"1\",\n minute: \"0\"\n }]);\n break;\n case \"afterCheck\": (s || a.value.days[0] !== \"CHECK_POSITIONS\") && (o.days = [\"CHECK_POSITIONS\"]), (s || !a.value.times.length) && (o.times = i?.length ? i : [{\n hour: \"0\",\n minute: \"0\"\n }]);\n }\n Object.keys(o).length && (a.value = {\n ...a.value,\n ...o\n });\n }, { immediate: !0 }), (n, r) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", { class: (0, vue_1.normalizeClass)([\"top-schedule\", \"top-schedule-type_\" + e.type]) }, [(0, vue_1.createElementVNode)(\"div\", Y, [(0, vue_1.createElementVNode)(\"div\", X, (0, vue_1.toDisplayString)(e.title ?? (e.type === \"go\" ? n.$i18n.Projects.Checks : n.$i18n.Projects.Reports)), 1), (0, vue_1.createVNode)(forms_CjJD60m3_es_js_1.n, {\n class: \"top-schedule_headerMods\",\n modelValue: o.value,\n \"onUpdate:modelValue\": r[0] ||= (e) => o.value = e,\n options: (0, vue_1.unref)(s),\n size: \"s\"\n }, null, 8, [\"modelValue\", \"options\"])]), o.value !== \"onDemand\" && ((0, vue_1.unref)(U)(o.value) || o.value === \"afterYandexUpdated\" || t.default) ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", Z, [\n (0, vue_1.unref)(U)(o.value) ? ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(V, {\n key: 0,\n modelValue: a.value.days,\n \"onUpdate:modelValue\": r[1] ||= (e) => a.value.days = e,\n times: a.value.times,\n \"onUpdate:times\": r[2] ||= (e) => a.value.times = e,\n mode: o.value,\n multipleTimes: e.multipleTimes\n }, null, 8, [\n \"modelValue\",\n \"times\",\n \"mode\",\n \"multipleTimes\"\n ])) : (0, vue_1.createCommentVNode)(\"\", !0),\n o.value === \"afterYandexUpdated\" && a.value.times[0] ? ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(forms_CjJD60m3_es_js_1.n, {\n key: 1,\n class: \"top-schedule_afterYandexUpdatedDelay\",\n modelValue: a.value.times[0].hour,\n \"onUpdate:modelValue\": r[3] ||= (e) => a.value.times[0].hour = e,\n options: (0, vue_1.unref)(c),\n size: \"s\"\n }, null, 8, [\"modelValue\", \"options\"])) : (0, vue_1.createCommentVNode)(\"\", !0),\n ((0, vue_1.unref)(U)(o.value) || o.value === \"afterYandexUpdated\") && t.default ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"hr\", Q)) : (0, vue_1.createCommentVNode)(\"\", !0),\n (0, vue_1.renderSlot)(n.$slots, \"default\", { mode: o.value })\n ])) : (0, vue_1.createCommentVNode)(\"\", !0)], 2));\n }\n }), re = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"selector\",\n props: /*@__PURE__*/ (0, vue_1.mergeModels)({\n modelValue: {},\n emails: { default: () => [] },\n maxEmailsCount: {},\n getEmailSuggestions: {\n type: Function,\n default: () => []\n }\n }, {\n modelValue: { required: !0 },\n modelModifiers: {}\n }),\n emits: /*@__PURE__*/ (0, vue_1.mergeModels)([\"update:modelValue\", \"submit\"], [\"update:modelValue\"]),\n setup(i, { emit: o }) {\n let s = i, f = (0, vue_1.useModel)(i, \"modelValue\"), p = o, h = (0, forms_CjJD60m3_es_js_1.E)(), g = forms_CjJD60m3_es_js_1.O.$, v = (0, vue_1.ref)(), C = (0, vue_1.ref)(), w = null, T = {}, E = (0, vue_1.computed)(() => !!s.maxEmailsCount && s.emails.length >= s.maxEmailsCount), D = (e) => e.filter((e) => !s.emails.includes(e)), O = (e = f.value) => {\n let n = String(e).trim();\n if (n) {\n if (!(0, check_js_1.isEmail)(n)) {\n forms_CjJD60m3_es_js_1.O.notice(h.Common.Enter_valid_email_notice, \"error\");\n return;\n }\n p(\"submit\", n);\n }\n }, A = async () => {\n if (await (0, vue_1.nextTick)(), w = C.value?.$el.querySelector(\"input\") ?? null, w) {\n if (!g?.ui?.autocomplete) {\n console.info(\"Для работы autocomplete требуется глобальная загрузка jQuery UI Autocomplete\");\n return;\n }\n g(w).autocomplete({\n appendTo: v.value,\n minLength: 0,\n source: async (e, t) => {\n let n = e.term;\n n in T || (T[n] = await s.getEmailSuggestions(n)), t(D(T[n]).map((e) => ({\n label: e,\n value: e\n })));\n },\n select: (e, t) => {\n t.item && w && (e.preventDefault(), O(t.item.value), f.value = \"\", g(w).trigger(\"focus\"));\n }\n }), g(w).attr(\"autocomplete\", \"disabled\"), g(w).on(\"focus.scheduleEmailSelector\", () => {\n w && g(w).trigger(\"input\");\n });\n }\n };\n return (0, vue_1.onMounted)(() => {\n A();\n }), (0, vue_1.onBeforeUnmount)(() => {\n g?.ui?.autocomplete && w && (g(w).off(\"focus.scheduleEmailSelector\"), g(w).autocomplete(\"destroy\"));\n }), (e, t) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n class: \"top-scheduleEmailSelector\",\n ref_key: \"elRootRef\",\n ref: v\n }, [(0, vue_1.createVNode)(forms_CjJD60m3_es_js_1.c, {\n ref_key: \"elInputRef\",\n ref: C,\n modelValue: f.value,\n \"onUpdate:modelValue\": t[1] ||= (e) => f.value = e,\n onKeydown: t[2] ||= (0, vue_1.withKeys)((0, vue_1.withModifiers)((e) => O(), [\"prevent\"]), [\"enter\"]),\n title: e.$i18n.Common.Enter_email,\n type: \"email\",\n size: \"m\",\n disabled: E.value\n }, {\n default: (0, vue_1.withCtx)(() => [E.value ? (0, vue_1.createCommentVNode)(\"\", !0) : ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(forms_CjJD60m3_es_js_1.h, {\n key: 0,\n class: \"top-scheduleEmailSelector_submit\",\n color: \"theme\",\n icon: \"\",\n onClick: t[0] ||= (0, vue_1.withModifiers)((e) => O(), [\"prevent\"])\n }))]),\n _: 1\n }, 8, [\n \"modelValue\",\n \"title\",\n \"disabled\"\n ])], 512));\n }\n }), ie = { class: \"top-scheduleEmail\" }, ae = { class: \"top-scheduleEmail_title\" }, oe = {\n key: 0,\n class: \"top-scheduleEmail_emails\"\n }, $ = { class: \"top-ellipsis1\" }, se = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"emails\",\n props: {\n emails: { default: () => [] },\n getEmailSuggestions: {\n type: Function,\n default: () => []\n },\n maxEmailsCount: {}\n },\n emits: [\"add:email\", \"remove:email\"],\n setup(e, { emit: t }) {\n let n = e, r = t, i = (0, vue_1.ref)(\"\"), a = (e) => {\n let t = e.trim();\n if (!t || n.emails.includes(t)) {\n i.value = \"\";\n return;\n }\n r(\"add:email\", t), i.value = \"\";\n };\n return (t, n) => {\n let o = (0, vue_1.resolveComponent)(\"TopButton\");\n return (0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", ie, [\n (0, vue_1.createElementVNode)(\"div\", ae, (0, vue_1.toDisplayString)(t.$i18n.Projects.Reports_send_to_address) + \" E-mail: \", 1),\n (0, vue_1.createVNode)(re, {\n modelValue: i.value,\n \"onUpdate:modelValue\": n[0] ||= (e) => i.value = e,\n emails: e.emails,\n maxEmailsCount: e.maxEmailsCount,\n getEmailSuggestions: e.getEmailSuggestions,\n onSubmit: a\n }, null, 8, [\n \"modelValue\",\n \"emails\",\n \"maxEmailsCount\",\n \"getEmailSuggestions\"\n ]),\n e.emails.length ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", oe, [((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)(e.emails, (e) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n class: \"top-scheduleEmail_emailsItem\",\n key: e\n }, [(0, vue_1.createElementVNode)(\"span\", $, (0, vue_1.toDisplayString)(e), 1), (0, vue_1.createVNode)(o, {\n onClick: (t) => r(\"remove:email\", e),\n color: \"theme\",\n icon: \"\"\n }, null, 8, [\"onClick\"])]))), 128))])) : (0, vue_1.createCommentVNode)(\"\", !0)\n ]);\n };\n }\n }), ce = { class: \"top-scheduleSocials\" }, le = { class: \"top-scheduleSocials_title\" }, ue = { class: \"top-scheduleSocials_channels\" }, de = [\"data-top-icon\"], fe = { class: \"top-scheduleSocials_channelLabel top-ellipsis1\" }, pe = {\n key: 0,\n class: \"top-scheduleSocials_channel\"\n }, me = [\"data-top-icon\"], he = [\"href\"], ge = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"socials\",\n props: {\n channels: {},\n connectors: {}\n },\n emits: [\"update:channelSelected\"],\n setup(e, { emit: t }) {\n let n = e, r = (e) => n.channels.some((t) => t.source === e), i = {\n informer: \"\",\n telegram: \"\"\n };\n return (n, a) => {\n let o = (0, vue_1.resolveComponent)(\"TopButton\"), c = (0, vue_1.resolveComponent)(\"TopSwitcher\");\n return (0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", ce, [(0, vue_1.createElementVNode)(\"div\", le, (0, vue_1.toDisplayString)(n.$i18n.Projects.Reports_send_to_address), 1), (0, vue_1.createElementVNode)(\"div\", ue, [((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)(e.channels, (e) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n class: \"top-scheduleSocials_channel\",\n key: `${e.source}-${e.id}`\n }, [\n (0, vue_1.createElementVNode)(\"span\", {\n class: \"top-scheduleSocials_channelIcon\",\n \"data-top-icon\": i[e.source]\n }, null, 8, de),\n (0, vue_1.createElementVNode)(\"span\", fe, (0, vue_1.toDisplayString)(e.label), 1),\n e.settingLink ? ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(o, {\n key: 0,\n class: \"top-scheduleSocials_channelSettings\",\n size: \"xs\",\n href: e.settingLink,\n target: \"_blank\",\n icon: \"\",\n color: \"theme\",\n tabindex: \"0\"\n }, null, 8, [\"href\"])) : (0, vue_1.createCommentVNode)(\"\", !0),\n (0, vue_1.createVNode)(c, {\n class: \"top-scheduleSocials_channelSwitcher\",\n modelValue: e.selected,\n \"onUpdate:modelValue\": (n) => t(\"update:channelSelected\", {\n id: e.id,\n source: e.source,\n selected: n\n })\n }, null, 8, [\"modelValue\", \"onUpdate:modelValue\"])\n ]))), 128)), ((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)(e.connectors, (e) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(vue_1.Fragment, { key: e.source }, [r(e.source) ? (0, vue_1.createCommentVNode)(\"\", !0) : ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", pe, [(0, vue_1.createElementVNode)(\"span\", {\n class: \"top-scheduleSocials_channelIcon\",\n \"data-top-icon\": i[e.source]\n }, null, 8, me), (0, vue_1.createElementVNode)(\"a\", {\n class: \"top-scheduleSocials_channelLabel top-ellipsis1\",\n href: e.connectLink,\n target: \"_blank\"\n }, (0, vue_1.toDisplayString)(e.connectLabel), 9, he)]))], 64))), 128))])]);\n };\n }\n });\n exports.TopSchedule = ne;\n exports.TopScheduleEmails = se;\n exports.TopScheduleSocials = ge;\n});\n//# sourceMappingURL=schedule.js.map\n","import { computed, type MaybeRefOrGetter, toValue } from 'vue';\nimport type { Day, Props } from '../types';\nimport { useI18n } from '@/core/app';\n\n/**\n * Формирует список дней для выбранного режима календаря.\n */\nexport const useDaysByCalendarMode = (mode: MaybeRefOrGetter<Props['mode']>) => {\n\tconst i18n = useI18n();\n\n\treturn computed<Day[]>(() => {\n\t\tswitch (toValue(mode)) {\n\t\t\t// Дни месяца\n\t\t\tcase 'dayOfMonth': {\n\t\t\t\tconst days: Day[] = Array.from({ length: 27 }, (_, index) => ({\n\t\t\t\t\tvalue: String(index + 1) as Day['value'],\n\t\t\t\t\ttitle: String(index + 1),\n\t\t\t\t}));\n\n\t\t\t\tdays.push({\n\t\t\t\t\tvalue: 'LAST_OF_MONTH',\n\t\t\t\t\ttitle: '',\n\t\t\t\t\tisIcon: true,\n\t\t\t\t});\n\n\t\t\t\treturn days;\n\t\t\t}\n\n\t\t\t// Дни недели\n\t\t\tcase 'dayOfWeek':\n\t\t\t\treturn [\n\t\t\t\t\t{ value: 'MONDAY', title: i18n.Calendar.Dw_1 },\n\t\t\t\t\t{ value: 'TUESDAY', title: i18n.Calendar.Dw_2 },\n\t\t\t\t\t{ value: 'WEDNESDAY', title: i18n.Calendar.Dw_3 },\n\t\t\t\t\t{ value: 'THURSDAY', title: i18n.Calendar.Dw_4 },\n\t\t\t\t\t{ value: 'FRIDAY', title: i18n.Calendar.Dw_5 },\n\t\t\t\t\t{ value: 'SATURDAY', title: i18n.Calendar.Dw_6 },\n\t\t\t\t\t{ value: 'SUNDAY', title: i18n.Calendar.Dw_7 },\n\t\t\t\t];\n\n\t\t\tdefault:\n\t\t\t\treturn [];\n\t\t}\n\t});\n};\n","<script setup lang=\"ts\">\nimport type { Props } from '@/components/schedule/schedule/components/timeSelector/types';\n\nconst props = defineProps<Props>();\n\nconst times = defineModel<Props['modelValue']>({\n\trequired: true,\n});\n\n/**\n * Варианты выбора часа от `00` до `23`.\n *\n * Поддерижвает вставку произвольного значения через `modelValue` для констант периода.\n */\nconst hourOptions = Array.from({ length: 24 }, (_, index) => ({\n\tvalue: String(index),\n\ttitle: String(index).padStart(2, '0'),\n}));\n\n/**\n * Предустановленные варианты минут.\n *\n * Поддерижвает вставку произвольного значения через `modelValue`.\n */\nconst minuteOptions = Array.from({ length: 4 }, (_, index) => {\n\tconst minute = index * 15;\n\n\treturn {\n\t\tvalue: String(minute),\n\t\ttitle: String(minute).padStart(2, '0'),\n\t};\n});\n\nconst updateTimeByIndex = (index: number, patch: Partial<Props['modelValue'][number]>) => {\n\tconst nextTimes = [...times.value];\n\tnextTimes[index] = { ...nextTimes[index], ...patch };\n\n\ttimes.value = nextTimes;\n};\n\n/**\n * Добавить временной слот.\n *\n * UX: Временной слот должен добавляться в конец списка:\n * - текущий временной слот не должен заменться новым и спускаться ниже\n * - пржений список сохраняет привычный порядок\n * - должно быть видно новый слот\n * - новый слот должно быть можно удалить\n */\nconst addTime = () => {\n\ttimes.value = [\n\t\t...times.value,\n\t\t{\n\t\t\thour: '0',\n\t\t\tminute: '0',\n\t\t},\n\t];\n};\n\nconst delTime = (index: number) => {\n\ttimes.value = times.value.filter((_, timeIndex) => timeIndex !== index);\n};\n</script>\n\n<template>\n\t<div class=\"top-scheduleTimeSelector\">\n\t\t<div v-for=\"(time, index) in times\" :key=\"index\" class=\"top-scheduleTimeSelector_item\">\n\t\t\t<TopSelect\n\t\t\t\tclass=\"top-scheduleTimeSelector_hour\"\n\t\t\t\t:modelValue=\"time.hour\"\n\t\t\t\t:options=\"hourOptions\"\n\t\t\t\tavailableCustomValue\n\t\t\t\t@update:modelValue=\"updateTimeByIndex(index, { hour: $event as Props['modelValue'][number]['hour'] })\"\n\t\t\t/>\n\n\t\t\t<TopSelect\n\t\t\t\tclass=\"top-scheduleTimeSelector_minute\"\n\t\t\t\t:modelValue=\"time.minute\"\n\t\t\t\t:options=\"minuteOptions\"\n\t\t\t\tavailableCustomValue\n\t\t\t\t@update:modelValue=\"updateTimeByIndex(index, { minute: $event as Props['modelValue'][number]['minute'] })\"\n\t\t\t/>\n\n\t\t\t<TopButton\n\t\t\t\tv-if=\"props.multipleTimes || times.length > 1\"\n\t\t\t\t@click=\"index ? delTime(index) : addTime()\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\t:icon=\"index ? '' : ''\"\n\t\t\t/>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport type { Props } from '@/components/schedule/schedule/components/calendar/types';\nimport { useDaysByCalendarMode } from './composables/useDaysByCalendarMode';\nimport { numberEnding } from '@/core/utils/string';\nimport { computed } from 'vue';\nimport TopScheduleTimeSelector from '@/components/schedule/schedule/components/timeSelector/timeSelector.vue';\n\nconst props = defineProps<Props>();\n\nconst selectedDays = defineModel<Props['modelValue']>({\n\trequired: true,\n});\n\nconst times = defineModel<Props['times']>('times', {\n\trequired: true,\n});\n\nconst days = useDaysByCalendarMode(() => props.mode);\n\nconst isAllDaysSelected = computed(() => selectedDays.value.includes('ALL') || selectedDays.value.length === days.value.length);\n\nconst toggleDay = (day: Props['modelValue'][number]) => {\n\tconst nextDays = selectedDays.value.includes('ALL') ? days.value.map(item => item.value) : [...selectedDays.value];\n\tconst dayIndex = nextDays.indexOf(day);\n\n\tif (dayIndex === -1) {\n\t\tnextDays.push(day);\n\t} else {\n\t\tnextDays.splice(dayIndex, 1);\n\t}\n\n\tselectedDays.value = nextDays.length === days.value.length ? ['ALL'] : nextDays;\n};\n\nconst toggleSelectAll = () => {\n\tselectedDays.value = isAllDaysSelected.value ? [] : ['ALL'];\n};\n</script>\n\n<template>\n\t<div class=\"top-scheduleCalendar\">\n\t\t<div class=\"top-scheduleCalendar_header\">\n\t\t\t<TopScheduleTimeSelector v-model=\"times\" :multipleTimes />\n\n\t\t\t<TopButton\n\t\t\t\t@click=\"toggleSelectAll()\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ttabindex=\"0\"\n\t\t\t>\n\t\t\t\t{{ isAllDaysSelected ? $i18n.Common.Clear : $i18n.Common.Select_all }}\n\t\t\t</TopButton>\n\t\t</div>\n\n\t\t<div class=\"top-scheduleCalendar_calendar\">\n\t\t\t<label\n\t\t\t\tclass=\"top-scheduleCalendar_calendarDay\"\n\t\t\t\tv-for=\"day in days\"\n\t\t\t\t:key=\"day.value\"\n\t\t\t>\n\t\t\t\t<input\n\t\t\t\t\tclass=\"top-scheduleCalendar_calendarDayCheckbox\"\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t:value=\"day.value\"\n\t\t\t\t\t:checked=\"selectedDays.includes('ALL') || selectedDays.includes(day.value)\"\n\t\t\t\t\t@change=\"toggleDay(day.value)\"\n\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t>\n\n\t\t\t\t<span :data-top-icon=\"day.isIcon ? day.title : undefined\">\n\t\t\t\t\t<template v-if=\"!day.isIcon\">\n\t\t\t\t\t\t{{ day.title }}\n\t\t\t\t\t</template>\n\t\t\t\t</span>\n\t\t\t</label>\n\t\t</div>\n\n\t\t<span\n\t\t\t:class=\"{\n\t\t\t\t'top-scheduleCalendar_selectionSummary': true,\n\t\t\t'top-error': !selectedDays.length\n\t\t\t}\"\n\t\t>\n\t\t\t<!-- Каждый день или Число проверок в неделю / месяц-->\n\t\t\t{{\n\t\t\t\tisAllDaysSelected ?\n\t\t\t\t\t$i18n.Common.Every_day :\n\t\t\t\t\tselectedDays.length\n\t\t\t}}\n\n\t\t\t<template v-if=\"times.length > 1 || !isAllDaysSelected\">\n\t\t\t\t<!-- Добавить число временных слотов, если их несколько -->\n\t\t\t\t{{ times.length > 1 ? ` × ${times.length}` : '' }}\n\n\t\t\t\t<!-- Суффикс \"раз\" -->\n\t\t\t\t{{\n\t\t\t\t\tnumberEnding(\n\t\t\t\t\t\ttimes.length === 1 ? selectedDays.length : times.length,\n\t\t\t\t\t\t$i18n.Common.time_a_0,\n\t\t\t\t\t\t$i18n.Common.time_a_0,\n\t\t\t\t\t\t$i18n.Common.time_a_2,\n\t\t\t\t\t)\n\t\t\t\t}}\n\n\t\t\t\t<!-- В неделю / месяц-->\n\t\t\t\t{{ mode === 'dayOfWeek' ? $i18n.Common.a_week : $i18n.Common.a_month }}\n\t\t\t</template>\n\t\t</span>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","import type { Props as CalendarProps } from '@/components/schedule/schedule/components/calendar/types';\nimport type { Mode, Props } from './types';\nimport type { Option as TopSelectOption } from '@/components/forms/select/types';\nimport { useI18n } from '@/core/plugins/i18n';\n\n/**\n * Генерирует варианты задержки запуска после апдейта Яндекса.\n *\n * См. Апометр\n */\nexport const genAfterYandexUpdatedOptions = (): TopSelectOption[] => {\n\tconst i18n = useI18n();\n\n\treturn [\n\t\t{\n\t\t\tvalue: '0',\n\t\t\ttitle: i18n.Projects.immediately,\n\t\t},\n\t\t...Array.from({ length: 24 }, (_, index) => ({\n\t\t\tvalue: String(index + 1),\n\t\t\ttitle: i18n('Projects', 'in_hour', { hour: index + 1 }),\n\t\t})),\n\t];\n};\n\n/**\n * Проверяет, относится ли режим к календарным режимам.\n *\n * Календарный режим, это режим с выбором дней недели или месяца.\n */\nexport const isCalendarMode = (value: Mode): value is CalendarProps['mode'] => value === 'dayOfWeek' || value === 'dayOfMonth';\n\n/**\n * Определяет режим расписания по выбранным дням.\n */\nexport const getModeByDays = (days: Props['modelValue']['days'], currentMode: Mode = 'onDemand'): Mode => {\n\tif (days.includes('YANDEX_UPDATE')) return 'afterYandexUpdated';\n\tif (days.includes('CHECK_POSITIONS')) return 'afterCheck';\n\tif (days.includes('LAST_OF_MONTH') || days.some(day => /^\\d+$/.test(day))) return 'dayOfMonth';\n\n\tif (days.length) {\n\t\t// Сохраняем текущий календарный режим\n\t\tif (isCalendarMode(currentMode)) return currentMode;\n\n\t\t// Режим по умолчанию для `ALL`\n\t\treturn 'dayOfWeek';\n\t}\n\n\treturn currentMode;\n};\n","import { computed, type Ref } from 'vue';\nimport type { Option as TopSelectOption } from '@/components/forms/select/types';\nimport { useI18n } from '@/core/plugins/i18n';\nimport type { Mode, Props } from '../types';\n\nconst defaultModsGo: readonly Mode[] = ['onDemand', 'dayOfWeek', 'dayOfMonth'];\nconst defaultModsReport: readonly Mode[] = ['onDemand', 'afterCheck'];\n\n/**\n * Формирует реактивный список режимов расписания с учетом дополнительных режимов.\n */\nexport const useModeOptions = (props: Props, mode: Ref<Mode>) => {\n\tconst i18n = useI18n();\n\n\treturn computed<TopSelectOption[]>(() => {\n\t\tconst modes: Mode[] = props.type === 'go' ? [...defaultModsGo] : [...defaultModsReport];\n\n\t\tif (props.extraMods) {\n\t\t\tmodes.push(...props.extraMods);\n\t\t}\n\n\t\t// Всегда отображать выбранный режим.\n\t\tif (!modes.includes(mode.value)) modes.push(mode.value);\n\n\t\t// Словарь Dynamics нужен только потребителям режима afterCheck.\n\t\tconst titles: Record<Mode, string> = {\n\t\t\tonDemand: i18n.Projects.Settings_on_demand,\n\t\t\tdayOfWeek: i18n.Projects.Report_on_weekdays,\n\t\t\tdayOfMonth: i18n.Projects.Settings_particular_days,\n\t\t\tafterYandexUpdated: i18n.Projects.After_updates,\n\t\t\tafterCheck: modes.includes('afterCheck') ? i18n.Dynamics.Report_after_tracking_30min_1 : '',\n\t\t};\n\n\t\treturn modes.map(value => ({ value, title: titles[value] }));\n\t});\n};\n","import { watch, type Ref } from 'vue';\nimport type { Mode, Props } from '../types';\nimport { isCalendarMode } from '../utils';\n\n/**\n * Создаёт независимую копию модели расписания.\n */\nconst cloneModel = (model: Props['modelValue']): Props['modelValue'] => ({\n\tdays: [...model.days],\n\ttimes: model.times.map(time => ({ ...time })),\n});\n\n/**\n * Сохраняет дни и временные слоты модели по режимам расписания.\n */\nexport const useModelByModeCache = (model: Ref<Props['modelValue']>, mode: Ref<Mode>) => {\n\ttype TimeCacheMode = Mode | 'calendar';\n\n\tconst cache = {\n\t\t// Дни календарных режимов кэшируем отдельно.\n\t\tdaysByMode: {} as Partial<Record<Mode, Props['modelValue']['days']>>,\n\n\t\t// Временные слоты храним по режимам, используя общий ключ `calendar` для недели и месяца.\n\t\ttimesByMode: {} as Partial<Record<TimeCacheMode, Props['modelValue']['times']>>,\n\t};\n\n\t// Сохранять настройки выбранного режима\n\twatch(model, () => {\n\t\tconst modelCached = cloneModel(model.value);\n\n\t\tcache.daysByMode[mode.value] = modelCached.days;\n\t\tcache.timesByMode[isCalendarMode(mode.value) ? 'calendar' : mode.value] = modelCached.times;\n\t}, { deep: true, immediate: true });\n\n\treturn cache;\n};\n","<script setup lang=\"ts\">\nimport { ref, watch } from 'vue';\nimport TopSelect from '@/components/forms/select/select.vue';\nimport TopScheduleCalendar from '@/components/schedule/schedule/components/calendar/calendar.vue';\nimport type { Mode, Props, Slots } from './types';\nimport { genAfterYandexUpdatedOptions, getModeByDays, isCalendarMode } from './utils';\nimport { useModeOptions } from './composables/useModeOptions';\nimport { useModelByModeCache } from './composables/useModelByModeCache';\n\n/**\n * Используется для размытия нагрузка на разное время\n */\nconst randomHour = String(Math.floor(Math.random() * 7) + 1) as Props['modelValue']['times'][number]['hour'];\n\nconst props = withDefaults(defineProps<Props>(), {\n\t// Тип `go` соответствует запуску инструмента по расписанию.\n\ttype: 'go',\n});\n\ndefineSlots<Slots>();\n\nconst model = defineModel<Props['modelValue']>({\n\trequired: true,\n});\n\n// Выбранный режим\nconst mode = ref<Mode>(getModeByDays(model.value.days));\n\n// Список режимов\nconst modeOptions = useModeOptions(props, mode);\n\nconst afterYandexUpdatedOptions = genAfterYandexUpdatedOptions();\n\n// Кэш дней по режимам и временных слотов по группам расписания.\nconst cache = useModelByModeCache(model, mode);\n\n/**\n * При смене `days` сразу проверяем доступное значение режима и обновляем его, если надо.\n *\n * @note 1 в цепочке перед `watch(mode)`, цепочки не цикличны\n */\nwatch(\n\t() => model.value.days,\n\t() => mode.value = getModeByDays(model.value.days, mode.value),\n\t{ deep: true, immediate: true },\n);\n\n/**\n * При смене режима устанавливаем соответствующие `days` и `times`.\n *\n * Для календарных режимов восстанавливаем ранее сохранённый выбор дней.\n *\n * @note 2 в цепочке после `watch(() => model.value.days)`, цепочки не цикличны\n */\nwatch(mode, (newMode, oldMode) => {\n\t// Для недели и месяца временные слоты берём из общего кэша `calendar`.\n\tconst daysCached = cache.daysByMode[newMode];\n\tconst timesCached = cache.timesByMode[isCalendarMode(newMode) ? 'calendar' : newMode];\n\n\tconst modelPath: Partial<Props['modelValue']> = {};\n\tconst modeChaged = oldMode;\n\n\tswitch (newMode) {\n\t\tcase 'onDemand':\n\t\t\tif (modeChaged || model.value.days.length) modelPath.days = [];\n\t\t\tif (modeChaged || model.value.times.length) modelPath.times = [];\n\n\t\t\tbreak;\n\t\tcase 'dayOfWeek':\n\t\tcase 'dayOfMonth': {\n\t\t\tif (modeChaged || !model.value.days.length) modelPath.days = daysCached ?? ['ALL'];\n\t\t\tif (modeChaged || !model.value.times.length) modelPath.times = timesCached?.length ? timesCached : [{ hour: randomHour, minute: '0' }];\n\n\t\t\tbreak;\n\t\t}\n\t\tcase 'afterYandexUpdated':\n\t\t\tif (modeChaged || model.value.days[0] !== 'YANDEX_UPDATE') modelPath.days = ['YANDEX_UPDATE'];\n\t\t\tif (modeChaged || !model.value.times.length) modelPath.times = timesCached?.length ? timesCached : [{ hour: '1', minute: '0' }];\n\n\t\t\tbreak;\n\t\tcase 'afterCheck':\n\t\t\tif (modeChaged || model.value.days[0] !== 'CHECK_POSITIONS') modelPath.days = ['CHECK_POSITIONS'];\n\t\t\tif (modeChaged || !model.value.times.length) modelPath.times = timesCached?.length ? timesCached : [{ hour: '0', minute: '0' }];\n\n\t\t\tbreak;\n\t}\n\n\t// Отправляем новое значение только тогда, когда хотя бы одно поле требует изменения.\n\tif (Object.keys(modelPath).length) model.value = { ...model.value, ...modelPath };\n}, { immediate: true });\n</script>\n\n<template>\n\t<div :class=\"['top-schedule', 'top-schedule-type_' + type]\">\n\t\t<div class=\"top-schedule_header\">\n\t\t\t<div class=\"top-schedule_headerTitle\">\n\t\t\t\t{{ title ?? (type === 'go' ? $i18n.Projects.Checks : $i18n.Projects.Reports) }}\n\t\t\t</div>\n\n\t\t\t<TopSelect\n\t\t\t\tclass=\"top-schedule_headerMods\"\n\t\t\t\tv-model=\"mode\"\n\t\t\t\t:options=\"modeOptions\"\n\t\t\t\tsize=\"s\"\n\t\t\t/>\n\t\t</div>\n\n\t\t<div v-if=\"mode !== 'onDemand' && (isCalendarMode(mode) || mode === 'afterYandexUpdated' || $slots.default)\" class=\"top-schedule_body\">\n\t\t\t<TopScheduleCalendar\n\t\t\t\tv-if=\"isCalendarMode(mode)\"\n\t\t\t\tv-model=\"model.days\"\n\t\t\t\tv-model:times=\"model.times\"\n\t\t\t\t:mode\n\t\t\t\t:multipleTimes\n\t\t\t/>\n\n\t\t\t<TopSelect\n\t\t\t\tv-if=\"mode === 'afterYandexUpdated' && model.times[0]\"\n\t\t\t\tclass=\"top-schedule_afterYandexUpdatedDelay\"\n\t\t\t\tv-model=\"model.times[0].hour\"\n\t\t\t\t:options=\"afterYandexUpdatedOptions\"\n\t\t\t\tsize=\"s\"\n\t\t\t/>\n\n\t\t\t<hr v-if=\"(isCalendarMode(mode) || mode === 'afterYandexUpdated') && $slots.default\">\n\n\t\t\t<slot :mode></slot>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { computed, nextTick, onBeforeUnmount, onMounted, ref } from 'vue';\nimport TopInput from '@/components/forms/input/input.vue';\nimport TopButton from '@/components/forms/button/button.vue';\nimport Core from '@/core/core/core';\nimport { isEmail } from '@/core/utils/check';\nimport { useI18n } from '@/core/plugins/i18n';\nimport type { Props, Emits } from '@/components/schedule/schedule/components/emails/selector/types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\temails: () => [],\n\tgetEmailSuggestions: () => [],\n});\n\nconst model = defineModel<Props['modelValue']>({ required: true });\n\nconst emit = defineEmits<Emits>();\n\nconst i18n = useI18n();\nconst $ = Core.$;\n\nconst elRootRef = ref<HTMLElement>();\nconst elInputRef = ref<InstanceType<typeof TopInput>>();\nlet elInput: HTMLInputElement | null = null;\nconst autocompleteCache: Record<string, string[]> = {};\n\n// При достижении лимита отключаем поле ввода и скрываем кнопку добавления.\nconst isLimitReached = computed(() => !!props.maxEmailsCount && props.emails.length >= props.maxEmailsCount);\n\nconst filterEmails = (emails: string[]) => emails.filter(email => !props.emails.includes(email));\n\nconst submit = (value: unknown = model.value) => {\n\tconst email = String(value).trim();\n\tif (!email) return;\n\n\tif (!isEmail(email)) {\n\t\tvoid Core.notice(i18n.Common.Enter_valid_email_notice, 'error');\n\n\t\treturn;\n\t}\n\n\temit('submit', email);\n};\n\nconst initAutocomplete = async () => {\n\tawait nextTick();\n\n\telInput = elInputRef.value?.$el.querySelector('input') ?? null;\n\tif (!elInput) return;\n\n\tif (!$?.ui?.autocomplete) {\n\t\tconsole.info('Для работы autocomplete требуется глобальная загрузка jQuery UI Autocomplete');\n\n\t\treturn;\n\t}\n\n\t$(elInput).autocomplete({\n\t\tappendTo: elRootRef.value,\n\t\tminLength: 0,\n\t\tsource: async (request: { term: string }, response: (items: Array<{ label: string, value: string }>) => void) => {\n\t\t\tconst term = request.term;\n\n\t\t\tif (!(term in autocompleteCache)) {\n\t\t\t\tautocompleteCache[term] = await props.getEmailSuggestions(term);\n\t\t\t}\n\n\t\t\tresponse(filterEmails(autocompleteCache[term]).map(email => ({\n\t\t\t\tlabel: email,\n\t\t\t\tvalue: email,\n\t\t\t})));\n\t\t},\n\t\tselect: (event: Event, ui: { item?: { value: string } }) => {\n\t\t\tif (!ui.item || !elInput) return;\n\n\t\t\tevent.preventDefault();\n\t\t\tsubmit(ui.item.value);\n\t\t\tmodel.value = '';\n\n\t\t\t$(elInput).trigger('focus');\n\t\t},\n\t});\n\n\t$(elInput).attr('autocomplete', 'disabled');\n\t$(elInput).on('focus.scheduleEmailSelector', () => {\n\t\tif (!elInput) return;\n\n\t\t$(elInput).trigger('input');\n\t});\n};\n\nonMounted(() => {\n\tvoid initAutocomplete();\n});\n\nonBeforeUnmount(() => {\n\tif (!$?.ui?.autocomplete || !elInput) return;\n\n\t$(elInput).off('focus.scheduleEmailSelector');\n\t$(elInput).autocomplete('destroy');\n});\n</script>\n\n<template>\n\t<div\n\t\tclass=\"top-scheduleEmailSelector\"\n\t\tref=\"elRootRef\"\n\t>\n\t\t<!-- UX: Компонент не должен скраываться, это приведет к CLS -->\n\t\t<TopInput\n\t\t\tref=\"elInputRef\"\n\t\t\tv-model=\"model\"\n\t\t\t@keydown.enter.prevent=\"submit()\"\n\t\t\t:title=\"$i18n.Common.Enter_email\"\n\t\t\ttype=\"email\"\n\t\t\tsize=\"m\"\n\t\t\t:disabled=\"isLimitReached\"\n\t\t>\n\t\t\t<TopButton\n\t\t\t\tv-if=\"!isLimitReached\"\n\t\t\t\tclass=\"top-scheduleEmailSelector_submit\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ticon=\"\"\n\t\t\t\t@click.prevent=\"submit()\"\n\t\t\t/>\n\t\t</TopInput>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport type { Emits, Props } from '@/components/schedule/schedule/components/emails/types';\nimport ScheduleEmailSelector from '@/components/schedule/schedule/components/emails/selector/selector.vue';\n\nconst props = withDefaults(defineProps<Props>(), {\n\temails: () => [],\n\tgetEmailSuggestions: () => [],\n});\n\nconst emit = defineEmits<Emits>();\n\nconst value = ref('');\n\nconst addEmail = (email: string) => {\n\tconst preparedEmail = email.trim();\n\n\tif (!preparedEmail || props.emails.includes(preparedEmail)) {\n\t\tvalue.value = '';\n\n\t\treturn;\n\t}\n\n\temit('add:email', preparedEmail);\n\n\tvalue.value = '';\n};\n</script>\n\n<template>\n\t<div class=\"top-scheduleEmail\">\n\t\t<div class=\"top-scheduleEmail_title\">\n\t\t\t{{ $i18n.Projects.Reports_send_to_address }} E-mail:\n\t\t</div>\n\n\t\t<ScheduleEmailSelector\n\t\t\tv-model=\"value\"\n\t\t\t:emails\n\t\t\t:maxEmailsCount\n\t\t\t:getEmailSuggestions\n\t\t\t@submit=\"addEmail\"\n\t\t/>\n\n\t\t<div\n\t\t\tv-if=\"emails.length\"\n\t\t\tclass=\"top-scheduleEmail_emails\"\n\t\t>\n\t\t\t<div\n\t\t\t\tclass=\"top-scheduleEmail_emailsItem\"\n\t\t\t\tv-for=\"email in emails\"\n\t\t\t\t:key=\"email\"\n\t\t\t>\n\t\t\t\t<span class=\"top-ellipsis1\">{{ email }}</span>\n\n\t\t\t\t<TopButton\n\t\t\t\t\t@click=\"emit('remove:email', email)\"\n\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\ticon=\"\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport type { Emits, Props } from '@/components/schedule/schedule/components/socials/types';\n\nconst props = defineProps<Props>();\ndefineEmits<Emits>();\n\ntype ReportChannelSource = Props['channels'][number]['source'];\n\nconst hasChannel = (source: ReportChannelSource) => props.channels.some(channel => channel.source === source);\n\nconst sourceIconBySource: Record<ReportChannelSource, string> = {\n\tinformer: '',\n\ttelegram: '',\n};\n</script>\n\n<template>\n\t<div class=\"top-scheduleSocials\">\n\t\t<div class=\"top-scheduleSocials_title\">\n\t\t\t{{ $i18n.Projects.Reports_send_to_address }}\n\t\t</div>\n\n\t\t<div class=\"top-scheduleSocials_channels\">\n\t\t\t<div\n\t\t\t\tclass=\"top-scheduleSocials_channel\"\n\t\t\t\tv-for=\"channel in channels\"\n\t\t\t\t:key=\"`${channel.source}-${channel.id}`\"\n\t\t\t>\n\t\t\t\t<span\n\t\t\t\t\tclass=\"top-scheduleSocials_channelIcon\"\n\t\t\t\t\t:data-top-icon=\"sourceIconBySource[channel.source]\"\n\t\t\t\t></span>\n\n\t\t\t\t<span class=\"top-scheduleSocials_channelLabel top-ellipsis1\">\n\t\t\t\t\t{{ channel.label }}\n\t\t\t\t</span>\n\n\t\t\t\t<TopButton\n\t\t\t\t\tv-if=\"channel.settingLink\"\n\t\t\t\t\tclass=\"top-scheduleSocials_channelSettings\"\n\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t:href=\"channel.settingLink\"\n\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\ticon=\"\"\n\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t></TopButton>\n\n\t\t\t\t<TopSwitcher\n\t\t\t\t\tclass=\"top-scheduleSocials_channelSwitcher\"\n\t\t\t\t\t:modelValue=\"channel.selected\"\n\t\t\t\t\t@update:modelValue=\"$emit('update:channelSelected', {\n\t\t\t\t\t\tid: channel.id,\n\t\t\t\t\t\tsource: channel.source,\n\t\t\t\t\t\tselected: $event as boolean,\n\t\t\t\t\t})\"\n\t\t\t\t/>\n\t\t\t</div>\n\n\t\t\t<template\n\t\t\t\tv-for=\"connector in connectors\"\n\t\t\t\t:key=\"connector.source\"\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tv-if=\"!hasChannel(connector.source)\"\n\t\t\t\tclass=\"top-scheduleSocials_channel\"\n\t\t\t\t>\n\t\t\t\t\t<span\n\t\t\t\t\t\tclass=\"top-scheduleSocials_channelIcon\"\n\t\t\t\t\t\t:data-top-icon=\"sourceIconBySource[connector.source]\"\n\t\t\t\t\t></span>\n\n\t\t\t\t\t<a\n\t\t\t\t\t\tclass=\"top-scheduleSocials_channelLabel top-ellipsis1\"\n\t\t\t\t\t\t:href=\"connector.connectLink\"\n\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{{ connector.connectLabel }}\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n"]}
@@ -5,8 +5,8 @@
5
5
  _autoloadCSSCore.insertCSSLinkToPage(fileNames, true);
6
6
  /* end import css */
7
7
 
8
- import { E as e, O as t, c as n, h as r, n as i } from "../.chunks/forms-Ch1q0UUt.es.js";
9
- import "../.chunks/app-CY6euLQJ.es.js";
8
+ import { E as e, O as t, c as n, h as r, n as i } from "../.chunks/forms-CjJD60m3.es.js";
9
+ import "../.chunks/app-BbV6AslA.es.js";
10
10
  import { isEmail as a } from "../utils/check.js";
11
11
  import { numberEnding as o } from "../utils/string.js";
12
12
  import { Fragment as s, computed as c, createBlock as l, createCommentVNode as u, createElementBlock as d, createElementVNode as f, createTextVNode as p, createVNode as m, defineComponent as h, mergeModels as g, nextTick as _, normalizeClass as v, onBeforeUnmount as y, onMounted as b, openBlock as x, ref as S, renderList as C, renderSlot as w, resolveComponent as T, toDisplayString as E, toValue as D, unref as O, useModel as k, watch as A, withCtx as j, withKeys as ee, withModifiers as M } from "vue";