@topvisor/ui 1.5.9-pnpm.6 → 1.5.9

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.
@@ -1 +1 @@
1
- .top-scheduleTimeSelector{flex-direction:column;gap:10px;display:flex}.top-scheduleTimeSelector_item{align-items:center;display:flex}.top-scheduleTimeSelector_item>.top-button{margin-left:var(--top-gap-2)}.top-scheduleTimeSelector .top-select{width:60px}.top-scheduleTimeSelector .top-select:hover{z-index:1}.top-scheduleTimeSelector_hour .top-select_select{border-top-right-radius:0;border-bottom-right-radius:0}.top-scheduleTimeSelector_minute .top-select_select{border-top-left-radius:0;border-bottom-left-radius:0;margin-left:-1px}.top-scheduleTimeSelector .top-button{--top-icon-color:var(--color-text-primary)}.top-scheduleCalendar{gap:var(--top-gap-4);flex-direction:column;display:flex}.top-scheduleCalendar_header{justify-content:space-between;align-items:flex-end;display:flex}.top-scheduleCalendar_calendar{gap:var(--top-gap-2);grid-template-columns:repeat(7,1fr);display:grid}.top-scheduleCalendar_calendarDay{--top-icon-size:18px;cursor:pointer;box-sizing:border-box;border:1px solid var(--color-line-1);border-radius:var(--top-radius-2);justify-content:center;align-items:center;width:36px;height:36px;display:flex}.top-scheduleCalendar_calendarDay:hover{border-color:var(--top-schedule-border-color);background:var(--color-layout-front-3)}.top-scheduleCalendar_calendarDay:focus-within{outline:1px solid var(--top-schedule-border-color);outline-offset:2px}.top-scheduleCalendar_calendarDay:has(>:checked){border-color:var(--top-schedule-header-background);background:var(--top-schedule-accent-background);color:var(--color-text-white)}.top-scheduleCalendar_calendarDay:has(>:checked):hover{background:var(--top-schedule-accent-background-hover)}.top-scheduleCalendar_calendarDayCheckbox{pointer-events:none;opacity:0;width:1px;height:1px;position:absolute}.top-scheduleCalendar_selectionSummary{text-align:center}.top-scheduleCalendar_selectionSummary:not(.top-error){color:var(--color-text-3)}.top-schedule{--top-schedule-border-color:var(--color-line-primary-1);--top-schedule-header-background:var(--color-layout-front-primary-3);--top-schedule-accent-background:var(--color-bg-primary-1);--top-schedule-accent-background-hover:var(--color-bg-primary-2);--top-schedule-body-padding:var(--top-padding-4);border:1px solid var(--top-schedule-border-color);border-radius:var(--top-radius-4);background:var(--color-layout-front-1);align-self:start;width:100%;max-width:332px;overflow:hidden}.top-schedule-type_report{--top-schedule-border-color:var(--color-line-warning-1);--top-schedule-header-background:var(--color-layout-front-warning-3);--top-schedule-accent-background:var(--color-bg-warning-1);--top-schedule-accent-background-hover:var(--color-bg-warning-2)}.top-schedule_header{padding:var(--top-padding-4);background:var(--top-schedule-header-background);gap:var(--top-gap-4);flex-direction:column;display:flex}.top-schedule_header:not(:last-child){border-bottom:1px solid var(--top-schedule-border-color)}.top-schedule_headerTitle{font-size:18px;font-weight:600}.top-schedule_headerMods{width:100%}.top-schedule_afterYandexUpdatedDelay{width:auto}.top-schedule_body{padding:var(--top-schedule-body-padding)}.top-schedule_body hr{background:var(--color-line-1);height:1px;margin:var(--top-schedule-body-padding) calc(-1 * var(--top-schedule-body-padding));border:0}.top-scheduleEmailSelector .top-input{width:100%}.top-scheduleEmailSelector .top-input_input{padding-right:var(--top-padding-10)}.top-scheduleEmailSelector_submit.top-button{--top-icon-size:20px;top:50%;right:var(--top-padding-2);z-index:1;position:absolute;transform:translateY(-50%)}.top-scheduleEmailSelector_submit.top-button:focus-visible{position:absolute}.top-scheduleEmailSelector .ui-autocomplete{border-radius:var(--top-radius-2);background:var(--color-layout-front-2);gap:var(--top-gap-1);padding:var(--top-padding-2)!important}.top-scheduleEmailSelector .ui-autocomplete .ui-menu-item{margin:0!important}.top-scheduleEmailSelector .ui-autocomplete .ui-menu-item .ui-menu-item-wrapper{border-radius:var(--top-radius-2);align-items:flex-end;gap:var(--top-gap-2);transition:var(--transition-normal);box-sizing:border-box;background:0 0;display:flex;padding:var(--top-padding-1) var(--top-padding-2)!important;margin:0!important}.top-scheduleEmailSelector .ui-autocomplete .ui-menu-item:hover .ui-menu-item-wrapper,.top-scheduleEmailSelector .ui-autocomplete .ui-menu-item .ui-menu-item-wrapper.ui-state-active{background:var(--color-layout-front-3)}.top-scheduleEmailSelector .ui-autocomplete .ui-menu-item .ui-menu-item-wrapper *{background:0 0;padding:0}.top-scheduleEmail{flex-direction:column;gap:10px;display:flex}.top-scheduleEmail_title{font-weight:600}.top-scheduleEmail_emails{border:1px solid var(--color-line-1);border-radius:var(--top-radius-2)}.top-scheduleEmail_emailsItem{--top-icon-size:20px;padding:var(--top-padding-1) var(--top-padding-4);padding-right:var(--top-padding-2);border-bottom:1px solid var(--color-line-1);justify-content:space-between;align-items:center;gap:var(--top-gap-1);display:flex}.top-scheduleEmail_emailsItem:last-child{border-bottom:0}.top-scheduleSocials{flex-direction:column;gap:10px;display:flex}.top-scheduleSocials_title{font-weight:600}.top-scheduleSocials_channels{border:1px solid var(--color-line-1);border-radius:var(--top-radius-2)}.top-scheduleSocials_channel{height:40px;padding:0 var(--top-padding-4);padding-right:var(--top-padding-2);border-bottom:1px solid var(--color-line-1);align-items:center;gap:var(--top-gap-2);display:flex}.top-scheduleSocials_channel:last-child{border-bottom:0}.top-scheduleSocials_channelIcon{--top-icon-size:20px;--top-icon-color:var(--color-text-3)}.top-scheduleSocials_channelLabel{flex-grow:0}.top-scheduleSocials_channelSettings{--top-icon-size:16px}.top-scheduleSocials_channelSwitcher{margin-left:auto}
1
+ .top-scheduleTimeSelector{flex-direction:column;gap:10px;display:flex}.top-scheduleTimeSelector_item{align-items:center;display:flex}.top-scheduleTimeSelector_item>.top-button{margin-left:var(--top-gap-2)}.top-scheduleTimeSelector .top-select{width:60px}.top-scheduleTimeSelector .top-select:hover{z-index:1}.top-scheduleTimeSelector_hour .top-select_select{border-top-right-radius:0;border-bottom-right-radius:0}.top-scheduleTimeSelector_minute .top-select_select{border-top-left-radius:0;border-bottom-left-radius:0;margin-left:-1px}.top-scheduleTimeSelector .top-button{--top-icon-color:var(--color-text-primary)}.top-scheduleCalendar{gap:var(--top-gap-4);flex-direction:column;display:flex}.top-scheduleCalendar_header{justify-content:space-between;align-items:flex-end;display:flex}.top-scheduleCalendar_calendar{gap:var(--top-gap-2);grid-template-columns:repeat(7,1fr);display:grid}.top-scheduleCalendar_calendarDay{--top-icon-size:18px;cursor:pointer;-webkit-user-select:none;user-select:none;box-sizing:border-box;border:1px solid var(--color-line-1);border-radius:var(--top-radius-2);justify-content:center;align-items:center;width:36px;height:36px;display:flex}.top-scheduleCalendar_calendarDay:hover{border-color:var(--top-schedule-border-color);background:var(--color-layout-front-3)}.top-scheduleCalendar_calendarDay:focus-within{outline:1px solid var(--top-schedule-border-color);outline-offset:2px}.top-scheduleCalendar_calendarDay:has(>:checked){border-color:var(--top-schedule-header-background);background:var(--top-schedule-accent-background);color:var(--color-text-white)}.top-scheduleCalendar_calendarDay:has(>:checked):hover{background:var(--top-schedule-accent-background-hover)}.top-scheduleCalendar_calendarDayCheckbox{pointer-events:none;opacity:0;width:1px;height:1px;position:absolute}.top-scheduleCalendar_selectionSummary{text-align:center}.top-scheduleCalendar_selectionSummary:not(.top-error){color:var(--color-text-3)}.top-schedule{--top-schedule-border-color:var(--color-line-primary-1);--top-schedule-header-background:var(--color-layout-front-primary-3);--top-schedule-accent-background:var(--color-bg-primary-1);--top-schedule-accent-background-hover:var(--color-bg-primary-2);--top-schedule-body-padding:var(--top-padding-4);border:1px solid var(--top-schedule-border-color);border-radius:var(--top-radius-4);background:var(--color-layout-front-1);align-self:start;width:100%;max-width:332px;overflow:hidden}.top-schedule-type_report{--top-schedule-border-color:var(--color-line-warning-1);--top-schedule-header-background:var(--color-layout-front-warning-3);--top-schedule-accent-background:var(--color-bg-warning-1);--top-schedule-accent-background-hover:var(--color-bg-warning-2)}.top-schedule_header{padding:var(--top-padding-4);background:var(--top-schedule-header-background);gap:var(--top-gap-4);flex-direction:column;display:flex}.top-schedule_header:not(:last-child){border-bottom:1px solid var(--top-schedule-border-color)}.top-schedule_headerTitle{font-size:18px;font-weight:600}.top-schedule_headerMods{width:100%}.top-schedule_afterYandexUpdatedDelay{width:auto}.top-schedule_body{padding:var(--top-schedule-body-padding);gap:var(--top-schedule-body-padding);flex-direction:column;display:flex}.top-schedule_body hr{background:var(--color-line-1);height:1px;margin:0 calc(-1 * var(--top-schedule-body-padding));border:0}.top-scheduleEmailSelector .top-input{width:100%}.top-scheduleEmailSelector .top-input_input{padding-right:var(--top-padding-10)}.top-scheduleEmailSelector_submit.top-button{--top-icon-size:20px;top:50%;right:var(--top-padding-2);z-index:1;position:absolute;transform:translateY(-50%)}.top-scheduleEmailSelector_submit.top-button:focus-visible{position:absolute}.top-scheduleEmailSelector .ui-autocomplete{border-radius:var(--top-radius-2);background:var(--color-layout-front-2);gap:var(--top-gap-1);padding:var(--top-padding-2)!important}.top-scheduleEmailSelector .ui-autocomplete .ui-menu-item{margin:0!important}.top-scheduleEmailSelector .ui-autocomplete .ui-menu-item .ui-menu-item-wrapper{border-radius:var(--top-radius-2);align-items:flex-end;gap:var(--top-gap-2);transition:var(--transition-normal);box-sizing:border-box;background:0 0;display:flex;padding:var(--top-padding-1) var(--top-padding-2)!important;margin:0!important}.top-scheduleEmailSelector .ui-autocomplete .ui-menu-item:hover .ui-menu-item-wrapper,.top-scheduleEmailSelector .ui-autocomplete .ui-menu-item .ui-menu-item-wrapper.ui-state-active{background:var(--color-layout-front-3)}.top-scheduleEmailSelector .ui-autocomplete .ui-menu-item .ui-menu-item-wrapper *{background:0 0;padding:0}.top-scheduleEmail{flex-direction:column;gap:10px;display:flex}.top-scheduleEmail_title{font-weight:600}.top-scheduleEmail_emails{border:1px solid var(--color-line-1);border-radius:var(--top-radius-2)}.top-scheduleEmail_emailsItem{--top-icon-size:20px;padding:var(--top-padding-1);padding-left:var(--top-forms-padding);border-bottom:1px solid var(--color-line-1);justify-content:space-between;align-items:center;gap:var(--top-gap-1);display:flex}.top-scheduleEmail_emailsItem:last-child{border-bottom:0}.top-scheduleSocials{flex-direction:column;gap:10px;display:flex}.top-scheduleSocials_title{font-weight:600}.top-scheduleSocials_channels{border:1px solid var(--color-line-1);border-radius:var(--top-radius-2)}.top-scheduleSocials_channel{height:40px;padding:0 var(--top-padding-4);padding-right:var(--top-padding-2);border-bottom:1px solid var(--color-line-1);align-items:center;gap:var(--top-gap-2);display:flex}.top-scheduleSocials_channel:last-child{border-bottom:0}.top-scheduleSocials_channelIcon{--top-icon-size:20px;--top-icon-color:var(--color-text-3)}.top-scheduleSocials_channelLabel{flex-grow:0}.top-scheduleSocials_channelSettings{--top-icon-size:16px}.top-scheduleSocials_channelSwitcher{margin-left:auto}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@topvisor/ui",
3
3
  "private": false,
