@topvisor/ui 1.5.6-competitorSelector.1 → 1.5.6-topSchedule.1

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.
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@topvisor/ui",
3
3
  "private": false,
4
- "version": "1.5.6-competitorSelector.1",
4
+ "version": "1.5.6-topSchedule.1",
5
5
  "type": "module",
6
6
  "description": "Topvisor UI-kit Vue",
7
7
  "author": "Topvisor",
@@ -1,2 +1,2 @@
1
- define([`require`,`exports`,`../.chunks/forms-BiKUURH4.amd`,`../utils/check.amd`,`../utils/string.amd`,`vue`,`../.chunks/app-0qVCkgOO.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.TopScheduleTimeSelectors=t.TopScheduleTimeSelector=t.TopScheduleReportSend=t.TopScheduleEmailSelector=t.TopScheduleEmail=t.TopScheduleContainer=t.TopScheduleCalendar=t.TopSchedule=void 0;var s={class:`top-schedule_header`},c={class:`top-schedule_headerTitle`},l={key:0,class:`top-schedule_body`},u=(0,a.defineComponent)({name:`TopSchedule`,__name:`schedule`,props:{styling:{},triggerType:{default:`onDemand`},triggerTypeOptions:{},title:{}},emits:[`update:triggerType`],setup(e){let t=e,r=(0,n.E)(),i={track:r.Projects.Checks,report:r.Projects.Reports,neutral:``},o=t.title??i[t.styling];return(t,r)=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{class:(0,a.normalizeClass)({"top-schedule":!0,[`top-schedule-style_${e.styling}`]:!0})},[(0,a.createElementVNode)(`div`,s,[(0,a.createElementVNode)(`div`,c,(0,a.toDisplayString)((0,a.unref)(o)),1),(0,a.createVNode)(n.n,{class:`top-schedule_headerTriggerType`,modelValue:e.triggerType,"onUpdate:modelValue":r[0]||=e=>t.$emit(`update:triggerType`,e),options:e.triggerTypeOptions,size:`s`},null,8,[`modelValue`,`options`])]),e.triggerType!==`onDemand`&&t.$slots.body?((0,a.openBlock)(),(0,a.createElementBlock)(`div`,l,[(0,a.renderSlot)(t.$slots,`body`)])):(0,a.createCommentVNode)(``,!0)],2))}}),d={},f={class:`top-schedule_bodyContainer`};t.TopSchedule=u;function p(e,t){return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,f,[(0,a.renderSlot)(e.$slots,`default`)])}var m=(0,n.u)(d,[[`render`,p]]),h=e=>{let t=(0,n.E)();switch(e){case`dayOfMonth`:{let e=Array.from({length:27},(e,t)=>({value: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}]}},g={class:`top-scheduleCalendar`},_={class:`top-scheduleCalendar_header`},v={class:`top-scheduleCalendar_calendar`},y=[`value`],b=[`data-top-icon`],x=(0,a.defineComponent)({__name:`calendar`,props:{modelValue:{},mode:{}},emits:[`update:modelValue`],setup(e,{emit:t}){let r=(0,n.E)(),o=e,s=t,c=(0,a.computed)({get:()=>o.modelValue,set:e=>s(`update:modelValue`,e)}),l=(0,a.computed)(()=>h(o.mode)),u=(0,a.computed)(()=>{let e=c.value.length,t=``;switch(o.mode){case`dayOfWeek`:if(e===7)return r.Common.Every_day;t=r.Common.a_week;break;case`dayOfMonth`:if(e===28)return r.Common.Every_day;t=r.Common.a_month;break}return`${e} ${(0,i.numberEnding)(e,r.Common.time_a_0,r.Common.time_a_0,r.Common.time_a_2)} ${t}`}),d=(0,a.computed)(()=>c.value.length>1),f=()=>{c.value=d.value?[]:l.value.map(e=>e.value)};return(e,t)=>{let n=(0,a.resolveComponent)(`TopButton`);return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,g,[(0,a.createElementVNode)(`div`,_,[(0,a.renderSlot)(e.$slots,`header`),(0,a.createVNode)(n,{class:`top-scheduleCalendar_headerButton`,onClick:f,color:`theme`,tabindex:`0`},{default:(0,a.withCtx)(()=>[(0,a.createTextVNode)((0,a.toDisplayString)(d.value?e.$i18n.Common.Clear:e.$i18n.Common.Select_all),1)]),_:1})]),(0,a.createElementVNode)(`div`,v,[((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(l.value,e=>((0,a.openBlock)(),(0,a.createElementBlock)(`label`,{class:`top-scheduleCalendar_calendarDay`,key:e.value},[(0,a.withDirectives)((0,a.createElementVNode)(`input`,{class:`top-scheduleCalendar_calendarDayRadio`,type:`checkbox`,value:e.value,"onUpdate:modelValue":t[0]||=e=>c.value=e,tabindex:`0`},null,8,y),[[a.vModelCheckbox,c.value]]),(0,a.createElementVNode)(`span`,{class:`top-scheduleCalendar_calendarDayTitle`,"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,b)]))),128))]),(0,a.createElementVNode)(`div`,{class:(0,a.normalizeClass)({"top-scheduleCalendar_selectedCount":!0,"top-error":!c.value.length})},(0,a.toDisplayString)(u.value),3)])}}}),S=(0,a.defineComponent)({__name:`selector`,props:{modelValue:{},emails:{default:()=>[]},getEmailSuggestions:{type:Function,default:()=>[]}},emits:[`update:modelValue`,`submit`],setup(e,{emit:t}){let i=e,o=t,s=(0,n.E)(),c=n.O.$,l=(0,a.ref)(),u=(0,a.ref)(),d=null,f={},p=e=>e.filter(e=>!i.emails.includes(e)),m=(e=i.modelValue)=>{let t=String(e).trim();if(t){if(!(0,r.isEmail)(t)){n.O.notice(s.Common.Enter_valid_email_notice,`error`);return}o(`submit`,t)}},h=async()=>{if(await(0,a.nextTick)(),d=u.value?.$el.querySelector(`input`)??null,d){if(!c?.ui?.autocomplete){console.info(`Для работы autocomplete требуется глобальная загрузка jQuery UI Autocomplete`);return}c(d).autocomplete({appendTo:l.value,minLength:0,source:async(e,t)=>{let n=e.term;n in f||(f[n]=await i.getEmailSuggestions(n)),t(p(f[n]).map(e=>({label:e,value:e})))},select:(e,t)=>{!t.item||!d||(e.preventDefault(),m(t.item.value),o(`update:modelValue`,``),c(d).trigger(`focus`))}}),c(d).attr(`autocomplete`,`disabled`),c(d).on(`focus.scheduleEmailSelector`,()=>{d&&c(d).trigger(`input`)})}};return(0,a.onMounted)(()=>{h()}),(0,a.onBeforeUnmount)(()=>{!c?.ui?.autocomplete||!d||(c(d).off(`focus.scheduleEmailSelector`),c(d).autocomplete(`destroy`))}),(t,r)=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{class:`top-scheduleEmailSelector`,ref_key:`elRootRef`,ref:l},[(0,a.createVNode)(n.c,{ref_key:`elInputRef`,ref:u,modelValue:e.modelValue,"onUpdate:modelValue":r[1]||=e=>t.$emit(`update:modelValue`,e),onKeydown:r[2]||=(0,a.withKeys)((0,a.withModifiers)(e=>m(),[`prevent`]),[`enter`]),title:t.$i18n.Common.Enter_email,type:`email`,size:`l`},{default:(0,a.withCtx)(()=>[(0,a.createVNode)(n.h,{class:`top-scheduleEmailSelector_submit`,color:`theme`,icon:``,onClick:r[0]||=(0,a.withModifiers)(e=>m(),[`prevent`])})]),_:1},8,[`modelValue`,`title`])],512))}}),C={class:`top-scheduleEmail`},w={class:`top-scheduleEmail_title`},T={key:0,class:`top-scheduleEmail_selector`},E={key:1,class:`top-scheduleEmail_emails`},D=(0,a.defineComponent)({__name:`email`,props:{emails:{default:()=>[]},getEmailSuggestions:{type:Function,default:()=>[]},maxEmailsCount:{default:-1}},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 r=(0,a.resolveComponent)(`TopButton`);return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,C,[(0,a.createElementVNode)(`div`,w,(0,a.toDisplayString)(t.$i18n.Projects.Reports_send_to_address)+` E-mail: `,1),e.maxEmailsCount&&e.emails.length===e.maxEmailsCount?(0,a.createCommentVNode)(``,!0):((0,a.openBlock)(),(0,a.createElementBlock)(`div`,T,[(0,a.createVNode)(S,{modelValue:i.value,"onUpdate:modelValue":n[0]||=e=>i.value=e,getEmailSuggestions:e.getEmailSuggestions,emails:e.emails,onSubmit:o},null,8,[`modelValue`,`getEmailSuggestions`,`emails`])])),e.emails.length?((0,a.openBlock)(),(0,a.createElementBlock)(`div`,E,[((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.createTextVNode)((0,a.toDisplayString)(e)+` `,1),(0,a.createVNode)(r,{onClick:n=>t.$emit(`remove:email`,e),color:`theme`,icon:``},null,8,[`onClick`])]))),128))])):(0,a.createCommentVNode)(``,!0)])}}}),O={class:`top-scheduleReportSend`},k={class:`top-scheduleReportSend_title`},A={class:`top-scheduleReportSend_channels`},j={class:`top-scheduleReportSend_channelInfo`},M=[`data-top-icon`],N={class:`top-scheduleReportSend_channelInfoLabel`},P={key:0,class:`top-scheduleReportSend_channel`},F={class:`top-scheduleReportSend_channelInfo`},I=[`data-top-icon`],L=[`href`],R=(0,a.defineComponent)({__name:`reportSend`,props:{channels:{},connectors:{default:()=>[]}},emits:[`update:channelSelected`],setup(e){let t=e,n=e=>t.channels.some(t=>t.source===e),r={informer:``,telegram:``};return(t,i)=>{let o=(0,a.resolveComponent)(`TopButton`),s=(0,a.resolveComponent)(`TopSwitcher`);return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,O,[(0,a.createElementVNode)(`div`,k,(0,a.toDisplayString)(t.$i18n.Projects.Reports_send),1),(0,a.createElementVNode)(`div`,A,[((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-scheduleReportSend_channel`,key:`${e.source}-${e.id}`},[(0,a.createElementVNode)(`div`,j,[(0,a.createElementVNode)(`div`,{class:`top-scheduleReportSend_channelInfoIcon`,"data-top-icon":r[e.source]},null,8,M),(0,a.createElementVNode)(`div`,N,(0,a.toDisplayString)(e.label),1),e.settingLink?((0,a.openBlock)(),(0,a.createBlock)(o,{key:0,class:`top-scheduleReportSend_channelInfoSettings`,size:`xs`,href:e.settingLink,icon:``,color:`theme`,tabindex:`0`},null,8,[`href`])):(0,a.createCommentVNode)(``,!0)]),(0,a.createVNode)(s,{modelValue:e.selected,"onUpdate:modelValue":n=>t.$emit(`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},[n(e.source)?(0,a.createCommentVNode)(``,!0):((0,a.openBlock)(),(0,a.createElementBlock)(`div`,P,[(0,a.createElementVNode)(`div`,F,[(0,a.createElementVNode)(`div`,{class:`top-scheduleReportSend_channelInfoIcon`,"data-top-icon":r[e.source]},null,8,I),(0,a.createElementVNode)(`a`,{class:`top-scheduleReportSend_channelInfoLabel top-scheduleReportSend_channelInfoLink`,href:e.connectLink},(0,a.toDisplayString)(e.connectLabel),9,L)])]))],64))),128))])])}}}),z={class:`top-scheduleTimeSelector`},B=(0,a.defineComponent)({__name:`timeSelector`,props:{hour:{},minute:{}},emits:[`update:hour`,`update:minute`],setup(e){let t=Array.from({length:24},(e,t)=>({value:t,title:String(t).padStart(2,`0`)})),n=[{value:0,title:`00`},{value:15,title:`15`},{value:30,title:`30`},{value:45,title:`45`}];return(r,i)=>{let o=(0,a.resolveComponent)(`TopSelect`);return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,z,[(0,a.createVNode)(o,{class:`top-scheduleTimeSelector_hour`,modelValue:e.hour,options:(0,a.unref)(t),"onUpdate:modelValue":i[0]||=e=>r.$emit(`update:hour`,e)},null,8,[`modelValue`,`options`]),(0,a.createVNode)(o,{class:`top-scheduleTimeSelector_minute`,modelValue:e.minute,options:n,"onUpdate:modelValue":i[1]||=e=>r.$emit(`update:minute`,e)},null,8,[`modelValue`])])}}}),V={class:`top-scheduleTimeSelectors`},H=(0,a.defineComponent)({__name:`timeSelectors`,props:{times:{}},emits:[`update:times`],setup(e,{emit:t}){let n=e,r=t,i=new WeakMap,o=0,s=e=>{let t=(0,a.toRaw)(e),n=i.get(t);if(n!==void 0)return n;let r=o++;return i.set(t,r),r},c=(e,t)=>{r(`update:times`,n.times.map((n,r)=>{if(r!==e)return n;let a={...n,...t};return i.set(a,s(n)),a}))},l=()=>{let e={hour:0,minute:0};r(`update:times`,[...n.times,e])};return(t,n)=>{let r=(0,a.resolveComponent)(`TopButton`);return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,V,[((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(e.times,(n,i)=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{class:`top-scheduleTimeSelectors_item`,key:s(n)},[(0,a.createVNode)(B,{hour:n.hour,minute:n.minute,"onUpdate:hour":e=>c(i,{hour:e}),"onUpdate:minute":e=>c(i,{minute:e})},null,8,[`hour`,`minute`,`onUpdate:hour`,`onUpdate:minute`]),i===e.times.length-1?((0,a.openBlock)(),(0,a.createBlock)(r,{key:1,class:`top-scheduleTimeSelectors_itemAdd`,onClick:l,color:`theme`,icon:``})):((0,a.openBlock)(),(0,a.createBlock)(r,{key:0,onClick:n=>t.$emit(`update:times`,e.times.filter((e,t)=>t!==i)),color:`theme`,icon:``},null,8,[`onClick`]))]))),128))])}}});t.TopScheduleContainer=m,t.TopScheduleCalendar=x,t.TopScheduleEmailSelector=S,t.TopScheduleEmail=D,t.TopScheduleReportSend=R,t.TopScheduleTimeSelector=B,t.TopScheduleTimeSelectors=H});
1
+ define([`require`,`exports`,`../.chunks/forms-BiKUURH4.amd`,`../utils/check.amd`,`../utils/string.amd`,`vue`,`../.chunks/app-0qVCkgOO.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.TopScheduleTimeSelectors=t.TopScheduleTimeSelector=t.TopScheduleReportSend=t.TopScheduleEmailSelector=t.TopScheduleEmail=t.TopScheduleContainer=t.TopScheduleCalendar=t.TopSchedule=void 0;var s={class:`top-schedule_header`},c={class:`top-schedule_headerTitle`},l={key:0,class:`top-schedule_body`},u=(0,a.defineComponent)({name:`TopSchedule`,__name:`schedule`,props:{styling:{},triggerType:{default:`onDemand`},triggerTypeOptions:{},title:{}},emits:[`update:triggerType`],setup(e){let t=e,r=(0,n.E)(),i={track:r.Projects.Checks,report:r.Projects.Reports,neutral:``},o=t.title??i[t.styling];return(t,r)=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{class:(0,a.normalizeClass)({"top-schedule":!0,[`top-schedule-style_${e.styling}`]:!0})},[(0,a.createElementVNode)(`div`,s,[(0,a.createElementVNode)(`div`,c,(0,a.toDisplayString)((0,a.unref)(o)),1),(0,a.createVNode)(n.n,{class:`top-schedule_headerTriggerType`,modelValue:e.triggerType,"onUpdate:modelValue":r[0]||=e=>t.$emit(`update:triggerType`,e),options:e.triggerTypeOptions,size:`s`},null,8,[`modelValue`,`options`])]),e.triggerType!==`onDemand`&&t.$slots.body?((0,a.openBlock)(),(0,a.createElementBlock)(`div`,l,[(0,a.renderSlot)(t.$slots,`body`)])):(0,a.createCommentVNode)(``,!0)],2))}}),d={},f={class:`top-schedule_bodyContainer`};t.TopSchedule=u;function p(e,t){return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,f,[(0,a.renderSlot)(e.$slots,`default`)])}var m=(0,n.u)(d,[[`render`,p]]),h=e=>{let t=(0,n.E)();switch(e){case`dayOfMonth`:{let e=Array.from({length:27},(e,t)=>({value: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}]}},g={class:`top-scheduleCalendar`},_={class:`top-scheduleCalendar_header`},v={class:`top-scheduleCalendar_calendar`},y=[`value`],b=[`data-top-icon`],x=(0,a.defineComponent)({__name:`calendar`,props:{modelValue:{},mode:{}},emits:[`update:modelValue`],setup(e,{emit:t}){let r=(0,n.E)(),o=e,s=t,c=(0,a.computed)({get:()=>o.modelValue,set:e=>s(`update:modelValue`,e)}),l=(0,a.computed)(()=>h(o.mode)),u=(0,a.computed)(()=>{let e=c.value.length,t=``;switch(o.mode){case`dayOfWeek`:if(e===7)return r.Common.Every_day;t=r.Common.a_week;break;case`dayOfMonth`:if(e===28)return r.Common.Every_day;t=r.Common.a_month;break}return`${e} ${(0,i.numberEnding)(e,r.Common.time_a_0,r.Common.time_a_0,r.Common.time_a_2)} ${t}`}),d=(0,a.computed)(()=>c.value.length>1),f=()=>{c.value=d.value?[]:l.value.map(e=>e.value)};return(e,t)=>{let n=(0,a.resolveComponent)(`TopButton`);return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,g,[(0,a.createElementVNode)(`div`,_,[(0,a.renderSlot)(e.$slots,`header`),(0,a.createVNode)(n,{class:`top-scheduleCalendar_headerButton`,onClick:f,color:`theme`,tabindex:`0`},{default:(0,a.withCtx)(()=>[(0,a.createTextVNode)((0,a.toDisplayString)(d.value?e.$i18n.Common.Clear:e.$i18n.Common.Select_all),1)]),_:1})]),(0,a.createElementVNode)(`div`,v,[((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(l.value,e=>((0,a.openBlock)(),(0,a.createElementBlock)(`label`,{class:`top-scheduleCalendar_calendarDay`,key:e.value},[(0,a.withDirectives)((0,a.createElementVNode)(`input`,{class:`top-scheduleCalendar_calendarDayRadio`,type:`checkbox`,value:e.value,"onUpdate:modelValue":t[0]||=e=>c.value=e,tabindex:`0`},null,8,y),[[a.vModelCheckbox,c.value]]),(0,a.createElementVNode)(`span`,{class:`top-scheduleCalendar_calendarDayTitle`,"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,b)]))),128))]),(0,a.createElementVNode)(`div`,{class:(0,a.normalizeClass)({"top-scheduleCalendar_selectedCount":!0,"top-error":!c.value.length})},(0,a.toDisplayString)(u.value),3)])}}}),S=(0,a.defineComponent)({__name:`selector`,props:{modelValue:{},emails:{default:()=>[]},getEmailSuggestions:{type:Function,default:()=>[]}},emits:[`update:modelValue`,`submit`],setup(e,{emit:t}){let i=e,o=t,s=(0,n.E)(),c=n.O.$,l=(0,a.ref)(),u=(0,a.ref)(),d=null,f={},p=e=>e.filter(e=>!i.emails.includes(e)),m=(e=i.modelValue)=>{let t=String(e).trim();if(t){if(!(0,r.isEmail)(t)){n.O.notice(s.Common.Enter_valid_email_notice,`error`);return}o(`submit`,t)}},h=async()=>{if(await(0,a.nextTick)(),d=u.value?.$el.querySelector(`input`)??null,d){if(!c?.ui?.autocomplete){console.info(`Для работы autocomplete требуется глобальная загрузка jQuery UI Autocomplete`);return}c(d).autocomplete({appendTo:l.value,minLength:0,source:async(e,t)=>{let n=e.term;n in f||(f[n]=await i.getEmailSuggestions(n)),t(p(f[n]).map(e=>({label:e,value:e})))},select:(e,t)=>{!t.item||!d||(e.preventDefault(),m(t.item.value),o(`update:modelValue`,``),c(d).trigger(`focus`))}}),c(d).attr(`autocomplete`,`disabled`),c(d).on(`focus.scheduleEmailSelector`,()=>{d&&c(d).trigger(`input`)})}};return(0,a.onMounted)(()=>{h()}),(0,a.onBeforeUnmount)(()=>{!c?.ui?.autocomplete||!d||(c(d).off(`focus.scheduleEmailSelector`),c(d).autocomplete(`destroy`))}),(t,r)=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{class:`top-scheduleEmailSelector`,ref_key:`elRootRef`,ref:l},[(0,a.createVNode)(n.c,{ref_key:`elInputRef`,ref:u,modelValue:e.modelValue,"onUpdate:modelValue":r[1]||=e=>t.$emit(`update:modelValue`,e),onKeydown:r[2]||=(0,a.withKeys)((0,a.withModifiers)(e=>m(),[`prevent`]),[`enter`]),title:t.$i18n.Common.Enter_email,type:`email`,size:`l`},{default:(0,a.withCtx)(()=>[(0,a.createVNode)(n.h,{class:`top-scheduleEmailSelector_submit`,color:`theme`,icon:``,onClick:r[0]||=(0,a.withModifiers)(e=>m(),[`prevent`])})]),_:1},8,[`modelValue`,`title`])],512))}}),C={class:`top-scheduleEmail`},w={class:`top-scheduleEmail_title`},T={key:0,class:`top-scheduleEmail_selector`},E={key:1,class:`top-scheduleEmail_emails`},D=(0,a.defineComponent)({__name:`email`,props:{emails:{default:()=>[]},getEmailSuggestions:{type:Function,default:()=>[]},maxEmailsCount:{default:-1}},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 r=(0,a.resolveComponent)(`TopButton`);return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,C,[(0,a.createElementVNode)(`div`,w,(0,a.toDisplayString)(t.$i18n.Projects.Reports_send_to_address)+` E-mail: `,1),e.maxEmailsCount&&e.emails.length===e.maxEmailsCount?(0,a.createCommentVNode)(``,!0):((0,a.openBlock)(),(0,a.createElementBlock)(`div`,T,[(0,a.createVNode)(S,{modelValue:i.value,"onUpdate:modelValue":n[0]||=e=>i.value=e,getEmailSuggestions:e.getEmailSuggestions,emails:e.emails,onSubmit:o},null,8,[`modelValue`,`getEmailSuggestions`,`emails`])])),e.emails.length?((0,a.openBlock)(),(0,a.createElementBlock)(`div`,E,[((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.createTextVNode)((0,a.toDisplayString)(e)+` `,1),(0,a.createVNode)(r,{onClick:n=>t.$emit(`remove:email`,e),color:`theme`,icon:``},null,8,[`onClick`])]))),128))])):(0,a.createCommentVNode)(``,!0)])}}}),O={class:`top-scheduleReportSend`},k={class:`top-scheduleReportSend_title`},A={class:`top-scheduleReportSend_channels`},j={class:`top-scheduleReportSend_channelInfo`},M=[`data-top-icon`],N={class:`top-scheduleReportSend_channelInfoLabel`},P={key:0,class:`top-scheduleReportSend_channel`},F={class:`top-scheduleReportSend_channelInfo`},I=[`data-top-icon`],L=[`href`],R=(0,a.defineComponent)({__name:`reportSend`,props:{channels:{},connectors:{default:()=>[]}},emits:[`update:channelSelected`],setup(e){let t=e,n=e=>t.channels.some(t=>t.source===e),r={informer:``,telegram:``};return(t,i)=>{let o=(0,a.resolveComponent)(`TopButton`),s=(0,a.resolveComponent)(`TopSwitcher`);return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,O,[(0,a.createElementVNode)(`div`,k,(0,a.toDisplayString)(t.$i18n.Projects.Reports_send),1),(0,a.createElementVNode)(`div`,A,[((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-scheduleReportSend_channel`,key:`${e.source}-${e.id}`},[(0,a.createElementVNode)(`div`,j,[(0,a.createElementVNode)(`div`,{class:`top-scheduleReportSend_channelInfoIcon`,"data-top-icon":r[e.source]},null,8,M),(0,a.createElementVNode)(`div`,N,(0,a.toDisplayString)(e.label),1),e.settingLink?((0,a.openBlock)(),(0,a.createBlock)(o,{key:0,class:`top-scheduleReportSend_channelInfoSettings`,size:`xs`,href:e.settingLink,icon:``,color:`theme`,tabindex:`0`},null,8,[`href`])):(0,a.createCommentVNode)(``,!0)]),(0,a.createVNode)(s,{modelValue:e.selected,"onUpdate:modelValue":n=>t.$emit(`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},[n(e.source)?(0,a.createCommentVNode)(``,!0):((0,a.openBlock)(),(0,a.createElementBlock)(`div`,P,[(0,a.createElementVNode)(`div`,F,[(0,a.createElementVNode)(`div`,{class:`top-scheduleReportSend_channelInfoIcon`,"data-top-icon":r[e.source]},null,8,I),(0,a.createElementVNode)(`a`,{class:`top-scheduleReportSend_channelInfoLabel top-scheduleReportSend_channelInfoLink`,href:e.connectLink},(0,a.toDisplayString)(e.connectLabel),9,L)])]))],64))),128))])])}}}),z={class:`top-scheduleTimeSelector`},B=(0,a.defineComponent)({__name:`timeSelector`,props:{hour:{},minute:{}},emits:[`update:hour`,`update:minute`],setup(e){let t=Array.from({length:24},(e,t)=>({value:t,title:String(t).padStart(2,`0`)})),n=[{value:0,title:`00`},{value:15,title:`15`},{value:30,title:`30`},{value:45,title:`45`}];return(r,i)=>{let o=(0,a.resolveComponent)(`TopSelect`);return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,z,[(0,a.createVNode)(o,{class:`top-scheduleTimeSelector_hour`,modelValue:e.hour,options:(0,a.unref)(t),"onUpdate:modelValue":i[0]||=e=>r.$emit(`update:hour`,e)},null,8,[`modelValue`,`options`]),(0,a.createVNode)(o,{class:`top-scheduleTimeSelector_minute`,modelValue:e.minute,options:n,"onUpdate:modelValue":i[1]||=e=>r.$emit(`update:minute`,e)},null,8,[`modelValue`])])}}}),V={class:`top-scheduleTimeSelectors`},H=(0,a.defineComponent)({__name:`timeSelectors`,props:{times:{}},emits:[`update:times`],setup(e,{emit:t}){let n=e,r=t,i=new WeakMap,o=0,s=e=>{let t=(0,a.toRaw)(e),n=i.get(t);if(n!==void 0)return n;let r=o++;return i.set(t,r),r},c=(e,t)=>{r(`update:times`,n.times.map((n,r)=>{if(r!==e)return n;let a={...n,...t};return i.set(a,s(n)),a}))},l=()=>{r(`update:times`,[{hour:0,minute:0},...n.times])};return(t,n)=>{let r=(0,a.resolveComponent)(`TopButton`);return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,V,[((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(e.times,(n,i)=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{class:`top-scheduleTimeSelectors_item`,key:s(n)},[(0,a.createVNode)(B,{hour:n.hour,minute:n.minute,"onUpdate:hour":e=>c(i,{hour:e}),"onUpdate:minute":e=>c(i,{minute:e})},null,8,[`hour`,`minute`,`onUpdate:hour`,`onUpdate:minute`]),i?((0,a.openBlock)(),(0,a.createBlock)(r,{key:0,onClick:n=>t.$emit(`update:times`,e.times.filter((e,t)=>t!==i)),color:`theme`,icon:``},null,8,[`onClick`])):((0,a.openBlock)(),(0,a.createBlock)(r,{key:1,class:`top-scheduleTimeSelectors_itemAdd`,onClick:l,color:`theme`,icon:``}))]))),128))])}}});t.TopScheduleContainer=m,t.TopScheduleCalendar=x,t.TopScheduleEmailSelector=S,t.TopScheduleEmail=D,t.TopScheduleReportSend=R,t.TopScheduleTimeSelector=B,t.TopScheduleTimeSelectors=H});
2
2
  //# sourceMappingURL=schedule.amd.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["schedule/schedule.js","../../src/components/schedule/schedule/schedule.vue","../../src/components/schedule/schedule/compoents/container/container.vue","../../src/components/schedule/schedule/compoents/calendar/utils.ts","../../src/components/schedule/schedule/compoents/calendar/calendar.vue","../../src/components/schedule/schedule/compoents/email/selector/selector.vue","../../src/components/schedule/schedule/compoents/email/email.vue","../../src/components/schedule/schedule/compoents/reportSend/reportSend.vue","../../src/components/schedule/schedule/compoents/timeSelector/timeSelector.vue","../../src/components/schedule/schedule/compoents/timeSelectors/timeSelectors.vue"],"names":["vue","exports","M","N","P","F","vue_1","n","t","forms_BiKUURH4_esm_js_1","a","e","I","L","R","z","B","V","H","U","W","G","ne","i","o","u","g","string_js_1","_","y","$i18n","K","s","c","l","d","p","m","v","C","check_js_1","w","q","J","Y","X","Z","$emit","re","ie","ae","oe","se","Q","ce","le","ue","de","fe","pe","$","me","he"],"mappings":"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","sourcesContent":["define([\"require\", \"exports\", \"../.chunks/forms-BiKUURH4.esm.js\", \"../utils/check.js\", \"../utils/string.js\", \"vue\", \"../.chunks/app-0qVCkgOO.esm.js\"], function (require, exports, forms_BiKUURH4_esm_js_1, check_js_1, string_js_1, vue_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n exports.TopScheduleTimeSelectors = exports.TopScheduleTimeSelector = exports.TopScheduleReportSend = exports.TopScheduleEmailSelector = exports.TopScheduleEmail = exports.TopScheduleContainer = exports.TopScheduleCalendar = exports.TopSchedule = void 0;\n //#region src/components/schedule/schedule/schedule.vue?vue&type=script&setup=true&lang.ts\n var M = { class: \"top-schedule_header\" }, N = { class: \"top-schedule_headerTitle\" }, P = {\n key: 0,\n class: \"top-schedule_body\"\n }, F = /* @__PURE__ */ (0, vue_1.defineComponent)({\n name: \"TopSchedule\",\n __name: \"schedule\",\n props: {\n styling: {},\n triggerType: { default: \"onDemand\" },\n triggerTypeOptions: {},\n title: {}\n },\n emits: [\"update:triggerType\"],\n setup(t) {\n let n = t, r = (0, forms_BiKUURH4_esm_js_1.E)(), a = {\n track: r.Projects.Checks,\n report: r.Projects.Reports,\n neutral: \"\"\n }, o = n.title ?? a[n.styling];\n return (e, n) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", { class: (0, vue_1.normalizeClass)({\n \"top-schedule\": !0,\n [`top-schedule-style_${t.styling}`]: !0\n }) }, [(0, vue_1.createElementVNode)(\"div\", M, [(0, vue_1.createElementVNode)(\"div\", N, (0, vue_1.toDisplayString)((0, vue_1.unref)(o)), 1), (0, vue_1.createVNode)(forms_BiKUURH4_esm_js_1.n, {\n class: \"top-schedule_headerTriggerType\",\n modelValue: t.triggerType,\n \"onUpdate:modelValue\": n[0] ||= (t) => e.$emit(\"update:triggerType\", t),\n options: t.triggerTypeOptions,\n size: \"s\"\n }, null, 8, [\"modelValue\", \"options\"])]), t.triggerType !== \"onDemand\" && e.$slots.body ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", P, [(0, vue_1.renderSlot)(e.$slots, \"body\")])) : (0, vue_1.createCommentVNode)(\"\", !0)], 2));\n }\n }), I = {}, L = { class: \"top-schedule_bodyContainer\" };\n exports.TopSchedule = F;\n function R(e, t) {\n return (0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", L, [(0, vue_1.renderSlot)(e.$slots, \"default\")]);\n }\n var z = /*#__PURE__*/ (0, forms_BiKUURH4_esm_js_1.u)(I, [[\"render\", R]]), B = (t) => {\n let n = (0, forms_BiKUURH4_esm_js_1.E)();\n switch (t) {\n case \"dayOfMonth\": {\n let e = Array.from({ length: 27 }, (e, t) => ({\n value: 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 }\n }, V = { class: \"top-scheduleCalendar\" }, H = { class: \"top-scheduleCalendar_header\" }, U = { class: \"top-scheduleCalendar_calendar\" }, W = [\"value\"], G = [\"data-top-icon\"], ne = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"calendar\",\n props: {\n modelValue: {},\n mode: {}\n },\n emits: [\"update:modelValue\"],\n setup(t, { emit: n }) {\n let r = (0, forms_BiKUURH4_esm_js_1.E)(), i = t, a = n, o = (0, vue_1.computed)({\n get: () => i.modelValue,\n set: (e) => a(\"update:modelValue\", e)\n }), u = (0, vue_1.computed)(() => B(i.mode)), g = (0, vue_1.computed)(() => {\n let e = o.value.length, t = \"\";\n switch (i.mode) {\n case \"dayOfWeek\":\n if (e === 7)\n return r.Common.Every_day;\n t = r.Common.a_week;\n break;\n case \"dayOfMonth\":\n if (e === 28)\n return r.Common.Every_day;\n t = r.Common.a_month;\n break;\n }\n return `${e} ${(0, string_js_1.numberEnding)(e, r.Common.time_a_0, r.Common.time_a_0, r.Common.time_a_2)} ${t}`;\n }), _ = (0, vue_1.computed)(() => o.value.length > 1), y = () => {\n o.value = _.value ? [] : u.value.map((e) => e.value);\n };\n return (e, t) => {\n let n = (0, vue_1.resolveComponent)(\"TopButton\");\n return (0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", V, [\n (0, vue_1.createElementVNode)(\"div\", H, [(0, vue_1.renderSlot)(e.$slots, \"header\"), (0, vue_1.createVNode)(n, {\n class: \"top-scheduleCalendar_headerButton\",\n onClick: y,\n color: \"theme\",\n tabindex: \"0\"\n }, {\n default: (0, vue_1.withCtx)(() => [(0, vue_1.createTextVNode)((0, vue_1.toDisplayString)(_.value ? e.$i18n.Common.Clear : e.$i18n.Common.Select_all), 1)]),\n _: 1\n })]),\n (0, vue_1.createElementVNode)(\"div\", U, [((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)(u.value, (e) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"label\", {\n class: \"top-scheduleCalendar_calendarDay\",\n key: e.value\n }, [(0, vue_1.withDirectives)((0, vue_1.createElementVNode)(\"input\", {\n class: \"top-scheduleCalendar_calendarDayRadio\",\n type: \"checkbox\",\n value: e.value,\n \"onUpdate:modelValue\": t[0] ||= (e) => o.value = e,\n tabindex: \"0\"\n }, null, 8, W), [[vue_1.vModelCheckbox, o.value]]), (0, vue_1.createElementVNode)(\"span\", {\n class: \"top-scheduleCalendar_calendarDayTitle\",\n \"data-top-icon\": e.isIcon ? e.title : void 0\n }, [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, G)]))), 128))]),\n (0, vue_1.createElementVNode)(\"div\", { class: (0, vue_1.normalizeClass)({\n \"top-scheduleCalendar_selectedCount\": !0,\n \"top-error\": !o.value.length\n }) }, (0, vue_1.toDisplayString)(g.value), 3)\n ]);\n };\n }\n }), K = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"selector\",\n props: {\n modelValue: {},\n emails: { default: () => [] },\n getEmailSuggestions: {\n type: Function,\n default: () => []\n }\n },\n emits: [\"update:modelValue\", \"submit\"],\n setup(i, { emit: a }) {\n let s = i, c = a, l = (0, forms_BiKUURH4_esm_js_1.E)(), u = forms_BiKUURH4_esm_js_1.O.$, d = (0, vue_1.ref)(), p = (0, vue_1.ref)(), m = null, g = {}, v = (e) => e.filter((e) => !s.emails.includes(e)), C = (e = s.modelValue) => {\n let n = String(e).trim();\n if (n) {\n if (!(0, check_js_1.isEmail)(n)) {\n forms_BiKUURH4_esm_js_1.O.notice(l.Common.Enter_valid_email_notice, \"error\");\n return;\n }\n c(\"submit\", n);\n }\n }, w = async () => {\n if (await (0, vue_1.nextTick)(), m = p.value?.$el.querySelector(\"input\") ?? null, m) {\n if (!u?.ui?.autocomplete) {\n console.info(\"Для работы autocomplete требуется глобальная загрузка jQuery UI Autocomplete\");\n return;\n }\n u(m).autocomplete({\n appendTo: d.value,\n minLength: 0,\n source: async (e, t) => {\n let n = e.term;\n n in g || (g[n] = await s.getEmailSuggestions(n)), t(v(g[n]).map((e) => ({\n label: e,\n value: e\n })));\n },\n select: (e, t) => {\n !t.item || !m || (e.preventDefault(), C(t.item.value), c(\"update:modelValue\", \"\"), u(m).trigger(\"focus\"));\n }\n }), u(m).attr(\"autocomplete\", \"disabled\"), u(m).on(\"focus.scheduleEmailSelector\", () => {\n m && u(m).trigger(\"input\");\n });\n }\n };\n return (0, vue_1.onMounted)(() => {\n w();\n }), (0, vue_1.onBeforeUnmount)(() => {\n !u?.ui?.autocomplete || !m || (u(m).off(\"focus.scheduleEmailSelector\"), u(m).autocomplete(\"destroy\"));\n }), (e, t) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n class: \"top-scheduleEmailSelector\",\n ref_key: \"elRootRef\",\n ref: d\n }, [(0, vue_1.createVNode)(forms_BiKUURH4_esm_js_1.c, {\n ref_key: \"elInputRef\",\n ref: p,\n modelValue: i.modelValue,\n \"onUpdate:modelValue\": t[1] ||= (t) => e.$emit(\"update:modelValue\", t),\n onKeydown: t[2] ||= (0, vue_1.withKeys)((0, vue_1.withModifiers)((e) => C(), [\"prevent\"]), [\"enter\"]),\n title: e.$i18n.Common.Enter_email,\n type: \"email\",\n size: \"l\"\n }, {\n default: (0, vue_1.withCtx)(() => [(0, vue_1.createVNode)(forms_BiKUURH4_esm_js_1.h, {\n class: \"top-scheduleEmailSelector_submit\",\n color: \"theme\",\n icon: \"\",\n onClick: t[0] ||= (0, vue_1.withModifiers)((e) => C(), [\"prevent\"])\n })]),\n _: 1\n }, 8, [\"modelValue\", \"title\"])], 512));\n }\n }), q = { class: \"top-scheduleEmail\" }, J = { class: \"top-scheduleEmail_title\" }, Y = {\n key: 0,\n class: \"top-scheduleEmail_selector\"\n }, X = {\n key: 1,\n class: \"top-scheduleEmail_emails\"\n }, Z = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"email\",\n props: {\n emails: { default: () => [] },\n getEmailSuggestions: {\n type: Function,\n default: () => []\n },\n maxEmailsCount: { default: -1 }\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 r = (0, vue_1.resolveComponent)(\"TopButton\");\n return (0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", q, [\n (0, vue_1.createElementVNode)(\"div\", J, (0, vue_1.toDisplayString)(t.$i18n.Projects.Reports_send_to_address) + \" E-mail: \", 1),\n e.maxEmailsCount && e.emails.length === e.maxEmailsCount ? (0, vue_1.createCommentVNode)(\"\", !0) : ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", Y, [(0, vue_1.createVNode)(K, {\n modelValue: i.value,\n \"onUpdate:modelValue\": n[0] ||= (e) => i.value = e,\n getEmailSuggestions: e.getEmailSuggestions,\n emails: e.emails,\n onSubmit: a\n }, null, 8, [\n \"modelValue\",\n \"getEmailSuggestions\",\n \"emails\"\n ])])),\n e.emails.length ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", X, [((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.createTextVNode)((0, vue_1.toDisplayString)(e) + \" \", 1), (0, vue_1.createVNode)(r, {\n onClick: (n) => t.$emit(\"remove:email\", e),\n color: \"theme\",\n icon: \"\"\n }, null, 8, [\"onClick\"])]))), 128))])) : (0, vue_1.createCommentVNode)(\"\", !0)\n ]);\n };\n }\n }), re = { class: \"top-scheduleReportSend\" }, ie = { class: \"top-scheduleReportSend_title\" }, ae = { class: \"top-scheduleReportSend_channels\" }, oe = { class: \"top-scheduleReportSend_channelInfo\" }, se = [\"data-top-icon\"], Q = { class: \"top-scheduleReportSend_channelInfoLabel\" }, ce = {\n key: 0,\n class: \"top-scheduleReportSend_channel\"\n }, le = { class: \"top-scheduleReportSend_channelInfo\" }, ue = [\"data-top-icon\"], de = [\"href\"], fe = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"reportSend\",\n props: {\n channels: {},\n connectors: { default: () => [] }\n },\n emits: [\"update:channelSelected\"],\n setup(e) {\n let t = e, n = (e) => t.channels.some((t) => t.source === e), r = {\n informer: \"\",\n telegram: \"\"\n };\n return (t, i) => {\n let a = (0, vue_1.resolveComponent)(\"TopButton\"), o = (0, vue_1.resolveComponent)(\"TopSwitcher\");\n return (0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", re, [(0, vue_1.createElementVNode)(\"div\", ie, (0, vue_1.toDisplayString)(t.$i18n.Projects.Reports_send), 1), (0, vue_1.createElementVNode)(\"div\", ae, [((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-scheduleReportSend_channel\",\n key: `${e.source}-${e.id}`\n }, [(0, vue_1.createElementVNode)(\"div\", oe, [\n (0, vue_1.createElementVNode)(\"div\", {\n class: \"top-scheduleReportSend_channelInfoIcon\",\n \"data-top-icon\": r[e.source]\n }, null, 8, se),\n (0, vue_1.createElementVNode)(\"div\", Q, (0, vue_1.toDisplayString)(e.label), 1),\n e.settingLink ? ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(a, {\n key: 0,\n class: \"top-scheduleReportSend_channelInfoSettings\",\n size: \"xs\",\n href: e.settingLink,\n icon: \"\",\n color: \"theme\",\n tabindex: \"0\"\n }, null, 8, [\"href\"])) : (0, vue_1.createCommentVNode)(\"\", !0)\n ]), (0, vue_1.createVNode)(o, {\n modelValue: e.selected,\n \"onUpdate:modelValue\": (n) => t.$emit(\"update:channelSelected\", {\n id: e.id,\n source: e.source,\n selected: n\n })\n }, null, 8, [\"modelValue\", \"onUpdate:modelValue\"])]))), 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 }, [n(e.source) ? (0, vue_1.createCommentVNode)(\"\", !0) : ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", ce, [(0, vue_1.createElementVNode)(\"div\", le, [(0, vue_1.createElementVNode)(\"div\", {\n class: \"top-scheduleReportSend_channelInfoIcon\",\n \"data-top-icon\": r[e.source]\n }, null, 8, ue), (0, vue_1.createElementVNode)(\"a\", {\n class: \"top-scheduleReportSend_channelInfoLabel top-scheduleReportSend_channelInfoLink\",\n href: e.connectLink\n }, (0, vue_1.toDisplayString)(e.connectLabel), 9, de)])]))], 64))), 128))])]);\n };\n }\n }), pe = { class: \"top-scheduleTimeSelector\" }, $ = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"timeSelector\",\n props: {\n hour: {},\n minute: {}\n },\n emits: [\"update:hour\", \"update:minute\"],\n setup(e) {\n let t = Array.from({ length: 24 }, (e, t) => ({\n value: t,\n title: String(t).padStart(2, \"0\")\n })), n = [\n {\n value: 0,\n title: \"00\"\n },\n {\n value: 15,\n title: \"15\"\n },\n {\n value: 30,\n title: \"30\"\n },\n {\n value: 45,\n title: \"45\"\n }\n ];\n return (r, i) => {\n let a = (0, vue_1.resolveComponent)(\"TopSelect\");\n return (0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", pe, [(0, vue_1.createVNode)(a, {\n class: \"top-scheduleTimeSelector_hour\",\n modelValue: e.hour,\n options: (0, vue_1.unref)(t),\n \"onUpdate:modelValue\": i[0] ||= (e) => r.$emit(\"update:hour\", e)\n }, null, 8, [\"modelValue\", \"options\"]), (0, vue_1.createVNode)(a, {\n class: \"top-scheduleTimeSelector_minute\",\n modelValue: e.minute,\n options: n,\n \"onUpdate:modelValue\": i[1] ||= (e) => r.$emit(\"update:minute\", e)\n }, null, 8, [\"modelValue\"])]);\n };\n }\n }), me = { class: \"top-scheduleTimeSelectors\" }, he = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"timeSelectors\",\n props: { times: {} },\n emits: [\"update:times\"],\n setup(e, { emit: t }) {\n let n = e, r = t, i = /* @__PURE__ */ new WeakMap(), a = 0, o = (e) => {\n let t = (0, vue_1.toRaw)(e), n = i.get(t);\n if (n !== void 0)\n return n;\n let r = a++;\n return i.set(t, r), r;\n }, s = (e, t) => {\n r(\"update:times\", n.times.map((n, r) => {\n if (r !== e)\n return n;\n let a = {\n ...n,\n ...t\n };\n return i.set(a, o(n)), a;\n }));\n }, l = () => {\n let e = {\n hour: 0,\n minute: 0\n };\n r(\"update:times\", [...n.times, e]);\n };\n return (t, n) => {\n let r = (0, vue_1.resolveComponent)(\"TopButton\");\n return (0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", me, [((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)(e.times, (n, i) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n class: \"top-scheduleTimeSelectors_item\",\n key: o(n)\n }, [(0, vue_1.createVNode)($, {\n hour: n.hour,\n minute: n.minute,\n \"onUpdate:hour\": (e) => s(i, { hour: e }),\n \"onUpdate:minute\": (e) => s(i, { minute: e })\n }, null, 8, [\n \"hour\",\n \"minute\",\n \"onUpdate:hour\",\n \"onUpdate:minute\"\n ]), i === e.times.length - 1 ? ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(r, {\n key: 1,\n class: \"top-scheduleTimeSelectors_itemAdd\",\n onClick: l,\n color: \"theme\",\n icon: \"\"\n })) : ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(r, {\n key: 0,\n onClick: (n) => t.$emit(\"update:times\", e.times.filter((e, t) => t !== i)),\n color: \"theme\",\n icon: \"\"\n }, null, 8, [\"onClick\"]))]))), 128))]);\n };\n }\n });\n exports.TopScheduleContainer = z;\n exports.TopScheduleCalendar = ne;\n exports.TopScheduleEmailSelector = K;\n exports.TopScheduleEmail = Z;\n exports.TopScheduleReportSend = fe;\n exports.TopScheduleTimeSelector = $;\n exports.TopScheduleTimeSelectors = he;\n});\n//# sourceMappingURL=schedule.js.map\n","<script setup lang=\"ts\">\nimport TopSelect from '@/components/forms/select/select.vue';\nimport type { Props, Emits, TriggerType } from '@/components/schedule/schedule/types';\nimport { useI18n } from '@/core/plugins/i18n';\n\ndefineOptions({\n\tname: 'TopSchedule',\n});\n\nconst props = withDefaults(defineProps<Props>(), {\n\ttriggerType: 'onDemand',\n});\n\ndefineEmits<Emits>();\n\nconst i18n = useI18n();\nconst labelByStyling = {\n\t'track': i18n.Projects.Checks,\n\t'report': i18n.Projects.Reports,\n\t'neutral': '',\n};\nconst title = props.title ?? labelByStyling[props.styling];\n\n</script>\n\n<template>\n\t<div\n\t\t:class=\"{\n\t\t\t'top-schedule': true,\n\t\t\t[`top-schedule-style_${styling}`]: true,\n\t\t}\"\n\t>\n\t\t<div class=\"top-schedule_header\">\n\t\t\t<div class=\"top-schedule_headerTitle\">\n\t\t\t\t{{ title }}\n\t\t\t</div>\n\n\t\t\t<TopSelect\n\t\t\t\tclass=\"top-schedule_headerTriggerType\"\n\t\t\t\t:modelValue=\"triggerType\"\n\t\t\t\t@update:modelValue=\"$emit('update:triggerType', $event as TriggerType)\"\n\t\t\t\t:options=\"triggerTypeOptions\"\n\t\t\t\tsize=\"s\"\n\t\t\t/>\n\t\t</div>\n\n\t\t<div\n\t\t\tv-if=\"triggerType !== 'onDemand' && $slots.body\"\n\t\t\tclass=\"top-schedule_body\"\n\t\t>\n\t\t\t<slot name=\"body\"></slot>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<template>\n\t<div class=\"top-schedule_bodyContainer\">\n\t\t<slot></slot>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","import type { Day, Props } from '@/components/schedule/schedule/compoents/calendar/types';\nimport { useI18n } from '@/core/app';\n\n/**\n * Количество дней в месяце\n */\nexport const COUNT_DAYS_IN_MONTS = 27;\n\n/**\n * Количество дней в неделе\n */\nexport const COUNT_DAYS_IN_WEEK = 7;\n\nexport const genDaysByCalendarMode = (mode: Props['mode']): Day[] => {\n\tconst i18n = useI18n();\n\n\tswitch (mode) {\n\t\tcase 'dayOfMonth': {\n\t\t\tconst days: Day[] = Array.from({ length: COUNT_DAYS_IN_MONTS }, (_, i) => ({\n\t\t\t\tvalue: i + 1,\n\t\t\t\ttitle: String(i + 1),\n\t\t\t}));\n\n\t\t\tdays.push({\n\t\t\t\tvalue: 'LAST_OF_MONTH',\n\t\t\t\ttitle: '',\n\t\t\t\tisIcon: true,\n\t\t\t});\n\n\t\t\treturn days;\n\t\t}\n\n\t\tcase 'dayOfWeek': {\n\t\t\treturn [\n\t\t\t\t{ value: 'MONDAY', title: i18n.Calendar.Dw_1 },\n\t\t\t\t{ value: 'TUESDAY', title: i18n.Calendar.Dw_2 },\n\t\t\t\t{ value: 'WEDNESDAY', title: i18n.Calendar.Dw_3 },\n\t\t\t\t{ value: 'THURSDAY', title: i18n.Calendar.Dw_4 },\n\t\t\t\t{ value: 'FRIDAY', title: i18n.Calendar.Dw_5 },\n\t\t\t\t{ value: 'SATURDAY', title: i18n.Calendar.Dw_6 },\n\t\t\t\t{ value: 'SUNDAY', title: i18n.Calendar.Dw_7 },\n\t\t\t];\n\t\t}\n\t}\n};","<script setup lang=\"ts\">\nimport type { Props, Emits } from '@/components/schedule/schedule/compoents/calendar/types';\nimport { COUNT_DAYS_IN_MONTS, COUNT_DAYS_IN_WEEK, genDaysByCalendarMode } from '@/components/schedule/schedule/compoents/calendar/utils';\nimport { numberEnding } from '@/core/utils/string';\nimport { computed } from 'vue';\nimport { useI18n } from '@/core/app';\n\nconst i18n = useI18n();\nconst props = defineProps<Props>();\nconst emit = defineEmits<Emits>();\n\nconst selectedDays = computed<Props['modelValue']>({\n\tget: () => props.modelValue,\n\tset: value => emit('update:modelValue', value),\n});\n\nconst days = computed(() => genDaysByCalendarMode(props.mode));\n\nconst selectedCountLabel = computed(() => {\n\tconst daysCount = selectedDays.value.length;\n\tlet postfix = '';\n\n\tswitch (props.mode) {\n\t\tcase 'dayOfWeek': {\n\t\t\tif (daysCount === COUNT_DAYS_IN_WEEK) return i18n.Common.Every_day;\n\n\t\t\tpostfix = i18n.Common.a_week;\n\n\t\t\tbreak;\n\t\t}\n\t\tcase 'dayOfMonth': {\n\t\t\t// плюс \"последний день месяца\"\n\t\t\tif (daysCount === COUNT_DAYS_IN_MONTS + 1) return i18n.Common.Every_day;\n\n\t\t\tpostfix = i18n.Common.a_month;\n\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn `${daysCount} ${numberEnding(\n\t\tdaysCount,\n\t\ti18n.Common.time_a_0,\n\t\ti18n.Common.time_a_0,\n\t\ti18n.Common.time_a_2,\n\t)} ${postfix}`;\n});\n\nconst isClearAction = computed(() => selectedDays.value.length > 1);\n\nconst toggleAllDays = () => {\n\tselectedDays.value = isClearAction.value ? [] : days.value.map(day => day.value);\n};\n\n</script>\n\n<template>\n\t<div class=\"top-scheduleCalendar\">\n\t\t<div class=\"top-scheduleCalendar_header\">\n\t\t\t<slot name=\"header\"></slot>\n\n\t\t\t<TopButton\n\t\t\t\tclass=\"top-scheduleCalendar_headerButton\"\n\t\t\t\t@click=\"toggleAllDays\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ttabindex=\"0\"\n\t\t\t>\n\t\t\t\t{{ isClearAction ? $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_calendarDayRadio\"\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t:value=\"day.value\"\n\t\t\t\t\tv-model=\"selectedDays\"\n\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t>\n\n\t\t\t\t<span\n\t\t\t\t\tclass=\"top-scheduleCalendar_calendarDayTitle\"\n\t\t\t\t\t:data-top-icon=\"day.isIcon ? day.title : undefined\"\n\t\t\t\t>\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<div\n\t\t\t:class=\"{\n\t\t\t\t'top-scheduleCalendar_selectedCount': true,\n\t\t\t\t'top-error': !selectedDays.length\n\t\t\t}\"\n\t\t>\n\t\t\t{{ selectedCountLabel }}\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { 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/compoents/email/selector/types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\temails: () => [],\n\tgetEmailSuggestions: () => [],\n});\n\nconst emit = defineEmits<Emits>();\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\nconst filterEmails = (emails: string[]) => emails.filter(email => !props.emails.includes(email));\n\nconst submit = (value: unknown = props.modelValue) => {\n\tconst email = String(value).trim();\n\tif (!email) return;\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\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\temit('update:modelValue', '');\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<TopInput\n\t\t\tref=\"elInputRef\"\n\t\t\t:modelValue\n\t\t\t@update:modelValue=\"$emit('update:modelValue', $event)\"\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=\"l\"\n\t\t>\n\t\t\t<TopButton\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 { Props, Emits } from '@/components/schedule/schedule/compoents/email/types';\nimport ScheduleEmailSelector from '@/components/schedule/schedule/compoents/email/selector/selector.vue';\n\nconst props = withDefaults(defineProps<Props>(), {\n\temails: () => [],\n\tgetEmailSuggestions: () => [],\n\tmaxEmailsCount: -1,\n});\n\nconst emit = defineEmits<Emits>();\n\nconst value = ref('');\n\nconst addEmail = (email: string) => {\n\tconst preparedEmail = email.trim();\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<div\n\t\t\tv-if=\"!(maxEmailsCount && emails.length === maxEmailsCount)\"\n\t\t\tclass=\"top-scheduleEmail_selector\"\n\t\t>\n\t\t\t<ScheduleEmailSelector\n\t\t\t\tv-model=\"value\"\n\t\t\t\t:getEmailSuggestions=\"getEmailSuggestions\"\n\t\t\t\t:emails=\"emails\"\n\t\t\t\t@submit=\"addEmail\"\n\t\t\t/>\n\t\t</div>\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{{ email }}\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, ReportChannelSource } from '@/components/schedule/schedule/compoents/reportSend/types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tconnectors: () => [],\n});\ndefineEmits<Emits>();\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-scheduleReportSend\">\n\t\t<div class=\"top-scheduleReportSend_title\">\n\t\t\t{{ $i18n.Projects.Reports_send }}\n\t\t</div>\n\n\t\t<div class=\"top-scheduleReportSend_channels\">\n\t\t\t<div\n\t\t\t\tclass=\"top-scheduleReportSend_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<div class=\"top-scheduleReportSend_channelInfo\">\n\t\t\t\t\t<div\n\t\t\t\t\t\tclass=\"top-scheduleReportSend_channelInfoIcon\"\n\t\t\t\t\t\t:data-top-icon=\"sourceIconBySource[channel.source]\"\n\t\t\t\t\t></div>\n\n\t\t\t\t\t<div class=\"top-scheduleReportSend_channelInfoLabel\">\n\t\t\t\t\t\t{{ channel.label }}\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tv-if=\"channel.settingLink\"\n\t\t\t\t\t\tclass=\"top-scheduleReportSend_channelInfoSettings\"\n\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t:href=\"channel.settingLink\"\n\t\t\t\t\t\ticon=\"\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t\t></TopButton>\n\t\t\t\t</div>\n\n\t\t\t\t<TopSwitcher\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\t\tclass=\"top-scheduleReportSend_channel\"\n\t\t\t\t>\n\t\t\t\t\t<div class=\"top-scheduleReportSend_channelInfo\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"top-scheduleReportSend_channelInfoIcon\"\n\t\t\t\t\t\t\t:data-top-icon=\"sourceIconBySource[connector.source]\"\n\t\t\t\t\t\t></div>\n\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\tclass=\"top-scheduleReportSend_channelInfoLabel top-scheduleReportSend_channelInfoLink\"\n\t\t\t\t\t\t\t:href=\"connector.connectLink\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{{ connector.connectLabel }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\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","<script setup lang=\"ts\">\nimport type { Props, Emits, Time } from '@/components/schedule/schedule/compoents/timeSelector/types';\n\ndefineProps<Props>();\ndefineEmits<Emits>();\n\nconst hourOptions = Array.from({ length: 24 }, (_, value) => ({\n\tvalue,\n\ttitle: String(value).padStart(2, '0'),\n}));\nconst minuteOptions = [\n\t{\n\t\tvalue: 0,\n\t\ttitle: '00',\n\t},\n\t{\n\t\tvalue: 15,\n\t\ttitle: '15',\n\t},\n\t{\n\t\tvalue: 30,\n\t\ttitle: '30',\n\t},\n\t{\n\t\tvalue: 45,\n\t\ttitle: '45',\n\t},\n];\n\n</script>\n\n<template>\n\t<div class=\"top-scheduleTimeSelector\">\n\t\t<TopSelect\n\t\t\tclass=\"top-scheduleTimeSelector_hour\"\n\t\t\t:modelValue=\"hour\"\n\t\t\t:options=\"hourOptions\"\n\t\t\t@update:modelValue=\"$emit('update:hour', $event as Time['hour'])\"\n\t\t/>\n\n\t\t<TopSelect\n\t\t\tclass=\"top-scheduleTimeSelector_minute\"\n\t\t\t:modelValue=\"minute\"\n\t\t\t:options=\"minuteOptions\"\n\t\t\t@update:modelValue=\"$emit('update:minute', $event as Time['minute'])\"\n\t\t/>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { toRaw } from 'vue';\nimport type { Props, Emits } from '@/components/schedule/schedule/compoents/timeSelectors/types';\nimport type { Time } from '@/components/schedule/schedule/compoents/timeSelector/types';\nimport TimeSelector from '@/components/schedule/schedule/compoents/timeSelector/timeSelector.vue';\n\nconst props = defineProps<Props>();\nconst emit = defineEmits<Emits>();\nconst timeKeys = new WeakMap<Time, number>();\nlet nextTimeKey = 0;\n\nconst getTimeKey = (rawOrProxyTime: Time) => {\n\t// time может быть proxy или обычным объектом\n\tconst time = toRaw(rawOrProxyTime);\n\n\tconst existingKey = timeKeys.get(time);\n\tif (existingKey !== undefined) return existingKey;\n\n\tconst key = nextTimeKey++;\n\ttimeKeys.set(time, key);\n\n\treturn key;\n};\n\nconst updateTime = (index: number, patch: Partial<Props['times'][number]>) => {\n\tconst updatedTimes = props.times.map((time, i) => {\n\t\tif (i !== index) return time;\n\n\t\tconst updatedTime = { ...time, ...patch };\n\t\ttimeKeys.set(updatedTime, getTimeKey(time));\n\n\t\treturn updatedTime;\n\t});\n\n\temit('update:times', updatedTimes);\n};\n\nconst addTime = () => {\n\tconst time: Time = { hour: 0, minute: 0 };\n\tconst updatedTimes = [\n\t\t...props.times,\n\t\ttime,\n\t];\n\n\temit('update:times', updatedTimes);\n};\n\n</script>\n\n<template>\n\t<div class=\"top-scheduleTimeSelectors\">\n\t\t<div\n\t\t\tclass=\"top-scheduleTimeSelectors_item\"\n\t\t\tv-for=\"(time, index) in times\"\n\t\t\t:key=\"getTimeKey(time)\"\n\t\t>\n\t\t\t<TimeSelector\n\t\t\t\t:hour=\"time.hour\"\n\t\t\t\t:minute=\"time.minute\"\n\t\t\t\t@update:hour=\"updateTime(index, { hour: $event as Time['hour'] })\"\n\t\t\t\t@update:minute=\"updateTime(index, { minute: $event as Time['minute'] })\"\n\t\t\t/>\n\n\t\t\t<TopButton\n\t\t\t\tv-if=\"index !== times.length - 1\"\n\t\t\t\t@click=\"$emit('update:times', times.filter((_, i) => i !== index))\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ticon=\"\"\n\t\t\t/>\n\n\t\t\t<TopButton\n\t\t\t\tv-else\n\t\t\t\tclass=\"top-scheduleTimeSelectors_itemAdd\"\n\t\t\t\t@click=\"addTime\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ticon=\"\"\n\t\t\t/>\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/schedule.vue","../../src/components/schedule/schedule/compoents/container/container.vue","../../src/components/schedule/schedule/compoents/calendar/utils.ts","../../src/components/schedule/schedule/compoents/calendar/calendar.vue","../../src/components/schedule/schedule/compoents/email/selector/selector.vue","../../src/components/schedule/schedule/compoents/email/email.vue","../../src/components/schedule/schedule/compoents/reportSend/reportSend.vue","../../src/components/schedule/schedule/compoents/timeSelector/timeSelector.vue","../../src/components/schedule/schedule/compoents/timeSelectors/timeSelectors.vue"],"names":["vue","exports","M","N","P","F","vue_1","n","t","forms_BiKUURH4_esm_js_1","a","e","I","L","R","z","B","V","H","U","W","G","ne","i","o","u","g","string_js_1","_","y","$i18n","K","s","c","l","d","p","m","v","C","check_js_1","w","q","J","Y","X","Z","$emit","re","ie","ae","oe","se","Q","ce","le","ue","de","fe","pe","$","me","he"],"mappings":"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","sourcesContent":["define([\"require\", \"exports\", \"../.chunks/forms-BiKUURH4.esm.js\", \"../utils/check.js\", \"../utils/string.js\", \"vue\", \"../.chunks/app-0qVCkgOO.esm.js\"], function (require, exports, forms_BiKUURH4_esm_js_1, check_js_1, string_js_1, vue_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n exports.TopScheduleTimeSelectors = exports.TopScheduleTimeSelector = exports.TopScheduleReportSend = exports.TopScheduleEmailSelector = exports.TopScheduleEmail = exports.TopScheduleContainer = exports.TopScheduleCalendar = exports.TopSchedule = void 0;\n //#region src/components/schedule/schedule/schedule.vue?vue&type=script&setup=true&lang.ts\n var M = { class: \"top-schedule_header\" }, N = { class: \"top-schedule_headerTitle\" }, P = {\n key: 0,\n class: \"top-schedule_body\"\n }, F = /* @__PURE__ */ (0, vue_1.defineComponent)({\n name: \"TopSchedule\",\n __name: \"schedule\",\n props: {\n styling: {},\n triggerType: { default: \"onDemand\" },\n triggerTypeOptions: {},\n title: {}\n },\n emits: [\"update:triggerType\"],\n setup(t) {\n let n = t, r = (0, forms_BiKUURH4_esm_js_1.E)(), a = {\n track: r.Projects.Checks,\n report: r.Projects.Reports,\n neutral: \"\"\n }, o = n.title ?? a[n.styling];\n return (e, n) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", { class: (0, vue_1.normalizeClass)({\n \"top-schedule\": !0,\n [`top-schedule-style_${t.styling}`]: !0\n }) }, [(0, vue_1.createElementVNode)(\"div\", M, [(0, vue_1.createElementVNode)(\"div\", N, (0, vue_1.toDisplayString)((0, vue_1.unref)(o)), 1), (0, vue_1.createVNode)(forms_BiKUURH4_esm_js_1.n, {\n class: \"top-schedule_headerTriggerType\",\n modelValue: t.triggerType,\n \"onUpdate:modelValue\": n[0] ||= (t) => e.$emit(\"update:triggerType\", t),\n options: t.triggerTypeOptions,\n size: \"s\"\n }, null, 8, [\"modelValue\", \"options\"])]), t.triggerType !== \"onDemand\" && e.$slots.body ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", P, [(0, vue_1.renderSlot)(e.$slots, \"body\")])) : (0, vue_1.createCommentVNode)(\"\", !0)], 2));\n }\n }), I = {}, L = { class: \"top-schedule_bodyContainer\" };\n exports.TopSchedule = F;\n function R(e, t) {\n return (0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", L, [(0, vue_1.renderSlot)(e.$slots, \"default\")]);\n }\n var z = /*#__PURE__*/ (0, forms_BiKUURH4_esm_js_1.u)(I, [[\"render\", R]]), B = (t) => {\n let n = (0, forms_BiKUURH4_esm_js_1.E)();\n switch (t) {\n case \"dayOfMonth\": {\n let e = Array.from({ length: 27 }, (e, t) => ({\n value: 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 }\n }, V = { class: \"top-scheduleCalendar\" }, H = { class: \"top-scheduleCalendar_header\" }, U = { class: \"top-scheduleCalendar_calendar\" }, W = [\"value\"], G = [\"data-top-icon\"], ne = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"calendar\",\n props: {\n modelValue: {},\n mode: {}\n },\n emits: [\"update:modelValue\"],\n setup(t, { emit: n }) {\n let r = (0, forms_BiKUURH4_esm_js_1.E)(), i = t, a = n, o = (0, vue_1.computed)({\n get: () => i.modelValue,\n set: (e) => a(\"update:modelValue\", e)\n }), u = (0, vue_1.computed)(() => B(i.mode)), g = (0, vue_1.computed)(() => {\n let e = o.value.length, t = \"\";\n switch (i.mode) {\n case \"dayOfWeek\":\n if (e === 7)\n return r.Common.Every_day;\n t = r.Common.a_week;\n break;\n case \"dayOfMonth\":\n if (e === 28)\n return r.Common.Every_day;\n t = r.Common.a_month;\n break;\n }\n return `${e} ${(0, string_js_1.numberEnding)(e, r.Common.time_a_0, r.Common.time_a_0, r.Common.time_a_2)} ${t}`;\n }), _ = (0, vue_1.computed)(() => o.value.length > 1), y = () => {\n o.value = _.value ? [] : u.value.map((e) => e.value);\n };\n return (e, t) => {\n let n = (0, vue_1.resolveComponent)(\"TopButton\");\n return (0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", V, [\n (0, vue_1.createElementVNode)(\"div\", H, [(0, vue_1.renderSlot)(e.$slots, \"header\"), (0, vue_1.createVNode)(n, {\n class: \"top-scheduleCalendar_headerButton\",\n onClick: y,\n color: \"theme\",\n tabindex: \"0\"\n }, {\n default: (0, vue_1.withCtx)(() => [(0, vue_1.createTextVNode)((0, vue_1.toDisplayString)(_.value ? e.$i18n.Common.Clear : e.$i18n.Common.Select_all), 1)]),\n _: 1\n })]),\n (0, vue_1.createElementVNode)(\"div\", U, [((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)(u.value, (e) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"label\", {\n class: \"top-scheduleCalendar_calendarDay\",\n key: e.value\n }, [(0, vue_1.withDirectives)((0, vue_1.createElementVNode)(\"input\", {\n class: \"top-scheduleCalendar_calendarDayRadio\",\n type: \"checkbox\",\n value: e.value,\n \"onUpdate:modelValue\": t[0] ||= (e) => o.value = e,\n tabindex: \"0\"\n }, null, 8, W), [[vue_1.vModelCheckbox, o.value]]), (0, vue_1.createElementVNode)(\"span\", {\n class: \"top-scheduleCalendar_calendarDayTitle\",\n \"data-top-icon\": e.isIcon ? e.title : void 0\n }, [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, G)]))), 128))]),\n (0, vue_1.createElementVNode)(\"div\", { class: (0, vue_1.normalizeClass)({\n \"top-scheduleCalendar_selectedCount\": !0,\n \"top-error\": !o.value.length\n }) }, (0, vue_1.toDisplayString)(g.value), 3)\n ]);\n };\n }\n }), K = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"selector\",\n props: {\n modelValue: {},\n emails: { default: () => [] },\n getEmailSuggestions: {\n type: Function,\n default: () => []\n }\n },\n emits: [\"update:modelValue\", \"submit\"],\n setup(i, { emit: a }) {\n let s = i, c = a, l = (0, forms_BiKUURH4_esm_js_1.E)(), u = forms_BiKUURH4_esm_js_1.O.$, d = (0, vue_1.ref)(), p = (0, vue_1.ref)(), m = null, g = {}, v = (e) => e.filter((e) => !s.emails.includes(e)), C = (e = s.modelValue) => {\n let n = String(e).trim();\n if (n) {\n if (!(0, check_js_1.isEmail)(n)) {\n forms_BiKUURH4_esm_js_1.O.notice(l.Common.Enter_valid_email_notice, \"error\");\n return;\n }\n c(\"submit\", n);\n }\n }, w = async () => {\n if (await (0, vue_1.nextTick)(), m = p.value?.$el.querySelector(\"input\") ?? null, m) {\n if (!u?.ui?.autocomplete) {\n console.info(\"Для работы autocomplete требуется глобальная загрузка jQuery UI Autocomplete\");\n return;\n }\n u(m).autocomplete({\n appendTo: d.value,\n minLength: 0,\n source: async (e, t) => {\n let n = e.term;\n n in g || (g[n] = await s.getEmailSuggestions(n)), t(v(g[n]).map((e) => ({\n label: e,\n value: e\n })));\n },\n select: (e, t) => {\n !t.item || !m || (e.preventDefault(), C(t.item.value), c(\"update:modelValue\", \"\"), u(m).trigger(\"focus\"));\n }\n }), u(m).attr(\"autocomplete\", \"disabled\"), u(m).on(\"focus.scheduleEmailSelector\", () => {\n m && u(m).trigger(\"input\");\n });\n }\n };\n return (0, vue_1.onMounted)(() => {\n w();\n }), (0, vue_1.onBeforeUnmount)(() => {\n !u?.ui?.autocomplete || !m || (u(m).off(\"focus.scheduleEmailSelector\"), u(m).autocomplete(\"destroy\"));\n }), (e, t) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n class: \"top-scheduleEmailSelector\",\n ref_key: \"elRootRef\",\n ref: d\n }, [(0, vue_1.createVNode)(forms_BiKUURH4_esm_js_1.c, {\n ref_key: \"elInputRef\",\n ref: p,\n modelValue: i.modelValue,\n \"onUpdate:modelValue\": t[1] ||= (t) => e.$emit(\"update:modelValue\", t),\n onKeydown: t[2] ||= (0, vue_1.withKeys)((0, vue_1.withModifiers)((e) => C(), [\"prevent\"]), [\"enter\"]),\n title: e.$i18n.Common.Enter_email,\n type: \"email\",\n size: \"l\"\n }, {\n default: (0, vue_1.withCtx)(() => [(0, vue_1.createVNode)(forms_BiKUURH4_esm_js_1.h, {\n class: \"top-scheduleEmailSelector_submit\",\n color: \"theme\",\n icon: \"\",\n onClick: t[0] ||= (0, vue_1.withModifiers)((e) => C(), [\"prevent\"])\n })]),\n _: 1\n }, 8, [\"modelValue\", \"title\"])], 512));\n }\n }), q = { class: \"top-scheduleEmail\" }, J = { class: \"top-scheduleEmail_title\" }, Y = {\n key: 0,\n class: \"top-scheduleEmail_selector\"\n }, X = {\n key: 1,\n class: \"top-scheduleEmail_emails\"\n }, Z = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"email\",\n props: {\n emails: { default: () => [] },\n getEmailSuggestions: {\n type: Function,\n default: () => []\n },\n maxEmailsCount: { default: -1 }\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 r = (0, vue_1.resolveComponent)(\"TopButton\");\n return (0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", q, [\n (0, vue_1.createElementVNode)(\"div\", J, (0, vue_1.toDisplayString)(t.$i18n.Projects.Reports_send_to_address) + \" E-mail: \", 1),\n e.maxEmailsCount && e.emails.length === e.maxEmailsCount ? (0, vue_1.createCommentVNode)(\"\", !0) : ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", Y, [(0, vue_1.createVNode)(K, {\n modelValue: i.value,\n \"onUpdate:modelValue\": n[0] ||= (e) => i.value = e,\n getEmailSuggestions: e.getEmailSuggestions,\n emails: e.emails,\n onSubmit: a\n }, null, 8, [\n \"modelValue\",\n \"getEmailSuggestions\",\n \"emails\"\n ])])),\n e.emails.length ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", X, [((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.createTextVNode)((0, vue_1.toDisplayString)(e) + \" \", 1), (0, vue_1.createVNode)(r, {\n onClick: (n) => t.$emit(\"remove:email\", e),\n color: \"theme\",\n icon: \"\"\n }, null, 8, [\"onClick\"])]))), 128))])) : (0, vue_1.createCommentVNode)(\"\", !0)\n ]);\n };\n }\n }), re = { class: \"top-scheduleReportSend\" }, ie = { class: \"top-scheduleReportSend_title\" }, ae = { class: \"top-scheduleReportSend_channels\" }, oe = { class: \"top-scheduleReportSend_channelInfo\" }, se = [\"data-top-icon\"], Q = { class: \"top-scheduleReportSend_channelInfoLabel\" }, ce = {\n key: 0,\n class: \"top-scheduleReportSend_channel\"\n }, le = { class: \"top-scheduleReportSend_channelInfo\" }, ue = [\"data-top-icon\"], de = [\"href\"], fe = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"reportSend\",\n props: {\n channels: {},\n connectors: { default: () => [] }\n },\n emits: [\"update:channelSelected\"],\n setup(e) {\n let t = e, n = (e) => t.channels.some((t) => t.source === e), r = {\n informer: \"\",\n telegram: \"\"\n };\n return (t, i) => {\n let a = (0, vue_1.resolveComponent)(\"TopButton\"), o = (0, vue_1.resolveComponent)(\"TopSwitcher\");\n return (0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", re, [(0, vue_1.createElementVNode)(\"div\", ie, (0, vue_1.toDisplayString)(t.$i18n.Projects.Reports_send), 1), (0, vue_1.createElementVNode)(\"div\", ae, [((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-scheduleReportSend_channel\",\n key: `${e.source}-${e.id}`\n }, [(0, vue_1.createElementVNode)(\"div\", oe, [\n (0, vue_1.createElementVNode)(\"div\", {\n class: \"top-scheduleReportSend_channelInfoIcon\",\n \"data-top-icon\": r[e.source]\n }, null, 8, se),\n (0, vue_1.createElementVNode)(\"div\", Q, (0, vue_1.toDisplayString)(e.label), 1),\n e.settingLink ? ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(a, {\n key: 0,\n class: \"top-scheduleReportSend_channelInfoSettings\",\n size: \"xs\",\n href: e.settingLink,\n icon: \"\",\n color: \"theme\",\n tabindex: \"0\"\n }, null, 8, [\"href\"])) : (0, vue_1.createCommentVNode)(\"\", !0)\n ]), (0, vue_1.createVNode)(o, {\n modelValue: e.selected,\n \"onUpdate:modelValue\": (n) => t.$emit(\"update:channelSelected\", {\n id: e.id,\n source: e.source,\n selected: n\n })\n }, null, 8, [\"modelValue\", \"onUpdate:modelValue\"])]))), 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 }, [n(e.source) ? (0, vue_1.createCommentVNode)(\"\", !0) : ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", ce, [(0, vue_1.createElementVNode)(\"div\", le, [(0, vue_1.createElementVNode)(\"div\", {\n class: \"top-scheduleReportSend_channelInfoIcon\",\n \"data-top-icon\": r[e.source]\n }, null, 8, ue), (0, vue_1.createElementVNode)(\"a\", {\n class: \"top-scheduleReportSend_channelInfoLabel top-scheduleReportSend_channelInfoLink\",\n href: e.connectLink\n }, (0, vue_1.toDisplayString)(e.connectLabel), 9, de)])]))], 64))), 128))])]);\n };\n }\n }), pe = { class: \"top-scheduleTimeSelector\" }, $ = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"timeSelector\",\n props: {\n hour: {},\n minute: {}\n },\n emits: [\"update:hour\", \"update:minute\"],\n setup(e) {\n let t = Array.from({ length: 24 }, (e, t) => ({\n value: t,\n title: String(t).padStart(2, \"0\")\n })), n = [\n {\n value: 0,\n title: \"00\"\n },\n {\n value: 15,\n title: \"15\"\n },\n {\n value: 30,\n title: \"30\"\n },\n {\n value: 45,\n title: \"45\"\n }\n ];\n return (r, i) => {\n let a = (0, vue_1.resolveComponent)(\"TopSelect\");\n return (0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", pe, [(0, vue_1.createVNode)(a, {\n class: \"top-scheduleTimeSelector_hour\",\n modelValue: e.hour,\n options: (0, vue_1.unref)(t),\n \"onUpdate:modelValue\": i[0] ||= (e) => r.$emit(\"update:hour\", e)\n }, null, 8, [\"modelValue\", \"options\"]), (0, vue_1.createVNode)(a, {\n class: \"top-scheduleTimeSelector_minute\",\n modelValue: e.minute,\n options: n,\n \"onUpdate:modelValue\": i[1] ||= (e) => r.$emit(\"update:minute\", e)\n }, null, 8, [\"modelValue\"])]);\n };\n }\n }), me = { class: \"top-scheduleTimeSelectors\" }, he = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"timeSelectors\",\n props: { times: {} },\n emits: [\"update:times\"],\n setup(e, { emit: t }) {\n let n = e, r = t, i = /* @__PURE__ */ new WeakMap(), a = 0, o = (e) => {\n let t = (0, vue_1.toRaw)(e), n = i.get(t);\n if (n !== void 0)\n return n;\n let r = a++;\n return i.set(t, r), r;\n }, s = (e, t) => {\n r(\"update:times\", n.times.map((n, r) => {\n if (r !== e)\n return n;\n let a = {\n ...n,\n ...t\n };\n return i.set(a, o(n)), a;\n }));\n }, l = () => {\n r(\"update:times\", [{\n hour: 0,\n minute: 0\n }, ...n.times]);\n };\n return (t, n) => {\n let r = (0, vue_1.resolveComponent)(\"TopButton\");\n return (0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", me, [((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)(e.times, (n, i) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n class: \"top-scheduleTimeSelectors_item\",\n key: o(n)\n }, [(0, vue_1.createVNode)($, {\n hour: n.hour,\n minute: n.minute,\n \"onUpdate:hour\": (e) => s(i, { hour: e }),\n \"onUpdate:minute\": (e) => s(i, { minute: e })\n }, null, 8, [\n \"hour\",\n \"minute\",\n \"onUpdate:hour\",\n \"onUpdate:minute\"\n ]), i ? ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(r, {\n key: 0,\n onClick: (n) => t.$emit(\"update:times\", e.times.filter((e, t) => t !== i)),\n color: \"theme\",\n icon: \"\"\n }, null, 8, [\"onClick\"])) : ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(r, {\n key: 1,\n class: \"top-scheduleTimeSelectors_itemAdd\",\n onClick: l,\n color: \"theme\",\n icon: \"\"\n }))]))), 128))]);\n };\n }\n });\n exports.TopScheduleContainer = z;\n exports.TopScheduleCalendar = ne;\n exports.TopScheduleEmailSelector = K;\n exports.TopScheduleEmail = Z;\n exports.TopScheduleReportSend = fe;\n exports.TopScheduleTimeSelector = $;\n exports.TopScheduleTimeSelectors = he;\n});\n//# sourceMappingURL=schedule.js.map\n","<script setup lang=\"ts\">\nimport TopSelect from '@/components/forms/select/select.vue';\nimport type { Props, Emits, TriggerType } from '@/components/schedule/schedule/types';\nimport { useI18n } from '@/core/plugins/i18n';\n\ndefineOptions({\n\tname: 'TopSchedule',\n});\n\nconst props = withDefaults(defineProps<Props>(), {\n\ttriggerType: 'onDemand',\n});\n\ndefineEmits<Emits>();\n\nconst i18n = useI18n();\nconst labelByStyling = {\n\t'track': i18n.Projects.Checks,\n\t'report': i18n.Projects.Reports,\n\t'neutral': '',\n};\nconst title = props.title ?? labelByStyling[props.styling];\n\n</script>\n\n<template>\n\t<div\n\t\t:class=\"{\n\t\t\t'top-schedule': true,\n\t\t\t[`top-schedule-style_${styling}`]: true,\n\t\t}\"\n\t>\n\t\t<div class=\"top-schedule_header\">\n\t\t\t<div class=\"top-schedule_headerTitle\">\n\t\t\t\t{{ title }}\n\t\t\t</div>\n\n\t\t\t<TopSelect\n\t\t\t\tclass=\"top-schedule_headerTriggerType\"\n\t\t\t\t:modelValue=\"triggerType\"\n\t\t\t\t@update:modelValue=\"$emit('update:triggerType', $event as TriggerType)\"\n\t\t\t\t:options=\"triggerTypeOptions\"\n\t\t\t\tsize=\"s\"\n\t\t\t/>\n\t\t</div>\n\n\t\t<div\n\t\t\tv-if=\"triggerType !== 'onDemand' && $slots.body\"\n\t\t\tclass=\"top-schedule_body\"\n\t\t>\n\t\t\t<slot name=\"body\"></slot>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<template>\n\t<div class=\"top-schedule_bodyContainer\">\n\t\t<slot></slot>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","import type { Day, Props } from '@/components/schedule/schedule/compoents/calendar/types';\nimport { useI18n } from '@/core/app';\n\n/**\n * Количество дней в месяце\n */\nexport const COUNT_DAYS_IN_MONTS = 27;\n\n/**\n * Количество дней в неделе\n */\nexport const COUNT_DAYS_IN_WEEK = 7;\n\nexport const genDaysByCalendarMode = (mode: Props['mode']): Day[] => {\n\tconst i18n = useI18n();\n\n\tswitch (mode) {\n\t\tcase 'dayOfMonth': {\n\t\t\tconst days: Day[] = Array.from({ length: COUNT_DAYS_IN_MONTS }, (_, i) => ({\n\t\t\t\tvalue: i + 1,\n\t\t\t\ttitle: String(i + 1),\n\t\t\t}));\n\n\t\t\tdays.push({\n\t\t\t\tvalue: 'LAST_OF_MONTH',\n\t\t\t\ttitle: '',\n\t\t\t\tisIcon: true,\n\t\t\t});\n\n\t\t\treturn days;\n\t\t}\n\n\t\tcase 'dayOfWeek': {\n\t\t\treturn [\n\t\t\t\t{ value: 'MONDAY', title: i18n.Calendar.Dw_1 },\n\t\t\t\t{ value: 'TUESDAY', title: i18n.Calendar.Dw_2 },\n\t\t\t\t{ value: 'WEDNESDAY', title: i18n.Calendar.Dw_3 },\n\t\t\t\t{ value: 'THURSDAY', title: i18n.Calendar.Dw_4 },\n\t\t\t\t{ value: 'FRIDAY', title: i18n.Calendar.Dw_5 },\n\t\t\t\t{ value: 'SATURDAY', title: i18n.Calendar.Dw_6 },\n\t\t\t\t{ value: 'SUNDAY', title: i18n.Calendar.Dw_7 },\n\t\t\t];\n\t\t}\n\t}\n};","<script setup lang=\"ts\">\nimport type { Props, Emits } from '@/components/schedule/schedule/compoents/calendar/types';\nimport { COUNT_DAYS_IN_MONTS, COUNT_DAYS_IN_WEEK, genDaysByCalendarMode } from '@/components/schedule/schedule/compoents/calendar/utils';\nimport { numberEnding } from '@/core/utils/string';\nimport { computed } from 'vue';\nimport { useI18n } from '@/core/app';\n\nconst i18n = useI18n();\nconst props = defineProps<Props>();\nconst emit = defineEmits<Emits>();\n\nconst selectedDays = computed<Props['modelValue']>({\n\tget: () => props.modelValue,\n\tset: value => emit('update:modelValue', value),\n});\n\nconst days = computed(() => genDaysByCalendarMode(props.mode));\n\nconst selectedCountLabel = computed(() => {\n\tconst daysCount = selectedDays.value.length;\n\tlet postfix = '';\n\n\tswitch (props.mode) {\n\t\tcase 'dayOfWeek': {\n\t\t\tif (daysCount === COUNT_DAYS_IN_WEEK) return i18n.Common.Every_day;\n\n\t\t\tpostfix = i18n.Common.a_week;\n\n\t\t\tbreak;\n\t\t}\n\t\tcase 'dayOfMonth': {\n\t\t\t// плюс \"последний день месяца\"\n\t\t\tif (daysCount === COUNT_DAYS_IN_MONTS + 1) return i18n.Common.Every_day;\n\n\t\t\tpostfix = i18n.Common.a_month;\n\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn `${daysCount} ${numberEnding(\n\t\tdaysCount,\n\t\ti18n.Common.time_a_0,\n\t\ti18n.Common.time_a_0,\n\t\ti18n.Common.time_a_2,\n\t)} ${postfix}`;\n});\n\nconst isClearAction = computed(() => selectedDays.value.length > 1);\n\nconst toggleAllDays = () => {\n\tselectedDays.value = isClearAction.value ? [] : days.value.map(day => day.value);\n};\n\n</script>\n\n<template>\n\t<div class=\"top-scheduleCalendar\">\n\t\t<div class=\"top-scheduleCalendar_header\">\n\t\t\t<slot name=\"header\"></slot>\n\n\t\t\t<TopButton\n\t\t\t\tclass=\"top-scheduleCalendar_headerButton\"\n\t\t\t\t@click=\"toggleAllDays\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ttabindex=\"0\"\n\t\t\t>\n\t\t\t\t{{ isClearAction ? $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_calendarDayRadio\"\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t:value=\"day.value\"\n\t\t\t\t\tv-model=\"selectedDays\"\n\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t>\n\n\t\t\t\t<span\n\t\t\t\t\tclass=\"top-scheduleCalendar_calendarDayTitle\"\n\t\t\t\t\t:data-top-icon=\"day.isIcon ? day.title : undefined\"\n\t\t\t\t>\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<div\n\t\t\t:class=\"{\n\t\t\t\t'top-scheduleCalendar_selectedCount': true,\n\t\t\t\t'top-error': !selectedDays.length\n\t\t\t}\"\n\t\t>\n\t\t\t{{ selectedCountLabel }}\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { 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/compoents/email/selector/types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\temails: () => [],\n\tgetEmailSuggestions: () => [],\n});\n\nconst emit = defineEmits<Emits>();\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\nconst filterEmails = (emails: string[]) => emails.filter(email => !props.emails.includes(email));\n\nconst submit = (value: unknown = props.modelValue) => {\n\tconst email = String(value).trim();\n\tif (!email) return;\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\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\temit('update:modelValue', '');\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<TopInput\n\t\t\tref=\"elInputRef\"\n\t\t\t:modelValue\n\t\t\t@update:modelValue=\"$emit('update:modelValue', $event)\"\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=\"l\"\n\t\t>\n\t\t\t<TopButton\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 { Props, Emits } from '@/components/schedule/schedule/compoents/email/types';\nimport ScheduleEmailSelector from '@/components/schedule/schedule/compoents/email/selector/selector.vue';\n\nconst props = withDefaults(defineProps<Props>(), {\n\temails: () => [],\n\tgetEmailSuggestions: () => [],\n\tmaxEmailsCount: -1,\n});\n\nconst emit = defineEmits<Emits>();\n\nconst value = ref('');\n\nconst addEmail = (email: string) => {\n\tconst preparedEmail = email.trim();\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<div\n\t\t\tv-if=\"!(maxEmailsCount && emails.length === maxEmailsCount)\"\n\t\t\tclass=\"top-scheduleEmail_selector\"\n\t\t>\n\t\t\t<ScheduleEmailSelector\n\t\t\t\tv-model=\"value\"\n\t\t\t\t:getEmailSuggestions=\"getEmailSuggestions\"\n\t\t\t\t:emails=\"emails\"\n\t\t\t\t@submit=\"addEmail\"\n\t\t\t/>\n\t\t</div>\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{{ email }}\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, ReportChannelSource } from '@/components/schedule/schedule/compoents/reportSend/types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tconnectors: () => [],\n});\ndefineEmits<Emits>();\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-scheduleReportSend\">\n\t\t<div class=\"top-scheduleReportSend_title\">\n\t\t\t{{ $i18n.Projects.Reports_send }}\n\t\t</div>\n\n\t\t<div class=\"top-scheduleReportSend_channels\">\n\t\t\t<div\n\t\t\t\tclass=\"top-scheduleReportSend_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<div class=\"top-scheduleReportSend_channelInfo\">\n\t\t\t\t\t<div\n\t\t\t\t\t\tclass=\"top-scheduleReportSend_channelInfoIcon\"\n\t\t\t\t\t\t:data-top-icon=\"sourceIconBySource[channel.source]\"\n\t\t\t\t\t></div>\n\n\t\t\t\t\t<div class=\"top-scheduleReportSend_channelInfoLabel\">\n\t\t\t\t\t\t{{ channel.label }}\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tv-if=\"channel.settingLink\"\n\t\t\t\t\t\tclass=\"top-scheduleReportSend_channelInfoSettings\"\n\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t:href=\"channel.settingLink\"\n\t\t\t\t\t\ticon=\"\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t\t></TopButton>\n\t\t\t\t</div>\n\n\t\t\t\t<TopSwitcher\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\t\tclass=\"top-scheduleReportSend_channel\"\n\t\t\t\t>\n\t\t\t\t\t<div class=\"top-scheduleReportSend_channelInfo\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"top-scheduleReportSend_channelInfoIcon\"\n\t\t\t\t\t\t\t:data-top-icon=\"sourceIconBySource[connector.source]\"\n\t\t\t\t\t\t></div>\n\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\tclass=\"top-scheduleReportSend_channelInfoLabel top-scheduleReportSend_channelInfoLink\"\n\t\t\t\t\t\t\t:href=\"connector.connectLink\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{{ connector.connectLabel }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\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","<script setup lang=\"ts\">\nimport type { Props, Emits, Time } from '@/components/schedule/schedule/compoents/timeSelector/types';\n\ndefineProps<Props>();\ndefineEmits<Emits>();\n\nconst hourOptions = Array.from({ length: 24 }, (_, value) => ({\n\tvalue,\n\ttitle: String(value).padStart(2, '0'),\n}));\nconst minuteOptions = [\n\t{\n\t\tvalue: 0,\n\t\ttitle: '00',\n\t},\n\t{\n\t\tvalue: 15,\n\t\ttitle: '15',\n\t},\n\t{\n\t\tvalue: 30,\n\t\ttitle: '30',\n\t},\n\t{\n\t\tvalue: 45,\n\t\ttitle: '45',\n\t},\n];\n\n</script>\n\n<template>\n\t<div class=\"top-scheduleTimeSelector\">\n\t\t<TopSelect\n\t\t\tclass=\"top-scheduleTimeSelector_hour\"\n\t\t\t:modelValue=\"hour\"\n\t\t\t:options=\"hourOptions\"\n\t\t\t@update:modelValue=\"$emit('update:hour', $event as Time['hour'])\"\n\t\t/>\n\n\t\t<TopSelect\n\t\t\tclass=\"top-scheduleTimeSelector_minute\"\n\t\t\t:modelValue=\"minute\"\n\t\t\t:options=\"minuteOptions\"\n\t\t\t@update:modelValue=\"$emit('update:minute', $event as Time['minute'])\"\n\t\t/>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { toRaw } from 'vue';\nimport type { Props, Emits } from '@/components/schedule/schedule/compoents/timeSelectors/types';\nimport type { Time } from '@/components/schedule/schedule/compoents/timeSelector/types';\nimport TimeSelector from '@/components/schedule/schedule/compoents/timeSelector/timeSelector.vue';\n\nconst props = defineProps<Props>();\nconst emit = defineEmits<Emits>();\nconst timeKeys = new WeakMap<Time, number>();\nlet nextTimeKey = 0;\n\nconst getTimeKey = (rawOrProxyTime: Time) => {\n\t// time может быть proxy или обычным объектом\n\tconst time = toRaw(rawOrProxyTime);\n\n\tconst existingKey = timeKeys.get(time);\n\tif (existingKey !== undefined) return existingKey;\n\n\tconst key = nextTimeKey++;\n\ttimeKeys.set(time, key);\n\n\treturn key;\n};\n\nconst updateTime = (index: number, patch: Partial<Props['times'][number]>) => {\n\tconst updatedTimes = props.times.map((time, i) => {\n\t\tif (i !== index) return time;\n\n\t\tconst updatedTime = { ...time, ...patch };\n\t\ttimeKeys.set(updatedTime, getTimeKey(time));\n\n\t\treturn updatedTime;\n\t});\n\n\temit('update:times', updatedTimes);\n};\n\nconst addTime = () => {\n\tconst time: Time = { hour: 0, minute: 0 };\n\tconst updatedTimes = [\n\t\ttime,\n\t\t...props.times,\n\t];\n\n\temit('update:times', updatedTimes);\n};\n\n</script>\n\n<template>\n\t<div class=\"top-scheduleTimeSelectors\">\n\t\t<div\n\t\t\tclass=\"top-scheduleTimeSelectors_item\"\n\t\t\tv-for=\"(time, index) in times\"\n\t\t\t:key=\"getTimeKey(time)\"\n\t\t>\n\t\t\t<TimeSelector\n\t\t\t\t:hour=\"time.hour\"\n\t\t\t\t:minute=\"time.minute\"\n\t\t\t\t@update:hour=\"updateTime(index, { hour: $event as Time['hour'] })\"\n\t\t\t\t@update:minute=\"updateTime(index, { minute: $event as Time['minute'] })\"\n\t\t\t/>\n\n\t\t\t<TopButton\n\t\t\t\tv-if=\"index\"\n\t\t\t\t@click=\"$emit('update:times', times.filter((_, i) => i !== index))\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ticon=\"\"\n\t\t\t/>\n\n\t\t\t<TopButton\n\t\t\t\tv-else\n\t\t\t\tclass=\"top-scheduleTimeSelectors_itemAdd\"\n\t\t\t\t@click=\"addTime\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ticon=\"\"\n\t\t\t/>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n"]}
@@ -388,11 +388,10 @@ var z = /*#__PURE__*/ a(I, [["render", R]]), B = (t) => {
388
388
  return i.set(a, o(n)), a;
389
389
  }));
390
390
  }, l = () => {
391
- let e = {
391
+ r("update:times", [{
392
392
  hour: 0,
393
393
  minute: 0
394
- };
395
- r("update:times", [...n.times, e]);
394
+ }, ...n.times]);
396
395
  };
397
396
  return (t, n) => {
398
397
  let r = T("TopButton");
@@ -409,18 +408,18 @@ var z = /*#__PURE__*/ a(I, [["render", R]]), B = (t) => {
409
408
  "minute",
410
409
  "onUpdate:hour",
411
410
  "onUpdate:minute"
412
- ]), i === e.times.length - 1 ? (x(), u(r, {
411
+ ]), i ? (x(), u(r, {
412
+ key: 0,
413
+ onClick: (n) => t.$emit("update:times", e.times.filter((e, t) => t !== i)),
414
+ color: "theme",
415
+ icon: ""
416
+ }, null, 8, ["onClick"])) : (x(), u(r, {
413
417
  key: 1,
414
418
  class: "top-scheduleTimeSelectors_itemAdd",
415
419
  onClick: l,
416
420
  color: "theme",
417
421
  icon: ""
418
- })) : (x(), u(r, {
419
- key: 0,
420
- onClick: (n) => t.$emit("update:times", e.times.filter((e, t) => t !== i)),
421
- color: "theme",
422
- icon: ""
423
- }, null, 8, ["onClick"]))]))), 128))]);
422
+ }))]))), 128))]);
424
423
  };