4
- "version": "1.5.9-pnpm.6",
4
+ "version": "1.5.9",
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-Ch1q0UUt.es.amd`,`../utils/check.amd`,`../utils/string.amd`,`vue`,`../.chunks/app-CY6euLQJ.es.amd`,`../require/css.amd!../assets/schedule.css`],function(e,t,n,r,i,a){"use strict";if(o===void 0)var o=window.Vue;Object.defineProperty(t,"__esModule",{value:!0}),t.TopScheduleSocials=t.TopScheduleEmails=t.TopSchedule=void 0;var s=e=>{let t=(0,n.E)();return(0,a.computed)(()=>{switch((0,a.toValue)(e)){case`dayOfMonth`:{let e=Array.from({length:27},(e,t)=>({value:String(t+1),title:String(t+1)}));return e.push({value:`LAST_OF_MONTH`,title:``,isIcon:!0}),e}case`dayOfWeek`:return[{value:`MONDAY`,title:t.Calendar.Dw_1},{value:`TUESDAY`,title:t.Calendar.Dw_2},{value:`WEDNESDAY`,title:t.Calendar.Dw_3},{value:`THURSDAY`,title:t.Calendar.Dw_4},{value:`FRIDAY`,title:t.Calendar.Dw_5},{value:`SATURDAY`,title:t.Calendar.Dw_6},{value:`SUNDAY`,title:t.Calendar.Dw_7}];default:return[]}})},c={class:`top-scheduleTimeSelector`},l=(0,a.defineComponent)({__name:`timeSelector`,props:(0,a.mergeModels)({modelValue:{},multipleTimes:{type:Boolean}},{modelValue:{required:!0},modelModifiers:{}}),emits:[`update:modelValue`],setup(e){let t=e,n=(0,a.useModel)(e,`modelValue`),r=Array.from({length:24},(e,t)=>({value:String(t),title:String(t).padStart(2,`0`)})),i=Array.from({length:4},(e,t)=>{let n=t*15;return{value:String(n),title:String(n).padStart(2,`0`)}}),o=(e,t)=>{let r=[...n.value];r[e]={...r[e],...t},n.value=r},s=()=>{n.value=[{hour:`0`,minute:`0`},...n.value]},l=e=>{n.value=n.value.filter((t,n)=>n!==e)};return(e,u)=>{let d=(0,a.resolveComponent)(`TopSelect`),f=(0,a.resolveComponent)(`TopButton`);return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,c,[((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(n.value,(e,c)=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{key:c,class:`top-scheduleTimeSelector_item`},[(0,a.createVNode)(d,{class:`top-scheduleTimeSelector_hour`,modelValue:e.hour,options:(0,a.unref)(r),"onUpdate:modelValue":e=>o(c,{hour:e})},null,8,[`modelValue`,`options`,`onUpdate:modelValue`]),(0,a.createVNode)(d,{class:`top-scheduleTimeSelector_minute`,modelValue:e.minute,options:(0,a.unref)(i),availableCustomValue:``,"onUpdate:modelValue":e=>o(c,{minute:e})},null,8,[`modelValue`,`options`,`onUpdate:modelValue`]),t.multipleTimes||n.value.length>1?((0,a.openBlock)(),(0,a.createBlock)(f,{key:0,onClick:e=>c?l(c):s(),color:`theme`,icon:c?``:``},null,8,[`onClick`,`icon`])):(0,a.createCommentVNode)(``,!0)]))),128))])}}}),u={class:`top-scheduleCalendar`},d={class:`top-scheduleCalendar_header`},f={class:`top-scheduleCalendar_calendar`},p=[`value`,`checked`,`onChange`],m=[`data-top-icon`],h=(0,a.defineComponent)({__name:`calendar`,props:(0,a.mergeModels)({modelValue:{},mode:{},times:{},multipleTimes:{type:Boolean}},{modelValue:{required:!0},modelModifiers:{},times:{required:!0},timesModifiers:{}}),emits:[`update:modelValue`,`update:times`],setup(e){let t=e,n=(0,a.useModel)(e,`modelValue`),r=(0,a.useModel)(e,`times`),o=s(()=>t.mode),c=(0,a.computed)(()=>n.value.includes(`ALL`)||n.value.length===o.value.length),h=e=>{let t=n.value.includes(`ALL`)?o.value.map(e=>e.value):[...n.value],r=t.indexOf(e);r===-1?t.push(e):t.splice(r,1),n.value=t.length===o.value.length?[`ALL`]:t},g=()=>{n.value=c.value?[]:[`ALL`]};return(t,s)=>{let _=(0,a.resolveComponent)(`TopButton`);return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,u,[(0,a.createElementVNode)(`div`,d,[(0,a.createVNode)(l,{modelValue:r.value,"onUpdate:modelValue":s[0]||=e=>r.value=e,multipleTimes:e.multipleTimes},null,8,[`modelValue`,`multipleTimes`]),(0,a.createVNode)(_,{onClick:s[1]||=e=>g(),color:`theme`,tabindex:`0`},{default:(0,a.withCtx)(()=>[(0,a.createTextVNode)((0,a.toDisplayString)(c.value?t.$i18n.Common.Clear:t.$i18n.Common.Select_all),1)]),_:1})]),(0,a.createElementVNode)(`div`,f,[((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)((0,a.unref)(o),e=>((0,a.openBlock)(),(0,a.createElementBlock)(`label`,{class:`top-scheduleCalendar_calendarDay`,key:e.value},[(0,a.createElementVNode)(`input`,{class:`top-scheduleCalendar_calendarDayCheckbox`,type:`checkbox`,value:e.value,checked:n.value.includes(`ALL`)||n.value.includes(e.value),onChange:t=>h(e.value),tabindex:`0`},null,40,p),(0,a.createElementVNode)(`span`,{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,m)]))),128))]),(0,a.createElementVNode)(`span`,{class:(0,a.normalizeClass)({"top-scheduleCalendar_selectionSummary":!0,"top-error":!n.value.length})},[(0,a.createTextVNode)((0,a.toDisplayString)(c.value?t.$i18n.Common.Every_day:n.value.length)+` `,1),r.value.length>1||!c.value?((0,a.openBlock)(),(0,a.createElementBlock)(a.Fragment,{key:0},[(0,a.createTextVNode)((0,a.toDisplayString)(r.value.length>1?` × ${r.value.length}`:``)+` `+(0,a.toDisplayString)((0,a.unref)(i.numberEnding)(r.value.length===1?n.value.length:r.value.length,t.$i18n.Common.time_a_0,t.$i18n.Common.time_a_0,t.$i18n.Common.time_a_2))+` `+(0,a.toDisplayString)(e.mode===`dayOfWeek`?t.$i18n.Common.a_week:t.$i18n.Common.a_month),1)],64)):(0,a.createCommentVNode)(``,!0)],2)])}}}),g=()=>{let e=(0,n.E)();return[{value:`0`,title:e.Projects.immediately},...Array.from({length:24},(t,n)=>({value:String(n+1),title:e(`Projects`,`in_hour`,{hour:n+1})}))]},_=e=>e===`dayOfWeek`||e===`dayOfMonth`,v=(e,t=`onDemand`)=>e.includes(`YANDEX_UPDATE`)?`afterYandexUpdated`:e.includes(`CHECK_POSITIONS`)?`afterCheck`:e.includes(`LAST_OF_MONTH`)||e.some(e=>/^\d+$/.test(e))?`dayOfMonth`:e.length?_(t)?t:`dayOfWeek`:t,y=[`onDemand`,`dayOfWeek`,`dayOfMonth`],b=(e,t)=>{let r=(0,n.E)();return(0,a.computed)(()=>{let n=e.type===`report`?[...y,`afterCheck`]:[...y];e.extraMods&&n.push(...e.extraMods),n.includes(t.value)||n.push(t.value);let i={onDemand:r.Projects.Settings_on_demand,dayOfWeek:r.Projects.Report_on_weekdays,dayOfMonth:r.Projects.Settings_particular_days,afterYandexUpdated:r.Projects.After_updates,afterCheck:n.includes(`afterCheck`)?r.Dynamics.Report_after_tracking_30min_1:``};return n.map(e=>({value:e,title:i[e]}))})},x=e=>({days:[...e.days],times:e.times.map(e=>({...e}))}),S=(e,t)=>{let n={daysByMode:{},timesByMode:{}};return(0,a.watch)(e,()=>{let r=x(e.value);n.daysByMode[t.value]=r.days,n.timesByMode[_(t.value)?`calendar`:t.value]=r.times},{deep:!0,immediate:!0}),n},C={class:`top-schedule_header`},w={class:`top-schedule_headerTitle`},T={key:0,class:`top-schedule_body`},E={key:2},D=(0,a.defineComponent)({__name:`schedule`,props:(0,a.mergeModels)({modelValue:{},type:{default:`go`},extraMods:{},multipleTimes:{type:Boolean},title:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:[`update:modelValue`],setup(e,{slots:t}){let r=String(Math.floor(Math.random()*7)+1),i=e,o=(0,a.useModel)(e,`modelValue`),s=(0,a.ref)(v(o.value.days)),c=b(i,s),l=g(),u=S(o,s);return(0,a.watch)(()=>o.value.days,()=>s.value=v(o.value.days,s.value),{deep:!0,immediate:!0}),(0,a.watch)(s,e=>{let t=u.daysByMode[e],n=u.timesByMode[_(e)?`calendar`:e];switch(e){case`onDemand`:o.value={days:[],times:[]};break;case`dayOfWeek`:case`dayOfMonth`:o.value={...o.value,days:t??[`ALL`],times:n?.length?n:[{hour:r,minute:`30`}]};break;case`afterYandexUpdated`:o.value={days:[`YANDEX_UPDATE`],times:n?.length?n:[{hour:`1`,minute:`0`}]};break;case`afterCheck`:o.value={days:[`CHECK_POSITIONS`],times:n?.length?n:[{hour:`0`,minute:`30`}]}}},{immediate:!0}),(r,i)=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{class:(0,a.normalizeClass)([`top-schedule`,`top-schedule-type_`+e.type])},[(0,a.createElementVNode)(`div`,C,[(0,a.createElementVNode)(`div`,w,(0,a.toDisplayString)(e.title??(e.type===`go`?r.$i18n.Projects.Checks:r.$i18n.Projects.Reports)),1),(0,a.createVNode)(n.n,{class:`top-schedule_headerMods`,modelValue:s.value,"onUpdate:modelValue":i[0]||=e=>s.value=e,options:(0,a.unref)(c),size:`s`},null,8,[`modelValue`,`options`])]),s.value!==`onDemand`&&((0,a.unref)(_)(s.value)||s.value===`afterYandexUpdated`||t.settings)?((0,a.openBlock)(),(0,a.createElementBlock)(`div`,T,[(0,a.unref)(_)(s.value)?((0,a.openBlock)(),(0,a.createBlock)(h,{key:0,modelValue:o.value.days,"onUpdate:modelValue":i[1]||=e=>o.value.days=e,times:o.value.times,"onUpdate:times":i[2]||=e=>o.value.times=e,mode:s.value,multipleTimes:e.multipleTimes},null,8,[`modelValue`,`times`,`mode`,`multipleTimes`])):(0,a.createCommentVNode)(``,!0),s.value===`afterYandexUpdated`&&o.value.times[0]?((0,a.openBlock)(),(0,a.createBlock)(n.n,{key:1,class:`top-schedule_afterYandexUpdatedDelay`,modelValue:o.value.times[0].hour,"onUpdate:modelValue":i[3]||=e=>o.value.times[0].hour=e,options:(0,a.unref)(l),size:`s`},null,8,[`modelValue`,`options`])):(0,a.createCommentVNode)(``,!0),(0,a.unref)(_)(s.value)||s.value===`afterYandexUpdated`&&t.settings?((0,a.openBlock)(),(0,a.createElementBlock)(`hr`,E)):(0,a.createCommentVNode)(``,!0),(0,a.renderSlot)(r.$slots,`settings`,{mode:s.value})])):(0,a.createCommentVNode)(``,!0)],2))}}),O=(0,a.defineComponent)({__name:`selector`,props:{modelValue:{},emails:{default:()=>[]},getEmailSuggestions:{type:Function,default:()=>[]}},emits:[`update:modelValue`,`submit`],setup(e,{emit:t}){let i=t,o=e,s=t,c=(0,n.E)(),l=n.O.$,u=(0,a.ref)(),d=(0,a.ref)(),f=null,p={},m=e=>e.filter(e=>!o.emails.includes(e)),h=(e=o.modelValue)=>{let t=String(e).trim();if(t){if(!(0,r.isEmail)(t)){n.O.notice(c.Common.Enter_valid_email_notice,`error`);return}s(`submit`,t)}},g=async()=>{if(await(0,a.nextTick)(),f=d.value?.$el.querySelector(`input`)??null,f){if(!l?.ui?.autocomplete){console.info(`Для работы autocomplete требуется глобальная загрузка jQuery UI Autocomplete`);return}l(f).autocomplete({appendTo:u.value,minLength:0,source:async(e,t)=>{let n=e.term;n in p||(p[n]=await o.getEmailSuggestions(n)),t(m(p[n]).map(e=>({label:e,value:e})))},select:(e,t)=>{t.item&&f&&(e.preventDefault(),h(t.item.value),s(`update:modelValue`,``),l(f).trigger(`focus`))}}),l(f).attr(`autocomplete`,`disabled`),l(f).on(`focus.scheduleEmailSelector`,()=>{f&&l(f).trigger(`input`)})}};return(0,a.onMounted)(()=>{g()}),(0,a.onBeforeUnmount)(()=>{l?.ui?.autocomplete&&f&&(l(f).off(`focus.scheduleEmailSelector`),l(f).autocomplete(`destroy`))}),(t,r)=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{class:`top-scheduleEmailSelector`,ref_key:`elRootRef`,ref:u},[(0,a.createVNode)(n.c,{ref_key:`elInputRef`,ref:d,modelValue:e.modelValue,"onUpdate:modelValue":r[1]||=e=>i(`update:modelValue`,e),onKeydown:r[2]||=(0,a.withKeys)((0,a.withModifiers)(e=>h(),[`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=>h(),[`prevent`])})]),_:1},8,[`modelValue`,`title`])],512))}}),k={class:`top-scheduleEmail`},A={class:`top-scheduleEmail_title`},j={key:1,class:`top-scheduleEmail_emails`},M={class:`top-ellipsis1`},N=(0,a.defineComponent)({__name:`emails`,props:{emails:{default:()=>[]},getEmailSuggestions:{type:Function,default:()=>[]},maxEmailsCount:{default:-1}},emits:[`add:email`,`remove:email`],setup(e,{emit:t}){let n=t,r=e,i=t,o=(0,a.ref)(``),s=e=>{let t=e.trim();if(!t||r.emails.includes(t)){o.value=``;return}i(`add:email`,t),o.value=``};return(t,r)=>{let i=(0,a.resolveComponent)(`TopButton`);return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,k,[(0,a.createElementVNode)(`div`,A,(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.createBlock)(O,{key:0,modelValue:o.value,"onUpdate:modelValue":r[0]||=e=>o.value=e,getEmailSuggestions:e.getEmailSuggestions,emails:e.emails,onSubmit:s},null,8,[`modelValue`,`getEmailSuggestions`,`emails`])),e.emails.length?((0,a.openBlock)(),(0,a.createElementBlock)(`div`,j,[((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(e.emails,e=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{class:`top-scheduleEmail_emailsItem`,key:e},[(0,a.createElementVNode)(`span`,M,(0,a.toDisplayString)(e),1),(0,a.createVNode)(i,{onClick:t=>n(`remove:email`,e),color:`theme`,icon:``},null,8,[`onClick`])]))),128))])):(0,a.createCommentVNode)(``,!0)])}}}),P={class:`top-scheduleSocials`},F={class:`top-scheduleSocials_title`},I={class:`top-scheduleSocials_channels`},L=[`data-top-icon`],R={class:`top-scheduleSocials_channelLabel top-ellipsis1`},z={key:0,class:`top-scheduleSocials_channel`},B=[`data-top-icon`],V=[`href`],H=(0,a.defineComponent)({__name:`socials`,props:{channels:{},connectors:{}},emits:[`update:channelSelected`],setup(e,{emit:t}){let n=e,r=e=>n.channels.some(t=>t.source===e),i={informer:``,telegram:``};return(n,o)=>{let s=(0,a.resolveComponent)(`TopButton`),c=(0,a.resolveComponent)(`TopSwitcher`);return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,P,[(0,a.createElementVNode)(`div`,F,(0,a.toDisplayString)(n.$i18n.Projects.Reports_send_to_address),1),(0,a.createElementVNode)(`div`,I,[((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(e.channels,e=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{class:`top-scheduleSocials_channel`,key:`${e.source}-${e.id}`},[(0,a.createElementVNode)(`span`,{class:`top-scheduleSocials_channelIcon`,"data-top-icon":i[e.source]},null,8,L),(0,a.createElementVNode)(`span`,R,(0,a.toDisplayString)(e.label),1),e.settingLink?((0,a.openBlock)(),(0,a.createBlock)(s,{key:0,class:`top-scheduleSocials_channelSettings`,size:`xs`,href:e.settingLink,target:`_blank`,icon:``,color:`theme`,tabindex:`0`},null,8,[`href`])):(0,a.createCommentVNode)(``,!0),(0,a.createVNode)(c,{class:`top-scheduleSocials_channelSwitcher`,modelValue:e.selected,"onUpdate:modelValue":n=>t(`update:channelSelected`,{id:e.id,source:e.source,selected:n})},null,8,[`modelValue`,`onUpdate:modelValue`])]))),128)),((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(e.connectors,e=>((0,a.openBlock)(),(0,a.createElementBlock)(a.Fragment,{key:e.source},[r(e.source)?(0,a.createCommentVNode)(``,!0):((0,a.openBlock)(),(0,a.createElementBlock)(`div`,z,[(0,a.createElementVNode)(`span`,{class:`top-scheduleSocials_channelIcon`,"data-top-icon":i[e.source]},null,8,B),(0,a.createElementVNode)(`a`,{class:`top-scheduleSocials_channelLabel top-ellipsis1`,href:e.connectLink,target:`_blank`},(0,a.toDisplayString)(e.connectLabel),9,V)]))],64))),128))])])}}});t.TopSchedule=D,t.TopScheduleEmails=N,t.TopScheduleSocials=H});
1
+ define([`require`,`exports`,`../.chunks/forms-Ch1q0UUt.es.amd`,`../utils/check.amd`,`../utils/string.amd`,`vue`,`../.chunks/app-CY6euLQJ.es.amd`,`../require/css.amd!../assets/schedule.css`],function(e,t,n,r,i,a){"use strict";if(o===void 0)var o=window.Vue;Object.defineProperty(t,"__esModule",{value:!0}),t.TopScheduleSocials=t.TopScheduleEmails=t.TopSchedule=void 0;var s=e=>{let t=(0,n.E)();return(0,a.computed)(()=>{switch((0,a.toValue)(e)){case`dayOfMonth`:{let e=Array.from({length:27},(e,t)=>({value:String(t+1),title:String(t+1)}));return e.push({value:`LAST_OF_MONTH`,title:``,isIcon:!0}),e}case`dayOfWeek`:return[{value:`MONDAY`,title:t.Calendar.Dw_1},{value:`TUESDAY`,title:t.Calendar.Dw_2},{value:`WEDNESDAY`,title:t.Calendar.Dw_3},{value:`THURSDAY`,title:t.Calendar.Dw_4},{value:`FRIDAY`,title:t.Calendar.Dw_5},{value:`SATURDAY`,title:t.Calendar.Dw_6},{value:`SUNDAY`,title:t.Calendar.Dw_7}];default:return[]}})},c={class:`top-scheduleTimeSelector`},l=(0,a.defineComponent)({__name:`timeSelector`,props:(0,a.mergeModels)({modelValue:{},multipleTimes:{type:Boolean}},{modelValue:{required:!0},modelModifiers:{}}),emits:[`update:modelValue`],setup(e){let t=e,n=(0,a.useModel)(e,`modelValue`),r=Array.from({length:24},(e,t)=>({value:String(t),title:String(t).padStart(2,`0`)})),i=Array.from({length:4},(e,t)=>{let n=t*15;return{value:String(n),title:String(n).padStart(2,`0`)}}),o=(e,t)=>{let r=[...n.value];r[e]={...r[e],...t},n.value=r},s=()=>{n.value=[...n.value,{hour:`0`,minute:`0`}]},l=e=>{n.value=n.value.filter((t,n)=>n!==e)};return(e,u)=>{let d=(0,a.resolveComponent)(`TopSelect`),f=(0,a.resolveComponent)(`TopButton`);return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,c,[((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(n.value,(e,c)=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{key:c,class:`top-scheduleTimeSelector_item`},[(0,a.createVNode)(d,{class:`top-scheduleTimeSelector_hour`,modelValue:e.hour,options:(0,a.unref)(r),availableCustomValue:``,"onUpdate:modelValue":e=>o(c,{hour:e})},null,8,[`modelValue`,`options`,`onUpdate:modelValue`]),(0,a.createVNode)(d,{class:`top-scheduleTimeSelector_minute`,modelValue:e.minute,options:(0,a.unref)(i),availableCustomValue:``,"onUpdate:modelValue":e=>o(c,{minute:e})},null,8,[`modelValue`,`options`,`onUpdate:modelValue`]),t.multipleTimes||n.value.length>1?((0,a.openBlock)(),(0,a.createBlock)(f,{key:0,onClick:e=>c?l(c):s(),color:`theme`,icon:c?``:``},null,8,[`onClick`,`icon`])):(0,a.createCommentVNode)(``,!0)]))),128))])}}}),u={class:`top-scheduleCalendar`},d={class:`top-scheduleCalendar_header`},f={class:`top-scheduleCalendar_calendar`},p=[`value`,`checked`,`onChange`],m=[`data-top-icon`],h=(0,a.defineComponent)({__name:`calendar`,props:(0,a.mergeModels)({modelValue:{},mode:{},times:{},multipleTimes:{type:Boolean}},{modelValue:{required:!0},modelModifiers:{},times:{required:!0},timesModifiers:{}}),emits:[`update:modelValue`,`update:times`],setup(e){let t=e,n=(0,a.useModel)(e,`modelValue`),r=(0,a.useModel)(e,`times`),o=s(()=>t.mode),c=(0,a.computed)(()=>n.value.includes(`ALL`)||n.value.length===o.value.length),h=e=>{let t=n.value.includes(`ALL`)?o.value.map(e=>e.value):[...n.value],r=t.indexOf(e);r===-1?t.push(e):t.splice(r,1),n.value=t.length===o.value.length?[`ALL`]:t},g=()=>{n.value=c.value?[]:[`ALL`]};return(t,s)=>{let _=(0,a.resolveComponent)(`TopButton`);return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,u,[(0,a.createElementVNode)(`div`,d,[(0,a.createVNode)(l,{modelValue:r.value,"onUpdate:modelValue":s[0]||=e=>r.value=e,multipleTimes:e.multipleTimes},null,8,[`modelValue`,`multipleTimes`]),(0,a.createVNode)(_,{onClick:s[1]||=e=>g(),color:`theme`,tabindex:`0`},{default:(0,a.withCtx)(()=>[(0,a.createTextVNode)((0,a.toDisplayString)(c.value?t.$i18n.Common.Clear:t.$i18n.Common.Select_all),1)]),_:1})]),(0,a.createElementVNode)(`div`,f,[((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)((0,a.unref)(o),e=>((0,a.openBlock)(),(0,a.createElementBlock)(`label`,{class:`top-scheduleCalendar_calendarDay`,key:e.value},[(0,a.createElementVNode)(`input`,{class:`top-scheduleCalendar_calendarDayCheckbox`,type:`checkbox`,value:e.value,checked:n.value.includes(`ALL`)||n.value.includes(e.value),onChange:t=>h(e.value),tabindex:`0`},null,40,p),(0,a.createElementVNode)(`span`,{"data-top-icon":e.isIcon?e.title:void 0},[e.isIcon?(0,a.createCommentVNode)(``,!0):((0,a.openBlock)(),(0,a.createElementBlock)(a.Fragment,{key:0},[(0,a.createTextVNode)((0,a.toDisplayString)(e.title),1)],64))],8,m)]))),128))]),(0,a.createElementVNode)(`span`,{class:(0,a.normalizeClass)({"top-scheduleCalendar_selectionSummary":!0,"top-error":!n.value.length})},[(0,a.createTextVNode)((0,a.toDisplayString)(c.value?t.$i18n.Common.Every_day:n.value.length)+` `,1),r.value.length>1||!c.value?((0,a.openBlock)(),(0,a.createElementBlock)(a.Fragment,{key:0},[(0,a.createTextVNode)((0,a.toDisplayString)(r.value.length>1?` × ${r.value.length}`:``)+` `+(0,a.toDisplayString)((0,a.unref)(i.numberEnding)(r.value.length===1?n.value.length:r.value.length,t.$i18n.Common.time_a_0,t.$i18n.Common.time_a_0,t.$i18n.Common.time_a_2))+` `+(0,a.toDisplayString)(e.mode===`dayOfWeek`?t.$i18n.Common.a_week:t.$i18n.Common.a_month),1)],64)):(0,a.createCommentVNode)(``,!0)],2)])}}}),g=()=>{let e=(0,n.E)();return[{value:`0`,title:e.Projects.immediately},...Array.from({length:24},(t,n)=>({value:String(n+1),title:e(`Projects`,`in_hour`,{hour:n+1})}))]},_=e=>e===`dayOfWeek`||e===`dayOfMonth`,v=(e,t=`onDemand`)=>e.includes(`YANDEX_UPDATE`)?`afterYandexUpdated`:e.includes(`CHECK_POSITIONS`)?`afterCheck`:e.includes(`LAST_OF_MONTH`)||e.some(e=>/^\d+$/.test(e))?`dayOfMonth`:e.length?_(t)?t:`dayOfWeek`:t,y=[`onDemand`,`dayOfWeek`,`dayOfMonth`],b=[`onDemand`,`afterCheck`],x=(e,t)=>{let r=(0,n.E)();return(0,a.computed)(()=>{let n=e.type===`go`?[...y]:[...b];e.extraMods&&n.push(...e.extraMods),n.includes(t.value)||n.push(t.value);let i={onDemand:r.Projects.Settings_on_demand,dayOfWeek:r.Projects.Report_on_weekdays,dayOfMonth:r.Projects.Settings_particular_days,afterYandexUpdated:r.Projects.After_updates,afterCheck:n.includes(`afterCheck`)?r.Dynamics.Report_after_tracking_30min_1:``};return n.map(e=>({value:e,title:i[e]}))})},S=e=>({days:[...e.days],times:e.times.map(e=>({...e}))}),C=(e,t)=>{let n={daysByMode:{},timesByMode:{}};return(0,a.watch)(e,()=>{let r=S(e.value);n.daysByMode[t.value]=r.days,n.timesByMode[_(t.value)?`calendar`:t.value]=r.times},{deep:!0,immediate:!0}),n},w={class:`top-schedule_header`},T={class:`top-schedule_headerTitle`},E={key:0,class:`top-schedule_body`},D={key:2},O=(0,a.defineComponent)({__name:`schedule`,props:(0,a.mergeModels)({modelValue:{},type:{default:`go`},extraMods:{},multipleTimes:{type:Boolean},title:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:[`update:modelValue`],setup(e,{slots:t}){let r=String(Math.floor(Math.random()*7)+1),i=e,o=(0,a.useModel)(e,`modelValue`),s=(0,a.ref)(v(o.value.days)),c=x(i,s),l=g(),u=C(o,s);return(0,a.watch)(()=>o.value.days,()=>s.value=v(o.value.days,s.value),{deep:!0,immediate:!0}),(0,a.watch)(s,(e,t)=>{let n=u.daysByMode[e],i=u.timesByMode[_(e)?`calendar`:e],a={},s=t;switch(e){case`onDemand`:(s||o.value.days.length)&&(a.days=[]),(s||o.value.times.length)&&(a.times=[]);break;case`dayOfWeek`:case`dayOfMonth`:(s||!o.value.days.length)&&(a.days=n??[`ALL`]),(s||!o.value.times.length)&&(a.times=i?.length?i:[{hour:r,minute:`0`}]);break;case`afterYandexUpdated`:(s||o.value.days[0]!==`YANDEX_UPDATE`)&&(a.days=[`YANDEX_UPDATE`]),(s||!o.value.times.length)&&(a.times=i?.length?i:[{hour:`1`,minute:`0`}]);break;case`afterCheck`:(s||o.value.days[0]!==`CHECK_POSITIONS`)&&(a.days=[`CHECK_POSITIONS`]),(s||!o.value.times.length)&&(a.times=i?.length?i:[{hour:`0`,minute:`0`}])}Object.keys(a).length&&(o.value={...o.value,...a})},{immediate:!0}),(r,i)=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{class:(0,a.normalizeClass)([`top-schedule`,`top-schedule-type_`+e.type])},[(0,a.createElementVNode)(`div`,w,[(0,a.createElementVNode)(`div`,T,(0,a.toDisplayString)(e.title??(e.type===`go`?r.$i18n.Projects.Checks:r.$i18n.Projects.Reports)),1),(0,a.createVNode)(n.n,{class:`top-schedule_headerMods`,modelValue:s.value,"onUpdate:modelValue":i[0]||=e=>s.value=e,options:(0,a.unref)(c),size:`s`},null,8,[`modelValue`,`options`])]),s.value!==`onDemand`&&((0,a.unref)(_)(s.value)||s.value===`afterYandexUpdated`||t.default)?((0,a.openBlock)(),(0,a.createElementBlock)(`div`,E,[(0,a.unref)(_)(s.value)?((0,a.openBlock)(),(0,a.createBlock)(h,{key:0,modelValue:o.value.days,"onUpdate:modelValue":i[1]||=e=>o.value.days=e,times:o.value.times,"onUpdate:times":i[2]||=e=>o.value.times=e,mode:s.value,multipleTimes:e.multipleTimes},null,8,[`modelValue`,`times`,`mode`,`multipleTimes`])):(0,a.createCommentVNode)(``,!0),s.value===`afterYandexUpdated`&&o.value.times[0]?((0,a.openBlock)(),(0,a.createBlock)(n.n,{key:1,class:`top-schedule_afterYandexUpdatedDelay`,modelValue:o.value.times[0].hour,"onUpdate:modelValue":i[3]||=e=>o.value.times[0].hour=e,options:(0,a.unref)(l),size:`s`},null,8,[`modelValue`,`options`])):(0,a.createCommentVNode)(``,!0),((0,a.unref)(_)(s.value)||s.value===`afterYandexUpdated`)&&t.default?((0,a.openBlock)(),(0,a.createElementBlock)(`hr`,D)):(0,a.createCommentVNode)(``,!0),(0,a.renderSlot)(r.$slots,`default`,{mode:s.value})])):(0,a.createCommentVNode)(``,!0)],2))}}),k=(0,a.defineComponent)({__name:`selector`,props:(0,a.mergeModels)({modelValue:{},emails:{default:()=>[]},maxEmailsCount:{},getEmailSuggestions:{type:Function,default:()=>[]}},{modelValue:{required:!0},modelModifiers:{}}),emits:(0,a.mergeModels)([`update:modelValue`,`submit`],[`update:modelValue`]),setup(e,{emit:t}){let i=e,o=(0,a.useModel)(e,`modelValue`),s=t,c=(0,n.E)(),l=n.O.$,u=(0,a.ref)(),d=(0,a.ref)(),f=null,p={},m=(0,a.computed)(()=>!!i.maxEmailsCount&&i.emails.length>=i.maxEmailsCount),h=e=>e.filter(e=>!i.emails.includes(e)),g=(e=o.value)=>{let t=String(e).trim();if(t){if(!(0,r.isEmail)(t)){n.O.notice(c.Common.Enter_valid_email_notice,`error`);return}s(`submit`,t)}},_=async()=>{if(await(0,a.nextTick)(),f=d.value?.$el.querySelector(`input`)??null,f){if(!l?.ui?.autocomplete){console.info(`Для работы autocomplete требуется глобальная загрузка jQuery UI Autocomplete`);return}l(f).autocomplete({appendTo:u.value,minLength:0,source:async(e,t)=>{let n=e.term;n in p||(p[n]=await i.getEmailSuggestions(n)),t(h(p[n]).map(e=>({label:e,value:e})))},select:(e,t)=>{t.item&&f&&(e.preventDefault(),g(t.item.value),o.value=``,l(f).trigger(`focus`))}}),l(f).attr(`autocomplete`,`disabled`),l(f).on(`focus.scheduleEmailSelector`,()=>{f&&l(f).trigger(`input`)})}};return(0,a.onMounted)(()=>{_()}),(0,a.onBeforeUnmount)(()=>{l?.ui?.autocomplete&&f&&(l(f).off(`focus.scheduleEmailSelector`),l(f).autocomplete(`destroy`))}),(e,t)=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{class:`top-scheduleEmailSelector`,ref_key:`elRootRef`,ref:u},[(0,a.createVNode)(n.c,{ref_key:`elInputRef`,ref:d,modelValue:o.value,"onUpdate:modelValue":t[1]||=e=>o.value=e,onKeydown:t[2]||=(0,a.withKeys)((0,a.withModifiers)(e=>g(),[`prevent`]),[`enter`]),title:e.$i18n.Common.Enter_email,type:`email`,size:`m`,disabled:m.value},{default:(0,a.withCtx)(()=>[m.value?(0,a.createCommentVNode)(``,!0):((0,a.openBlock)(),(0,a.createBlock)(n.h,{key:0,class:`top-scheduleEmailSelector_submit`,color:`theme`,icon:``,onClick:t[0]||=(0,a.withModifiers)(e=>g(),[`prevent`])}))]),_:1},8,[`modelValue`,`title`,`disabled`])],512))}}),A={class:`top-scheduleEmail`},j={class:`top-scheduleEmail_title`},M={key:0,class:`top-scheduleEmail_emails`},N={class:`top-ellipsis1`},P=(0,a.defineComponent)({__name:`emails`,props:{emails:{default:()=>[]},getEmailSuggestions:{type:Function,default:()=>[]},maxEmailsCount:{}},emits:[`add:email`,`remove:email`],setup(e,{emit:t}){let n=e,r=t,i=(0,a.ref)(``),o=e=>{let t=e.trim();if(!t||n.emails.includes(t)){i.value=``;return}r(`add:email`,t),i.value=``};return(t,n)=>{let s=(0,a.resolveComponent)(`TopButton`);return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,A,[(0,a.createElementVNode)(`div`,j,(0,a.toDisplayString)(t.$i18n.Projects.Reports_send_to_address)+` E-mail: `,1),(0,a.createVNode)(k,{modelValue:i.value,"onUpdate:modelValue":n[0]||=e=>i.value=e,emails:e.emails,maxEmailsCount:e.maxEmailsCount,getEmailSuggestions:e.getEmailSuggestions,onSubmit:o},null,8,[`modelValue`,`emails`,`maxEmailsCount`,`getEmailSuggestions`]),e.emails.length?((0,a.openBlock)(),(0,a.createElementBlock)(`div`,M,[((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(e.emails,e=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{class:`top-scheduleEmail_emailsItem`,key:e},[(0,a.createElementVNode)(`span`,N,(0,a.toDisplayString)(e),1),(0,a.createVNode)(s,{onClick:t=>r(`remove:email`,e),color:`theme`,icon:``},null,8,[`onClick`])]))),128))])):(0,a.createCommentVNode)(``,!0)])}}}),F={class:`top-scheduleSocials`},I={class:`top-scheduleSocials_title`},L={class:`top-scheduleSocials_channels`},R=[`data-top-icon`],z={class:`top-scheduleSocials_channelLabel top-ellipsis1`},B={key:0,class:`top-scheduleSocials_channel`},V=[`data-top-icon`],H=[`href`],U=(0,a.defineComponent)({__name:`socials`,props:{channels:{},connectors:{}},emits:[`update:channelSelected`],setup(e,{emit:t}){let n=e,r=e=>n.channels.some(t=>t.source===e),i={informer:``,telegram:``};return(n,o)=>{let s=(0,a.resolveComponent)(`TopButton`),c=(0,a.resolveComponent)(`TopSwitcher`);return(0,a.openBlock)(),(0,a.createElementBlock)(`div`,F,[(0,a.createElementVNode)(`div`,I,(0,a.toDisplayString)(n.$i18n.Projects.Reports_send_to_address),1),(0,a.createElementVNode)(`div`,L,[((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(e.channels,e=>((0,a.openBlock)(),(0,a.createElementBlock)(`div`,{class:`top-scheduleSocials_channel`,key:`${e.source}-${e.id}`},[(0,a.createElementVNode)(`span`,{class:`top-scheduleSocials_channelIcon`,"data-top-icon":i[e.source]},null,8,R),(0,a.createElementVNode)(`span`,z,(0,a.toDisplayString)(e.label),1),e.settingLink?((0,a.openBlock)(),(0,a.createBlock)(s,{key:0,class:`top-scheduleSocials_channelSettings`,size:`xs`,href:e.settingLink,target:`_blank`,icon:``,color:`theme`,tabindex:`0`},null,8,[`href`])):(0,a.createCommentVNode)(``,!0),(0,a.createVNode)(c,{class:`top-scheduleSocials_channelSwitcher`,modelValue:e.selected,"onUpdate:modelValue":n=>t(`update:channelSelected`,{id:e.id,source:e.source,selected:n})},null,8,[`modelValue`,`onUpdate:modelValue`])]))),128)),((0,a.openBlock)(!0),(0,a.createElementBlock)(a.Fragment,null,(0,a.renderList)(e.connectors,e=>((0,a.openBlock)(),(0,a.createElementBlock)(a.Fragment,{key:e.source},[r(e.source)?(0,a.createCommentVNode)(``,!0):((0,a.openBlock)(),(0,a.createElementBlock)(`div`,B,[(0,a.createElementVNode)(`span`,{class:`top-scheduleSocials_channelIcon`,"data-top-icon":i[e.source]},null,8,V),(0,a.createElementVNode)(`a`,{class:`top-scheduleSocials_channelLabel top-ellipsis1`,href:e.connectLink,target:`_blank`},(0,a.toDisplayString)(e.connectLabel),9,H)]))],64))),128))])])}}});t.TopSchedule=O,t.TopScheduleEmails=P,t.TopScheduleSocials=U});
2
2
  //# sourceMappingURL=schedule.amd.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["schedule/schedule.js","../../src/components/schedule/schedule/compoents/calendar/composables/useDaysByCalendarMode.ts","../../src/components/schedule/schedule/compoents/timeSelector/timeSelector.vue","../../src/components/schedule/schedule/compoents/calendar/calendar.vue","../../src/components/schedule/schedule/utils.ts","../../src/components/schedule/schedule/composables/useModeOptions.ts","../../src/components/schedule/schedule/composables/useModelByModeCache.ts","../../src/components/schedule/schedule/schedule.vue","../../src/components/schedule/schedule/compoents/emails/selector/selector.vue","../../src/components/schedule/schedule/compoents/emails/emails.vue","../../src/components/schedule/schedule/compoents/socials/socials.vue"],"names":["vue","exports","N","n","forms_Ch1q0UUt_es_js_1","vue_1","t","P","F","a","o","c","p","h","s","I","L","R","z","B","V","i","l","g","string_js_1","H","U","W","G","K","e","q","te","J","Y","X","Z","Q","r","ne","u","f","v","C","w","check_js_1","T","re","ie","ae","oe","$","se","ce","le","ue","de","fe","pe","me","he"],"mappings":"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","sourcesContent":["define([\"require\", \"exports\", \"../.chunks/forms-Ch1q0UUt.es.js\", \"../utils/check.js\", \"../utils/string.js\", \"vue\", \"../.chunks/app-CY6euLQJ.es.js\"], function (require, exports, forms_Ch1q0UUt_es_js_1, check_js_1, string_js_1, vue_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n exports.TopScheduleSocials = exports.TopScheduleEmails = exports.TopSchedule = void 0;\n //#region src/components/schedule/schedule/compoents/calendar/composables/useDaysByCalendarMode.ts\n var N = (t) => {\n let n = (0, forms_Ch1q0UUt_es_js_1.E)();\n return (0, vue_1.computed)(() => {\n switch ((0, vue_1.toValue)(t)) {\n case \"dayOfMonth\": {\n let e = Array.from({ length: 27 }, (e, t) => ({\n value: String(t + 1),\n title: String(t + 1)\n }));\n return e.push({\n value: \"LAST_OF_MONTH\",\n title: \"\",\n isIcon: !0\n }), e;\n }\n case \"dayOfWeek\": return [\n {\n value: \"MONDAY\",\n title: n.Calendar.Dw_1\n },\n {\n value: \"TUESDAY\",\n title: n.Calendar.Dw_2\n },\n {\n value: \"WEDNESDAY\",\n title: n.Calendar.Dw_3\n },\n {\n value: \"THURSDAY\",\n title: n.Calendar.Dw_4\n },\n {\n value: \"FRIDAY\",\n title: n.Calendar.Dw_5\n },\n {\n value: \"SATURDAY\",\n title: n.Calendar.Dw_6\n },\n {\n value: \"SUNDAY\",\n title: n.Calendar.Dw_7\n }\n ];\n default: return [];\n }\n });\n }, P = { class: \"top-scheduleTimeSelector\" }, F = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"timeSelector\",\n props: /*@__PURE__*/ (0, vue_1.mergeModels)({\n modelValue: {},\n multipleTimes: { type: Boolean }\n }, {\n modelValue: { required: !0 },\n modelModifiers: {}\n }),\n emits: [\"update:modelValue\"],\n setup(e) {\n let t = e, n = (0, vue_1.useModel)(e, \"modelValue\"), r = Array.from({ length: 24 }, (e, t) => ({\n value: String(t),\n title: String(t).padStart(2, \"0\")\n })), i = Array.from({ length: 4 }, (e, t) => {\n let n = t * 15;\n return {\n value: String(n),\n title: String(n).padStart(2, \"0\")\n };\n }), a = (e, t) => {\n let r = [...n.value];\n r[e] = {\n ...r[e],\n ...t\n }, n.value = r;\n }, o = () => {\n n.value = [{\n hour: \"0\",\n minute: \"0\"\n }, ...n.value];\n }, c = (e) => {\n n.value = n.value.filter((t, n) => n !== e);\n };\n return (e, f) => {\n let p = (0, vue_1.resolveComponent)(\"TopSelect\"), h = (0, vue_1.resolveComponent)(\"TopButton\");\n return (0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", P, [((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)(n.value, (e, s) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n key: s,\n class: \"top-scheduleTimeSelector_item\"\n }, [\n (0, vue_1.createVNode)(p, {\n class: \"top-scheduleTimeSelector_hour\",\n modelValue: e.hour,\n options: (0, vue_1.unref)(r),\n \"onUpdate:modelValue\": (e) => a(s, { hour: e })\n }, null, 8, [\n \"modelValue\",\n \"options\",\n \"onUpdate:modelValue\"\n ]),\n (0, vue_1.createVNode)(p, {\n class: \"top-scheduleTimeSelector_minute\",\n modelValue: e.minute,\n options: (0, vue_1.unref)(i),\n availableCustomValue: \"\",\n \"onUpdate:modelValue\": (e) => a(s, { minute: e })\n }, null, 8, [\n \"modelValue\",\n \"options\",\n \"onUpdate:modelValue\"\n ]),\n t.multipleTimes || n.value.length > 1 ? ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(h, {\n key: 0,\n onClick: (e) => s ? c(s) : o(),\n color: \"theme\",\n icon: s ? \"\" : \"\"\n }, null, 8, [\"onClick\", \"icon\"])) : (0, vue_1.createCommentVNode)(\"\", !0)\n ]))), 128))]);\n };\n }\n }), I = { class: \"top-scheduleCalendar\" }, L = { class: \"top-scheduleCalendar_header\" }, R = { class: \"top-scheduleCalendar_calendar\" }, z = [\n \"value\",\n \"checked\",\n \"onChange\"\n ], B = [\"data-top-icon\"], V = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"calendar\",\n props: /*@__PURE__*/ (0, vue_1.mergeModels)({\n modelValue: {},\n mode: {},\n times: {},\n multipleTimes: { type: Boolean }\n }, {\n modelValue: { required: !0 },\n modelModifiers: {},\n times: { required: !0 },\n timesModifiers: {}\n }),\n emits: [\"update:modelValue\", \"update:times\"],\n setup(e) {\n let t = e, n = (0, vue_1.useModel)(e, \"modelValue\"), r = (0, vue_1.useModel)(e, \"times\"), i = N(() => t.mode), a = (0, vue_1.computed)(() => n.value.includes(\"ALL\") || n.value.length === i.value.length), l = (e) => {\n let t = n.value.includes(\"ALL\") ? i.value.map((e) => e.value) : [...n.value], r = t.indexOf(e);\n r === -1 ? t.push(e) : t.splice(r, 1), n.value = t.length === i.value.length ? [\"ALL\"] : t;\n }, h = () => {\n n.value = a.value ? [] : [\"ALL\"];\n };\n return (t, c) => {\n let g = (0, vue_1.resolveComponent)(\"TopButton\");\n return (0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", I, [\n (0, vue_1.createElementVNode)(\"div\", L, [(0, vue_1.createVNode)(F, {\n modelValue: r.value,\n \"onUpdate:modelValue\": c[0] ||= (e) => r.value = e,\n multipleTimes: e.multipleTimes\n }, null, 8, [\"modelValue\", \"multipleTimes\"]), (0, vue_1.createVNode)(g, {\n onClick: c[1] ||= (e) => h(),\n color: \"theme\",\n tabindex: \"0\"\n }, {\n default: (0, vue_1.withCtx)(() => [(0, vue_1.createTextVNode)((0, vue_1.toDisplayString)(a.value ? t.$i18n.Common.Clear : t.$i18n.Common.Select_all), 1)]),\n _: 1\n })]),\n (0, vue_1.createElementVNode)(\"div\", R, [((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)((0, vue_1.unref)(i), (e) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"label\", {\n class: \"top-scheduleCalendar_calendarDay\",\n key: e.value\n }, [(0, vue_1.createElementVNode)(\"input\", {\n class: \"top-scheduleCalendar_calendarDayCheckbox\",\n type: \"checkbox\",\n value: e.value,\n checked: n.value.includes(\"ALL\") || n.value.includes(e.value),\n onChange: (t) => l(e.value),\n tabindex: \"0\"\n }, null, 40, z), (0, vue_1.createElementVNode)(\"span\", {\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, B)]))), 128))]),\n (0, vue_1.createElementVNode)(\"span\", { class: (0, vue_1.normalizeClass)({\n \"top-scheduleCalendar_selectionSummary\": !0,\n \"top-error\": !n.value.length\n }) }, [(0, vue_1.createTextVNode)((0, vue_1.toDisplayString)(a.value ? t.$i18n.Common.Every_day : n.value.length) + \" \", 1), r.value.length > 1 || !a.value ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(vue_1.Fragment, { key: 0 }, [(0, vue_1.createTextVNode)((0, vue_1.toDisplayString)(r.value.length > 1 ? ` × ${r.value.length}` : \"\") + \" \" + (0, vue_1.toDisplayString)((0, vue_1.unref)(string_js_1.numberEnding)(r.value.length === 1 ? n.value.length : r.value.length, t.$i18n.Common.time_a_0, t.$i18n.Common.time_a_0, t.$i18n.Common.time_a_2)) + \" \" + (0, vue_1.toDisplayString)(e.mode === \"dayOfWeek\" ? t.$i18n.Common.a_week : t.$i18n.Common.a_month), 1)], 64)) : (0, vue_1.createCommentVNode)(\"\", !0)], 2)\n ]);\n };\n }\n }), H = () => {\n let t = (0, forms_Ch1q0UUt_es_js_1.E)();\n return [{\n value: \"0\",\n title: t.Projects.immediately\n }, ...Array.from({ length: 24 }, (e, n) => ({\n value: String(n + 1),\n title: t(\"Projects\", \"in_hour\", { hour: n + 1 })\n }))];\n }, U = (e) => e === \"dayOfWeek\" || e === \"dayOfMonth\", W = (e, t = \"onDemand\") => e.includes(\"YANDEX_UPDATE\") ? \"afterYandexUpdated\" : e.includes(\"CHECK_POSITIONS\") ? \"afterCheck\" : e.includes(\"LAST_OF_MONTH\") || e.some((e) => /^\\d+$/.test(e)) ? \"dayOfMonth\" : e.length ? U(t) ? t : \"dayOfWeek\" : t, G = [\n \"onDemand\",\n \"dayOfWeek\",\n \"dayOfMonth\"\n ], K = (t, n) => {\n let r = (0, forms_Ch1q0UUt_es_js_1.E)();\n return (0, vue_1.computed)(() => {\n let e = t.type === \"report\" ? [...G, \"afterCheck\"] : [...G];\n t.extraMods && e.push(...t.extraMods), e.includes(n.value) || e.push(n.value);\n let i = {\n onDemand: r.Projects.Settings_on_demand,\n dayOfWeek: r.Projects.Report_on_weekdays,\n dayOfMonth: r.Projects.Settings_particular_days,\n afterYandexUpdated: r.Projects.After_updates,\n afterCheck: e.includes(\"afterCheck\") ? r.Dynamics.Report_after_tracking_30min_1 : \"\"\n };\n return e.map((e) => ({\n value: e,\n title: i[e]\n }));\n });\n }, q = (e) => ({\n days: [...e.days],\n times: e.times.map((e) => ({ ...e }))\n }), te = (e, t) => {\n let n = {\n daysByMode: {},\n timesByMode: {}\n };\n return (0, vue_1.watch)(e, () => {\n let r = q(e.value);\n n.daysByMode[t.value] = r.days, n.timesByMode[U(t.value) ? \"calendar\" : t.value] = r.times;\n }, {\n deep: !0,\n immediate: !0\n }), n;\n }, J = { class: \"top-schedule_header\" }, Y = { class: \"top-schedule_headerTitle\" }, X = {\n key: 0,\n class: \"top-schedule_body\"\n }, Z = { key: 2 }, Q = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"schedule\",\n props: /*@__PURE__*/ (0, vue_1.mergeModels)({\n modelValue: {},\n type: { default: \"go\" },\n extraMods: {},\n multipleTimes: { type: Boolean },\n title: {}\n }, {\n modelValue: { required: !0 },\n modelModifiers: {}\n }),\n emits: [\"update:modelValue\"],\n setup(e, { slots: t }) {\n let n = String(Math.floor(Math.random() * 7) + 1), r = e, a = (0, vue_1.useModel)(e, \"modelValue\"), o = (0, vue_1.ref)(W(a.value.days)), s = K(r, o), c = H(), p = te(a, o);\n return (0, vue_1.watch)(() => a.value.days, () => o.value = W(a.value.days, o.value), {\n deep: !0,\n immediate: !0\n }), (0, vue_1.watch)(o, (e) => {\n let t = p.daysByMode[e], r = p.timesByMode[U(e) ? \"calendar\" : e];\n switch (e) {\n case \"onDemand\":\n a.value = {\n days: [],\n times: []\n };\n break;\n case \"dayOfWeek\":\n case \"dayOfMonth\":\n a.value = {\n ...a.value,\n days: t ?? [\"ALL\"],\n times: r?.length ? r : [{\n hour: n,\n minute: \"30\"\n }]\n };\n break;\n case \"afterYandexUpdated\":\n a.value = {\n days: [\"YANDEX_UPDATE\"],\n times: r?.length ? r : [{\n hour: \"1\",\n minute: \"0\"\n }]\n };\n break;\n case \"afterCheck\": a.value = {\n days: [\"CHECK_POSITIONS\"],\n times: r?.length ? r : [{\n hour: \"0\",\n minute: \"30\"\n }]\n };\n }\n }, { immediate: !0 }), (n, r) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", { class: (0, vue_1.normalizeClass)([\"top-schedule\", \"top-schedule-type_\" + e.type]) }, [(0, vue_1.createElementVNode)(\"div\", J, [(0, vue_1.createElementVNode)(\"div\", Y, (0, vue_1.toDisplayString)(e.title ?? (e.type === \"go\" ? n.$i18n.Projects.Checks : n.$i18n.Projects.Reports)), 1), (0, vue_1.createVNode)(forms_Ch1q0UUt_es_js_1.n, {\n class: \"top-schedule_headerMods\",\n modelValue: o.value,\n \"onUpdate:modelValue\": r[0] ||= (e) => o.value = e,\n options: (0, vue_1.unref)(s),\n size: \"s\"\n }, null, 8, [\"modelValue\", \"options\"])]), o.value !== \"onDemand\" && ((0, vue_1.unref)(U)(o.value) || o.value === \"afterYandexUpdated\" || t.settings) ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", X, [\n (0, vue_1.unref)(U)(o.value) ? ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(V, {\n key: 0,\n modelValue: a.value.days,\n \"onUpdate:modelValue\": r[1] ||= (e) => a.value.days = e,\n times: a.value.times,\n \"onUpdate:times\": r[2] ||= (e) => a.value.times = e,\n mode: o.value,\n multipleTimes: e.multipleTimes\n }, null, 8, [\n \"modelValue\",\n \"times\",\n \"mode\",\n \"multipleTimes\"\n ])) : (0, vue_1.createCommentVNode)(\"\", !0),\n o.value === \"afterYandexUpdated\" && a.value.times[0] ? ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(forms_Ch1q0UUt_es_js_1.n, {\n key: 1,\n class: \"top-schedule_afterYandexUpdatedDelay\",\n modelValue: a.value.times[0].hour,\n \"onUpdate:modelValue\": r[3] ||= (e) => a.value.times[0].hour = e,\n options: (0, vue_1.unref)(c),\n size: \"s\"\n }, null, 8, [\"modelValue\", \"options\"])) : (0, vue_1.createCommentVNode)(\"\", !0),\n (0, vue_1.unref)(U)(o.value) || o.value === \"afterYandexUpdated\" && t.settings ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"hr\", Z)) : (0, vue_1.createCommentVNode)(\"\", !0),\n (0, vue_1.renderSlot)(n.$slots, \"settings\", { mode: o.value })\n ])) : (0, vue_1.createCommentVNode)(\"\", !0)], 2));\n }\n }), ne = /* @__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: o }) {\n let s = o, c = i, l = o, u = (0, forms_Ch1q0UUt_es_js_1.E)(), f = forms_Ch1q0UUt_es_js_1.O.$, p = (0, vue_1.ref)(), h = (0, vue_1.ref)(), g = null, v = {}, C = (e) => e.filter((e) => !c.emails.includes(e)), w = (e = c.modelValue) => {\n let n = String(e).trim();\n if (n) {\n if (!(0, check_js_1.isEmail)(n)) {\n forms_Ch1q0UUt_es_js_1.O.notice(u.Common.Enter_valid_email_notice, \"error\");\n return;\n }\n l(\"submit\", n);\n }\n }, T = async () => {\n if (await (0, vue_1.nextTick)(), g = h.value?.$el.querySelector(\"input\") ?? null, g) {\n if (!f?.ui?.autocomplete) {\n console.info(\"Для работы autocomplete требуется глобальная загрузка jQuery UI Autocomplete\");\n return;\n }\n f(g).autocomplete({\n appendTo: p.value,\n minLength: 0,\n source: async (e, t) => {\n let n = e.term;\n n in v || (v[n] = await c.getEmailSuggestions(n)), t(C(v[n]).map((e) => ({\n label: e,\n value: e\n })));\n },\n select: (e, t) => {\n t.item && g && (e.preventDefault(), w(t.item.value), l(\"update:modelValue\", \"\"), f(g).trigger(\"focus\"));\n }\n }), f(g).attr(\"autocomplete\", \"disabled\"), f(g).on(\"focus.scheduleEmailSelector\", () => {\n g && f(g).trigger(\"input\");\n });\n }\n };\n return (0, vue_1.onMounted)(() => {\n T();\n }), (0, vue_1.onBeforeUnmount)(() => {\n f?.ui?.autocomplete && g && (f(g).off(\"focus.scheduleEmailSelector\"), f(g).autocomplete(\"destroy\"));\n }), (e, t) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n class: \"top-scheduleEmailSelector\",\n ref_key: \"elRootRef\",\n ref: p\n }, [(0, vue_1.createVNode)(forms_Ch1q0UUt_es_js_1.c, {\n ref_key: \"elInputRef\",\n ref: h,\n modelValue: i.modelValue,\n \"onUpdate:modelValue\": t[1] ||= (e) => s(\"update:modelValue\", e),\n onKeydown: t[2] ||= (0, vue_1.withKeys)((0, vue_1.withModifiers)((e) => w(), [\"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_Ch1q0UUt_es_js_1.h, {\n class: \"top-scheduleEmailSelector_submit\",\n color: \"theme\",\n icon: \"\",\n onClick: t[0] ||= (0, vue_1.withModifiers)((e) => w(), [\"prevent\"])\n })]),\n _: 1\n }, 8, [\"modelValue\", \"title\"])], 512));\n }\n }), re = { class: \"top-scheduleEmail\" }, ie = { class: \"top-scheduleEmail_title\" }, ae = {\n key: 1,\n class: \"top-scheduleEmail_emails\"\n }, oe = { class: \"top-ellipsis1\" }, $ = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"emails\",\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 = t, r = e, i = t, a = (0, vue_1.ref)(\"\"), o = (e) => {\n let t = e.trim();\n if (!t || r.emails.includes(t)) {\n a.value = \"\";\n return;\n }\n i(\"add:email\", t), a.value = \"\";\n };\n return (t, r) => {\n let i = (0, vue_1.resolveComponent)(\"TopButton\");\n return (0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", re, [\n (0, vue_1.createElementVNode)(\"div\", ie, (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.createBlock)(ne, {\n key: 0,\n modelValue: a.value,\n \"onUpdate:modelValue\": r[0] ||= (e) => a.value = e,\n getEmailSuggestions: e.getEmailSuggestions,\n emails: e.emails,\n onSubmit: o\n }, null, 8, [\n \"modelValue\",\n \"getEmailSuggestions\",\n \"emails\"\n ])),\n e.emails.length ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", ae, [((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)(e.emails, (e) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n class: \"top-scheduleEmail_emailsItem\",\n key: e\n }, [(0, vue_1.createElementVNode)(\"span\", oe, (0, vue_1.toDisplayString)(e), 1), (0, vue_1.createVNode)(i, {\n onClick: (t) => n(\"remove:email\", e),\n color: \"theme\",\n icon: \"\"\n }, null, 8, [\"onClick\"])]))), 128))])) : (0, vue_1.createCommentVNode)(\"\", !0)\n ]);\n };\n }\n }), se = { class: \"top-scheduleSocials\" }, ce = { class: \"top-scheduleSocials_title\" }, le = { class: \"top-scheduleSocials_channels\" }, ue = [\"data-top-icon\"], de = { class: \"top-scheduleSocials_channelLabel top-ellipsis1\" }, fe = {\n key: 0,\n class: \"top-scheduleSocials_channel\"\n }, pe = [\"data-top-icon\"], me = [\"href\"], he = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"socials\",\n props: {\n channels: {},\n connectors: {}\n },\n emits: [\"update:channelSelected\"],\n setup(e, { emit: t }) {\n let n = e, r = (e) => n.channels.some((t) => t.source === e), i = {\n informer: \"\",\n telegram: \"\"\n };\n return (n, a) => {\n let o = (0, vue_1.resolveComponent)(\"TopButton\"), c = (0, vue_1.resolveComponent)(\"TopSwitcher\");\n return (0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", se, [(0, vue_1.createElementVNode)(\"div\", ce, (0, vue_1.toDisplayString)(n.$i18n.Projects.Reports_send_to_address), 1), (0, vue_1.createElementVNode)(\"div\", le, [((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)(e.channels, (e) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n class: \"top-scheduleSocials_channel\",\n key: `${e.source}-${e.id}`\n }, [\n (0, vue_1.createElementVNode)(\"span\", {\n class: \"top-scheduleSocials_channelIcon\",\n \"data-top-icon\": i[e.source]\n }, null, 8, ue),\n (0, vue_1.createElementVNode)(\"span\", de, (0, vue_1.toDisplayString)(e.label), 1),\n e.settingLink ? ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(o, {\n key: 0,\n class: \"top-scheduleSocials_channelSettings\",\n size: \"xs\",\n href: e.settingLink,\n target: \"_blank\",\n icon: \"\",\n color: \"theme\",\n tabindex: \"0\"\n }, null, 8, [\"href\"])) : (0, vue_1.createCommentVNode)(\"\", !0),\n (0, vue_1.createVNode)(c, {\n class: \"top-scheduleSocials_channelSwitcher\",\n modelValue: e.selected,\n \"onUpdate:modelValue\": (n) => t(\"update:channelSelected\", {\n id: e.id,\n source: e.source,\n selected: n\n })\n }, null, 8, [\"modelValue\", \"onUpdate:modelValue\"])\n ]))), 128)), ((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)(e.connectors, (e) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(vue_1.Fragment, { key: e.source }, [r(e.source) ? (0, vue_1.createCommentVNode)(\"\", !0) : ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", fe, [(0, vue_1.createElementVNode)(\"span\", {\n class: \"top-scheduleSocials_channelIcon\",\n \"data-top-icon\": i[e.source]\n }, null, 8, pe), (0, vue_1.createElementVNode)(\"a\", {\n class: \"top-scheduleSocials_channelLabel top-ellipsis1\",\n href: e.connectLink,\n target: \"_blank\"\n }, (0, vue_1.toDisplayString)(e.connectLabel), 9, me)]))], 64))), 128))])]);\n };\n }\n });\n exports.TopSchedule = Q;\n exports.TopScheduleEmails = $;\n exports.TopScheduleSocials = he;\n});\n//# sourceMappingURL=schedule.js.map\n","import { computed, type MaybeRefOrGetter, toValue } from 'vue';\nimport type { Day, Props } from '../types';\nimport { useI18n } from '@/core/app';\n\n/**\n * Формирует список дней для выбранного режима календаря.\n */\nexport const useDaysByCalendarMode = (mode: MaybeRefOrGetter<Props['mode']>) => {\n\tconst i18n = useI18n();\n\n\treturn computed<Day[]>(() => {\n\t\tswitch (toValue(mode)) {\n\t\t\t// Дни месяца\n\t\t\tcase 'dayOfMonth': {\n\t\t\t\tconst days: Day[] = Array.from({ length: 27 }, (_, index) => ({\n\t\t\t\t\tvalue: String(index + 1) as Day['value'],\n\t\t\t\t\ttitle: String(index + 1),\n\t\t\t\t}));\n\n\t\t\t\tdays.push({\n\t\t\t\t\tvalue: 'LAST_OF_MONTH',\n\t\t\t\t\ttitle: '',\n\t\t\t\t\tisIcon: true,\n\t\t\t\t});\n\n\t\t\t\treturn days;\n\t\t\t}\n\n\t\t\t// Дни недели\n\t\t\tcase 'dayOfWeek':\n\t\t\t\treturn [\n\t\t\t\t\t{ value: 'MONDAY', title: i18n.Calendar.Dw_1 },\n\t\t\t\t\t{ value: 'TUESDAY', title: i18n.Calendar.Dw_2 },\n\t\t\t\t\t{ value: 'WEDNESDAY', title: i18n.Calendar.Dw_3 },\n\t\t\t\t\t{ value: 'THURSDAY', title: i18n.Calendar.Dw_4 },\n\t\t\t\t\t{ value: 'FRIDAY', title: i18n.Calendar.Dw_5 },\n\t\t\t\t\t{ value: 'SATURDAY', title: i18n.Calendar.Dw_6 },\n\t\t\t\t\t{ value: 'SUNDAY', title: i18n.Calendar.Dw_7 },\n\t\t\t\t];\n\n\t\t\tdefault:\n\t\t\t\treturn [];\n\t\t}\n\t});\n};\n","<script setup lang=\"ts\">\nimport type { Props } from '@/components/schedule/schedule/compoents/timeSelector/types';\n\nconst props = defineProps<Props>();\n\nconst times = defineModel<Props['modelValue']>({\n\trequired: true,\n});\n\n/**\n * Варианты выбора часа от 00 до 23.\n */\nconst hourOptions = Array.from({ length: 24 }, (_, index) => ({\n\tvalue: String(index),\n\ttitle: String(index).padStart(2, '0'),\n}));\n\n/**\n * Предустановленные варианты минут.\n *\n * Поддерижвает вставку произвольного значения через `modelValue`.\n */\nconst minuteOptions = Array.from({ length: 4 }, (_, index) => {\n\tconst minute = index * 15;\n\n\treturn {\n\t\tvalue: String(minute),\n\t\ttitle: String(minute).padStart(2, '0'),\n\t};\n});\n\nconst updateTimeByIndex = (index: number, patch: Partial<Props['modelValue'][number]>) => {\n\tconst nextTimes = [...times.value];\n\tnextTimes[index] = { ...nextTimes[index], ...patch };\n\n\ttimes.value = nextTimes;\n};\n\nconst addTime = () => {\n\ttimes.value = [\n\t\t{\n\t\t\thour: '0',\n\t\t\tminute: '0',\n\t\t},\n\t\t...times.value,\n\t];\n};\n\nconst delTime = (index: number) => {\n\ttimes.value = times.value.filter((_, timeIndex) => timeIndex !== index);\n};\n</script>\n\n<template>\n\t<div class=\"top-scheduleTimeSelector\">\n\t\t<div v-for=\"(time, index) in times\" :key=\"index\" class=\"top-scheduleTimeSelector_item\">\n\t\t\t<TopSelect\n\t\t\t\tclass=\"top-scheduleTimeSelector_hour\"\n\t\t\t\t:modelValue=\"time.hour\"\n\t\t\t\t:options=\"hourOptions\"\n\t\t\t\t@update:modelValue=\"updateTimeByIndex(index, { hour: $event as Props['modelValue'][number]['hour'] })\"\n\t\t\t/>\n\n\t\t\t<TopSelect\n\t\t\t\tclass=\"top-scheduleTimeSelector_minute\"\n\t\t\t\t:modelValue=\"time.minute\"\n\t\t\t\t:options=\"minuteOptions\"\n\t\t\t\tavailableCustomValue\n\t\t\t\t@update:modelValue=\"updateTimeByIndex(index, { minute: $event as Props['modelValue'][number]['minute'] })\"\n\t\t\t/>\n\n\t\t\t<TopButton\n\t\t\t\tv-if=\"props.multipleTimes || times.length > 1\"\n\t\t\t\t@click=\"index ? delTime(index) : addTime()\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\t:icon=\"index ? '' : ''\"\n\t\t\t/>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport type { Props } from '@/components/schedule/schedule/compoents/calendar/types';\nimport { useDaysByCalendarMode } from './composables/useDaysByCalendarMode';\nimport { numberEnding } from '@/core/utils/string';\nimport { computed } from 'vue';\nimport TopScheduleTimeSelector from '@/components/schedule/schedule/compoents/timeSelector/timeSelector.vue';\n\nconst props = defineProps<Props>();\n\nconst selectedDays = defineModel<Props['modelValue']>({\n\trequired: true,\n});\n\nconst times = defineModel<Props['times']>('times', {\n\trequired: true,\n});\n\nconst days = useDaysByCalendarMode(() => props.mode);\n\nconst isAllDaysSelected = computed(() => selectedDays.value.includes('ALL') || selectedDays.value.length === days.value.length);\n\nconst toggleDay = (day: Props['modelValue'][number]) => {\n\tconst nextDays = selectedDays.value.includes('ALL') ? days.value.map(item => item.value) : [...selectedDays.value];\n\tconst dayIndex = nextDays.indexOf(day);\n\n\tif (dayIndex === -1) {\n\t\tnextDays.push(day);\n\t} else {\n\t\tnextDays.splice(dayIndex, 1);\n\t}\n\n\tselectedDays.value = nextDays.length === days.value.length ? ['ALL'] : nextDays;\n};\n\nconst toggleSelectAll = () => {\n\tselectedDays.value = isAllDaysSelected.value ? [] : ['ALL'];\n};\n</script>\n\n<template>\n\t<div class=\"top-scheduleCalendar\">\n\t\t<div class=\"top-scheduleCalendar_header\">\n\t\t\t<TopScheduleTimeSelector v-model=\"times\" :multipleTimes />\n\n\t\t\t<TopButton\n\t\t\t\t@click=\"toggleSelectAll()\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ttabindex=\"0\"\n\t\t\t>\n\t\t\t\t{{ isAllDaysSelected ? $i18n.Common.Clear : $i18n.Common.Select_all }}\n\t\t\t</TopButton>\n\t\t</div>\n\n\t\t<div class=\"top-scheduleCalendar_calendar\">\n\t\t\t<label\n\t\t\t\tclass=\"top-scheduleCalendar_calendarDay\"\n\t\t\t\tv-for=\"day in days\"\n\t\t\t\t:key=\"day.value\"\n\t\t\t>\n\t\t\t\t<input\n\t\t\t\t\tclass=\"top-scheduleCalendar_calendarDayCheckbox\"\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t:value=\"day.value\"\n\t\t\t\t\t:checked=\"selectedDays.includes('ALL') || selectedDays.includes(day.value)\"\n\t\t\t\t\t@change=\"toggleDay(day.value)\"\n\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t>\n\n\t\t\t\t<span\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<span\n\t\t\t:class=\"{\n\t\t\t\t'top-scheduleCalendar_selectionSummary': true,\n\t\t\t'top-error': !selectedDays.length\n\t\t\t}\"\n\t\t>\n\t\t\t<!-- Каждый день или Число проверок в неделю / месяц-->\n\t\t\t{{\n\t\t\t\tisAllDaysSelected ?\n\t\t\t\t\t$i18n.Common.Every_day :\n\t\t\t\t\tselectedDays.length\n\t\t\t}}\n\n\t\t\t<template v-if=\"times.length > 1 || !isAllDaysSelected\">\n\t\t\t\t<!-- Добавить число временных слотов, если их несколько -->\n\t\t\t\t{{ times.length > 1 ? ` × ${times.length}` : '' }}\n\n\t\t\t\t<!-- Суффикс \"раз\" -->\n\t\t\t\t{{\n\t\t\t\t\tnumberEnding(\n\t\t\t\t\t\ttimes.length === 1 ? selectedDays.length : times.length,\n\t\t\t\t\t\t$i18n.Common.time_a_0,\n\t\t\t\t\t\t$i18n.Common.time_a_0,\n\t\t\t\t\t\t$i18n.Common.time_a_2,\n\t\t\t\t\t)\n\t\t\t\t}}\n\n\t\t\t\t<!-- В неделю / месяц-->\n\t\t\t\t{{ mode === 'dayOfWeek' ? $i18n.Common.a_week : $i18n.Common.a_month }}\n\t\t\t</template>\n\t\t</span>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","import type { Props as CalendarProps } from './compoents/calendar/types';\nimport type { Mode, Props } from './types';\nimport type { Option as TopSelectOption } from '@/components/forms/select/types';\nimport { useI18n } from '@/core/plugins/i18n';\n\n/**\n * Генерирует варианты задержки запуска после апдейта Яндекса.\n *\n * См. Апометр\n */\nexport const genAfterYandexUpdatedOptions = (): TopSelectOption[] => {\n\tconst i18n = useI18n();\n\n\treturn [\n\t\t{\n\t\t\tvalue: '0',\n\t\t\ttitle: i18n.Projects.immediately,\n\t\t},\n\t\t...Array.from({ length: 24 }, (_, index) => ({\n\t\t\tvalue: String(index + 1),\n\t\t\ttitle: i18n('Projects', 'in_hour', { hour: index + 1 }),\n\t\t})),\n\t];\n};\n\n/**\n * Проверяет, относится ли режим к календарным режимам.\n *\n * Календарный режим, это режим с выбором дней недели или месяца.\n */\nexport const isCalendarMode = (value: Mode): value is CalendarProps['mode'] => value === 'dayOfWeek' || value === 'dayOfMonth';\n\n/**\n * Определяет режим расписания по выбранным дням.\n */\nexport const getModeByDays = (days: Props['modelValue']['days'], currentMode: Mode = 'onDemand'): Mode => {\n\tif (days.includes('YANDEX_UPDATE')) return 'afterYandexUpdated';\n\tif (days.includes('CHECK_POSITIONS')) return 'afterCheck';\n\tif (days.includes('LAST_OF_MONTH') || days.some(day => /^\\d+$/.test(day))) return 'dayOfMonth';\n\n\tif (days.length) {\n\t\t// Сохраняем текущий календарный режм\n\t\tif (isCalendarMode(currentMode)) return currentMode;\n\n\t\t// Режим по умолчанию для `ALL`\n\t\treturn 'dayOfWeek';\n\t}\n\n\treturn currentMode;\n};\n","import { computed, type Ref } from 'vue';\nimport type { Option as TopSelectOption } from '@/components/forms/select/types';\nimport { useI18n } from '@/core/plugins/i18n';\nimport type { Mode, Props } from '../types';\n\nexport const defaultMods: Mode[] = ['onDemand', 'dayOfWeek', 'dayOfMonth'];\n\n/**\n * Формирует реактивный список режимов расписания с учетом дополнительных режимов.\n */\nexport const useModeOptions = (props: Props, mode: Ref<Mode>) => {\n\tconst i18n = useI18n();\n\n\treturn computed<TopSelectOption[]>(() => {\n\t\t// Режим afterCheck доступен только для расписания отчёта.\n\t\tconst modes: Mode[] = props.type === 'report' ? [...defaultMods, 'afterCheck'] : [...defaultMods];\n\n\t\tif (props.extraMods) {\n\t\t\tmodes.push(...props.extraMods);\n\t\t}\n\n\t\t// Всегда отображать выбранный режим.\n\t\tif (!modes.includes(mode.value)) modes.push(mode.value);\n\n\t\t// Словарь Dynamics нужен только потребителям режима afterCheck.\n\t\tconst titles: Record<Mode, string> = {\n\t\t\tonDemand: i18n.Projects.Settings_on_demand,\n\t\t\tdayOfWeek: i18n.Projects.Report_on_weekdays,\n\t\t\tdayOfMonth: i18n.Projects.Settings_particular_days,\n\t\t\tafterYandexUpdated: i18n.Projects.After_updates,\n\t\t\tafterCheck: modes.includes('afterCheck') ? i18n.Dynamics.Report_after_tracking_30min_1 : '',\n\t\t};\n\n\t\treturn modes.map(value => ({ value, title: titles[value] }));\n\t});\n};\n","import { watch, type Ref } from 'vue';\nimport type { Mode, Props } from '../types';\nimport { isCalendarMode } from '../utils';\n\n/**\n * Создаёт независимую копию модели расписания.\n */\nconst cloneModel = (model: Props['modelValue']): Props['modelValue'] => ({\n\tdays: [...model.days],\n\ttimes: model.times.map(time => ({ ...time })),\n});\n\n/**\n * Сохраняет дни и временные слоты модели по режимам расписания.\n */\nexport const useModelByModeCache = (model: Ref<Props['modelValue']>, mode: Ref<Mode>) => {\n\ttype TimeCacheMode = Mode | 'calendar';\n\n\tconst cache = {\n\t\t// Дни календарных режимов кэшируем отдельно.\n\t\tdaysByMode: {} as Partial<Record<Mode, Props['modelValue']['days']>>,\n\n\t\t// Временные слоты храним по режимам, используя общий ключ `calendar` для недели и месяца.\n\t\ttimesByMode: {} as Partial<Record<TimeCacheMode, Props['modelValue']['times']>>,\n\t};\n\n\t// Сохранять настройки выбранного режима\n\twatch(model, () => {\n\t\tconst modelCached = cloneModel(model.value);\n\n\t\tcache.daysByMode[mode.value] = modelCached.days;\n\t\tcache.timesByMode[isCalendarMode(mode.value) ? 'calendar' : mode.value] = modelCached.times;\n\t}, { deep: true, immediate: true });\n\n\treturn cache;\n};\n","<script setup lang=\"ts\">\nimport { ref, watch } from 'vue';\nimport TopSelect from '@/components/forms/select/select.vue';\nimport TopScheduleCalendar from './compoents/calendar/calendar.vue';\nimport type { Mode, Props, Slots } from './types';\nimport { genAfterYandexUpdatedOptions, getModeByDays, isCalendarMode } from './utils';\nimport { useModeOptions } from './composables/useModeOptions';\nimport { useModelByModeCache } from './composables/useModelByModeCache';\n\nconst randomHour = String(Math.floor(Math.random() * 7) + 1) as Props['modelValue']['times'][number]['hour'];\n\nconst props = withDefaults(defineProps<Props>(), {\n\t// Тип `go` соответствует запуску инструмента по расписанию.\n\ttype: 'go',\n});\n\ndefineSlots<Slots>();\n\nconst model = defineModel<Props['modelValue']>({\n\trequired: true,\n});\n\n// Выбранный режим\nconst mode = ref<Mode>(getModeByDays(model.value.days));\n\n// Список режимов\nconst modeOptions = useModeOptions(props, mode);\n\nconst afterYandexUpdatedOptions = genAfterYandexUpdatedOptions();\n\n// Кэш дней по режимам и временных слотов по группам расписания.\nconst cache = useModelByModeCache(model, mode);\n\n/**\n * При смене `days` сразу проверяем доступное значение режима и обновляем его, если надо.\n *\n * @note 1 в цепочке перед `watch(mode)`, цепочки не цикличны\n */\nwatch(\n\t() => model.value.days,\n\t() => mode.value = getModeByDays(model.value.days, mode.value),\n\t{ deep: true, immediate: true },\n);\n\n/**\n * При смене режима устанавливаем соответствующие `days` и `times`.\n *\n * Для календарных режимов восстанавливаем ранее сохранённый выбор дней.\n *\n * @note 2 в цепочке после `watch(() => model.value.days)`, цепочки не цикличны\n */\nwatch(mode, (nextMode) => {\n\t// Для недели и месяца временные слоты берём из общего кэша `calendar`.\n\tconst daysCached = cache.daysByMode[nextMode];\n\tconst timesCached = cache.timesByMode[isCalendarMode(nextMode) ? 'calendar' : nextMode];\n\n\tswitch (nextMode) {\n\t\tcase 'onDemand':\n\t\t\tmodel.value = {\n\t\t\t\tdays: [],\n\t\t\t\ttimes: [],\n\t\t\t};\n\n\t\t\tbreak;\n\n\t\tcase 'dayOfWeek':\n\t\tcase 'dayOfMonth': {\n\t\t\tmodel.value = {\n\t\t\t\t...model.value,\n\t\t\t\tdays: daysCached ?? ['ALL'],\n\t\t\t\ttimes: timesCached?.length ? timesCached : [{ hour: randomHour, minute: '30' }],\n\t\t\t};\n\n\t\t\tbreak;\n\t\t}\n\n\t\tcase 'afterYandexUpdated':\n\t\t\tmodel.value = {\n\t\t\t\tdays: ['YANDEX_UPDATE'],\n\t\t\t\ttimes: timesCached?.length ? timesCached : [{ hour: '1', minute: '0' }],\n\t\t\t};\n\n\t\t\tbreak;\n\n\t\tcase 'afterCheck':\n\t\t\tmodel.value = {\n\t\t\t\tdays: ['CHECK_POSITIONS'],\n\t\t\t\ttimes: timesCached?.length ? timesCached : [{ hour: '0', minute: '30' }],\n\t\t\t};\n\n\t\t\tbreak;\n\t}\n}, { immediate: true });\n</script>\n\n<template>\n\t<div :class=\"['top-schedule', 'top-schedule-type_' + type]\">\n\t\t<div class=\"top-schedule_header\">\n\t\t\t<div class=\"top-schedule_headerTitle\">\n\t\t\t\t{{ title ?? (type === 'go' ? $i18n.Projects.Checks : $i18n.Projects.Reports) }}\n\t\t\t</div>\n\t\t\t<TopSelect\n\t\t\t\tclass=\"top-schedule_headerMods\"\n\t\t\t\tv-model=\"mode\"\n\t\t\t\t:options=\"modeOptions\"\n\t\t\t\tsize=\"s\"\n\t\t\t/>\n\t\t</div>\n\n\t\t<div v-if=\"mode !== 'onDemand' && (isCalendarMode(mode) || mode === 'afterYandexUpdated' || $slots.settings)\" class=\"top-schedule_body\">\n\t\t\t<TopScheduleCalendar\n\t\t\t\tv-if=\"isCalendarMode(mode)\"\n\t\t\t\tv-model=\"model.days\"\n\t\t\t\tv-model:times=\"model.times\"\n\t\t\t\t:mode\n\t\t\t\t:multipleTimes\n\t\t\t/>\n\n\t\t\t<TopSelect\n\t\t\t\tv-if=\"mode === 'afterYandexUpdated' && model.times[0]\"\n\t\t\t\tclass=\"top-schedule_afterYandexUpdatedDelay\"\n\t\t\t\tv-model=\"model.times[0].hour\"\n\t\t\t\t:options=\"afterYandexUpdatedOptions\"\n\t\t\t\tsize=\"s\"\n\t\t\t/>\n\n\t\t\t<hr v-if=\"isCalendarMode(mode) || mode === 'afterYandexUpdated' && $slots.settings\">\n\n\t\t\t<slot name=\"settings\" :mode></slot>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { 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/emails/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/emails/types';\nimport ScheduleEmailSelector from '@/components/schedule/schedule/compoents/emails/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<ScheduleEmailSelector\n\t\t\tv-if=\"!(maxEmailsCount && emails.length === maxEmailsCount)\"\n\t\t\tv-model=\"value\"\n\t\t\t:getEmailSuggestions\n\t\t\t:emails\n\t\t\t@submit=\"addEmail\"\n\t\t/>\n\n\t\t<div\n\t\t\tv-if=\"emails.length\"\n\t\t\tclass=\"top-scheduleEmail_emails\"\n\t\t>\n\t\t\t<div\n\t\t\t\tclass=\"top-scheduleEmail_emailsItem\"\n\t\t\t\tv-for=\"email in emails\"\n\t\t\t\t:key=\"email\"\n\t\t\t>\n\t\t\t\t<span class=\"top-ellipsis1\">{{ email }}</span>\n\n\t\t\t\t<TopButton\n\t\t\t\t\t@click=\"$emit('remove:email', email)\"\n\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\ticon=\"\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport type { Emits, Props } from '@/components/schedule/schedule/compoents/socials/types';\n\nconst props = defineProps<Props>();\ndefineEmits<Emits>();\n\ntype ReportChannelSource = Props['channels'][number]['source'];\n\nconst hasChannel = (source: ReportChannelSource) => props.channels.some(channel => channel.source === source);\n\nconst sourceIconBySource: Record<ReportChannelSource, string> = {\n\tinformer: '',\n\ttelegram: '',\n};\n</script>\n\n<template>\n\t<div class=\"top-scheduleSocials\">\n\t\t<div class=\"top-scheduleSocials_title\">\n\t\t\t{{ $i18n.Projects.Reports_send_to_address }}\n\t\t</div>\n\n\t\t<div class=\"top-scheduleSocials_channels\">\n\t\t\t<div\n\t\t\t\tclass=\"top-scheduleSocials_channel\"\n\t\t\t\tv-for=\"channel in channels\"\n\t\t\t\t:key=\"`${channel.source}-${channel.id}`\"\n\t\t\t>\n\t\t\t\t<span\n\t\t\t\t\tclass=\"top-scheduleSocials_channelIcon\"\n\t\t\t\t\t:data-top-icon=\"sourceIconBySource[channel.source]\"\n\t\t\t\t></span>\n\n\t\t\t\t<span class=\"top-scheduleSocials_channelLabel top-ellipsis1\">\n\t\t\t\t\t{{ channel.label }}\n\t\t\t\t</span>\n\n\t\t\t\t<TopButton\n\t\t\t\t\tv-if=\"channel.settingLink\"\n\t\t\t\t\tclass=\"top-scheduleSocials_channelSettings\"\n\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t:href=\"channel.settingLink\"\n\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\ticon=\"\"\n\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t></TopButton>\n\n\t\t\t\t<TopSwitcher\n\t\t\t\t\tclass=\"top-scheduleSocials_channelSwitcher\"\n\t\t\t\t\t:modelValue=\"channel.selected\"\n\t\t\t\t\t@update:modelValue=\"$emit('update:channelSelected', {\n\t\t\t\t\t\tid: channel.id,\n\t\t\t\t\t\tsource: channel.source,\n\t\t\t\t\t\tselected: $event as boolean,\n\t\t\t\t\t})\"\n\t\t\t\t/>\n\t\t\t</div>\n\n\t\t\t<template\n\t\t\t\tv-for=\"connector in connectors\"\n\t\t\t\t:key=\"connector.source\"\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tv-if=\"!hasChannel(connector.source)\"\n\t\t\t\tclass=\"top-scheduleSocials_channel\"\n\t\t\t\t>\n\t\t\t\t\t<span\n\t\t\t\t\t\tclass=\"top-scheduleSocials_channelIcon\"\n\t\t\t\t\t\t:data-top-icon=\"sourceIconBySource[connector.source]\"\n\t\t\t\t\t></span>\n\n\t\t\t\t\t<a\n\t\t\t\t\t\tclass=\"top-scheduleSocials_channelLabel top-ellipsis1\"\n\t\t\t\t\t\t:href=\"connector.connectLink\"\n\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{{ connector.connectLabel }}\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n"]}
1
+ {"version":3,"sources":["schedule/schedule.js","../../src/components/schedule/schedule/components/calendar/composables/useDaysByCalendarMode.ts","../../src/components/schedule/schedule/components/timeSelector/timeSelector.vue","../../src/components/schedule/schedule/components/calendar/calendar.vue","../../src/components/schedule/schedule/utils.ts","../../src/components/schedule/schedule/composables/useModeOptions.ts","../../src/components/schedule/schedule/composables/useModelByModeCache.ts","../../src/components/schedule/schedule/schedule.vue","../../src/components/schedule/schedule/components/emails/selector/selector.vue","../../src/components/schedule/schedule/components/emails/emails.vue","../../src/components/schedule/schedule/components/socials/socials.vue"],"names":["vue","exports","N","n","forms_Ch1q0UUt_es_js_1","vue_1","t","P","F","a","o","c","p","h","s","I","L","R","z","B","V","i","l","g","string_js_1","H","U","W","G","K","q","e","te","J","Y","X","Z","Q","ne","r","re","f","v","C","w","T","E","D","O","check_js_1","A","ie","ae","oe","$","se","ce","le","ue","de","fe","pe","me","he","ge"],"mappings":"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","sourcesContent":["define([\"require\", \"exports\", \"../.chunks/forms-Ch1q0UUt.es.js\", \"../utils/check.js\", \"../utils/string.js\", \"vue\", \"../.chunks/app-CY6euLQJ.es.js\"], function (require, exports, forms_Ch1q0UUt_es_js_1, check_js_1, string_js_1, vue_1) {\n \"use strict\";\n Object.defineProperty(exports, \"__esModule\", { value: true });\n exports.TopScheduleSocials = exports.TopScheduleEmails = exports.TopSchedule = void 0;\n //#region src/components/schedule/schedule/components/calendar/composables/useDaysByCalendarMode.ts\n var N = (t) => {\n let n = (0, forms_Ch1q0UUt_es_js_1.E)();\n return (0, vue_1.computed)(() => {\n switch ((0, vue_1.toValue)(t)) {\n case \"dayOfMonth\": {\n let e = Array.from({ length: 27 }, (e, t) => ({\n value: String(t + 1),\n title: String(t + 1)\n }));\n return e.push({\n value: \"LAST_OF_MONTH\",\n title: \"\",\n isIcon: !0\n }), e;\n }\n case \"dayOfWeek\": return [\n {\n value: \"MONDAY\",\n title: n.Calendar.Dw_1\n },\n {\n value: \"TUESDAY\",\n title: n.Calendar.Dw_2\n },\n {\n value: \"WEDNESDAY\",\n title: n.Calendar.Dw_3\n },\n {\n value: \"THURSDAY\",\n title: n.Calendar.Dw_4\n },\n {\n value: \"FRIDAY\",\n title: n.Calendar.Dw_5\n },\n {\n value: \"SATURDAY\",\n title: n.Calendar.Dw_6\n },\n {\n value: \"SUNDAY\",\n title: n.Calendar.Dw_7\n }\n ];\n default: return [];\n }\n });\n }, P = { class: \"top-scheduleTimeSelector\" }, F = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"timeSelector\",\n props: /*@__PURE__*/ (0, vue_1.mergeModels)({\n modelValue: {},\n multipleTimes: { type: Boolean }\n }, {\n modelValue: { required: !0 },\n modelModifiers: {}\n }),\n emits: [\"update:modelValue\"],\n setup(e) {\n let t = e, n = (0, vue_1.useModel)(e, \"modelValue\"), r = Array.from({ length: 24 }, (e, t) => ({\n value: String(t),\n title: String(t).padStart(2, \"0\")\n })), i = Array.from({ length: 4 }, (e, t) => {\n let n = t * 15;\n return {\n value: String(n),\n title: String(n).padStart(2, \"0\")\n };\n }), a = (e, t) => {\n let r = [...n.value];\n r[e] = {\n ...r[e],\n ...t\n }, n.value = r;\n }, o = () => {\n n.value = [...n.value, {\n hour: \"0\",\n minute: \"0\"\n }];\n }, c = (e) => {\n n.value = n.value.filter((t, n) => n !== e);\n };\n return (e, f) => {\n let p = (0, vue_1.resolveComponent)(\"TopSelect\"), h = (0, vue_1.resolveComponent)(\"TopButton\");\n return (0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", P, [((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)(n.value, (e, s) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n key: s,\n class: \"top-scheduleTimeSelector_item\"\n }, [\n (0, vue_1.createVNode)(p, {\n class: \"top-scheduleTimeSelector_hour\",\n modelValue: e.hour,\n options: (0, vue_1.unref)(r),\n availableCustomValue: \"\",\n \"onUpdate:modelValue\": (e) => a(s, { hour: e })\n }, null, 8, [\n \"modelValue\",\n \"options\",\n \"onUpdate:modelValue\"\n ]),\n (0, vue_1.createVNode)(p, {\n class: \"top-scheduleTimeSelector_minute\",\n modelValue: e.minute,\n options: (0, vue_1.unref)(i),\n availableCustomValue: \"\",\n \"onUpdate:modelValue\": (e) => a(s, { minute: e })\n }, null, 8, [\n \"modelValue\",\n \"options\",\n \"onUpdate:modelValue\"\n ]),\n t.multipleTimes || n.value.length > 1 ? ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(h, {\n key: 0,\n onClick: (e) => s ? c(s) : o(),\n color: \"theme\",\n icon: s ? \"\" : \"\"\n }, null, 8, [\"onClick\", \"icon\"])) : (0, vue_1.createCommentVNode)(\"\", !0)\n ]))), 128))]);\n };\n }\n }), I = { class: \"top-scheduleCalendar\" }, L = { class: \"top-scheduleCalendar_header\" }, R = { class: \"top-scheduleCalendar_calendar\" }, z = [\n \"value\",\n \"checked\",\n \"onChange\"\n ], B = [\"data-top-icon\"], V = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"calendar\",\n props: /*@__PURE__*/ (0, vue_1.mergeModels)({\n modelValue: {},\n mode: {},\n times: {},\n multipleTimes: { type: Boolean }\n }, {\n modelValue: { required: !0 },\n modelModifiers: {},\n times: { required: !0 },\n timesModifiers: {}\n }),\n emits: [\"update:modelValue\", \"update:times\"],\n setup(e) {\n let t = e, n = (0, vue_1.useModel)(e, \"modelValue\"), r = (0, vue_1.useModel)(e, \"times\"), i = N(() => t.mode), a = (0, vue_1.computed)(() => n.value.includes(\"ALL\") || n.value.length === i.value.length), l = (e) => {\n let t = n.value.includes(\"ALL\") ? i.value.map((e) => e.value) : [...n.value], r = t.indexOf(e);\n r === -1 ? t.push(e) : t.splice(r, 1), n.value = t.length === i.value.length ? [\"ALL\"] : t;\n }, h = () => {\n n.value = a.value ? [] : [\"ALL\"];\n };\n return (t, c) => {\n let g = (0, vue_1.resolveComponent)(\"TopButton\");\n return (0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", I, [\n (0, vue_1.createElementVNode)(\"div\", L, [(0, vue_1.createVNode)(F, {\n modelValue: r.value,\n \"onUpdate:modelValue\": c[0] ||= (e) => r.value = e,\n multipleTimes: e.multipleTimes\n }, null, 8, [\"modelValue\", \"multipleTimes\"]), (0, vue_1.createVNode)(g, {\n onClick: c[1] ||= (e) => h(),\n color: \"theme\",\n tabindex: \"0\"\n }, {\n default: (0, vue_1.withCtx)(() => [(0, vue_1.createTextVNode)((0, vue_1.toDisplayString)(a.value ? t.$i18n.Common.Clear : t.$i18n.Common.Select_all), 1)]),\n _: 1\n })]),\n (0, vue_1.createElementVNode)(\"div\", R, [((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)((0, vue_1.unref)(i), (e) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"label\", {\n class: \"top-scheduleCalendar_calendarDay\",\n key: e.value\n }, [(0, vue_1.createElementVNode)(\"input\", {\n class: \"top-scheduleCalendar_calendarDayCheckbox\",\n type: \"checkbox\",\n value: e.value,\n checked: n.value.includes(\"ALL\") || n.value.includes(e.value),\n onChange: (t) => l(e.value),\n tabindex: \"0\"\n }, null, 40, z), (0, vue_1.createElementVNode)(\"span\", { \"data-top-icon\": e.isIcon ? e.title : void 0 }, [e.isIcon ? (0, vue_1.createCommentVNode)(\"\", !0) : ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(vue_1.Fragment, { key: 0 }, [(0, vue_1.createTextVNode)((0, vue_1.toDisplayString)(e.title), 1)], 64))], 8, B)]))), 128))]),\n (0, vue_1.createElementVNode)(\"span\", { class: (0, vue_1.normalizeClass)({\n \"top-scheduleCalendar_selectionSummary\": !0,\n \"top-error\": !n.value.length\n }) }, [(0, vue_1.createTextVNode)((0, vue_1.toDisplayString)(a.value ? t.$i18n.Common.Every_day : n.value.length) + \" \", 1), r.value.length > 1 || !a.value ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(vue_1.Fragment, { key: 0 }, [(0, vue_1.createTextVNode)((0, vue_1.toDisplayString)(r.value.length > 1 ? ` × ${r.value.length}` : \"\") + \" \" + (0, vue_1.toDisplayString)((0, vue_1.unref)(string_js_1.numberEnding)(r.value.length === 1 ? n.value.length : r.value.length, t.$i18n.Common.time_a_0, t.$i18n.Common.time_a_0, t.$i18n.Common.time_a_2)) + \" \" + (0, vue_1.toDisplayString)(e.mode === \"dayOfWeek\" ? t.$i18n.Common.a_week : t.$i18n.Common.a_month), 1)], 64)) : (0, vue_1.createCommentVNode)(\"\", !0)], 2)\n ]);\n };\n }\n }), H = () => {\n let t = (0, forms_Ch1q0UUt_es_js_1.E)();\n return [{\n value: \"0\",\n title: t.Projects.immediately\n }, ...Array.from({ length: 24 }, (e, n) => ({\n value: String(n + 1),\n title: t(\"Projects\", \"in_hour\", { hour: n + 1 })\n }))];\n }, U = (e) => e === \"dayOfWeek\" || e === \"dayOfMonth\", W = (e, t = \"onDemand\") => e.includes(\"YANDEX_UPDATE\") ? \"afterYandexUpdated\" : e.includes(\"CHECK_POSITIONS\") ? \"afterCheck\" : e.includes(\"LAST_OF_MONTH\") || e.some((e) => /^\\d+$/.test(e)) ? \"dayOfMonth\" : e.length ? U(t) ? t : \"dayOfWeek\" : t, G = [\n \"onDemand\",\n \"dayOfWeek\",\n \"dayOfMonth\"\n ], K = [\"onDemand\", \"afterCheck\"], q = (t, n) => {\n let r = (0, forms_Ch1q0UUt_es_js_1.E)();\n return (0, vue_1.computed)(() => {\n let e = t.type === \"go\" ? [...G] : [...K];\n t.extraMods && e.push(...t.extraMods), e.includes(n.value) || e.push(n.value);\n let i = {\n onDemand: r.Projects.Settings_on_demand,\n dayOfWeek: r.Projects.Report_on_weekdays,\n dayOfMonth: r.Projects.Settings_particular_days,\n afterYandexUpdated: r.Projects.After_updates,\n afterCheck: e.includes(\"afterCheck\") ? r.Dynamics.Report_after_tracking_30min_1 : \"\"\n };\n return e.map((e) => ({\n value: e,\n title: i[e]\n }));\n });\n }, te = (e) => ({\n days: [...e.days],\n times: e.times.map((e) => ({ ...e }))\n }), J = (e, t) => {\n let n = {\n daysByMode: {},\n timesByMode: {}\n };\n return (0, vue_1.watch)(e, () => {\n let r = te(e.value);\n n.daysByMode[t.value] = r.days, n.timesByMode[U(t.value) ? \"calendar\" : t.value] = r.times;\n }, {\n deep: !0,\n immediate: !0\n }), n;\n }, Y = { class: \"top-schedule_header\" }, X = { class: \"top-schedule_headerTitle\" }, Z = {\n key: 0,\n class: \"top-schedule_body\"\n }, Q = { key: 2 }, ne = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"schedule\",\n props: /*@__PURE__*/ (0, vue_1.mergeModels)({\n modelValue: {},\n type: { default: \"go\" },\n extraMods: {},\n multipleTimes: { type: Boolean },\n title: {}\n }, {\n modelValue: { required: !0 },\n modelModifiers: {}\n }),\n emits: [\"update:modelValue\"],\n setup(e, { slots: t }) {\n let n = String(Math.floor(Math.random() * 7) + 1), r = e, a = (0, vue_1.useModel)(e, \"modelValue\"), o = (0, vue_1.ref)(W(a.value.days)), s = q(r, o), c = H(), p = J(a, o);\n return (0, vue_1.watch)(() => a.value.days, () => o.value = W(a.value.days, o.value), {\n deep: !0,\n immediate: !0\n }), (0, vue_1.watch)(o, (e, t) => {\n let r = p.daysByMode[e], i = p.timesByMode[U(e) ? \"calendar\" : e], o = {}, s = t;\n switch (e) {\n case \"onDemand\":\n (s || a.value.days.length) && (o.days = []), (s || a.value.times.length) && (o.times = []);\n break;\n case \"dayOfWeek\":\n case \"dayOfMonth\":\n (s || !a.value.days.length) && (o.days = r ?? [\"ALL\"]), (s || !a.value.times.length) && (o.times = i?.length ? i : [{\n hour: n,\n minute: \"0\"\n }]);\n break;\n case \"afterYandexUpdated\":\n (s || a.value.days[0] !== \"YANDEX_UPDATE\") && (o.days = [\"YANDEX_UPDATE\"]), (s || !a.value.times.length) && (o.times = i?.length ? i : [{\n hour: \"1\",\n minute: \"0\"\n }]);\n break;\n case \"afterCheck\": (s || a.value.days[0] !== \"CHECK_POSITIONS\") && (o.days = [\"CHECK_POSITIONS\"]), (s || !a.value.times.length) && (o.times = i?.length ? i : [{\n hour: \"0\",\n minute: \"0\"\n }]);\n }\n Object.keys(o).length && (a.value = {\n ...a.value,\n ...o\n });\n }, { immediate: !0 }), (n, r) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", { class: (0, vue_1.normalizeClass)([\"top-schedule\", \"top-schedule-type_\" + e.type]) }, [(0, vue_1.createElementVNode)(\"div\", Y, [(0, vue_1.createElementVNode)(\"div\", X, (0, vue_1.toDisplayString)(e.title ?? (e.type === \"go\" ? n.$i18n.Projects.Checks : n.$i18n.Projects.Reports)), 1), (0, vue_1.createVNode)(forms_Ch1q0UUt_es_js_1.n, {\n class: \"top-schedule_headerMods\",\n modelValue: o.value,\n \"onUpdate:modelValue\": r[0] ||= (e) => o.value = e,\n options: (0, vue_1.unref)(s),\n size: \"s\"\n }, null, 8, [\"modelValue\", \"options\"])]), o.value !== \"onDemand\" && ((0, vue_1.unref)(U)(o.value) || o.value === \"afterYandexUpdated\" || t.default) ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", Z, [\n (0, vue_1.unref)(U)(o.value) ? ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(V, {\n key: 0,\n modelValue: a.value.days,\n \"onUpdate:modelValue\": r[1] ||= (e) => a.value.days = e,\n times: a.value.times,\n \"onUpdate:times\": r[2] ||= (e) => a.value.times = e,\n mode: o.value,\n multipleTimes: e.multipleTimes\n }, null, 8, [\n \"modelValue\",\n \"times\",\n \"mode\",\n \"multipleTimes\"\n ])) : (0, vue_1.createCommentVNode)(\"\", !0),\n o.value === \"afterYandexUpdated\" && a.value.times[0] ? ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(forms_Ch1q0UUt_es_js_1.n, {\n key: 1,\n class: \"top-schedule_afterYandexUpdatedDelay\",\n modelValue: a.value.times[0].hour,\n \"onUpdate:modelValue\": r[3] ||= (e) => a.value.times[0].hour = e,\n options: (0, vue_1.unref)(c),\n size: \"s\"\n }, null, 8, [\"modelValue\", \"options\"])) : (0, vue_1.createCommentVNode)(\"\", !0),\n ((0, vue_1.unref)(U)(o.value) || o.value === \"afterYandexUpdated\") && t.default ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"hr\", Q)) : (0, vue_1.createCommentVNode)(\"\", !0),\n (0, vue_1.renderSlot)(n.$slots, \"default\", { mode: o.value })\n ])) : (0, vue_1.createCommentVNode)(\"\", !0)], 2));\n }\n }), re = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"selector\",\n props: /*@__PURE__*/ (0, vue_1.mergeModels)({\n modelValue: {},\n emails: { default: () => [] },\n maxEmailsCount: {},\n getEmailSuggestions: {\n type: Function,\n default: () => []\n }\n }, {\n modelValue: { required: !0 },\n modelModifiers: {}\n }),\n emits: /*@__PURE__*/ (0, vue_1.mergeModels)([\"update:modelValue\", \"submit\"], [\"update:modelValue\"]),\n setup(i, { emit: o }) {\n let s = i, f = (0, vue_1.useModel)(i, \"modelValue\"), p = o, h = (0, forms_Ch1q0UUt_es_js_1.E)(), g = forms_Ch1q0UUt_es_js_1.O.$, v = (0, vue_1.ref)(), C = (0, vue_1.ref)(), w = null, T = {}, E = (0, vue_1.computed)(() => !!s.maxEmailsCount && s.emails.length >= s.maxEmailsCount), D = (e) => e.filter((e) => !s.emails.includes(e)), O = (e = f.value) => {\n let n = String(e).trim();\n if (n) {\n if (!(0, check_js_1.isEmail)(n)) {\n forms_Ch1q0UUt_es_js_1.O.notice(h.Common.Enter_valid_email_notice, \"error\");\n return;\n }\n p(\"submit\", n);\n }\n }, A = async () => {\n if (await (0, vue_1.nextTick)(), w = C.value?.$el.querySelector(\"input\") ?? null, w) {\n if (!g?.ui?.autocomplete) {\n console.info(\"Для работы autocomplete требуется глобальная загрузка jQuery UI Autocomplete\");\n return;\n }\n g(w).autocomplete({\n appendTo: v.value,\n minLength: 0,\n source: async (e, t) => {\n let n = e.term;\n n in T || (T[n] = await s.getEmailSuggestions(n)), t(D(T[n]).map((e) => ({\n label: e,\n value: e\n })));\n },\n select: (e, t) => {\n t.item && w && (e.preventDefault(), O(t.item.value), f.value = \"\", g(w).trigger(\"focus\"));\n }\n }), g(w).attr(\"autocomplete\", \"disabled\"), g(w).on(\"focus.scheduleEmailSelector\", () => {\n w && g(w).trigger(\"input\");\n });\n }\n };\n return (0, vue_1.onMounted)(() => {\n A();\n }), (0, vue_1.onBeforeUnmount)(() => {\n g?.ui?.autocomplete && w && (g(w).off(\"focus.scheduleEmailSelector\"), g(w).autocomplete(\"destroy\"));\n }), (e, t) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n class: \"top-scheduleEmailSelector\",\n ref_key: \"elRootRef\",\n ref: v\n }, [(0, vue_1.createVNode)(forms_Ch1q0UUt_es_js_1.c, {\n ref_key: \"elInputRef\",\n ref: C,\n modelValue: f.value,\n \"onUpdate:modelValue\": t[1] ||= (e) => f.value = e,\n onKeydown: t[2] ||= (0, vue_1.withKeys)((0, vue_1.withModifiers)((e) => O(), [\"prevent\"]), [\"enter\"]),\n title: e.$i18n.Common.Enter_email,\n type: \"email\",\n size: \"m\",\n disabled: E.value\n }, {\n default: (0, vue_1.withCtx)(() => [E.value ? (0, vue_1.createCommentVNode)(\"\", !0) : ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(forms_Ch1q0UUt_es_js_1.h, {\n key: 0,\n class: \"top-scheduleEmailSelector_submit\",\n color: \"theme\",\n icon: \"\",\n onClick: t[0] ||= (0, vue_1.withModifiers)((e) => O(), [\"prevent\"])\n }))]),\n _: 1\n }, 8, [\n \"modelValue\",\n \"title\",\n \"disabled\"\n ])], 512));\n }\n }), ie = { class: \"top-scheduleEmail\" }, ae = { class: \"top-scheduleEmail_title\" }, oe = {\n key: 0,\n class: \"top-scheduleEmail_emails\"\n }, $ = { class: \"top-ellipsis1\" }, se = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"emails\",\n props: {\n emails: { default: () => [] },\n getEmailSuggestions: {\n type: Function,\n default: () => []\n },\n maxEmailsCount: {}\n },\n emits: [\"add:email\", \"remove:email\"],\n setup(e, { emit: t }) {\n let n = e, r = t, i = (0, vue_1.ref)(\"\"), a = (e) => {\n let t = e.trim();\n if (!t || n.emails.includes(t)) {\n i.value = \"\";\n return;\n }\n r(\"add:email\", t), i.value = \"\";\n };\n return (t, n) => {\n let o = (0, vue_1.resolveComponent)(\"TopButton\");\n return (0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", ie, [\n (0, vue_1.createElementVNode)(\"div\", ae, (0, vue_1.toDisplayString)(t.$i18n.Projects.Reports_send_to_address) + \" E-mail: \", 1),\n (0, vue_1.createVNode)(re, {\n modelValue: i.value,\n \"onUpdate:modelValue\": n[0] ||= (e) => i.value = e,\n emails: e.emails,\n maxEmailsCount: e.maxEmailsCount,\n getEmailSuggestions: e.getEmailSuggestions,\n onSubmit: a\n }, null, 8, [\n \"modelValue\",\n \"emails\",\n \"maxEmailsCount\",\n \"getEmailSuggestions\"\n ]),\n e.emails.length ? ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", oe, [((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)(e.emails, (e) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n class: \"top-scheduleEmail_emailsItem\",\n key: e\n }, [(0, vue_1.createElementVNode)(\"span\", $, (0, vue_1.toDisplayString)(e), 1), (0, vue_1.createVNode)(o, {\n onClick: (t) => r(\"remove:email\", e),\n color: \"theme\",\n icon: \"\"\n }, null, 8, [\"onClick\"])]))), 128))])) : (0, vue_1.createCommentVNode)(\"\", !0)\n ]);\n };\n }\n }), ce = { class: \"top-scheduleSocials\" }, le = { class: \"top-scheduleSocials_title\" }, ue = { class: \"top-scheduleSocials_channels\" }, de = [\"data-top-icon\"], fe = { class: \"top-scheduleSocials_channelLabel top-ellipsis1\" }, pe = {\n key: 0,\n class: \"top-scheduleSocials_channel\"\n }, me = [\"data-top-icon\"], he = [\"href\"], ge = /* @__PURE__ */ (0, vue_1.defineComponent)({\n __name: \"socials\",\n props: {\n channels: {},\n connectors: {}\n },\n emits: [\"update:channelSelected\"],\n setup(e, { emit: t }) {\n let n = e, r = (e) => n.channels.some((t) => t.source === e), i = {\n informer: \"\",\n telegram: \"\"\n };\n return (n, a) => {\n let o = (0, vue_1.resolveComponent)(\"TopButton\"), c = (0, vue_1.resolveComponent)(\"TopSwitcher\");\n return (0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", ce, [(0, vue_1.createElementVNode)(\"div\", le, (0, vue_1.toDisplayString)(n.$i18n.Projects.Reports_send_to_address), 1), (0, vue_1.createElementVNode)(\"div\", ue, [((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)(e.channels, (e) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", {\n class: \"top-scheduleSocials_channel\",\n key: `${e.source}-${e.id}`\n }, [\n (0, vue_1.createElementVNode)(\"span\", {\n class: \"top-scheduleSocials_channelIcon\",\n \"data-top-icon\": i[e.source]\n }, null, 8, de),\n (0, vue_1.createElementVNode)(\"span\", fe, (0, vue_1.toDisplayString)(e.label), 1),\n e.settingLink ? ((0, vue_1.openBlock)(), (0, vue_1.createBlock)(o, {\n key: 0,\n class: \"top-scheduleSocials_channelSettings\",\n size: \"xs\",\n href: e.settingLink,\n target: \"_blank\",\n icon: \"\",\n color: \"theme\",\n tabindex: \"0\"\n }, null, 8, [\"href\"])) : (0, vue_1.createCommentVNode)(\"\", !0),\n (0, vue_1.createVNode)(c, {\n class: \"top-scheduleSocials_channelSwitcher\",\n modelValue: e.selected,\n \"onUpdate:modelValue\": (n) => t(\"update:channelSelected\", {\n id: e.id,\n source: e.source,\n selected: n\n })\n }, null, 8, [\"modelValue\", \"onUpdate:modelValue\"])\n ]))), 128)), ((0, vue_1.openBlock)(!0), (0, vue_1.createElementBlock)(vue_1.Fragment, null, (0, vue_1.renderList)(e.connectors, (e) => ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(vue_1.Fragment, { key: e.source }, [r(e.source) ? (0, vue_1.createCommentVNode)(\"\", !0) : ((0, vue_1.openBlock)(), (0, vue_1.createElementBlock)(\"div\", pe, [(0, vue_1.createElementVNode)(\"span\", {\n class: \"top-scheduleSocials_channelIcon\",\n \"data-top-icon\": i[e.source]\n }, null, 8, me), (0, vue_1.createElementVNode)(\"a\", {\n class: \"top-scheduleSocials_channelLabel top-ellipsis1\",\n href: e.connectLink,\n target: \"_blank\"\n }, (0, vue_1.toDisplayString)(e.connectLabel), 9, he)]))], 64))), 128))])]);\n };\n }\n });\n exports.TopSchedule = ne;\n exports.TopScheduleEmails = se;\n exports.TopScheduleSocials = ge;\n});\n//# sourceMappingURL=schedule.js.map\n","import { computed, type MaybeRefOrGetter, toValue } from 'vue';\nimport type { Day, Props } from '../types';\nimport { useI18n } from '@/core/app';\n\n/**\n * Формирует список дней для выбранного режима календаря.\n */\nexport const useDaysByCalendarMode = (mode: MaybeRefOrGetter<Props['mode']>) => {\n\tconst i18n = useI18n();\n\n\treturn computed<Day[]>(() => {\n\t\tswitch (toValue(mode)) {\n\t\t\t// Дни месяца\n\t\t\tcase 'dayOfMonth': {\n\t\t\t\tconst days: Day[] = Array.from({ length: 27 }, (_, index) => ({\n\t\t\t\t\tvalue: String(index + 1) as Day['value'],\n\t\t\t\t\ttitle: String(index + 1),\n\t\t\t\t}));\n\n\t\t\t\tdays.push({\n\t\t\t\t\tvalue: 'LAST_OF_MONTH',\n\t\t\t\t\ttitle: '',\n\t\t\t\t\tisIcon: true,\n\t\t\t\t});\n\n\t\t\t\treturn days;\n\t\t\t}\n\n\t\t\t// Дни недели\n\t\t\tcase 'dayOfWeek':\n\t\t\t\treturn [\n\t\t\t\t\t{ value: 'MONDAY', title: i18n.Calendar.Dw_1 },\n\t\t\t\t\t{ value: 'TUESDAY', title: i18n.Calendar.Dw_2 },\n\t\t\t\t\t{ value: 'WEDNESDAY', title: i18n.Calendar.Dw_3 },\n\t\t\t\t\t{ value: 'THURSDAY', title: i18n.Calendar.Dw_4 },\n\t\t\t\t\t{ value: 'FRIDAY', title: i18n.Calendar.Dw_5 },\n\t\t\t\t\t{ value: 'SATURDAY', title: i18n.Calendar.Dw_6 },\n\t\t\t\t\t{ value: 'SUNDAY', title: i18n.Calendar.Dw_7 },\n\t\t\t\t];\n\n\t\t\tdefault:\n\t\t\t\treturn [];\n\t\t}\n\t});\n};\n","<script setup lang=\"ts\">\nimport type { Props } from '@/components/schedule/schedule/components/timeSelector/types';\n\nconst props = defineProps<Props>();\n\nconst times = defineModel<Props['modelValue']>({\n\trequired: true,\n});\n\n/**\n * Варианты выбора часа от `00` до `23`.\n *\n * Поддерижвает вставку произвольного значения через `modelValue` для констант периода.\n */\nconst hourOptions = Array.from({ length: 24 }, (_, index) => ({\n\tvalue: String(index),\n\ttitle: String(index).padStart(2, '0'),\n}));\n\n/**\n * Предустановленные варианты минут.\n *\n * Поддерижвает вставку произвольного значения через `modelValue`.\n */\nconst minuteOptions = Array.from({ length: 4 }, (_, index) => {\n\tconst minute = index * 15;\n\n\treturn {\n\t\tvalue: String(minute),\n\t\ttitle: String(minute).padStart(2, '0'),\n\t};\n});\n\nconst updateTimeByIndex = (index: number, patch: Partial<Props['modelValue'][number]>) => {\n\tconst nextTimes = [...times.value];\n\tnextTimes[index] = { ...nextTimes[index], ...patch };\n\n\ttimes.value = nextTimes;\n};\n\n/**\n * Добавить временной слот.\n *\n * UX: Временной слот должен добавляться в конец списка:\n * - текущий временной слот не должен заменться новым и спускаться ниже\n * - пржений список сохраняет привычный порядок\n * - должно быть видно новый слот\n * - новый слот должно быть можно удалить\n */\nconst addTime = () => {\n\ttimes.value = [\n\t\t...times.value,\n\t\t{\n\t\t\thour: '0',\n\t\t\tminute: '0',\n\t\t},\n\t];\n};\n\nconst delTime = (index: number) => {\n\ttimes.value = times.value.filter((_, timeIndex) => timeIndex !== index);\n};\n</script>\n\n<template>\n\t<div class=\"top-scheduleTimeSelector\">\n\t\t<div v-for=\"(time, index) in times\" :key=\"index\" class=\"top-scheduleTimeSelector_item\">\n\t\t\t<TopSelect\n\t\t\t\tclass=\"top-scheduleTimeSelector_hour\"\n\t\t\t\t:modelValue=\"time.hour\"\n\t\t\t\t:options=\"hourOptions\"\n\t\t\t\tavailableCustomValue\n\t\t\t\t@update:modelValue=\"updateTimeByIndex(index, { hour: $event as Props['modelValue'][number]['hour'] })\"\n\t\t\t/>\n\n\t\t\t<TopSelect\n\t\t\t\tclass=\"top-scheduleTimeSelector_minute\"\n\t\t\t\t:modelValue=\"time.minute\"\n\t\t\t\t:options=\"minuteOptions\"\n\t\t\t\tavailableCustomValue\n\t\t\t\t@update:modelValue=\"updateTimeByIndex(index, { minute: $event as Props['modelValue'][number]['minute'] })\"\n\t\t\t/>\n\n\t\t\t<TopButton\n\t\t\t\tv-if=\"props.multipleTimes || times.length > 1\"\n\t\t\t\t@click=\"index ? delTime(index) : addTime()\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\t:icon=\"index ? '' : ''\"\n\t\t\t/>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport type { Props } from '@/components/schedule/schedule/components/calendar/types';\nimport { useDaysByCalendarMode } from './composables/useDaysByCalendarMode';\nimport { numberEnding } from '@/core/utils/string';\nimport { computed } from 'vue';\nimport TopScheduleTimeSelector from '@/components/schedule/schedule/components/timeSelector/timeSelector.vue';\n\nconst props = defineProps<Props>();\n\nconst selectedDays = defineModel<Props['modelValue']>({\n\trequired: true,\n});\n\nconst times = defineModel<Props['times']>('times', {\n\trequired: true,\n});\n\nconst days = useDaysByCalendarMode(() => props.mode);\n\nconst isAllDaysSelected = computed(() => selectedDays.value.includes('ALL') || selectedDays.value.length === days.value.length);\n\nconst toggleDay = (day: Props['modelValue'][number]) => {\n\tconst nextDays = selectedDays.value.includes('ALL') ? days.value.map(item => item.value) : [...selectedDays.value];\n\tconst dayIndex = nextDays.indexOf(day);\n\n\tif (dayIndex === -1) {\n\t\tnextDays.push(day);\n\t} else {\n\t\tnextDays.splice(dayIndex, 1);\n\t}\n\n\tselectedDays.value = nextDays.length === days.value.length ? ['ALL'] : nextDays;\n};\n\nconst toggleSelectAll = () => {\n\tselectedDays.value = isAllDaysSelected.value ? [] : ['ALL'];\n};\n</script>\n\n<template>\n\t<div class=\"top-scheduleCalendar\">\n\t\t<div class=\"top-scheduleCalendar_header\">\n\t\t\t<TopScheduleTimeSelector v-model=\"times\" :multipleTimes />\n\n\t\t\t<TopButton\n\t\t\t\t@click=\"toggleSelectAll()\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ttabindex=\"0\"\n\t\t\t>\n\t\t\t\t{{ isAllDaysSelected ? $i18n.Common.Clear : $i18n.Common.Select_all }}\n\t\t\t</TopButton>\n\t\t</div>\n\n\t\t<div class=\"top-scheduleCalendar_calendar\">\n\t\t\t<label\n\t\t\t\tclass=\"top-scheduleCalendar_calendarDay\"\n\t\t\t\tv-for=\"day in days\"\n\t\t\t\t:key=\"day.value\"\n\t\t\t>\n\t\t\t\t<input\n\t\t\t\t\tclass=\"top-scheduleCalendar_calendarDayCheckbox\"\n\t\t\t\t\ttype=\"checkbox\"\n\t\t\t\t\t:value=\"day.value\"\n\t\t\t\t\t:checked=\"selectedDays.includes('ALL') || selectedDays.includes(day.value)\"\n\t\t\t\t\t@change=\"toggleDay(day.value)\"\n\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t>\n\n\t\t\t\t<span :data-top-icon=\"day.isIcon ? day.title : undefined\">\n\t\t\t\t\t<template v-if=\"!day.isIcon\">\n\t\t\t\t\t\t{{ day.title }}\n\t\t\t\t\t</template>\n\t\t\t\t</span>\n\t\t\t</label>\n\t\t</div>\n\n\t\t<span\n\t\t\t:class=\"{\n\t\t\t\t'top-scheduleCalendar_selectionSummary': true,\n\t\t\t'top-error': !selectedDays.length\n\t\t\t}\"\n\t\t>\n\t\t\t<!-- Каждый день или Число проверок в неделю / месяц-->\n\t\t\t{{\n\t\t\t\tisAllDaysSelected ?\n\t\t\t\t\t$i18n.Common.Every_day :\n\t\t\t\t\tselectedDays.length\n\t\t\t}}\n\n\t\t\t<template v-if=\"times.length > 1 || !isAllDaysSelected\">\n\t\t\t\t<!-- Добавить число временных слотов, если их несколько -->\n\t\t\t\t{{ times.length > 1 ? ` × ${times.length}` : '' }}\n\n\t\t\t\t<!-- Суффикс \"раз\" -->\n\t\t\t\t{{\n\t\t\t\t\tnumberEnding(\n\t\t\t\t\t\ttimes.length === 1 ? selectedDays.length : times.length,\n\t\t\t\t\t\t$i18n.Common.time_a_0,\n\t\t\t\t\t\t$i18n.Common.time_a_0,\n\t\t\t\t\t\t$i18n.Common.time_a_2,\n\t\t\t\t\t)\n\t\t\t\t}}\n\n\t\t\t\t<!-- В неделю / месяц-->\n\t\t\t\t{{ mode === 'dayOfWeek' ? $i18n.Common.a_week : $i18n.Common.a_month }}\n\t\t\t</template>\n\t\t</span>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","import type { Props as CalendarProps } from '@/components/schedule/schedule/components/calendar/types';\nimport type { Mode, Props } from './types';\nimport type { Option as TopSelectOption } from '@/components/forms/select/types';\nimport { useI18n } from '@/core/plugins/i18n';\n\n/**\n * Генерирует варианты задержки запуска после апдейта Яндекса.\n *\n * См. Апометр\n */\nexport const genAfterYandexUpdatedOptions = (): TopSelectOption[] => {\n\tconst i18n = useI18n();\n\n\treturn [\n\t\t{\n\t\t\tvalue: '0',\n\t\t\ttitle: i18n.Projects.immediately,\n\t\t},\n\t\t...Array.from({ length: 24 }, (_, index) => ({\n\t\t\tvalue: String(index + 1),\n\t\t\ttitle: i18n('Projects', 'in_hour', { hour: index + 1 }),\n\t\t})),\n\t];\n};\n\n/**\n * Проверяет, относится ли режим к календарным режимам.\n *\n * Календарный режим, это режим с выбором дней недели или месяца.\n */\nexport const isCalendarMode = (value: Mode): value is CalendarProps['mode'] => value === 'dayOfWeek' || value === 'dayOfMonth';\n\n/**\n * Определяет режим расписания по выбранным дням.\n */\nexport const getModeByDays = (days: Props['modelValue']['days'], currentMode: Mode = 'onDemand'): Mode => {\n\tif (days.includes('YANDEX_UPDATE')) return 'afterYandexUpdated';\n\tif (days.includes('CHECK_POSITIONS')) return 'afterCheck';\n\tif (days.includes('LAST_OF_MONTH') || days.some(day => /^\\d+$/.test(day))) return 'dayOfMonth';\n\n\tif (days.length) {\n\t\t// Сохраняем текущий календарный режим\n\t\tif (isCalendarMode(currentMode)) return currentMode;\n\n\t\t// Режим по умолчанию для `ALL`\n\t\treturn 'dayOfWeek';\n\t}\n\n\treturn currentMode;\n};\n","import { computed, type Ref } from 'vue';\nimport type { Option as TopSelectOption } from '@/components/forms/select/types';\nimport { useI18n } from '@/core/plugins/i18n';\nimport type { Mode, Props } from '../types';\n\nconst defaultModsGo: readonly Mode[] = ['onDemand', 'dayOfWeek', 'dayOfMonth'];\nconst defaultModsReport: readonly Mode[] = ['onDemand', 'afterCheck'];\n\n/**\n * Формирует реактивный список режимов расписания с учетом дополнительных режимов.\n */\nexport const useModeOptions = (props: Props, mode: Ref<Mode>) => {\n\tconst i18n = useI18n();\n\n\treturn computed<TopSelectOption[]>(() => {\n\t\tconst modes: Mode[] = props.type === 'go' ? [...defaultModsGo] : [...defaultModsReport];\n\n\t\tif (props.extraMods) {\n\t\t\tmodes.push(...props.extraMods);\n\t\t}\n\n\t\t// Всегда отображать выбранный режим.\n\t\tif (!modes.includes(mode.value)) modes.push(mode.value);\n\n\t\t// Словарь Dynamics нужен только потребителям режима afterCheck.\n\t\tconst titles: Record<Mode, string> = {\n\t\t\tonDemand: i18n.Projects.Settings_on_demand,\n\t\t\tdayOfWeek: i18n.Projects.Report_on_weekdays,\n\t\t\tdayOfMonth: i18n.Projects.Settings_particular_days,\n\t\t\tafterYandexUpdated: i18n.Projects.After_updates,\n\t\t\tafterCheck: modes.includes('afterCheck') ? i18n.Dynamics.Report_after_tracking_30min_1 : '',\n\t\t};\n\n\t\treturn modes.map(value => ({ value, title: titles[value] }));\n\t});\n};\n","import { watch, type Ref } from 'vue';\nimport type { Mode, Props } from '../types';\nimport { isCalendarMode } from '../utils';\n\n/**\n * Создаёт независимую копию модели расписания.\n */\nconst cloneModel = (model: Props['modelValue']): Props['modelValue'] => ({\n\tdays: [...model.days],\n\ttimes: model.times.map(time => ({ ...time })),\n});\n\n/**\n * Сохраняет дни и временные слоты модели по режимам расписания.\n */\nexport const useModelByModeCache = (model: Ref<Props['modelValue']>, mode: Ref<Mode>) => {\n\ttype TimeCacheMode = Mode | 'calendar';\n\n\tconst cache = {\n\t\t// Дни календарных режимов кэшируем отдельно.\n\t\tdaysByMode: {} as Partial<Record<Mode, Props['modelValue']['days']>>,\n\n\t\t// Временные слоты храним по режимам, используя общий ключ `calendar` для недели и месяца.\n\t\ttimesByMode: {} as Partial<Record<TimeCacheMode, Props['modelValue']['times']>>,\n\t};\n\n\t// Сохранять настройки выбранного режима\n\twatch(model, () => {\n\t\tconst modelCached = cloneModel(model.value);\n\n\t\tcache.daysByMode[mode.value] = modelCached.days;\n\t\tcache.timesByMode[isCalendarMode(mode.value) ? 'calendar' : mode.value] = modelCached.times;\n\t}, { deep: true, immediate: true });\n\n\treturn cache;\n};\n","<script setup lang=\"ts\">\nimport { ref, watch } from 'vue';\nimport TopSelect from '@/components/forms/select/select.vue';\nimport TopScheduleCalendar from '@/components/schedule/schedule/components/calendar/calendar.vue';\nimport type { Mode, Props, Slots } from './types';\nimport { genAfterYandexUpdatedOptions, getModeByDays, isCalendarMode } from './utils';\nimport { useModeOptions } from './composables/useModeOptions';\nimport { useModelByModeCache } from './composables/useModelByModeCache';\n\n/**\n * Используется для размытия нагрузка на разное время\n */\nconst randomHour = String(Math.floor(Math.random() * 7) + 1) as Props['modelValue']['times'][number]['hour'];\n\nconst props = withDefaults(defineProps<Props>(), {\n\t// Тип `go` соответствует запуску инструмента по расписанию.\n\ttype: 'go',\n});\n\ndefineSlots<Slots>();\n\nconst model = defineModel<Props['modelValue']>({\n\trequired: true,\n});\n\n// Выбранный режим\nconst mode = ref<Mode>(getModeByDays(model.value.days));\n\n// Список режимов\nconst modeOptions = useModeOptions(props, mode);\n\nconst afterYandexUpdatedOptions = genAfterYandexUpdatedOptions();\n\n// Кэш дней по режимам и временных слотов по группам расписания.\nconst cache = useModelByModeCache(model, mode);\n\n/**\n * При смене `days` сразу проверяем доступное значение режима и обновляем его, если надо.\n *\n * @note 1 в цепочке перед `watch(mode)`, цепочки не цикличны\n */\nwatch(\n\t() => model.value.days,\n\t() => mode.value = getModeByDays(model.value.days, mode.value),\n\t{ deep: true, immediate: true },\n);\n\n/**\n * При смене режима устанавливаем соответствующие `days` и `times`.\n *\n * Для календарных режимов восстанавливаем ранее сохранённый выбор дней.\n *\n * @note 2 в цепочке после `watch(() => model.value.days)`, цепочки не цикличны\n */\nwatch(mode, (newMode, oldMode) => {\n\t// Для недели и месяца временные слоты берём из общего кэша `calendar`.\n\tconst daysCached = cache.daysByMode[newMode];\n\tconst timesCached = cache.timesByMode[isCalendarMode(newMode) ? 'calendar' : newMode];\n\n\tconst modelPath: Partial<Props['modelValue']> = {};\n\tconst modeChaged = oldMode;\n\n\tswitch (newMode) {\n\t\tcase 'onDemand':\n\t\t\tif (modeChaged || model.value.days.length) modelPath.days = [];\n\t\t\tif (modeChaged || model.value.times.length) modelPath.times = [];\n\n\t\t\tbreak;\n\t\tcase 'dayOfWeek':\n\t\tcase 'dayOfMonth': {\n\t\t\tif (modeChaged || !model.value.days.length) modelPath.days = daysCached ?? ['ALL'];\n\t\t\tif (modeChaged || !model.value.times.length) modelPath.times = timesCached?.length ? timesCached : [{ hour: randomHour, minute: '0' }];\n\n\t\t\tbreak;\n\t\t}\n\t\tcase 'afterYandexUpdated':\n\t\t\tif (modeChaged || model.value.days[0] !== 'YANDEX_UPDATE') modelPath.days = ['YANDEX_UPDATE'];\n\t\t\tif (modeChaged || !model.value.times.length) modelPath.times = timesCached?.length ? timesCached : [{ hour: '1', minute: '0' }];\n\n\t\t\tbreak;\n\t\tcase 'afterCheck':\n\t\t\tif (modeChaged || model.value.days[0] !== 'CHECK_POSITIONS') modelPath.days = ['CHECK_POSITIONS'];\n\t\t\tif (modeChaged || !model.value.times.length) modelPath.times = timesCached?.length ? timesCached : [{ hour: '0', minute: '0' }];\n\n\t\t\tbreak;\n\t}\n\n\t// Отправляем новое значение только тогда, когда хотя бы одно поле требует изменения.\n\tif (Object.keys(modelPath).length) model.value = { ...model.value, ...modelPath };\n}, { immediate: true });\n</script>\n\n<template>\n\t<div :class=\"['top-schedule', 'top-schedule-type_' + type]\">\n\t\t<div class=\"top-schedule_header\">\n\t\t\t<div class=\"top-schedule_headerTitle\">\n\t\t\t\t{{ title ?? (type === 'go' ? $i18n.Projects.Checks : $i18n.Projects.Reports) }}\n\t\t\t</div>\n\n\t\t\t<TopSelect\n\t\t\t\tclass=\"top-schedule_headerMods\"\n\t\t\t\tv-model=\"mode\"\n\t\t\t\t:options=\"modeOptions\"\n\t\t\t\tsize=\"s\"\n\t\t\t/>\n\t\t</div>\n\n\t\t<div v-if=\"mode !== 'onDemand' && (isCalendarMode(mode) || mode === 'afterYandexUpdated' || $slots.default)\" class=\"top-schedule_body\">\n\t\t\t<TopScheduleCalendar\n\t\t\t\tv-if=\"isCalendarMode(mode)\"\n\t\t\t\tv-model=\"model.days\"\n\t\t\t\tv-model:times=\"model.times\"\n\t\t\t\t:mode\n\t\t\t\t:multipleTimes\n\t\t\t/>\n\n\t\t\t<TopSelect\n\t\t\t\tv-if=\"mode === 'afterYandexUpdated' && model.times[0]\"\n\t\t\t\tclass=\"top-schedule_afterYandexUpdatedDelay\"\n\t\t\t\tv-model=\"model.times[0].hour\"\n\t\t\t\t:options=\"afterYandexUpdatedOptions\"\n\t\t\t\tsize=\"s\"\n\t\t\t/>\n\n\t\t\t<hr v-if=\"(isCalendarMode(mode) || mode === 'afterYandexUpdated') && $slots.default\">\n\n\t\t\t<slot :mode></slot>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { computed, nextTick, onBeforeUnmount, onMounted, ref } from 'vue';\nimport TopInput from '@/components/forms/input/input.vue';\nimport TopButton from '@/components/forms/button/button.vue';\nimport Core from '@/core/core/core';\nimport { isEmail } from '@/core/utils/check';\nimport { useI18n } from '@/core/plugins/i18n';\nimport type { Props, Emits } from '@/components/schedule/schedule/components/emails/selector/types';\n\nconst props = withDefaults(defineProps<Props>(), {\n\temails: () => [],\n\tgetEmailSuggestions: () => [],\n});\n\nconst model = defineModel<Props['modelValue']>({ required: true });\n\nconst emit = defineEmits<Emits>();\n\nconst i18n = useI18n();\nconst $ = Core.$;\n\nconst elRootRef = ref<HTMLElement>();\nconst elInputRef = ref<InstanceType<typeof TopInput>>();\nlet elInput: HTMLInputElement | null = null;\nconst autocompleteCache: Record<string, string[]> = {};\n\n// При достижении лимита отключаем поле ввода и скрываем кнопку добавления.\nconst isLimitReached = computed(() => !!props.maxEmailsCount && props.emails.length >= props.maxEmailsCount);\n\nconst filterEmails = (emails: string[]) => emails.filter(email => !props.emails.includes(email));\n\nconst submit = (value: unknown = model.value) => {\n\tconst email = String(value).trim();\n\tif (!email) return;\n\n\tif (!isEmail(email)) {\n\t\tvoid Core.notice(i18n.Common.Enter_valid_email_notice, 'error');\n\n\t\treturn;\n\t}\n\n\temit('submit', email);\n};\n\nconst initAutocomplete = async () => {\n\tawait nextTick();\n\n\telInput = elInputRef.value?.$el.querySelector('input') ?? null;\n\tif (!elInput) return;\n\n\tif (!$?.ui?.autocomplete) {\n\t\tconsole.info('Для работы autocomplete требуется глобальная загрузка jQuery UI Autocomplete');\n\n\t\treturn;\n\t}\n\n\t$(elInput).autocomplete({\n\t\tappendTo: elRootRef.value,\n\t\tminLength: 0,\n\t\tsource: async (request: { term: string }, response: (items: Array<{ label: string, value: string }>) => void) => {\n\t\t\tconst term = request.term;\n\n\t\t\tif (!(term in autocompleteCache)) {\n\t\t\t\tautocompleteCache[term] = await props.getEmailSuggestions(term);\n\t\t\t}\n\n\t\t\tresponse(filterEmails(autocompleteCache[term]).map(email => ({\n\t\t\t\tlabel: email,\n\t\t\t\tvalue: email,\n\t\t\t})));\n\t\t},\n\t\tselect: (event: Event, ui: { item?: { value: string } }) => {\n\t\t\tif (!ui.item || !elInput) return;\n\n\t\t\tevent.preventDefault();\n\t\t\tsubmit(ui.item.value);\n\t\t\tmodel.value = '';\n\n\t\t\t$(elInput).trigger('focus');\n\t\t},\n\t});\n\n\t$(elInput).attr('autocomplete', 'disabled');\n\t$(elInput).on('focus.scheduleEmailSelector', () => {\n\t\tif (!elInput) return;\n\n\t\t$(elInput).trigger('input');\n\t});\n};\n\nonMounted(() => {\n\tvoid initAutocomplete();\n});\n\nonBeforeUnmount(() => {\n\tif (!$?.ui?.autocomplete || !elInput) return;\n\n\t$(elInput).off('focus.scheduleEmailSelector');\n\t$(elInput).autocomplete('destroy');\n});\n</script>\n\n<template>\n\t<div\n\t\tclass=\"top-scheduleEmailSelector\"\n\t\tref=\"elRootRef\"\n\t>\n\t\t<!-- UX: Компонент не должен скраываться, это приведет к CLS -->\n\t\t<TopInput\n\t\t\tref=\"elInputRef\"\n\t\t\tv-model=\"model\"\n\t\t\t@keydown.enter.prevent=\"submit()\"\n\t\t\t:title=\"$i18n.Common.Enter_email\"\n\t\t\ttype=\"email\"\n\t\t\tsize=\"m\"\n\t\t\t:disabled=\"isLimitReached\"\n\t\t>\n\t\t\t<TopButton\n\t\t\t\tv-if=\"!isLimitReached\"\n\t\t\t\tclass=\"top-scheduleEmailSelector_submit\"\n\t\t\t\tcolor=\"theme\"\n\t\t\t\ticon=\"\"\n\t\t\t\t@click.prevent=\"submit()\"\n\t\t\t/>\n\t\t</TopInput>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport { ref } from 'vue';\nimport type { Emits, Props } from '@/components/schedule/schedule/components/emails/types';\nimport ScheduleEmailSelector from '@/components/schedule/schedule/components/emails/selector/selector.vue';\n\nconst props = withDefaults(defineProps<Props>(), {\n\temails: () => [],\n\tgetEmailSuggestions: () => [],\n});\n\nconst emit = defineEmits<Emits>();\n\nconst value = ref('');\n\nconst addEmail = (email: string) => {\n\tconst preparedEmail = email.trim();\n\n\tif (!preparedEmail || props.emails.includes(preparedEmail)) {\n\t\tvalue.value = '';\n\n\t\treturn;\n\t}\n\n\temit('add:email', preparedEmail);\n\n\tvalue.value = '';\n};\n</script>\n\n<template>\n\t<div class=\"top-scheduleEmail\">\n\t\t<div class=\"top-scheduleEmail_title\">\n\t\t\t{{ $i18n.Projects.Reports_send_to_address }} E-mail:\n\t\t</div>\n\n\t\t<ScheduleEmailSelector\n\t\t\tv-model=\"value\"\n\t\t\t:emails\n\t\t\t:maxEmailsCount\n\t\t\t:getEmailSuggestions\n\t\t\t@submit=\"addEmail\"\n\t\t/>\n\n\t\t<div\n\t\t\tv-if=\"emails.length\"\n\t\t\tclass=\"top-scheduleEmail_emails\"\n\t\t>\n\t\t\t<div\n\t\t\t\tclass=\"top-scheduleEmail_emailsItem\"\n\t\t\t\tv-for=\"email in emails\"\n\t\t\t\t:key=\"email\"\n\t\t\t>\n\t\t\t\t<span class=\"top-ellipsis1\">{{ email }}</span>\n\n\t\t\t\t<TopButton\n\t\t\t\t\t@click=\"emit('remove:email', email)\"\n\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\ticon=\"\"\n\t\t\t\t/>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n","<script setup lang=\"ts\">\nimport type { Emits, Props } from '@/components/schedule/schedule/components/socials/types';\n\nconst props = defineProps<Props>();\ndefineEmits<Emits>();\n\ntype ReportChannelSource = Props['channels'][number]['source'];\n\nconst hasChannel = (source: ReportChannelSource) => props.channels.some(channel => channel.source === source);\n\nconst sourceIconBySource: Record<ReportChannelSource, string> = {\n\tinformer: '',\n\ttelegram: '',\n};\n</script>\n\n<template>\n\t<div class=\"top-scheduleSocials\">\n\t\t<div class=\"top-scheduleSocials_title\">\n\t\t\t{{ $i18n.Projects.Reports_send_to_address }}\n\t\t</div>\n\n\t\t<div class=\"top-scheduleSocials_channels\">\n\t\t\t<div\n\t\t\t\tclass=\"top-scheduleSocials_channel\"\n\t\t\t\tv-for=\"channel in channels\"\n\t\t\t\t:key=\"`${channel.source}-${channel.id}`\"\n\t\t\t>\n\t\t\t\t<span\n\t\t\t\t\tclass=\"top-scheduleSocials_channelIcon\"\n\t\t\t\t\t:data-top-icon=\"sourceIconBySource[channel.source]\"\n\t\t\t\t></span>\n\n\t\t\t\t<span class=\"top-scheduleSocials_channelLabel top-ellipsis1\">\n\t\t\t\t\t{{ channel.label }}\n\t\t\t\t</span>\n\n\t\t\t\t<TopButton\n\t\t\t\t\tv-if=\"channel.settingLink\"\n\t\t\t\t\tclass=\"top-scheduleSocials_channelSettings\"\n\t\t\t\t\tsize=\"xs\"\n\t\t\t\t\t:href=\"channel.settingLink\"\n\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\ticon=\"\"\n\t\t\t\t\tcolor=\"theme\"\n\t\t\t\t\ttabindex=\"0\"\n\t\t\t\t></TopButton>\n\n\t\t\t\t<TopSwitcher\n\t\t\t\t\tclass=\"top-scheduleSocials_channelSwitcher\"\n\t\t\t\t\t:modelValue=\"channel.selected\"\n\t\t\t\t\t@update:modelValue=\"$emit('update:channelSelected', {\n\t\t\t\t\t\tid: channel.id,\n\t\t\t\t\t\tsource: channel.source,\n\t\t\t\t\t\tselected: $event as boolean,\n\t\t\t\t\t})\"\n\t\t\t\t/>\n\t\t\t</div>\n\n\t\t\t<template\n\t\t\t\tv-for=\"connector in connectors\"\n\t\t\t\t:key=\"connector.source\"\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tv-if=\"!hasChannel(connector.source)\"\n\t\t\t\tclass=\"top-scheduleSocials_channel\"\n\t\t\t\t>\n\t\t\t\t\t<span\n\t\t\t\t\t\tclass=\"top-scheduleSocials_channelIcon\"\n\t\t\t\t\t\t:data-top-icon=\"sourceIconBySource[connector.source]\"\n\t\t\t\t\t></span>\n\n\t\t\t\t\t<a\n\t\t\t\t\t\tclass=\"top-scheduleSocials_channelLabel top-ellipsis1\"\n\t\t\t\t\t\t:href=\"connector.connectLink\"\n\t\t\t\t\t\ttarget=\"_blank\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{{ connector.connectLabel }}\n\t\t\t\t\t</a>\n\t\t\t\t</div>\n\t\t\t</template>\n\t\t</div>\n\t</div>\n</template>\n\n<style>\n@import \"./style.css\";\n</style>\n"]}