425
424
  }
426
425
  });
@@ -1 +1 @@
1
- {"version":3,"file":"schedule.js","names":["$emit","$slots","$i18n","$emit","$i18n","$i18n","$emit","$i18n","$emit","$emit","$emit"],"sources":["../../src/components/schedule/schedule/schedule.vue","../../src/components/schedule/schedule/schedule.vue","../../src/components/schedule/schedule/compoents/container/container.vue","../../src/components/schedule/schedule/compoents/calendar/utils.ts","../../src/components/schedule/schedule/compoents/calendar/calendar.vue","../../src/components/schedule/schedule/compoents/calendar/calendar.vue","../../src/components/schedule/schedule/compoents/email/selector/selector.vue","../../src/components/schedule/schedule/compoents/email/selector/selector.vue","../../src/components/schedule/schedule/compoents/email/email.vue","../../src/components/schedule/schedule/compoents/email/email.vue","../../src/components/schedule/schedule/compoents/reportSend/reportSend.vue","../../src/components/schedule/schedule/compoents/reportSend/reportSend.vue","../../src/components/schedule/schedule/compoents/timeSelector/timeSelector.vue","../../src/components/schedule/schedule/compoents/timeSelector/timeSelector.vue","../../src/components/schedule/schedule/compoents/timeSelectors/timeSelectors.vue","../../src/components/schedule/schedule/compoents/timeSelectors/timeSelectors.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport TopSelect from '@/components/forms/select/select.vue';\nimport type { Props, Emits, TriggerType } from '@/components/schedule/schedule/types';\nimport { useI18n } from '@/core/plugins/i18n';\n\ndefineOptions({\n\tname: 'TopSchedule',\n});\n\nconst props = withDefaults(defineProps<Props>(), {\n\ttriggerType: 'onDemand',\n});\n\ndefineEmits<Emits>();\n\nconst i18n = useI18n();\nconst labelByStyling = {\n\t'track': i18n.Projects.Checks,\n\t'report': i18n.Projects.Reports,\n\t'neutral': '',\n};\nconst title = props.title ?? labelByStyling[props.styling];\n\n</script>\n\n<template>\n\t<div\n\t\t:class=\"{\n\t\t\t'top-schedule': true,\n\t\t\t[`top-schedule-style_${styling}`]: true,\n\t\t}\"\n\t>\n\t\t<div class=\"top-schedule_header\">\n\t\t\t<div class=\"top-schedule_headerTitle\">\n\t\t\t\t{{ title }}\n\t\t\t</div>\n\n\t\t\t<TopSelect\n\t\t\t\tclass=\"top-schedule_headerTriggerType\"\n\t\t\t\t:modelValue=\"triggerType\"\n\t\t\t\t@update:modelValue=\"$emit('update:triggerType', $event as TriggerType)\"\n\t\t\t\t:options=\"triggerTypeOptions\"\n\t\t\t\tsize=\"s\"\n\t\t\t/>\n\t\t</div>\n\n\t\t<div\n\t\t\tv-if=\"triggerType !== 'onDemand' && $slots.body\"\n\t\t\tclass=\"top-schedule_body\"\n\t\t>\n\t\t\t<slot name=\"body\"></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 TopSelect from '@/components/forms/select/select.vue';\nimport type { Props, Emits, TriggerType } from '@/components/schedule/schedule/types';\nimport { useI18n } from '@/core/plugins/i18n';\n\ndefineOptions({\n\tname: 'TopSchedule',\n});\n\nconst props = withDefaults(defineProps<Props>(), {\n\ttriggerType: 'onDemand',\n});\n\ndefineEmits<Emits>();\n\nconst i18n = useI18n();\nconst labelByStyling = {\n\t'track': i18n.Projects.Checks,\n\t'report': i18n.Projects.Reports,\n\t'neutral': '',\n};\nconst title = props.title ?? labelByStyling[props.styling];\n\n</script>\n\n<template>\n\t<div\n\t\t:class=\"{\n\t\t\t'top-schedule': true,\n\t\t\t[`top-schedule-style_${styling}`]: true,\n\t\t}\"\n\t>\n\t\t<div class=\"top-schedule_header\">\n\t\t\t<div class=\"top-schedule_headerTitle\">\n\t\t\t\t{{ title }}\n\t\t\t</div>\n\n\t\t\t<TopSelect\n\t\t\t\tclass=\"top-schedule_headerTriggerType\"\n\t\t\t\t:modelValue=\"triggerType\"\n\t\t\t\t@update:modelValue=\"$emit('update:triggerType', $event as TriggerType)\"\n\t\t\t\t:options=\"triggerTypeOptions\"\n\t\t\t\tsize=\"s\"\n\t\t\t/>\n\t\t</div>\n\n\t\t<div\n\t\t\tv-if=\"triggerType !== 'onDemand' && $slots.body\"\n\t\t\tclass=\"top-schedule_body\"\n\t\t>\n\t\t\t<slot name=\"body\"></slot>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<template>\n\t<div class=\"top-schedule_bodyContainer\">\n\t\t<slot></slot>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","import type { Day, Props } from '@/components/schedule/schedule/compoents/calendar/types';\nimport { useI18n } from '@/core/app';\n\n/**\n * Количество дней в месяце\n */\nexport const COUNT_DAYS_IN_MONTS = 27;\n\n/**\n * Количество дней в неделе\n */\nexport const COUNT_DAYS_IN_WEEK = 7;\n\nexport const genDaysByCalendarMode = (mode: Props['mode']): Day[] => {\n\tconst i18n = useI18n();\n\n\tswitch (mode) {\n\t\tcase 'dayOfMonth': {\n\t\t\tconst days: Day[] = Array.from({ length: COUNT_DAYS_IN_MONTS }, (_, i) => ({\n\t\t\t\tvalue: i + 1,\n\t\t\t\ttitle: String(i + 1),\n\t\t\t}));\n\n\t\t\tdays.push({\n\t\t\t\tvalue: 'LAST_OF_MONTH',\n\t\t\t\ttitle: '',\n\t\t\t\tisIcon: true,\n\t\t\t});\n\n\t\t\treturn days;\n\t\t}\n\n\t\tcase 'dayOfWeek': {\n\t\t\treturn [\n\t\t\t\t{ value: 'MONDAY', title: i18n.Calendar.Dw_1 },\n\t\t\t\t{ value: 'TUESDAY', title: i18n.Calendar.Dw_2 },\n\t\t\t\t{ value: 'WEDNESDAY', title: i18n.Calendar.Dw_3 },\n\t\t\t\t{ value: 'THURSDAY', title: i18n.Calendar.Dw_4 },\n\t\t\t\t{ value: 'FRIDAY', title: i18n.Calendar.Dw_5 },\n\t\t\t\t{ value: 'SATURDAY', title: i18n.Calendar.Dw_6 },\n\t\t\t\t{ value: 'SUNDAY', title: i18n.Calendar.Dw_7 },\n\t\t\t];\n\t\t}\n\t}\n};","<script setup lang=\"ts\">\nimport type { Props, Emits } from '@/components/schedule/schedule/compoents/calendar/types';\nimport { COUNT_DAYS_IN_MONTS, COUNT_DAYS_IN_WEEK, genDaysByCalendarMode } from '@/components/schedule/schedule/compoents/calendar/utils';\nimport { numberEnding } from '@/core/utils/string';\nimport { computed } from 'vue';\nimport { useI18n } from '@/core/app';\n\nconst i18n = useI18n();\nconst props = defineProps<Props>();\nconst emit = defineEmits<Emits>();\n\nconst selectedDays = computed<Props['modelValue']>({\n\tget: () => props.modelValue,\n\tset: value => emit('update:modelValue', value),\n});\n\nconst days = computed(() => genDaysByCalendarMode(props.mode));\n\nconst selectedCountLabel = computed(() => {\n\tconst daysCount = selectedDays.value.length;\n\tlet postfix = '';\n\n\tswitch (props.mode) {\n\t\tcase 'dayOfWeek': {\n\t\t\tif (daysCount === COUNT_DAYS_IN_WEEK) return i18n.Common.Every_day;\n\n\t\t\tpostfix = i18n.Common.a_week;\n\n\t\t\tbreak;\n\t\t}\n\t\tcase 'dayOfMonth': {\n\t\t\t// плюс \"последний день месяца\"\n\t\t\tif (daysCount === COUNT_DAYS_IN_MONTS + 1) return i18n.Common.Every_day;\n\n\t\t\tpostfix = i18n.Common.a_month;\n\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn `${daysCount} ${numberEnding(\n\t\tdaysCount,\n\t\ti18n.Common.time_a_0,\n\t\ti18n.Common.time_a_0,\n\t\ti18n.Common.time_a_2,\n\t)} ${postfix}`;\n});\n\nconst isClearAction = computed(() => selectedDays.value.length > 1);\n\nconst toggleAllDays = () => {\n\tselectedDays.value = isClearAction.value ? [] : days.value.map(day => day.value);\n};\n\n</script>\n\n<template>\n\t<div class=\"top-scheduleCalendar\">\n\t\t<div class=\"top-scheduleCalendar_header\">\n\t\t\t<slot name=\"header\"></slot>\n\n\t\t\t<TopButton\n\t\t\t\tclass=\"top-scheduleCalendar_headerButton\"\n\t\t\t\t@click=\"toggleAllDays\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ttabindex=\"0\"\n\t\t\t>\n\t\t\t\t{{ isClearAction ? $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_calendarDayRadio\"\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t:value=\"day.value\"\n\t\t\t\t\tv-model=\"selectedDays\"\n\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t>\n\n\t\t\t\t<span\n\t\t\t\t\tclass=\"top-scheduleCalendar_calendarDayTitle\"\n\t\t\t\t\t:data-top-icon=\"day.isIcon ? day.title : undefined\"\n\t\t\t\t>\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<div\n\t\t\t:class=\"{\n\t\t\t\t'top-scheduleCalendar_selectedCount': true,\n\t\t\t\t'top-error': !selectedDays.length\n\t\t\t}\"\n\t\t>\n\t\t\t{{ selectedCountLabel }}\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, Emits } from '@/components/schedule/schedule/compoents/calendar/types';\nimport { COUNT_DAYS_IN_MONTS, COUNT_DAYS_IN_WEEK, genDaysByCalendarMode } from '@/components/schedule/schedule/compoents/calendar/utils';\nimport { numberEnding } from '@/core/utils/string';\nimport { computed } from 'vue';\nimport { useI18n } from '@/core/app';\n\nconst i18n = useI18n();\nconst props = defineProps<Props>();\nconst emit = defineEmits<Emits>();\n\nconst selectedDays = computed<Props['modelValue']>({\n\tget: () => props.modelValue,\n\tset: value => emit('update:modelValue', value),\n});\n\nconst days = computed(() => genDaysByCalendarMode(props.mode));\n\nconst selectedCountLabel = computed(() => {\n\tconst daysCount = selectedDays.value.length;\n\tlet postfix = '';\n\n\tswitch (props.mode) {\n\t\tcase 'dayOfWeek': {\n\t\t\tif (daysCount === COUNT_DAYS_IN_WEEK) return i18n.Common.Every_day;\n\n\t\t\tpostfix = i18n.Common.a_week;\n\n\t\t\tbreak;\n\t\t}\n\t\tcase 'dayOfMonth': {\n\t\t\t// плюс \"последний день месяца\"\n\t\t\tif (daysCount === COUNT_DAYS_IN_MONTS + 1) return i18n.Common.Every_day;\n\n\t\t\tpostfix = i18n.Common.a_month;\n\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn `${daysCount} ${numberEnding(\n\t\tdaysCount,\n\t\ti18n.Common.time_a_0,\n\t\ti18n.Common.time_a_0,\n\t\ti18n.Common.time_a_2,\n\t)} ${postfix}`;\n});\n\nconst isClearAction = computed(() => selectedDays.value.length > 1);\n\nconst toggleAllDays = () => {\n\tselectedDays.value = isClearAction.value ? [] : days.value.map(day => day.value);\n};\n\n</script>\n\n<template>\n\t<div class=\"top-scheduleCalendar\">\n\t\t<div class=\"top-scheduleCalendar_header\">\n\t\t\t<slot name=\"header\"></slot>\n\n\t\t\t<TopButton\n\t\t\t\tclass=\"top-scheduleCalendar_headerButton\"\n\t\t\t\t@click=\"toggleAllDays\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ttabindex=\"0\"\n\t\t\t>\n\t\t\t\t{{ isClearAction ? $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_calendarDayRadio\"\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t:value=\"day.value\"\n\t\t\t\t\tv-model=\"selectedDays\"\n\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t>\n\n\t\t\t\t<span\n\t\t\t\t\tclass=\"top-scheduleCalendar_calendarDayTitle\"\n\t\t\t\t\t:data-top-icon=\"day.isIcon ? day.title : undefined\"\n\t\t\t\t>\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<div\n\t\t\t:class=\"{\n\t\t\t\t'top-scheduleCalendar_selectedCount': true,\n\t\t\t\t'top-error': !selectedDays.length\n\t\t\t}\"\n\t\t>\n\t\t\t{{ selectedCountLabel }}\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { 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/compoents/email/selector/types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\temails: () => [],\n\tgetEmailSuggestions: () => [],\n});\n\nconst emit = defineEmits<Emits>();\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\nconst filterEmails = (emails: string[]) => emails.filter(email => !props.emails.includes(email));\n\nconst submit = (value: unknown = props.modelValue) => {\n\tconst email = String(value).trim();\n\tif (!email) return;\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\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\temit('update:modelValue', '');\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<TopInput\n\t\t\tref=\"elInputRef\"\n\t\t\t:modelValue\n\t\t\t@update:modelValue=\"$emit('update:modelValue', $event)\"\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=\"l\"\n\t\t>\n\t\t\t<TopButton\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 { 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/compoents/email/selector/types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\temails: () => [],\n\tgetEmailSuggestions: () => [],\n});\n\nconst emit = defineEmits<Emits>();\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\nconst filterEmails = (emails: string[]) => emails.filter(email => !props.emails.includes(email));\n\nconst submit = (value: unknown = props.modelValue) => {\n\tconst email = String(value).trim();\n\tif (!email) return;\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\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\temit('update:modelValue', '');\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<TopInput\n\t\t\tref=\"elInputRef\"\n\t\t\t:modelValue\n\t\t\t@update:modelValue=\"$emit('update:modelValue', $event)\"\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=\"l\"\n\t\t>\n\t\t\t<TopButton\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 { Props, Emits } from '@/components/schedule/schedule/compoents/email/types';\nimport ScheduleEmailSelector from '@/components/schedule/schedule/compoents/email/selector/selector.vue';\n\nconst props = withDefaults(defineProps<Props>(), {\n\temails: () => [],\n\tgetEmailSuggestions: () => [],\n\tmaxEmailsCount: -1,\n});\n\nconst emit = defineEmits<Emits>();\n\nconst value = ref('');\n\nconst addEmail = (email: string) => {\n\tconst preparedEmail = email.trim();\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<div\n\t\t\tv-if=\"!(maxEmailsCount && emails.length === maxEmailsCount)\"\n\t\t\tclass=\"top-scheduleEmail_selector\"\n\t\t>\n\t\t\t<ScheduleEmailSelector\n\t\t\t\tv-model=\"value\"\n\t\t\t\t:getEmailSuggestions=\"getEmailSuggestions\"\n\t\t\t\t:emails=\"emails\"\n\t\t\t\t@submit=\"addEmail\"\n\t\t\t/>\n\t\t</div>\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{{ email }}\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 { ref } from 'vue';\nimport type { Props, Emits } from '@/components/schedule/schedule/compoents/email/types';\nimport ScheduleEmailSelector from '@/components/schedule/schedule/compoents/email/selector/selector.vue';\n\nconst props = withDefaults(defineProps<Props>(), {\n\temails: () => [],\n\tgetEmailSuggestions: () => [],\n\tmaxEmailsCount: -1,\n});\n\nconst emit = defineEmits<Emits>();\n\nconst value = ref('');\n\nconst addEmail = (email: string) => {\n\tconst preparedEmail = email.trim();\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<div\n\t\t\tv-if=\"!(maxEmailsCount && emails.length === maxEmailsCount)\"\n\t\t\tclass=\"top-scheduleEmail_selector\"\n\t\t>\n\t\t\t<ScheduleEmailSelector\n\t\t\t\tv-model=\"value\"\n\t\t\t\t:getEmailSuggestions=\"getEmailSuggestions\"\n\t\t\t\t:emails=\"emails\"\n\t\t\t\t@submit=\"addEmail\"\n\t\t\t/>\n\t\t</div>\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{{ email }}\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, ReportChannelSource } from '@/components/schedule/schedule/compoents/reportSend/types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tconnectors: () => [],\n});\ndefineEmits<Emits>();\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-scheduleReportSend\">\n\t\t<div class=\"top-scheduleReportSend_title\">\n\t\t\t{{ $i18n.Projects.Reports_send }}\n\t\t</div>\n\n\t\t<div class=\"top-scheduleReportSend_channels\">\n\t\t\t<div\n\t\t\t\tclass=\"top-scheduleReportSend_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<div class=\"top-scheduleReportSend_channelInfo\">\n\t\t\t\t\t<div\n\t\t\t\t\t\tclass=\"top-scheduleReportSend_channelInfoIcon\"\n\t\t\t\t\t\t:data-top-icon=\"sourceIconBySource[channel.source]\"\n\t\t\t\t\t></div>\n\n\t\t\t\t\t<div class=\"top-scheduleReportSend_channelInfoLabel\">\n\t\t\t\t\t\t{{ channel.label }}\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tv-if=\"channel.settingLink\"\n\t\t\t\t\t\tclass=\"top-scheduleReportSend_channelInfoSettings\"\n\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t:href=\"channel.settingLink\"\n\t\t\t\t\t\ticon=\"\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t\t></TopButton>\n\t\t\t\t</div>\n\n\t\t\t\t<TopSwitcher\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\t\tclass=\"top-scheduleReportSend_channel\"\n\t\t\t\t>\n\t\t\t\t\t<div class=\"top-scheduleReportSend_channelInfo\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"top-scheduleReportSend_channelInfoIcon\"\n\t\t\t\t\t\t\t:data-top-icon=\"sourceIconBySource[connector.source]\"\n\t\t\t\t\t\t></div>\n\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\tclass=\"top-scheduleReportSend_channelInfoLabel top-scheduleReportSend_channelInfoLink\"\n\t\t\t\t\t\t\t:href=\"connector.connectLink\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{{ connector.connectLabel }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\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","<script setup lang=\"ts\">\nimport type { Emits, Props, ReportChannelSource } from '@/components/schedule/schedule/compoents/reportSend/types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tconnectors: () => [],\n});\ndefineEmits<Emits>();\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-scheduleReportSend\">\n\t\t<div class=\"top-scheduleReportSend_title\">\n\t\t\t{{ $i18n.Projects.Reports_send }}\n\t\t</div>\n\n\t\t<div class=\"top-scheduleReportSend_channels\">\n\t\t\t<div\n\t\t\t\tclass=\"top-scheduleReportSend_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<div class=\"top-scheduleReportSend_channelInfo\">\n\t\t\t\t\t<div\n\t\t\t\t\t\tclass=\"top-scheduleReportSend_channelInfoIcon\"\n\t\t\t\t\t\t:data-top-icon=\"sourceIconBySource[channel.source]\"\n\t\t\t\t\t></div>\n\n\t\t\t\t\t<div class=\"top-scheduleReportSend_channelInfoLabel\">\n\t\t\t\t\t\t{{ channel.label }}\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tv-if=\"channel.settingLink\"\n\t\t\t\t\t\tclass=\"top-scheduleReportSend_channelInfoSettings\"\n\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t:href=\"channel.settingLink\"\n\t\t\t\t\t\ticon=\"\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t\t></TopButton>\n\t\t\t\t</div>\n\n\t\t\t\t<TopSwitcher\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\t\tclass=\"top-scheduleReportSend_channel\"\n\t\t\t\t>\n\t\t\t\t\t<div class=\"top-scheduleReportSend_channelInfo\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"top-scheduleReportSend_channelInfoIcon\"\n\t\t\t\t\t\t\t:data-top-icon=\"sourceIconBySource[connector.source]\"\n\t\t\t\t\t\t></div>\n\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\tclass=\"top-scheduleReportSend_channelInfoLabel top-scheduleReportSend_channelInfoLink\"\n\t\t\t\t\t\t\t:href=\"connector.connectLink\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{{ connector.connectLabel }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\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","<script setup lang=\"ts\">\nimport type { Props, Emits, Time } from '@/components/schedule/schedule/compoents/timeSelector/types';\n\ndefineProps<Props>();\ndefineEmits<Emits>();\n\nconst hourOptions = Array.from({ length: 24 }, (_, value) => ({\n\tvalue,\n\ttitle: String(value).padStart(2, '0'),\n}));\nconst minuteOptions = [\n\t{\n\t\tvalue: 0,\n\t\ttitle: '00',\n\t},\n\t{\n\t\tvalue: 15,\n\t\ttitle: '15',\n\t},\n\t{\n\t\tvalue: 30,\n\t\ttitle: '30',\n\t},\n\t{\n\t\tvalue: 45,\n\t\ttitle: '45',\n\t},\n];\n\n</script>\n\n<template>\n\t<div class=\"top-scheduleTimeSelector\">\n\t\t<TopSelect\n\t\t\tclass=\"top-scheduleTimeSelector_hour\"\n\t\t\t:modelValue=\"hour\"\n\t\t\t:options=\"hourOptions\"\n\t\t\t@update:modelValue=\"$emit('update:hour', $event as Time['hour'])\"\n\t\t/>\n\n\t\t<TopSelect\n\t\t\tclass=\"top-scheduleTimeSelector_minute\"\n\t\t\t:modelValue=\"minute\"\n\t\t\t:options=\"minuteOptions\"\n\t\t\t@update:modelValue=\"$emit('update:minute', $event as Time['minute'])\"\n\t\t/>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport type { Props, Emits, Time } from '@/components/schedule/schedule/compoents/timeSelector/types';\n\ndefineProps<Props>();\ndefineEmits<Emits>();\n\nconst hourOptions = Array.from({ length: 24 }, (_, value) => ({\n\tvalue,\n\ttitle: String(value).padStart(2, '0'),\n}));\nconst minuteOptions = [\n\t{\n\t\tvalue: 0,\n\t\ttitle: '00',\n\t},\n\t{\n\t\tvalue: 15,\n\t\ttitle: '15',\n\t},\n\t{\n\t\tvalue: 30,\n\t\ttitle: '30',\n\t},\n\t{\n\t\tvalue: 45,\n\t\ttitle: '45',\n\t},\n];\n\n</script>\n\n<template>\n\t<div class=\"top-scheduleTimeSelector\">\n\t\t<TopSelect\n\t\t\tclass=\"top-scheduleTimeSelector_hour\"\n\t\t\t:modelValue=\"hour\"\n\t\t\t:options=\"hourOptions\"\n\t\t\t@update:modelValue=\"$emit('update:hour', $event as Time['hour'])\"\n\t\t/>\n\n\t\t<TopSelect\n\t\t\tclass=\"top-scheduleTimeSelector_minute\"\n\t\t\t:modelValue=\"minute\"\n\t\t\t:options=\"minuteOptions\"\n\t\t\t@update:modelValue=\"$emit('update:minute', $event as Time['minute'])\"\n\t\t/>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { toRaw } from 'vue';\nimport type { Props, Emits } from '@/components/schedule/schedule/compoents/timeSelectors/types';\nimport type { Time } from '@/components/schedule/schedule/compoents/timeSelector/types';\nimport TimeSelector from '@/components/schedule/schedule/compoents/timeSelector/timeSelector.vue';\n\nconst props = defineProps<Props>();\nconst emit = defineEmits<Emits>();\nconst timeKeys = new WeakMap<Time, number>();\nlet nextTimeKey = 0;\n\nconst getTimeKey = (rawOrProxyTime: Time) => {\n\t// time может быть proxy или обычным объектом\n\tconst time = toRaw(rawOrProxyTime);\n\n\tconst existingKey = timeKeys.get(time);\n\tif (existingKey !== undefined) return existingKey;\n\n\tconst key = nextTimeKey++;\n\ttimeKeys.set(time, key);\n\n\treturn key;\n};\n\nconst updateTime = (index: number, patch: Partial<Props['times'][number]>) => {\n\tconst updatedTimes = props.times.map((time, i) => {\n\t\tif (i !== index) return time;\n\n\t\tconst updatedTime = { ...time, ...patch };\n\t\ttimeKeys.set(updatedTime, getTimeKey(time));\n\n\t\treturn updatedTime;\n\t});\n\n\temit('update:times', updatedTimes);\n};\n\nconst addTime = () => {\n\tconst time: Time = { hour: 0, minute: 0 };\n\tconst updatedTimes = [\n\t\t...props.times,\n\t\ttime,\n\t];\n\n\temit('update:times', updatedTimes);\n};\n\n</script>\n\n<template>\n\t<div class=\"top-scheduleTimeSelectors\">\n\t\t<div\n\t\t\tclass=\"top-scheduleTimeSelectors_item\"\n\t\t\tv-for=\"(time, index) in times\"\n\t\t\t:key=\"getTimeKey(time)\"\n\t\t>\n\t\t\t<TimeSelector\n\t\t\t\t:hour=\"time.hour\"\n\t\t\t\t:minute=\"time.minute\"\n\t\t\t\t@update:hour=\"updateTime(index, { hour: $event as Time['hour'] })\"\n\t\t\t\t@update:minute=\"updateTime(index, { minute: $event as Time['minute'] })\"\n\t\t\t/>\n\n\t\t\t<TopButton\n\t\t\t\tv-if=\"index !== times.length - 1\"\n\t\t\t\t@click=\"$emit('update:times', times.filter((_, i) => i !== index))\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ticon=\"\"\n\t\t\t/>\n\n\t\t\t<TopButton\n\t\t\t\tv-else\n\t\t\t\tclass=\"top-scheduleTimeSelectors_itemAdd\"\n\t\t\t\t@click=\"addTime\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ticon=\"\"\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 { toRaw } from 'vue';\nimport type { Props, Emits } from '@/components/schedule/schedule/compoents/timeSelectors/types';\nimport type { Time } from '@/components/schedule/schedule/compoents/timeSelector/types';\nimport TimeSelector from '@/components/schedule/schedule/compoents/timeSelector/timeSelector.vue';\n\nconst props = defineProps<Props>();\nconst emit = defineEmits<Emits>();\nconst timeKeys = new WeakMap<Time, number>();\nlet nextTimeKey = 0;\n\nconst getTimeKey = (rawOrProxyTime: Time) => {\n\t// time может быть proxy или обычным объектом\n\tconst time = toRaw(rawOrProxyTime);\n\n\tconst existingKey = timeKeys.get(time);\n\tif (existingKey !== undefined) return existingKey;\n\n\tconst key = nextTimeKey++;\n\ttimeKeys.set(time, key);\n\n\treturn key;\n};\n\nconst updateTime = (index: number, patch: Partial<Props['times'][number]>) => {\n\tconst updatedTimes = props.times.map((time, i) => {\n\t\tif (i !== index) return time;\n\n\t\tconst updatedTime = { ...time, ...patch };\n\t\ttimeKeys.set(updatedTime, getTimeKey(time));\n\n\t\treturn updatedTime;\n\t});\n\n\temit('update:times', updatedTimes);\n};\n\nconst addTime = () => {\n\tconst time: Time = { hour: 0, minute: 0 };\n\tconst updatedTimes = [\n\t\t...props.times,\n\t\ttime,\n\t];\n\n\temit('update:times', updatedTimes);\n};\n\n</script>\n\n<template>\n\t<div class=\"top-scheduleTimeSelectors\">\n\t\t<div\n\t\t\tclass=\"top-scheduleTimeSelectors_item\"\n\t\t\tv-for=\"(time, index) in times\"\n\t\t\t:key=\"getTimeKey(time)\"\n\t\t>\n\t\t\t<TimeSelector\n\t\t\t\t:hour=\"time.hour\"\n\t\t\t\t:minute=\"time.minute\"\n\t\t\t\t@update:hour=\"updateTime(index, { hour: $event as Time['hour'] })\"\n\t\t\t\t@update:minute=\"updateTime(index, { minute: $event as Time['minute'] })\"\n\t\t\t/>\n\n\t\t\t<TopButton\n\t\t\t\tv-if=\"index !== times.length - 1\"\n\t\t\t\t@click=\"$emit('update:times', times.filter((_, i) => i !== index))\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ticon=\"\"\n\t\t\t/>\n\n\t\t\t<TopButton\n\t\t\t\tv-else\n\t\t\t\tclass=\"top-scheduleTimeSelectors_itemAdd\"\n\t\t\t\t@click=\"addTime\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ticon=\"\"\n\t\t\t/>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;EASA,IAAM,IAAQ,GAMR,IAAO,EAAQ,GACf,IAAiB;GACtB,OAAS,EAAK,SAAS;GACvB,QAAU,EAAK,SAAS;GACxB,SAAW;EACZ,GACM,IAAQ,EAAM,SAAS,EAAe,EAAM;yBAKjD,EA0BM,OAAA,EAzBJ,OAAK,EAAA;;0BAAuD,EAAA,YAAO;SAKpE,EAYM,OAZN,GAYM,CAXL,EAEM,OAFN,GAEM,EADF,EAAA,CAAA,CAAK,GAAA,CAAA,GAGT,EAME,GAAA;GALD,OAAM;GACL,YAAY,EAAA;GACZ,uBAAiB,AAAA,EAAA,QAAA,MAAEA,EAAAA,MAAK,sBAAuB,CAAM;GACrD,SAAS,EAAA;GACV,MAAK;4CAKA,EAAA,gBAAW,cAAmBC,EAAAA,OAAO,QAAA,EAAA,GAD5C,EAKM,OALN,GAKM,CADL,EAAyB,EAAA,QAAA,MAAA,CAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,GAAA,CAAA;;kBEjDtB,OAAM,6BAA4B;;aAAvC,EAEM,OAFN,GAEM,CADL,EAAa,EAAA,QAAA,SAAA,CAAA,CAAA;;6CCWF,KAAyB,MAA+B;CACpE,IAAM,IAAO,EAAQ;CAErB,QAAQ,GAAR;EACC,KAAK,cAAc;GAClB,IAAM,IAAc,MAAM,KAAK,EAAE,QAAA,GAA4B,IAAI,GAAG,OAAO;IAC1E,OAAO,IAAI;IACX,OAAO,OAAO,IAAI,CAAC;GACpB,EAAE;GAQF,OANA,EAAK,KAAK;IACT,OAAO;IACP,OAAO;IACP,QAAQ;GACT,CAAC,GAEM;EACR;EAEA,KAAK,aACJ,OAAO;GACN;IAAE,OAAO;IAAU,OAAO,EAAK,SAAS;GAAK;GAC7C;IAAE,OAAO;IAAW,OAAO,EAAK,SAAS;GAAK;GAC9C;IAAE,OAAO;IAAa,OAAO,EAAK,SAAS;GAAK;GAChD;IAAE,OAAO;IAAY,OAAO,EAAK,SAAS;GAAK;GAC/C;IAAE,OAAO;IAAU,OAAO,EAAK,SAAS;GAAK;GAC7C;IAAE,OAAO;IAAY,OAAO,EAAK,SAAS;GAAK;GAC/C;IAAE,OAAO;IAAU,OAAO,EAAK,SAAS;GAAK;EAC9C;CAEF;AACD;;;;;;;;ECrCA,IAAM,IAAO,EAAQ,GACf,IAAQ,GACR,IAAO,GAEP,IAAe,EAA8B;GAClD,WAAW,EAAM;GACjB,MAAK,MAAS,EAAK,qBAAqB,CAAK;EAC9C,CAAC,GAEK,IAAO,QAAe,EAAsB,EAAM,IAAI,CAAC,GAEvD,IAAqB,QAAe;GACzC,IAAM,IAAY,EAAa,MAAM,QACjC,IAAU;GAEd,QAAQ,EAAM,MAAd;IACC,KAAK;KACJ,IAAI,MAAA,GAAkC,OAAO,EAAK,OAAO;KAEzD,IAAU,EAAK,OAAO;KAEtB;IAED,KAAK;KAEJ,IAAI,MAAA,IAAuC,OAAO,EAAK,OAAO;KAE9D,IAAU,EAAK,OAAO;KAEtB;GAEF;GAEA,OAAO,GAAG,EAAU,GAAG,EACtB,GACA,EAAK,OAAO,UACZ,EAAK,OAAO,UACZ,EAAK,OAAO,QACb,EAAE,GAAG;EACN,CAAC,GAEK,IAAgB,QAAe,EAAa,MAAM,SAAS,CAAC,GAE5D,UAAsB;GAC3B,EAAa,QAAQ,EAAc,QAAQ,CAAC,IAAI,EAAK,MAAM,KAAI,MAAO,EAAI,KAAK;EAChF;;;eAKC,EA+CM,OA/CN,GA+CM;IA9CL,EAWM,OAXN,GAWM,CAVL,EAA2B,EAAA,QAAA,QAAA,GAE3B,EAOY,GAAA;KANX,OAAM;KACL,SAAO;KACR,OAAM;KACN,UAAS;;sBAEwD,CAAA,EAAA,EAA9D,EAAA,QAAgBC,EAAAA,MAAM,OAAO,QAAQA,EAAAA,MAAM,OAAO,UAAU,GAAA,CAAA,CAAA,CAAA;;;IAIjE,EAuBM,OAvBN,GAuBM,EAAA,EAAA,EAAA,GAtBL,EAqBQ,GAAA,MAAA,EAnBO,EAAA,QAAP,YAFR,EAqBQ,SAAA;KApBP,OAAM;KAEL,KAAK,EAAI;WAEV,EAMC,SAAA;KALA,OAAM;KACN,MAAK;KACJ,OAAO,EAAI;8CACS,QAAA;KACrB,UAAS;yBADA,EAAA,KAAY,CAAA,CAAA,GAItB,EAOO,QAAA;KANN,OAAM;KACL,iBAAe,EAAI,SAAS,EAAI,QAAQ,KAAA;QAExB,EAAI,SACR,EAAA,IAAA,EAAA,KADQ,EAAA,GAArB,EAEW,GAAA,EAAA,KAAA,EAAA,GAAA,CAAA,EAAA,EADP,EAAI,KAAK,GAAA,CAAA,CAAA,GAAA,EAAA,EAAA,GAAA,GAAA,CAAA,CAAA,CAAA;IAMhB,EAOM,OAAA,EANJ,OAAK,EAAA;;mBAAsE,EAAA,MAAa;YAKtF,EAAA,KAAkB,GAAA,CAAA;;;;;;;;;;;;;;;;EE7FxB,IAAM,IAAQ,GAKR,IAAO,GACP,IAAO,EAAQ,GACf,IAAI,EAAK,GAET,IAAY,EAAiB,GAC7B,IAAa,EAAmC,GAClD,IAAmC,MACjC,IAA8C,CAAC,GAE/C,KAAgB,MAAqB,EAAO,QAAO,MAAS,CAAC,EAAM,OAAO,SAAS,CAAK,CAAC,GAEzF,KAAU,IAAiB,EAAM,eAAe;GACrD,IAAM,IAAQ,OAAO,CAAK,EAAE,KAAK;GAC5B,OACL;QAAI,CAAC,EAAQ,CAAK,GAAG;KACpB,EAAU,OAAO,EAAK,OAAO,0BAA0B,OAAO;KAE9D;IACD;IAEA,EAAK,UAAU,CAAK;GAFpB;EAGD,GAEM,IAAmB,YAAY;GACpC,UAAM,EAAS,GAEf,IAAU,EAAW,OAAO,IAAI,cAAc,OAAO,KAAK,MACrD,GAEL;QAAI,CAAC,GAAG,IAAI,cAAc;KACzB,QAAQ,KAAK,8EAA8E;KAE3F;IACD;IA4BA,AA1BA,EAAE,CAAO,EAAE,aAAa;KACvB,UAAU,EAAU;KACpB,WAAW;KACX,QAAQ,OAAO,GAA2B,MAAuE;MAChH,IAAM,IAAO,EAAQ;MAKrB,AAJM,KAAQ,MACb,EAAkB,KAAQ,MAAM,EAAM,oBAAoB,CAAI,IAG/D,EAAS,EAAa,EAAkB,EAAK,EAAE,KAAI,OAAU;OAC5D,OAAO;OACP,OAAO;MACR,EAAE,CAAC;KACJ;KACA,SAAS,GAAc,MAAqC;MACvD,CAAC,EAAG,QAAQ,CAAC,MAEjB,EAAM,eAAe,GACrB,EAAO,EAAG,KAAK,KAAK,GACpB,EAAK,qBAAqB,EAAE,GAE5B,EAAE,CAAO,EAAE,QAAQ,OAAO;KAC3B;IACD,CAAC,GAED,EAAE,CAAO,EAAE,KAAK,gBAAgB,UAAU,GAC1C,EAAE,CAAO,EAAE,GAAG,qCAAqC;KAC7C,KAEL,EAAE,CAAO,EAAE,QAAQ,OAAO;IAC3B,CAAC;GAhCD;EAiCD;SAEA,QAAgB;GACf,EAAsB;EACvB,CAAC,GAED,QAAsB;GACjB,CAAC,GAAG,IAAI,gBAAgB,CAAC,MAE7B,EAAE,CAAO,EAAE,IAAI,6BAA6B,GAC5C,EAAE,CAAO,EAAE,aAAa,SAAS;EAClC,CAAC,mBAIA,EAoBM,OAAA;GAnBL,OAAM;YACF;GAAJ,KAAI;MAEJ,EAeW,GAAA;YAdN;GAAJ,KAAI;GACH,YAAA,EAAA;GACA,uBAAiB,AAAA,EAAA,QAAA,MAAEC,EAAAA,MAAK,qBAAsB,CAAM;GACpD,WAAO,AAAA,EAAA,OAAA,EAAA,GAAA,MAAgB,EAAM,GAAA,CAAA,SAAA,CAAA,GAAA,CAAA,OAAA,CAAA;GAC7B,OAAOC,EAAAA,MAAM,OAAO;GACrB,MAAK;GACL,MAAK;;oBAOH,CALF,EAKE,GAAA;IAJD,OAAM;IACN,OAAM;IACN,MAAK;IACJ,SAAK,AAAA,EAAA,OAAA,GAAA,MAAU,EAAM,GAAA,CAAA,SAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;EE3G1B,IAAM,IAAQ,GAMR,IAAO,GAEP,IAAQ,EAAI,EAAE,GAEd,KAAY,MAAkB;GACnC,IAAM,IAAgB,EAAM,KAAK;GACjC,IAAI,CAAC,KAAiB,EAAM,OAAO,SAAS,CAAa,GAAG;IAC3D,EAAM,QAAQ;IAEd;GACD;GAIA,AAFA,EAAK,aAAa,CAAa,GAE/B,EAAM,QAAQ;EACf;;;eAIC,EAmCM,OAnCN,GAmCM;IAlCL,EAEM,OAFN,GAEM,EADFC,EAAAA,MAAM,SAAS,uBAAuB,IAAG,aAC7C,CAAA;IAGS,EAAA,kBAAkB,EAAA,OAAO,WAAW,EAAA,8BAAA,EAAA,GAD7C,EAUM,OAVN,GAUM,CANL,EAKE,GAAA;iBAJQ,EAAA;8CAAK,QAAA;KACb,qBAAqB,EAAA;KACrB,QAAQ,EAAA;KACR,UAAQ;;;;;;IAKJ,EAAA,OAAO,UAAA,EAAA,GADd,EAiBM,OAjBN,GAiBM,EAAA,EAAA,EAAA,GAbL,EAYM,GAAA,MAAA,EAVW,EAAA,SAAT,YAFR,EAYM,OAAA;KAXL,OAAM;KAEL,KAAK;YAEH,CAAK,IAAG,KAEX,CAAA,GAAA,EAIE,GAAA;KAHA,UAAK,MAAEC,EAAAA,MAAK,gBAAiB,CAAK;KACnC,OAAM;KACN,MAAK;;;;;;;;;;;;;;;;EE1DV,IAAM,IAAQ,GAKR,KAAc,MAAgC,EAAM,SAAS,MAAK,MAAW,EAAQ,WAAW,CAAM,GAEtG,IAA0D;GAC/D,UAAU;GACV,UAAU;EACX;;;eAIC,EAkEM,OAlEN,IAkEM,CAjEL,EAEM,OAFN,IAEM,EADFC,EAAAA,MAAM,SAAS,YAAY,GAAA,CAAA,GAG/B,EA4DM,OA5DN,IA4DM,EAAA,EAAA,EAAA,GA3DL,EAkCM,GAAA,MAAA,EAhCa,EAAA,WAAX,YAFR,EAkCM,OAAA;IAjCL,OAAM;IAEL,KAAG,GAAK,EAAQ,OAAM,GAAI,EAAQ;OAEnC,EAmBM,OAnBN,IAmBM;IAlBL,EAGO,OAAA;KAFN,OAAM;KACL,iBAAe,EAAmB,EAAQ;;IAG5C,EAEM,OAFN,GAEM,EADF,EAAQ,KAAK,GAAA,CAAA;IAIV,EAAQ,eAAA,EAAA,GADf,EAQa,GAAA;;KANZ,OAAM;KACN,MAAK;KACJ,MAAM,EAAQ;KACf,MAAK;KACL,OAAM;KACN,UAAS;;OAIX,EAOE,GAAA;IANA,YAAY,EAAQ;IACpB,wBAAiB,MAAEC,EAAAA,MAAK,0BAAA;SAAuC,EAAQ;aAAkB,EAAQ;eAAwB;;0EAQ5H,EAsBW,GAAA,MAAA,EArBU,EAAA,aAAb,wBACD,EAAU,OAAA,GAAA,CAGR,EAAW,EAAU,MAAM,IAaP,EAAA,IAAA,EAAA,KAbO,EAAA,GADnC,EAiBM,OAjBN,IAiBM,CAbL,EAYM,OAZN,IAYM,CAXL,EAGO,OAAA;IAFN,OAAM;IACL,iBAAe,EAAmB,EAAU;oBAG9C,EAKI,KAAA;IAJH,OAAM;IACL,MAAM,EAAU;QAEd,EAAU,YAAY,GAAA,GAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,GAAA,EAAA;;;;;;;;;;;EEvEhC,IAAM,IAAc,MAAM,KAAK,EAAE,QAAQ,GAAG,IAAI,GAAG,OAAW;GAC7D;GACA,OAAO,OAAO,CAAK,EAAE,SAAS,GAAG,GAAG;EACrC,EAAE,GACI,IAAgB;GACrB;IACC,OAAO;IACP,OAAO;GACR;GACA;IACC,OAAO;IACP,OAAO;GACR;GACA;IACC,OAAO;IACP,OAAO;GACR;GACA;IACC,OAAO;IACP,OAAO;GACR;EACD;;;eAKC,EAcM,OAdN,IAcM,CAbL,EAKE,GAAA;IAJD,OAAM;IACL,YAAY,EAAA;IACZ,SAAS,EAAA,CAAA;IACT,uBAAiB,AAAA,EAAA,QAAA,MAAEC,EAAAA,MAAK,eAAgB,CAAM;2CAGhD,EAKE,GAAA;IAJD,OAAM;IACL,YAAY,EAAA;IACZ,SAAS;IACT,uBAAiB,AAAA,EAAA,QAAA,MAAEA,EAAAA,MAAK,iBAAkB,CAAM;;;;;;;;;EEtCpD,IAAM,IAAQ,GACR,IAAO,GACP,oBAAW,IAAI,QAAsB,GACvC,IAAc,GAEZ,KAAc,MAAyB;GAE5C,IAAM,IAAO,GAAM,CAAc,GAE3B,IAAc,EAAS,IAAI,CAAI;GACrC,IAAI,MAAgB,KAAA,GAAW,OAAO;GAEtC,IAAM,IAAM;GAGZ,OAFA,EAAS,IAAI,GAAM,CAAG,GAEf;EACR,GAEM,KAAc,GAAe,MAA2C;GAU7E,EAAK,gBATgB,EAAM,MAAM,KAAK,GAAM,MAAM;IACjD,IAAI,MAAM,GAAO,OAAO;IAExB,IAAM,IAAc;KAAE,GAAG;KAAM,GAAG;IAAM;IAGxC,OAFA,EAAS,IAAI,GAAa,EAAW,CAAI,CAAC,GAEnC;GACR,CAEqB,CAAY;EAClC,GAEM,UAAgB;GACrB,IAAM,IAAa;IAAE,MAAM;IAAG,QAAQ;GAAE;GAMxC,EAAK,gBAAgB,CAJpB,GAAG,EAAM,OACT,CAGoB,CAAY;EAClC;;;eAKC,EA4BM,OA5BN,IA4BM,EAAA,EAAA,EAAA,GA3BL,EA0BM,GAAA,MAAA,EAxBmB,EAAA,QAAhB,GAAM,YAFf,EA0BM,OAAA;IAzBL,OAAM;IAEL,KAAK,EAAW,CAAI;OAErB,EAKE,GAAA;IAJA,MAAM,EAAK;IACX,QAAQ,EAAK;IACb,kBAAW,MAAE,EAAW,GAAK,EAAA,MAAU,EAAM,CAAA;IAC7C,oBAAa,MAAE,EAAW,GAAK,EAAA,QAAY,EAAM,CAAA;;;;;;OAI5C,MAAU,EAAA,MAAM,SAAM,UAM7B,EAME,GAAA;;IAJD,OAAM;IACL,SAAO;IACR,OAAM;IACN,MAAK;UAXuB,EAAA,GAD7B,EAKE,GAAA;;IAHA,UAAK,MAAEC,EAAAA,MAAK,gBAAiB,EAAA,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAK,CAAA;IAChE,OAAM;IACN,MAAK"}
1
+ {"version":3,"file":"schedule.js","names":["$emit","$slots","$i18n","$emit","$i18n","$i18n","$emit","$i18n","$emit","$emit","$emit"],"sources":["../../src/components/schedule/schedule/schedule.vue","../../src/components/schedule/schedule/schedule.vue","../../src/components/schedule/schedule/compoents/container/container.vue","../../src/components/schedule/schedule/compoents/calendar/utils.ts","../../src/components/schedule/schedule/compoents/calendar/calendar.vue","../../src/components/schedule/schedule/compoents/calendar/calendar.vue","../../src/components/schedule/schedule/compoents/email/selector/selector.vue","../../src/components/schedule/schedule/compoents/email/selector/selector.vue","../../src/components/schedule/schedule/compoents/email/email.vue","../../src/components/schedule/schedule/compoents/email/email.vue","../../src/components/schedule/schedule/compoents/reportSend/reportSend.vue","../../src/components/schedule/schedule/compoents/reportSend/reportSend.vue","../../src/components/schedule/schedule/compoents/timeSelector/timeSelector.vue","../../src/components/schedule/schedule/compoents/timeSelector/timeSelector.vue","../../src/components/schedule/schedule/compoents/timeSelectors/timeSelectors.vue","../../src/components/schedule/schedule/compoents/timeSelectors/timeSelectors.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport TopSelect from '@/components/forms/select/select.vue';\nimport type { Props, Emits, TriggerType } from '@/components/schedule/schedule/types';\nimport { useI18n } from '@/core/plugins/i18n';\n\ndefineOptions({\n\tname: 'TopSchedule',\n});\n\nconst props = withDefaults(defineProps<Props>(), {\n\ttriggerType: 'onDemand',\n});\n\ndefineEmits<Emits>();\n\nconst i18n = useI18n();\nconst labelByStyling = {\n\t'track': i18n.Projects.Checks,\n\t'report': i18n.Projects.Reports,\n\t'neutral': '',\n};\nconst title = props.title ?? labelByStyling[props.styling];\n\n</script>\n\n<template>\n\t<div\n\t\t:class=\"{\n\t\t\t'top-schedule': true,\n\t\t\t[`top-schedule-style_${styling}`]: true,\n\t\t}\"\n\t>\n\t\t<div class=\"top-schedule_header\">\n\t\t\t<div class=\"top-schedule_headerTitle\">\n\t\t\t\t{{ title }}\n\t\t\t</div>\n\n\t\t\t<TopSelect\n\t\t\t\tclass=\"top-schedule_headerTriggerType\"\n\t\t\t\t:modelValue=\"triggerType\"\n\t\t\t\t@update:modelValue=\"$emit('update:triggerType', $event as TriggerType)\"\n\t\t\t\t:options=\"triggerTypeOptions\"\n\t\t\t\tsize=\"s\"\n\t\t\t/>\n\t\t</div>\n\n\t\t<div\n\t\t\tv-if=\"triggerType !== 'onDemand' && $slots.body\"\n\t\t\tclass=\"top-schedule_body\"\n\t\t>\n\t\t\t<slot name=\"body\"></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 TopSelect from '@/components/forms/select/select.vue';\nimport type { Props, Emits, TriggerType } from '@/components/schedule/schedule/types';\nimport { useI18n } from '@/core/plugins/i18n';\n\ndefineOptions({\n\tname: 'TopSchedule',\n});\n\nconst props = withDefaults(defineProps<Props>(), {\n\ttriggerType: 'onDemand',\n});\n\ndefineEmits<Emits>();\n\nconst i18n = useI18n();\nconst labelByStyling = {\n\t'track': i18n.Projects.Checks,\n\t'report': i18n.Projects.Reports,\n\t'neutral': '',\n};\nconst title = props.title ?? labelByStyling[props.styling];\n\n</script>\n\n<template>\n\t<div\n\t\t:class=\"{\n\t\t\t'top-schedule': true,\n\t\t\t[`top-schedule-style_${styling}`]: true,\n\t\t}\"\n\t>\n\t\t<div class=\"top-schedule_header\">\n\t\t\t<div class=\"top-schedule_headerTitle\">\n\t\t\t\t{{ title }}\n\t\t\t</div>\n\n\t\t\t<TopSelect\n\t\t\t\tclass=\"top-schedule_headerTriggerType\"\n\t\t\t\t:modelValue=\"triggerType\"\n\t\t\t\t@update:modelValue=\"$emit('update:triggerType', $event as TriggerType)\"\n\t\t\t\t:options=\"triggerTypeOptions\"\n\t\t\t\tsize=\"s\"\n\t\t\t/>\n\t\t</div>\n\n\t\t<div\n\t\t\tv-if=\"triggerType !== 'onDemand' && $slots.body\"\n\t\t\tclass=\"top-schedule_body\"\n\t\t>\n\t\t\t<slot name=\"body\"></slot>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<template>\n\t<div class=\"top-schedule_bodyContainer\">\n\t\t<slot></slot>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","import type { Day, Props } from '@/components/schedule/schedule/compoents/calendar/types';\nimport { useI18n } from '@/core/app';\n\n/**\n * Количество дней в месяце\n */\nexport const COUNT_DAYS_IN_MONTS = 27;\n\n/**\n * Количество дней в неделе\n */\nexport const COUNT_DAYS_IN_WEEK = 7;\n\nexport const genDaysByCalendarMode = (mode: Props['mode']): Day[] => {\n\tconst i18n = useI18n();\n\n\tswitch (mode) {\n\t\tcase 'dayOfMonth': {\n\t\t\tconst days: Day[] = Array.from({ length: COUNT_DAYS_IN_MONTS }, (_, i) => ({\n\t\t\t\tvalue: i + 1,\n\t\t\t\ttitle: String(i + 1),\n\t\t\t}));\n\n\t\t\tdays.push({\n\t\t\t\tvalue: 'LAST_OF_MONTH',\n\t\t\t\ttitle: '',\n\t\t\t\tisIcon: true,\n\t\t\t});\n\n\t\t\treturn days;\n\t\t}\n\n\t\tcase 'dayOfWeek': {\n\t\t\treturn [\n\t\t\t\t{ value: 'MONDAY', title: i18n.Calendar.Dw_1 },\n\t\t\t\t{ value: 'TUESDAY', title: i18n.Calendar.Dw_2 },\n\t\t\t\t{ value: 'WEDNESDAY', title: i18n.Calendar.Dw_3 },\n\t\t\t\t{ value: 'THURSDAY', title: i18n.Calendar.Dw_4 },\n\t\t\t\t{ value: 'FRIDAY', title: i18n.Calendar.Dw_5 },\n\t\t\t\t{ value: 'SATURDAY', title: i18n.Calendar.Dw_6 },\n\t\t\t\t{ value: 'SUNDAY', title: i18n.Calendar.Dw_7 },\n\t\t\t];\n\t\t}\n\t}\n};","<script setup lang=\"ts\">\nimport type { Props, Emits } from '@/components/schedule/schedule/compoents/calendar/types';\nimport { COUNT_DAYS_IN_MONTS, COUNT_DAYS_IN_WEEK, genDaysByCalendarMode } from '@/components/schedule/schedule/compoents/calendar/utils';\nimport { numberEnding } from '@/core/utils/string';\nimport { computed } from 'vue';\nimport { useI18n } from '@/core/app';\n\nconst i18n = useI18n();\nconst props = defineProps<Props>();\nconst emit = defineEmits<Emits>();\n\nconst selectedDays = computed<Props['modelValue']>({\n\tget: () => props.modelValue,\n\tset: value => emit('update:modelValue', value),\n});\n\nconst days = computed(() => genDaysByCalendarMode(props.mode));\n\nconst selectedCountLabel = computed(() => {\n\tconst daysCount = selectedDays.value.length;\n\tlet postfix = '';\n\n\tswitch (props.mode) {\n\t\tcase 'dayOfWeek': {\n\t\t\tif (daysCount === COUNT_DAYS_IN_WEEK) return i18n.Common.Every_day;\n\n\t\t\tpostfix = i18n.Common.a_week;\n\n\t\t\tbreak;\n\t\t}\n\t\tcase 'dayOfMonth': {\n\t\t\t// плюс \"последний день месяца\"\n\t\t\tif (daysCount === COUNT_DAYS_IN_MONTS + 1) return i18n.Common.Every_day;\n\n\t\t\tpostfix = i18n.Common.a_month;\n\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn `${daysCount} ${numberEnding(\n\t\tdaysCount,\n\t\ti18n.Common.time_a_0,\n\t\ti18n.Common.time_a_0,\n\t\ti18n.Common.time_a_2,\n\t)} ${postfix}`;\n});\n\nconst isClearAction = computed(() => selectedDays.value.length > 1);\n\nconst toggleAllDays = () => {\n\tselectedDays.value = isClearAction.value ? [] : days.value.map(day => day.value);\n};\n\n</script>\n\n<template>\n\t<div class=\"top-scheduleCalendar\">\n\t\t<div class=\"top-scheduleCalendar_header\">\n\t\t\t<slot name=\"header\"></slot>\n\n\t\t\t<TopButton\n\t\t\t\tclass=\"top-scheduleCalendar_headerButton\"\n\t\t\t\t@click=\"toggleAllDays\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ttabindex=\"0\"\n\t\t\t>\n\t\t\t\t{{ isClearAction ? $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_calendarDayRadio\"\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t:value=\"day.value\"\n\t\t\t\t\tv-model=\"selectedDays\"\n\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t>\n\n\t\t\t\t<span\n\t\t\t\t\tclass=\"top-scheduleCalendar_calendarDayTitle\"\n\t\t\t\t\t:data-top-icon=\"day.isIcon ? day.title : undefined\"\n\t\t\t\t>\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<div\n\t\t\t:class=\"{\n\t\t\t\t'top-scheduleCalendar_selectedCount': true,\n\t\t\t\t'top-error': !selectedDays.length\n\t\t\t}\"\n\t\t>\n\t\t\t{{ selectedCountLabel }}\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, Emits } from '@/components/schedule/schedule/compoents/calendar/types';\nimport { COUNT_DAYS_IN_MONTS, COUNT_DAYS_IN_WEEK, genDaysByCalendarMode } from '@/components/schedule/schedule/compoents/calendar/utils';\nimport { numberEnding } from '@/core/utils/string';\nimport { computed } from 'vue';\nimport { useI18n } from '@/core/app';\n\nconst i18n = useI18n();\nconst props = defineProps<Props>();\nconst emit = defineEmits<Emits>();\n\nconst selectedDays = computed<Props['modelValue']>({\n\tget: () => props.modelValue,\n\tset: value => emit('update:modelValue', value),\n});\n\nconst days = computed(() => genDaysByCalendarMode(props.mode));\n\nconst selectedCountLabel = computed(() => {\n\tconst daysCount = selectedDays.value.length;\n\tlet postfix = '';\n\n\tswitch (props.mode) {\n\t\tcase 'dayOfWeek': {\n\t\t\tif (daysCount === COUNT_DAYS_IN_WEEK) return i18n.Common.Every_day;\n\n\t\t\tpostfix = i18n.Common.a_week;\n\n\t\t\tbreak;\n\t\t}\n\t\tcase 'dayOfMonth': {\n\t\t\t// плюс \"последний день месяца\"\n\t\t\tif (daysCount === COUNT_DAYS_IN_MONTS + 1) return i18n.Common.Every_day;\n\n\t\t\tpostfix = i18n.Common.a_month;\n\n\t\t\tbreak;\n\t\t}\n\t}\n\n\treturn `${daysCount} ${numberEnding(\n\t\tdaysCount,\n\t\ti18n.Common.time_a_0,\n\t\ti18n.Common.time_a_0,\n\t\ti18n.Common.time_a_2,\n\t)} ${postfix}`;\n});\n\nconst isClearAction = computed(() => selectedDays.value.length > 1);\n\nconst toggleAllDays = () => {\n\tselectedDays.value = isClearAction.value ? [] : days.value.map(day => day.value);\n};\n\n</script>\n\n<template>\n\t<div class=\"top-scheduleCalendar\">\n\t\t<div class=\"top-scheduleCalendar_header\">\n\t\t\t<slot name=\"header\"></slot>\n\n\t\t\t<TopButton\n\t\t\t\tclass=\"top-scheduleCalendar_headerButton\"\n\t\t\t\t@click=\"toggleAllDays\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ttabindex=\"0\"\n\t\t\t>\n\t\t\t\t{{ isClearAction ? $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_calendarDayRadio\"\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t:value=\"day.value\"\n\t\t\t\t\tv-model=\"selectedDays\"\n\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t>\n\n\t\t\t\t<span\n\t\t\t\t\tclass=\"top-scheduleCalendar_calendarDayTitle\"\n\t\t\t\t\t:data-top-icon=\"day.isIcon ? day.title : undefined\"\n\t\t\t\t>\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<div\n\t\t\t:class=\"{\n\t\t\t\t'top-scheduleCalendar_selectedCount': true,\n\t\t\t\t'top-error': !selectedDays.length\n\t\t\t}\"\n\t\t>\n\t\t\t{{ selectedCountLabel }}\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { 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/compoents/email/selector/types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\temails: () => [],\n\tgetEmailSuggestions: () => [],\n});\n\nconst emit = defineEmits<Emits>();\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\nconst filterEmails = (emails: string[]) => emails.filter(email => !props.emails.includes(email));\n\nconst submit = (value: unknown = props.modelValue) => {\n\tconst email = String(value).trim();\n\tif (!email) return;\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\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\temit('update:modelValue', '');\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<TopInput\n\t\t\tref=\"elInputRef\"\n\t\t\t:modelValue\n\t\t\t@update:modelValue=\"$emit('update:modelValue', $event)\"\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=\"l\"\n\t\t>\n\t\t\t<TopButton\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 { 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/compoents/email/selector/types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\temails: () => [],\n\tgetEmailSuggestions: () => [],\n});\n\nconst emit = defineEmits<Emits>();\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\nconst filterEmails = (emails: string[]) => emails.filter(email => !props.emails.includes(email));\n\nconst submit = (value: unknown = props.modelValue) => {\n\tconst email = String(value).trim();\n\tif (!email) return;\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\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\temit('update:modelValue', '');\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<TopInput\n\t\t\tref=\"elInputRef\"\n\t\t\t:modelValue\n\t\t\t@update:modelValue=\"$emit('update:modelValue', $event)\"\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=\"l\"\n\t\t>\n\t\t\t<TopButton\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 { Props, Emits } from '@/components/schedule/schedule/compoents/email/types';\nimport ScheduleEmailSelector from '@/components/schedule/schedule/compoents/email/selector/selector.vue';\n\nconst props = withDefaults(defineProps<Props>(), {\n\temails: () => [],\n\tgetEmailSuggestions: () => [],\n\tmaxEmailsCount: -1,\n});\n\nconst emit = defineEmits<Emits>();\n\nconst value = ref('');\n\nconst addEmail = (email: string) => {\n\tconst preparedEmail = email.trim();\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<div\n\t\t\tv-if=\"!(maxEmailsCount && emails.length === maxEmailsCount)\"\n\t\t\tclass=\"top-scheduleEmail_selector\"\n\t\t>\n\t\t\t<ScheduleEmailSelector\n\t\t\t\tv-model=\"value\"\n\t\t\t\t:getEmailSuggestions=\"getEmailSuggestions\"\n\t\t\t\t:emails=\"emails\"\n\t\t\t\t@submit=\"addEmail\"\n\t\t\t/>\n\t\t</div>\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{{ email }}\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 { ref } from 'vue';\nimport type { Props, Emits } from '@/components/schedule/schedule/compoents/email/types';\nimport ScheduleEmailSelector from '@/components/schedule/schedule/compoents/email/selector/selector.vue';\n\nconst props = withDefaults(defineProps<Props>(), {\n\temails: () => [],\n\tgetEmailSuggestions: () => [],\n\tmaxEmailsCount: -1,\n});\n\nconst emit = defineEmits<Emits>();\n\nconst value = ref('');\n\nconst addEmail = (email: string) => {\n\tconst preparedEmail = email.trim();\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<div\n\t\t\tv-if=\"!(maxEmailsCount && emails.length === maxEmailsCount)\"\n\t\t\tclass=\"top-scheduleEmail_selector\"\n\t\t>\n\t\t\t<ScheduleEmailSelector\n\t\t\t\tv-model=\"value\"\n\t\t\t\t:getEmailSuggestions=\"getEmailSuggestions\"\n\t\t\t\t:emails=\"emails\"\n\t\t\t\t@submit=\"addEmail\"\n\t\t\t/>\n\t\t</div>\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{{ email }}\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, ReportChannelSource } from '@/components/schedule/schedule/compoents/reportSend/types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tconnectors: () => [],\n});\ndefineEmits<Emits>();\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-scheduleReportSend\">\n\t\t<div class=\"top-scheduleReportSend_title\">\n\t\t\t{{ $i18n.Projects.Reports_send }}\n\t\t</div>\n\n\t\t<div class=\"top-scheduleReportSend_channels\">\n\t\t\t<div\n\t\t\t\tclass=\"top-scheduleReportSend_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<div class=\"top-scheduleReportSend_channelInfo\">\n\t\t\t\t\t<div\n\t\t\t\t\t\tclass=\"top-scheduleReportSend_channelInfoIcon\"\n\t\t\t\t\t\t:data-top-icon=\"sourceIconBySource[channel.source]\"\n\t\t\t\t\t></div>\n\n\t\t\t\t\t<div class=\"top-scheduleReportSend_channelInfoLabel\">\n\t\t\t\t\t\t{{ channel.label }}\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tv-if=\"channel.settingLink\"\n\t\t\t\t\t\tclass=\"top-scheduleReportSend_channelInfoSettings\"\n\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t:href=\"channel.settingLink\"\n\t\t\t\t\t\ticon=\"\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t\t></TopButton>\n\t\t\t\t</div>\n\n\t\t\t\t<TopSwitcher\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\t\tclass=\"top-scheduleReportSend_channel\"\n\t\t\t\t>\n\t\t\t\t\t<div class=\"top-scheduleReportSend_channelInfo\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"top-scheduleReportSend_channelInfoIcon\"\n\t\t\t\t\t\t\t:data-top-icon=\"sourceIconBySource[connector.source]\"\n\t\t\t\t\t\t></div>\n\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\tclass=\"top-scheduleReportSend_channelInfoLabel top-scheduleReportSend_channelInfoLink\"\n\t\t\t\t\t\t\t:href=\"connector.connectLink\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{{ connector.connectLabel }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\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","<script setup lang=\"ts\">\nimport type { Emits, Props, ReportChannelSource } from '@/components/schedule/schedule/compoents/reportSend/types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\tconnectors: () => [],\n});\ndefineEmits<Emits>();\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-scheduleReportSend\">\n\t\t<div class=\"top-scheduleReportSend_title\">\n\t\t\t{{ $i18n.Projects.Reports_send }}\n\t\t</div>\n\n\t\t<div class=\"top-scheduleReportSend_channels\">\n\t\t\t<div\n\t\t\t\tclass=\"top-scheduleReportSend_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<div class=\"top-scheduleReportSend_channelInfo\">\n\t\t\t\t\t<div\n\t\t\t\t\t\tclass=\"top-scheduleReportSend_channelInfoIcon\"\n\t\t\t\t\t\t:data-top-icon=\"sourceIconBySource[channel.source]\"\n\t\t\t\t\t></div>\n\n\t\t\t\t\t<div class=\"top-scheduleReportSend_channelInfoLabel\">\n\t\t\t\t\t\t{{ channel.label }}\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<TopButton\n\t\t\t\t\t\tv-if=\"channel.settingLink\"\n\t\t\t\t\t\tclass=\"top-scheduleReportSend_channelInfoSettings\"\n\t\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t\t:href=\"channel.settingLink\"\n\t\t\t\t\t\ticon=\"\"\n\t\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t\t></TopButton>\n\t\t\t\t</div>\n\n\t\t\t\t<TopSwitcher\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\t\tclass=\"top-scheduleReportSend_channel\"\n\t\t\t\t>\n\t\t\t\t\t<div class=\"top-scheduleReportSend_channelInfo\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"top-scheduleReportSend_channelInfoIcon\"\n\t\t\t\t\t\t\t:data-top-icon=\"sourceIconBySource[connector.source]\"\n\t\t\t\t\t\t></div>\n\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\tclass=\"top-scheduleReportSend_channelInfoLabel top-scheduleReportSend_channelInfoLink\"\n\t\t\t\t\t\t\t:href=\"connector.connectLink\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{{ connector.connectLabel }}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\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","<script setup lang=\"ts\">\nimport type { Props, Emits, Time } from '@/components/schedule/schedule/compoents/timeSelector/types';\n\ndefineProps<Props>();\ndefineEmits<Emits>();\n\nconst hourOptions = Array.from({ length: 24 }, (_, value) => ({\n\tvalue,\n\ttitle: String(value).padStart(2, '0'),\n}));\nconst minuteOptions = [\n\t{\n\t\tvalue: 0,\n\t\ttitle: '00',\n\t},\n\t{\n\t\tvalue: 15,\n\t\ttitle: '15',\n\t},\n\t{\n\t\tvalue: 30,\n\t\ttitle: '30',\n\t},\n\t{\n\t\tvalue: 45,\n\t\ttitle: '45',\n\t},\n];\n\n</script>\n\n<template>\n\t<div class=\"top-scheduleTimeSelector\">\n\t\t<TopSelect\n\t\t\tclass=\"top-scheduleTimeSelector_hour\"\n\t\t\t:modelValue=\"hour\"\n\t\t\t:options=\"hourOptions\"\n\t\t\t@update:modelValue=\"$emit('update:hour', $event as Time['hour'])\"\n\t\t/>\n\n\t\t<TopSelect\n\t\t\tclass=\"top-scheduleTimeSelector_minute\"\n\t\t\t:modelValue=\"minute\"\n\t\t\t:options=\"minuteOptions\"\n\t\t\t@update:modelValue=\"$emit('update:minute', $event as Time['minute'])\"\n\t\t/>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport type { Props, Emits, Time } from '@/components/schedule/schedule/compoents/timeSelector/types';\n\ndefineProps<Props>();\ndefineEmits<Emits>();\n\nconst hourOptions = Array.from({ length: 24 }, (_, value) => ({\n\tvalue,\n\ttitle: String(value).padStart(2, '0'),\n}));\nconst minuteOptions = [\n\t{\n\t\tvalue: 0,\n\t\ttitle: '00',\n\t},\n\t{\n\t\tvalue: 15,\n\t\ttitle: '15',\n\t},\n\t{\n\t\tvalue: 30,\n\t\ttitle: '30',\n\t},\n\t{\n\t\tvalue: 45,\n\t\ttitle: '45',\n\t},\n];\n\n</script>\n\n<template>\n\t<div class=\"top-scheduleTimeSelector\">\n\t\t<TopSelect\n\t\t\tclass=\"top-scheduleTimeSelector_hour\"\n\t\t\t:modelValue=\"hour\"\n\t\t\t:options=\"hourOptions\"\n\t\t\t@update:modelValue=\"$emit('update:hour', $event as Time['hour'])\"\n\t\t/>\n\n\t\t<TopSelect\n\t\t\tclass=\"top-scheduleTimeSelector_minute\"\n\t\t\t:modelValue=\"minute\"\n\t\t\t:options=\"minuteOptions\"\n\t\t\t@update:modelValue=\"$emit('update:minute', $event as Time['minute'])\"\n\t\t/>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { toRaw } from 'vue';\nimport type { Props, Emits } from '@/components/schedule/schedule/compoents/timeSelectors/types';\nimport type { Time } from '@/components/schedule/schedule/compoents/timeSelector/types';\nimport TimeSelector from '@/components/schedule/schedule/compoents/timeSelector/timeSelector.vue';\n\nconst props = defineProps<Props>();\nconst emit = defineEmits<Emits>();\nconst timeKeys = new WeakMap<Time, number>();\nlet nextTimeKey = 0;\n\nconst getTimeKey = (rawOrProxyTime: Time) => {\n\t// time может быть proxy или обычным объектом\n\tconst time = toRaw(rawOrProxyTime);\n\n\tconst existingKey = timeKeys.get(time);\n\tif (existingKey !== undefined) return existingKey;\n\n\tconst key = nextTimeKey++;\n\ttimeKeys.set(time, key);\n\n\treturn key;\n};\n\nconst updateTime = (index: number, patch: Partial<Props['times'][number]>) => {\n\tconst updatedTimes = props.times.map((time, i) => {\n\t\tif (i !== index) return time;\n\n\t\tconst updatedTime = { ...time, ...patch };\n\t\ttimeKeys.set(updatedTime, getTimeKey(time));\n\n\t\treturn updatedTime;\n\t});\n\n\temit('update:times', updatedTimes);\n};\n\nconst addTime = () => {\n\tconst time: Time = { hour: 0, minute: 0 };\n\tconst updatedTimes = [\n\t\ttime,\n\t\t...props.times,\n\t];\n\n\temit('update:times', updatedTimes);\n};\n\n</script>\n\n<template>\n\t<div class=\"top-scheduleTimeSelectors\">\n\t\t<div\n\t\t\tclass=\"top-scheduleTimeSelectors_item\"\n\t\t\tv-for=\"(time, index) in times\"\n\t\t\t:key=\"getTimeKey(time)\"\n\t\t>\n\t\t\t<TimeSelector\n\t\t\t\t:hour=\"time.hour\"\n\t\t\t\t:minute=\"time.minute\"\n\t\t\t\t@update:hour=\"updateTime(index, { hour: $event as Time['hour'] })\"\n\t\t\t\t@update:minute=\"updateTime(index, { minute: $event as Time['minute'] })\"\n\t\t\t/>\n\n\t\t\t<TopButton\n\t\t\t\tv-if=\"index\"\n\t\t\t\t@click=\"$emit('update:times', times.filter((_, i) => i !== index))\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ticon=\"\"\n\t\t\t/>\n\n\t\t\t<TopButton\n\t\t\t\tv-else\n\t\t\t\tclass=\"top-scheduleTimeSelectors_itemAdd\"\n\t\t\t\t@click=\"addTime\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ticon=\"\"\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 { toRaw } from 'vue';\nimport type { Props, Emits } from '@/components/schedule/schedule/compoents/timeSelectors/types';\nimport type { Time } from '@/components/schedule/schedule/compoents/timeSelector/types';\nimport TimeSelector from '@/components/schedule/schedule/compoents/timeSelector/timeSelector.vue';\n\nconst props = defineProps<Props>();\nconst emit = defineEmits<Emits>();\nconst timeKeys = new WeakMap<Time, number>();\nlet nextTimeKey = 0;\n\nconst getTimeKey = (rawOrProxyTime: Time) => {\n\t// time может быть proxy или обычным объектом\n\tconst time = toRaw(rawOrProxyTime);\n\n\tconst existingKey = timeKeys.get(time);\n\tif (existingKey !== undefined) return existingKey;\n\n\tconst key = nextTimeKey++;\n\ttimeKeys.set(time, key);\n\n\treturn key;\n};\n\nconst updateTime = (index: number, patch: Partial<Props['times'][number]>) => {\n\tconst updatedTimes = props.times.map((time, i) => {\n\t\tif (i !== index) return time;\n\n\t\tconst updatedTime = { ...time, ...patch };\n\t\ttimeKeys.set(updatedTime, getTimeKey(time));\n\n\t\treturn updatedTime;\n\t});\n\n\temit('update:times', updatedTimes);\n};\n\nconst addTime = () => {\n\tconst time: Time = { hour: 0, minute: 0 };\n\tconst updatedTimes = [\n\t\ttime,\n\t\t...props.times,\n\t];\n\n\temit('update:times', updatedTimes);\n};\n\n</script>\n\n<template>\n\t<div class=\"top-scheduleTimeSelectors\">\n\t\t<div\n\t\t\tclass=\"top-scheduleTimeSelectors_item\"\n\t\t\tv-for=\"(time, index) in times\"\n\t\t\t:key=\"getTimeKey(time)\"\n\t\t>\n\t\t\t<TimeSelector\n\t\t\t\t:hour=\"time.hour\"\n\t\t\t\t:minute=\"time.minute\"\n\t\t\t\t@update:hour=\"updateTime(index, { hour: $event as Time['hour'] })\"\n\t\t\t\t@update:minute=\"updateTime(index, { minute: $event as Time['minute'] })\"\n\t\t\t/>\n\n\t\t\t<TopButton\n\t\t\t\tv-if=\"index\"\n\t\t\t\t@click=\"$emit('update:times', times.filter((_, i) => i !== index))\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ticon=\"\"\n\t\t\t/>\n\n\t\t\t<TopButton\n\t\t\t\tv-else\n\t\t\t\tclass=\"top-scheduleTimeSelectors_itemAdd\"\n\t\t\t\t@click=\"addTime\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ticon=\"\"\n\t\t\t/>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;EASA,IAAM,IAAQ,GAMR,IAAO,EAAQ,GACf,IAAiB;GACtB,OAAS,EAAK,SAAS;GACvB,QAAU,EAAK,SAAS;GACxB,SAAW;EACZ,GACM,IAAQ,EAAM,SAAS,EAAe,EAAM;yBAKjD,EA0BM,OAAA,EAzBJ,OAAK,EAAA;;0BAAuD,EAAA,YAAO;SAKpE,EAYM,OAZN,GAYM,CAXL,EAEM,OAFN,GAEM,EADF,EAAA,CAAA,CAAK,GAAA,CAAA,GAGT,EAME,GAAA;GALD,OAAM;GACL,YAAY,EAAA;GACZ,uBAAiB,AAAA,EAAA,QAAA,MAAEA,EAAAA,MAAK,sBAAuB,CAAM;GACrD,SAAS,EAAA;GACV,MAAK;4CAKA,EAAA,gBAAW,cAAmBC,EAAAA,OAAO,QAAA,EAAA,GAD5C,EAKM,OALN,GAKM,CADL,EAAyB,EAAA,QAAA,MAAA,CAAA,CAAA,KAAA,EAAA,IAAA,EAAA,CAAA,GAAA,CAAA;;kBEjDtB,OAAM,6BAA4B;;aAAvC,EAEM,OAFN,GAEM,CADL,EAAa,EAAA,QAAA,SAAA,CAAA,CAAA;;6CCWF,KAAyB,MAA+B;CACpE,IAAM,IAAO,EAAQ;CAErB,QAAQ,GAAR;EACC,KAAK,cAAc;GAClB,IAAM,IAAc,MAAM,KAAK,EAAE,QAAA,GAA4B,IAAI,GAAG,OAAO;IAC1E,OAAO,IAAI;IACX,OAAO,OAAO,IAAI,CAAC;GACpB,EAAE;GAQF,OANA,EAAK,KAAK;IACT,OAAO;IACP,OAAO;IACP,QAAQ;GACT,CAAC,GAEM;EACR;EAEA,KAAK,aACJ,OAAO;GACN;IAAE,OAAO;IAAU,OAAO,EAAK,SAAS;GAAK;GAC7C;IAAE,OAAO;IAAW,OAAO,EAAK,SAAS;GAAK;GAC9C;IAAE,OAAO;IAAa,OAAO,EAAK,SAAS;GAAK;GAChD;IAAE,OAAO;IAAY,OAAO,EAAK,SAAS;GAAK;GAC/C;IAAE,OAAO;IAAU,OAAO,EAAK,SAAS;GAAK;GAC7C;IAAE,OAAO;IAAY,OAAO,EAAK,SAAS;GAAK;GAC/C;IAAE,OAAO;IAAU,OAAO,EAAK,SAAS;GAAK;EAC9C;CAEF;AACD;;;;;;;;ECrCA,IAAM,IAAO,EAAQ,GACf,IAAQ,GACR,IAAO,GAEP,IAAe,EAA8B;GAClD,WAAW,EAAM;GACjB,MAAK,MAAS,EAAK,qBAAqB,CAAK;EAC9C,CAAC,GAEK,IAAO,QAAe,EAAsB,EAAM,IAAI,CAAC,GAEvD,IAAqB,QAAe;GACzC,IAAM,IAAY,EAAa,MAAM,QACjC,IAAU;GAEd,QAAQ,EAAM,MAAd;IACC,KAAK;KACJ,IAAI,MAAA,GAAkC,OAAO,EAAK,OAAO;KAEzD,IAAU,EAAK,OAAO;KAEtB;IAED,KAAK;KAEJ,IAAI,MAAA,IAAuC,OAAO,EAAK,OAAO;KAE9D,IAAU,EAAK,OAAO;KAEtB;GAEF;GAEA,OAAO,GAAG,EAAU,GAAG,EACtB,GACA,EAAK,OAAO,UACZ,EAAK,OAAO,UACZ,EAAK,OAAO,QACb,EAAE,GAAG;EACN,CAAC,GAEK,IAAgB,QAAe,EAAa,MAAM,SAAS,CAAC,GAE5D,UAAsB;GAC3B,EAAa,QAAQ,EAAc,QAAQ,CAAC,IAAI,EAAK,MAAM,KAAI,MAAO,EAAI,KAAK;EAChF;;;eAKC,EA+CM,OA/CN,GA+CM;IA9CL,EAWM,OAXN,GAWM,CAVL,EAA2B,EAAA,QAAA,QAAA,GAE3B,EAOY,GAAA;KANX,OAAM;KACL,SAAO;KACR,OAAM;KACN,UAAS;;sBAEwD,CAAA,EAAA,EAA9D,EAAA,QAAgBC,EAAAA,MAAM,OAAO,QAAQA,EAAAA,MAAM,OAAO,UAAU,GAAA,CAAA,CAAA,CAAA;;;IAIjE,EAuBM,OAvBN,GAuBM,EAAA,EAAA,EAAA,GAtBL,EAqBQ,GAAA,MAAA,EAnBO,EAAA,QAAP,YAFR,EAqBQ,SAAA;KApBP,OAAM;KAEL,KAAK,EAAI;WAEV,EAMC,SAAA;KALA,OAAM;KACN,MAAK;KACJ,OAAO,EAAI;8CACS,QAAA;KACrB,UAAS;yBADA,EAAA,KAAY,CAAA,CAAA,GAItB,EAOO,QAAA;KANN,OAAM;KACL,iBAAe,EAAI,SAAS,EAAI,QAAQ,KAAA;QAExB,EAAI,SACR,EAAA,IAAA,EAAA,KADQ,EAAA,GAArB,EAEW,GAAA,EAAA,KAAA,EAAA,GAAA,CAAA,EAAA,EADP,EAAI,KAAK,GAAA,CAAA,CAAA,GAAA,EAAA,EAAA,GAAA,GAAA,CAAA,CAAA,CAAA;IAMhB,EAOM,OAAA,EANJ,OAAK,EAAA;;mBAAsE,EAAA,MAAa;YAKtF,EAAA,KAAkB,GAAA,CAAA;;;;;;;;;;;;;;;;EE7FxB,IAAM,IAAQ,GAKR,IAAO,GACP,IAAO,EAAQ,GACf,IAAI,EAAK,GAET,IAAY,EAAiB,GAC7B,IAAa,EAAmC,GAClD,IAAmC,MACjC,IAA8C,CAAC,GAE/C,KAAgB,MAAqB,EAAO,QAAO,MAAS,CAAC,EAAM,OAAO,SAAS,CAAK,CAAC,GAEzF,KAAU,IAAiB,EAAM,eAAe;GACrD,IAAM,IAAQ,OAAO,CAAK,EAAE,KAAK;GAC5B,OACL;QAAI,CAAC,EAAQ,CAAK,GAAG;KACpB,EAAU,OAAO,EAAK,OAAO,0BAA0B,OAAO;KAE9D;IACD;IAEA,EAAK,UAAU,CAAK;GAFpB;EAGD,GAEM,IAAmB,YAAY;GACpC,UAAM,EAAS,GAEf,IAAU,EAAW,OAAO,IAAI,cAAc,OAAO,KAAK,MACrD,GAEL;QAAI,CAAC,GAAG,IAAI,cAAc;KACzB,QAAQ,KAAK,8EAA8E;KAE3F;IACD;IA4BA,AA1BA,EAAE,CAAO,EAAE,aAAa;KACvB,UAAU,EAAU;KACpB,WAAW;KACX,QAAQ,OAAO,GAA2B,MAAuE;MAChH,IAAM,IAAO,EAAQ;MAKrB,AAJM,KAAQ,MACb,EAAkB,KAAQ,MAAM,EAAM,oBAAoB,CAAI,IAG/D,EAAS,EAAa,EAAkB,EAAK,EAAE,KAAI,OAAU;OAC5D,OAAO;OACP,OAAO;MACR,EAAE,CAAC;KACJ;KACA,SAAS,GAAc,MAAqC;MACvD,CAAC,EAAG,QAAQ,CAAC,MAEjB,EAAM,eAAe,GACrB,EAAO,EAAG,KAAK,KAAK,GACpB,EAAK,qBAAqB,EAAE,GAE5B,EAAE,CAAO,EAAE,QAAQ,OAAO;KAC3B;IACD,CAAC,GAED,EAAE,CAAO,EAAE,KAAK,gBAAgB,UAAU,GAC1C,EAAE,CAAO,EAAE,GAAG,qCAAqC;KAC7C,KAEL,EAAE,CAAO,EAAE,QAAQ,OAAO;IAC3B,CAAC;GAhCD;EAiCD;SAEA,QAAgB;GACf,EAAsB;EACvB,CAAC,GAED,QAAsB;GACjB,CAAC,GAAG,IAAI,gBAAgB,CAAC,MAE7B,EAAE,CAAO,EAAE,IAAI,6BAA6B,GAC5C,EAAE,CAAO,EAAE,aAAa,SAAS;EAClC,CAAC,mBAIA,EAoBM,OAAA;GAnBL,OAAM;YACF;GAAJ,KAAI;MAEJ,EAeW,GAAA;YAdN;GAAJ,KAAI;GACH,YAAA,EAAA;GACA,uBAAiB,AAAA,EAAA,QAAA,MAAEC,EAAAA,MAAK,qBAAsB,CAAM;GACpD,WAAO,AAAA,EAAA,OAAA,EAAA,GAAA,MAAgB,EAAM,GAAA,CAAA,SAAA,CAAA,GAAA,CAAA,OAAA,CAAA;GAC7B,OAAOC,EAAAA,MAAM,OAAO;GACrB,MAAK;GACL,MAAK;;oBAOH,CALF,EAKE,GAAA;IAJD,OAAM;IACN,OAAM;IACN,MAAK;IACJ,SAAK,AAAA,EAAA,OAAA,GAAA,MAAU,EAAM,GAAA,CAAA,SAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;EE3G1B,IAAM,IAAQ,GAMR,IAAO,GAEP,IAAQ,EAAI,EAAE,GAEd,KAAY,MAAkB;GACnC,IAAM,IAAgB,EAAM,KAAK;GACjC,IAAI,CAAC,KAAiB,EAAM,OAAO,SAAS,CAAa,GAAG;IAC3D,EAAM,QAAQ;IAEd;GACD;GAIA,AAFA,EAAK,aAAa,CAAa,GAE/B,EAAM,QAAQ;EACf;;;eAIC,EAmCM,OAnCN,GAmCM;IAlCL,EAEM,OAFN,GAEM,EADFC,EAAAA,MAAM,SAAS,uBAAuB,IAAG,aAC7C,CAAA;IAGS,EAAA,kBAAkB,EAAA,OAAO,WAAW,EAAA,8BAAA,EAAA,GAD7C,EAUM,OAVN,GAUM,CANL,EAKE,GAAA;iBAJQ,EAAA;8CAAK,QAAA;KACb,qBAAqB,EAAA;KACrB,QAAQ,EAAA;KACR,UAAQ;;;;;;IAKJ,EAAA,OAAO,UAAA,EAAA,GADd,EAiBM,OAjBN,GAiBM,EAAA,EAAA,EAAA,GAbL,EAYM,GAAA,MAAA,EAVW,EAAA,SAAT,YAFR,EAYM,OAAA;KAXL,OAAM;KAEL,KAAK;YAEH,CAAK,IAAG,KAEX,CAAA,GAAA,EAIE,GAAA;KAHA,UAAK,MAAEC,EAAAA,MAAK,gBAAiB,CAAK;KACnC,OAAM;KACN,MAAK;;;;;;;;;;;;;;;;EE1DV,IAAM,IAAQ,GAKR,KAAc,MAAgC,EAAM,SAAS,MAAK,MAAW,EAAQ,WAAW,CAAM,GAEtG,IAA0D;GAC/D,UAAU;GACV,UAAU;EACX;;;eAIC,EAkEM,OAlEN,IAkEM,CAjEL,EAEM,OAFN,IAEM,EADFC,EAAAA,MAAM,SAAS,YAAY,GAAA,CAAA,GAG/B,EA4DM,OA5DN,IA4DM,EAAA,EAAA,EAAA,GA3DL,EAkCM,GAAA,MAAA,EAhCa,EAAA,WAAX,YAFR,EAkCM,OAAA;IAjCL,OAAM;IAEL,KAAG,GAAK,EAAQ,OAAM,GAAI,EAAQ;OAEnC,EAmBM,OAnBN,IAmBM;IAlBL,EAGO,OAAA;KAFN,OAAM;KACL,iBAAe,EAAmB,EAAQ;;IAG5C,EAEM,OAFN,GAEM,EADF,EAAQ,KAAK,GAAA,CAAA;IAIV,EAAQ,eAAA,EAAA,GADf,EAQa,GAAA;;KANZ,OAAM;KACN,MAAK;KACJ,MAAM,EAAQ;KACf,MAAK;KACL,OAAM;KACN,UAAS;;OAIX,EAOE,GAAA;IANA,YAAY,EAAQ;IACpB,wBAAiB,MAAEC,EAAAA,MAAK,0BAAA;SAAuC,EAAQ;aAAkB,EAAQ;eAAwB;;0EAQ5H,EAsBW,GAAA,MAAA,EArBU,EAAA,aAAb,wBACD,EAAU,OAAA,GAAA,CAGR,EAAW,EAAU,MAAM,IAaP,EAAA,IAAA,EAAA,KAbO,EAAA,GADnC,EAiBM,OAjBN,IAiBM,CAbL,EAYM,OAZN,IAYM,CAXL,EAGO,OAAA;IAFN,OAAM;IACL,iBAAe,EAAmB,EAAU;oBAG9C,EAKI,KAAA;IAJH,OAAM;IACL,MAAM,EAAU;QAEd,EAAU,YAAY,GAAA,GAAA,EAAA,CAAA,CAAA,CAAA,CAAA,EAAA,GAAA,EAAA;;;;;;;;;;;EEvEhC,IAAM,IAAc,MAAM,KAAK,EAAE,QAAQ,GAAG,IAAI,GAAG,OAAW;GAC7D;GACA,OAAO,OAAO,CAAK,EAAE,SAAS,GAAG,GAAG;EACrC,EAAE,GACI,IAAgB;GACrB;IACC,OAAO;IACP,OAAO;GACR;GACA;IACC,OAAO;IACP,OAAO;GACR;GACA;IACC,OAAO;IACP,OAAO;GACR;GACA;IACC,OAAO;IACP,OAAO;GACR;EACD;;;eAKC,EAcM,OAdN,IAcM,CAbL,EAKE,GAAA;IAJD,OAAM;IACL,YAAY,EAAA;IACZ,SAAS,EAAA,CAAA;IACT,uBAAiB,AAAA,EAAA,QAAA,MAAEC,EAAAA,MAAK,eAAgB,CAAM;2CAGhD,EAKE,GAAA;IAJD,OAAM;IACL,YAAY,EAAA;IACZ,SAAS;IACT,uBAAiB,AAAA,EAAA,QAAA,MAAEA,EAAAA,MAAK,iBAAkB,CAAM;;;;;;;;;EEtCpD,IAAM,IAAQ,GACR,IAAO,GACP,oBAAW,IAAI,QAAsB,GACvC,IAAc,GAEZ,KAAc,MAAyB;GAE5C,IAAM,IAAO,GAAM,CAAc,GAE3B,IAAc,EAAS,IAAI,CAAI;GACrC,IAAI,MAAgB,KAAA,GAAW,OAAO;GAEtC,IAAM,IAAM;GAGZ,OAFA,EAAS,IAAI,GAAM,CAAG,GAEf;EACR,GAEM,KAAc,GAAe,MAA2C;GAU7E,EAAK,gBATgB,EAAM,MAAM,KAAK,GAAM,MAAM;IACjD,IAAI,MAAM,GAAO,OAAO;IAExB,IAAM,IAAc;KAAE,GAAG;KAAM,GAAG;IAAM;IAGxC,OAFA,EAAS,IAAI,GAAa,EAAW,CAAI,CAAC,GAEnC;GACR,CAEqB,CAAY;EAClC,GAEM,UAAgB;GAOrB,EAAK,gBAAgB,CAJpB;IAFoB,MAAM;IAAG,QAAQ;GAErC,GACA,GAAG,EAAM,KAGW,CAAY;EAClC;;;eAKC,EA4BM,OA5BN,IA4BM,EAAA,EAAA,EAAA,GA3BL,EA0BM,GAAA,MAAA,EAxBmB,EAAA,QAAhB,GAAM,YAFf,EA0BM,OAAA;IAzBL,OAAM;IAEL,KAAK,EAAW,CAAI;OAErB,EAKE,GAAA;IAJA,MAAM,EAAK;IACX,QAAQ,EAAK;IACb,kBAAW,MAAE,EAAW,GAAK,EAAA,MAAU,EAAM,CAAA;IAC7C,oBAAa,MAAE,EAAW,GAAK,EAAA,QAAY,EAAM,CAAA;;;;;;OAI5C,KAAA,EAAA,GADP,EAKE,GAAA;;IAHA,UAAK,MAAEC,EAAAA,MAAK,gBAAiB,EAAA,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAK,CAAA;IAChE,OAAM;IACN,MAAK;qCAGN,EAME,GAAA;;IAJD,OAAM;IACL,SAAO;IACR,OAAM;IACN,MAAK"}