sprof 0.2.9 → 0.2.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/dist/{ExtractsList-CCcvo_02.js → ExtractsList-BEH5IYVY.js} +12 -11
  2. package/dist/core/components/GeneralItem.vue.d.ts +1 -1
  3. package/dist/core/components/InfoItem.vue.d.ts +1 -1
  4. package/dist/core/components/atoms/PButton/PButton.stories.d.ts +6 -6
  5. package/dist/core/components/atoms/PButton/PButton.vue.d.ts +1 -1
  6. package/dist/core/components/atoms/PDialog/PDialog.stories.d.ts +6 -6
  7. package/dist/core/components/atoms/PDialog/PDialog.vue.d.ts +1 -1
  8. package/dist/core/components/molecules/PCrudList/PCrudList.stories.d.ts +9 -9
  9. package/dist/core/components/molecules/PCrudList/PCrudList.vue.d.ts +1 -1
  10. package/dist/core/components/molecules/PEditDialog/PEditDialog.stories.d.ts +9 -9
  11. package/dist/core/components/molecules/PEditDialog/PEditDialog.vue.d.ts +1 -1
  12. package/dist/core/components/organisms/PUploaderImage/ImageCropper.vue.d.ts +2 -4
  13. package/dist/core/components/organisms/PUploaderImage/PUploaderImage.test.d.ts +1 -0
  14. package/dist/core/components/organisms/PUploaderImage/PUploaderImage.vue.d.ts +17 -52
  15. package/dist/index-CmgBwS-p.js +16756 -0
  16. package/dist/index.d.ts +5 -0
  17. package/dist/modules/index.d.ts +1 -0
  18. package/dist/modules/schedule/classes/Schedule.d.ts +19 -0
  19. package/dist/modules/schedule/classes/ScheduleDay.d.ts +15 -0
  20. package/dist/modules/schedule/classes/SchedulePlace.d.ts +12 -0
  21. package/dist/modules/schedule/classes/ScheduleSession.d.ts +16 -0
  22. package/dist/modules/schedule/classes/ScheduleSlot.d.ts +19 -0
  23. package/dist/modules/schedule/classes/index.d.ts +5 -0
  24. package/dist/modules/schedule/components/ScheduleGridEditor.vue.d.ts +59 -0
  25. package/dist/modules/schedule/components/ScheduleTimeline.vue.d.ts +58 -0
  26. package/dist/modules/schedule/components/index.d.ts +2 -0
  27. package/dist/modules/schedule/helpers/ScheduleGrid.d.ts +35 -0
  28. package/dist/modules/schedule/helpers/ScheduleTime.d.ts +22 -0
  29. package/dist/modules/schedule/helpers/index.d.ts +2 -0
  30. package/dist/modules/schedule/index.d.ts +26 -0
  31. package/dist/modules/schedule/store/ScheduleDaysStore.d.ts +7 -0
  32. package/dist/modules/schedule/store/SchedulePlacesStore.d.ts +7 -0
  33. package/dist/modules/schedule/store/ScheduleSessionsStore.d.ts +7 -0
  34. package/dist/modules/schedule/store/ScheduleSlotsStore.d.ts +7 -0
  35. package/dist/modules/schedule/store/SchedulesStore.d.ts +7 -0
  36. package/dist/modules/schedule/store/index.d.ts +5 -0
  37. package/dist/modules/schedule/types/ScheduleTypes.d.ts +122 -0
  38. package/dist/modules/schedule/types/index.d.ts +1 -0
  39. package/dist/sprof.js +40 -32
  40. package/dist/sprof.umd.cjs +17 -23
  41. package/dist/style.css +1 -1
  42. package/package.json +1 -1
  43. package/dist/core/components/organisms/PUploaderImage/PUploaderImage.stories.d.ts +0 -165
  44. package/dist/index-Bwtms4B9.js +0 -19392
package/dist/index.d.ts CHANGED
@@ -21,6 +21,11 @@ export { default as PCrudList } from './core/components/molecules/PCrudList/PCru
21
21
  export { default as PEditDialog } from './core/components/molecules/PEditDialog/PEditDialog.vue';
22
22
  export type { AuthFormSettingsType } from './core/auth/index';
23
23
  export { AuthButtonLogin, AuthButtonRefresh, AuthButtonRegister, AuthButtonRestore, AuthChunks, AuthFieldsIds, AuthFormSettings, AuthMethods, EmailField, LoginField, PasswordField, PasswordRepeatField, } from './core/auth/index';
24
+ export { Schedule, ScheduleDay, SchedulePlace, ScheduleSession, ScheduleSlot, } from './modules/schedule/classes/index';
25
+ export { default as ScheduleGridEditor } from './modules/schedule/components/ScheduleGridEditor.vue';
26
+ export { default as ScheduleTimeline } from './modules/schedule/components/ScheduleTimeline.vue';
27
+ export type { NotifyType, ScheduleFactories, ScheduleItemKind, ScheduleLabels, SchedulePersistence, } from './modules/schedule/types/index';
28
+ export { defaultScheduleLabels as ScheduleDefaultLabels } from './modules/schedule/types/index';
24
29
  export type { IAdminMenu } from './core/interfaces';
25
30
  /** @internal Used by unplugin-auto-import configuration */
26
31
  export declare const pfName: readonly ["PF", "PFM"];
@@ -5,4 +5,5 @@ export * as Extracts from './extracts/index';
5
5
  export * as Forms from './forms/index';
6
6
  export * as Menus from './menus/index';
7
7
  export * as Pages from './pages/index';
8
+ export * as Schedule from './schedule/index';
8
9
  export * as Settings from './settings/index';
@@ -0,0 +1,19 @@
1
+ import { default as ScheduleSession } from './ScheduleSession';
2
+ import { default as ScheduleSlot } from './ScheduleSlot';
3
+ /**
4
+ * Расписание одного места на один день (обобщённый Schedule из pros):
5
+ * секции (ScheduleSession) и слоты (ScheduleSlot).
6
+ */
7
+ export default class Schedule {
8
+ id?: string;
9
+ name: string;
10
+ description: string;
11
+ scheduleDayId?: string;
12
+ placeId?: string;
13
+ sessions: ScheduleSession[];
14
+ slots: ScheduleSlot[];
15
+ constructor(i?: Schedule);
16
+ static Create(placeId?: string, scheduleDayId?: string): Schedule;
17
+ addSession(): ScheduleSession;
18
+ addSlot(): ScheduleSlot;
19
+ }
@@ -0,0 +1,15 @@
1
+ import { default as Schedule } from './Schedule';
2
+ /**
3
+ * День календаря-расписания (обобщённый EventDay из pros).
4
+ * Привязывается к владельцу через ownerId/ownerType (мероприятие, врач, ...).
5
+ */
6
+ export default class ScheduleDay {
7
+ id?: string;
8
+ date: Date;
9
+ description: string;
10
+ ownerId?: string;
11
+ ownerType: string;
12
+ schedules: Schedule[];
13
+ constructor(i?: ScheduleDay);
14
+ static Create(ownerId?: string, ownerType?: string, date?: Date): ScheduleDay;
15
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Место проведения (обобщённый Place из pros): зал, аудитория,
3
+ * кабинет врача, онлайн-комната...
4
+ */
5
+ export default class SchedulePlace {
6
+ id?: string;
7
+ name: string;
8
+ description: string;
9
+ color: string;
10
+ constructor(i?: SchedulePlace);
11
+ static Create(): SchedulePlace;
12
+ }
@@ -0,0 +1,16 @@
1
+ import { default as ScheduleSlot } from './ScheduleSlot';
2
+ /**
3
+ * Секция/группа расписания (обобщённый Session из pros):
4
+ * временной интервал с вложенными слотами.
5
+ */
6
+ export default class ScheduleSession {
7
+ id?: string;
8
+ name: string;
9
+ description: string;
10
+ startTime: string;
11
+ endTime: string;
12
+ scheduleId?: string;
13
+ slots: ScheduleSlot[];
14
+ constructor(i?: ScheduleSession);
15
+ static Create(scheduleId?: string): ScheduleSession;
16
+ }
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Слот расписания (обобщённый Perfom из pros): событие с временным
3
+ * интервалом — доклад, приём врача, лекция...
4
+ *
5
+ * payload — «карман» для доменных данных проекта (спикеры, спонсор,
6
+ * формат, специализация врача), чтобы не плодить поля под каждую предметку.
7
+ */
8
+ export default class ScheduleSlot {
9
+ id?: string;
10
+ name: string;
11
+ description: string;
12
+ startTime: string;
13
+ endTime: string;
14
+ scheduleId?: string;
15
+ sessionId?: string;
16
+ payload: Record<string, unknown>;
17
+ constructor(i?: ScheduleSlot);
18
+ static Create(scheduleId?: string): ScheduleSlot;
19
+ }
@@ -0,0 +1,5 @@
1
+ export { default as Schedule } from './Schedule';
2
+ export { default as ScheduleDay } from './ScheduleDay';
3
+ export { default as SchedulePlace } from './SchedulePlace';
4
+ export { default as ScheduleSession } from './ScheduleSession';
5
+ export { default as ScheduleSlot } from './ScheduleSlot';
@@ -0,0 +1,59 @@
1
+ import { ScheduleFactories, ScheduleLabels, SchedulePersistence } from '../types/ScheduleTypes';
2
+ type __VLS_Props = {
3
+ days: any[];
4
+ places: any[];
5
+ persist: SchedulePersistence;
6
+ labels?: Partial<ScheduleLabels>;
7
+ factories?: Partial<ScheduleFactories>;
8
+ /** Название места/зала расписания (по умолчанию — place.name по placeId) */
9
+ hallName?: (schedule: any) => string;
10
+ /** Подпись дня во вкладках (по умолчанию — ru-RU дата) */
11
+ dayTitle?: (day: any) => string;
12
+ /** Название слота (по умолчанию — item.name) */
13
+ slotName?: (slot: any) => string;
14
+ /** Подпись слота под названием (спикеры/участники; по умолчанию — пусто) */
15
+ slotSubtitle?: (slot: any) => string;
16
+ /** Название секции (по умолчанию — item.name) */
17
+ sessionName?: (session: any) => string;
18
+ /** Список слотов расписания (по умолчанию — schedule.slots) */
19
+ slotListOf?: (schedule: any) => any[];
20
+ /** Список слотов, вложенных в секцию (по умолчанию — session.slots) */
21
+ nestedSlotListOf?: (session: any) => any[];
22
+ };
23
+ declare const _default: __VLS_WithTemplateSlots<import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
24
+ labels: Partial<ScheduleLabels>;
25
+ factories: Partial<ScheduleFactories>;
26
+ hallName: (schedule: any) => string;
27
+ dayTitle: (day: any) => string;
28
+ slotName: (slot: any) => string;
29
+ slotSubtitle: (slot: any) => string;
30
+ sessionName: (session: any) => string;
31
+ slotListOf: (schedule: any) => any[];
32
+ nestedSlotListOf: (session: any) => any[];
33
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {
34
+ gridScrollRef: HTMLDivElement;
35
+ }, HTMLDivElement>, {
36
+ 'session-row-extra'?(_: {
37
+ element: any;
38
+ schedule: any;
39
+ }): any;
40
+ 'slot-row-extra'?(_: {
41
+ element: any;
42
+ schedule: any;
43
+ }): any;
44
+ 'places-list'?(_: {
45
+ day: any;
46
+ add: (place: any) => Promise<void>;
47
+ }): any;
48
+ 'edit-form'?(_: {
49
+ kind: "slot" | "session";
50
+ item: any;
51
+ schedule: any;
52
+ }): any;
53
+ }>;
54
+ export default _default;
55
+ type __VLS_WithTemplateSlots<T, S> = T & {
56
+ new (): {
57
+ $slots: S;
58
+ };
59
+ };
@@ -0,0 +1,58 @@
1
+ type __VLS_Props = {
2
+ days: any[];
3
+ /** Подпись дня (по умолчанию — ru-RU дата) */
4
+ dayTitle?: (day: any) => string;
5
+ /** Название места/зала (по умолчанию — place.name или schedule.placeName) */
6
+ placeName?: (schedule: any) => string;
7
+ /** Название слота (по умолчанию — item.name) */
8
+ slotName?: (slot: any) => string;
9
+ /** Участники слота (по умолчанию — []) */
10
+ slotParticipants?: (slot: any) => any[];
11
+ /** Участники/председатели секции (по умолчанию — []) */
12
+ sessionParticipants?: (session: any) => any[];
13
+ /** Имя участника (по умолчанию — name/fullName) */
14
+ participantName?: (p: any) => string;
15
+ /** Био/регалии участника (по умолчанию — '') */
16
+ participantBio?: (p: any) => string;
17
+ /** Название секции (по умолчанию — item.name) */
18
+ sessionName?: (session: any) => string;
19
+ /** Тексты (по умолчанию — ru) */
20
+ noProgramText?: string;
21
+ /** Список слотов расписания (по умолчанию — schedule.slots) */
22
+ slotListOf?: (schedule: any) => any[];
23
+ /** Список слотов, вложенных в секцию (по умолчанию — session.slots) */
24
+ nestedSlotListOf?: (session: any) => any[];
25
+ /** Слоты кликабельны (эмит slot-click) — для записи/бронирования */
26
+ slotClickable?: boolean;
27
+ };
28
+ declare const _default: __VLS_WithTemplateSlots<import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {} & {
29
+ "open-participant": (participant: any) => any;
30
+ "slot-click": (slot: any) => any;
31
+ }, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{
32
+ "onOpen-participant"?: ((participant: any) => any) | undefined;
33
+ "onSlot-click"?: ((slot: any) => any) | undefined;
34
+ }>, {
35
+ dayTitle: (day: any) => string;
36
+ slotName: (slot: any) => string;
37
+ sessionName: (session: any) => string;
38
+ slotListOf: (schedule: any) => any[];
39
+ nestedSlotListOf: (session: any) => any[];
40
+ placeName: (schedule: any) => string;
41
+ slotParticipants: (slot: any) => any[];
42
+ sessionParticipants: (session: any) => any[];
43
+ participantName: (p: any) => string;
44
+ participantBio: (p: any) => string;
45
+ noProgramText: string;
46
+ slotClickable: boolean;
47
+ }, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>, {
48
+ badges?(_: {
49
+ item: any;
50
+ }): any;
51
+ default?(_: {}): any;
52
+ }>;
53
+ export default _default;
54
+ type __VLS_WithTemplateSlots<T, S> = T & {
55
+ new (): {
56
+ $slots: S;
57
+ };
58
+ };
@@ -0,0 +1,2 @@
1
+ export { default as ScheduleGridEditor } from './ScheduleGridEditor.vue';
2
+ export { default as ScheduleTimeline } from './ScheduleTimeline.vue';
@@ -0,0 +1,35 @@
1
+ export type GridItem = {
2
+ kind: 'slot' | 'session';
3
+ item: any;
4
+ };
5
+ export type GridBounds = {
6
+ start: number;
7
+ end: number;
8
+ total: number;
9
+ };
10
+ /** Границы сетки по содержимому (по умолчанию 8:00–20:00, расширяется под блоки) */
11
+ export declare const gridBounds: (items: GridItem[], minDefault?: number, maxDefault?: number) => GridBounds;
12
+ /** Позиция/высота блока в процентах от границ сетки */
13
+ export declare const blockStyle: (gi: GridItem, b: GridBounds) => {
14
+ top: string;
15
+ height: string;
16
+ };
17
+ /** Позиция слота внутри блока секции (в % от времени секции) */
18
+ export declare const nestedSlotStyle: (session: any, slot: any) => {
19
+ top: string;
20
+ height: string;
21
+ };
22
+ /** Конфликт блока с другими блоками (секция не конфликтует со своими слотами) */
23
+ export declare const hasConflict: (items: GridItem[], gi: GridItem, intersects: (a: any, b: any) => boolean) => boolean;
24
+ /** Конфликт слотов внутри секции (пересечение друг с другом) */
25
+ export declare const nestedConflict: (slots: any[], slot: any, intersects: (a: any, b: any) => boolean) => boolean;
26
+ /** Секция, полностью вмещающая интервал [startMin, endMin) */
27
+ export declare const findEnclosingSession: (sessions: any[], startMin: number, endMin: number, toMinFn: (t?: string) => number) => any | undefined;
28
+ /**
29
+ * Класс размера блока по высоте в пикселях:
30
+ * h-full — время + название + подпись (>= 60px)
31
+ * h-medium — время + название с подписью (34–60px)
32
+ * h-short — только название с подписью (26–34px)
33
+ * h-tiny — только название, мелкий шрифт (< 26px)
34
+ */
35
+ export declare const blockSizeClass: (heightPx: number) => string;
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Утилиты времени расписания (обёртки над PF.H.Time).
3
+ *
4
+ * Контракт данных: у слотов и секций есть поля `startTime`/`endTime`
5
+ * в формате 'H:MM' (или 'H:MM:SS' — нормализуется).
6
+ */
7
+ /** 'H:MM' → минуты с начала суток; NaN если мусор */
8
+ export declare const toMin: (t?: string) => number;
9
+ /** Минуты → 'H:MM' */
10
+ export declare const fromMin: (m: number) => string;
11
+ /** Нормализация 'H:MM[:SS]' → 'H:MM'; '' если мусор (HmsToHm('') даёт 'undefined:undefined') */
12
+ export declare const normTime: (t?: string) => string;
13
+ /** Длительность интервала в минутах */
14
+ export declare const diffM: (start?: string, end?: string) => number;
15
+ /** 'H:MM' + минуты → 'H:MM' */
16
+ export declare const addMtoHM: (t: string, m: number) => string;
17
+ /** Сортировка по startTime (невалидные в конец) */
18
+ export declare const byStart: (a: any, b: any) => number;
19
+ /** Пересекаются ли два интервала (полуинтервалы: [start, end)) */
20
+ export declare const intersects: (a: any, b: any) => boolean;
21
+ /** Округление минут к шагу сетки */
22
+ export declare const snapMinutes: (m: number, snap: number) => number;
@@ -0,0 +1,2 @@
1
+ export * from './ScheduleGrid';
2
+ export * from './ScheduleTime';
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Модуль schedule (sprof) — универсальный календарь-расписание
3
+ * с drag&drop редактором (Google-Calendar-стиль).
4
+ *
5
+ * Сущности (classes/): ScheduleDay → Schedule → ScheduleSession/ScheduleSlot (+ SchedulePlace).
6
+ * Компоненты (components/): ScheduleGridEditor (редактор: сетка + список + дни/залы),
7
+ * ScheduleTimeline (read-only публичный вид).
8
+ * Стор (store/): BaseStore'ы под CRUD-эндпоинты.
9
+ *
10
+ * Подключение в проекте:
11
+ *
12
+ * ```ts
13
+ * import { PFM } from 'sprof'; // PFM.Schedule.C.ScheduleDay и т.п.
14
+ * // или
15
+ * import { ScheduleGridEditor, ScheduleTimeline } from 'sprof';
16
+ * ```
17
+ *
18
+ * Компоненты не знают про домен проекта: дни/залы/секции/слоты — это
19
+ * plain-объекты с полями id/name/startTime/endTime/scheduleId/sessionId.
20
+ * Персистентность — через адаптер SchedulePersistence (типы/ScheduleTypes.ts).
21
+ */
22
+ export * as C from './classes/index';
23
+ export * as Components from './components/index';
24
+ export * as H from './helpers/index';
25
+ export * as S from './store/index';
26
+ export * as T from './types/index';
@@ -0,0 +1,7 @@
1
+ import { default as BaseStore } from '../../../core/helpers/BaseStore';
2
+ import { default as ScheduleDay } from '../classes/ScheduleDay';
3
+ declare class S extends BaseStore<ScheduleDay> {
4
+ constructor();
5
+ }
6
+ declare const store: S;
7
+ export default store;
@@ -0,0 +1,7 @@
1
+ import { default as BaseStore } from '../../../core/helpers/BaseStore';
2
+ import { default as SchedulePlace } from '../classes/SchedulePlace';
3
+ declare class S extends BaseStore<SchedulePlace> {
4
+ constructor();
5
+ }
6
+ declare const store: S;
7
+ export default store;
@@ -0,0 +1,7 @@
1
+ import { default as BaseStore } from '../../../core/helpers/BaseStore';
2
+ import { default as ScheduleSession } from '../classes/ScheduleSession';
3
+ declare class S extends BaseStore<ScheduleSession> {
4
+ constructor();
5
+ }
6
+ declare const store: S;
7
+ export default store;
@@ -0,0 +1,7 @@
1
+ import { default as BaseStore } from '../../../core/helpers/BaseStore';
2
+ import { default as ScheduleSlot } from '../classes/ScheduleSlot';
3
+ declare class S extends BaseStore<ScheduleSlot> {
4
+ constructor();
5
+ }
6
+ declare const store: S;
7
+ export default store;
@@ -0,0 +1,7 @@
1
+ import { default as BaseStore } from '../../../core/helpers/BaseStore';
2
+ import { default as Schedule } from '../classes/Schedule';
3
+ declare class S extends BaseStore<Schedule> {
4
+ constructor();
5
+ }
6
+ declare const store: S;
7
+ export default store;
@@ -0,0 +1,5 @@
1
+ export { default as ScheduleDaysStore } from './ScheduleDaysStore';
2
+ export { default as SchedulePlacesStore } from './SchedulePlacesStore';
3
+ export { default as ScheduleSessionsStore } from './ScheduleSessionsStore';
4
+ export { default as ScheduleSlotsStore } from './ScheduleSlotsStore';
5
+ export { default as SchedulesStore } from './SchedulesStore';
@@ -0,0 +1,122 @@
1
+ /**
2
+ * Типы модуля schedule (sprof).
3
+ *
4
+ * Модуль — универсальный календарь-расписание: дни → расписания
5
+ * (место × день) → секции и слоты. Доменная специфика проекта
6
+ * (спикеры, спонсоры, специализация врача…) выносится в
7
+ * «карман» payload слотов и в слоты шаблонов компонентов.
8
+ */
9
+ export type ScheduleItemKind = 'slot' | 'session';
10
+ export type NotifyType = 'positive' | 'warning' | 'negative';
11
+ /** Все строки интерфейса редактора (переопределяются через props.labels) */
12
+ export interface ScheduleLabels {
13
+ hall: string;
14
+ halls: string;
15
+ session: string;
16
+ sessions: string;
17
+ slot: string;
18
+ slots: string;
19
+ addHall: string;
20
+ addSession: string;
21
+ addSlot: string;
22
+ addDay: string;
23
+ deleteDay: string;
24
+ deleteHall: string;
25
+ noDays: string;
26
+ noHalls: string;
27
+ date: string;
28
+ newHallPlaceholder: string;
29
+ create: string;
30
+ close: string;
31
+ save: string;
32
+ cancel: string;
33
+ delete: string;
34
+ edit: string;
35
+ grid: string;
36
+ list: string;
37
+ startTime: string;
38
+ endTime: string;
39
+ sessionSelect: string;
40
+ sessionsTitle: string;
41
+ slotsTitle: string;
42
+ noSlots: string;
43
+ noSlotsInDay: string;
44
+ conflictTitle: string;
45
+ changeDurationTitle: string;
46
+ gridHint: string;
47
+ listHint: string;
48
+ alreadyAdded: string;
49
+ selectDayFirst: string;
50
+ cannotCreate: string;
51
+ createFailed: string;
52
+ hallCreated: string;
53
+ hallCreateFailed: string;
54
+ hallNotAdded: string;
55
+ dayAdded: string;
56
+ saveEventFirst: string;
57
+ correctStartTime: string;
58
+ name: string;
59
+ description: string;
60
+ participants: string;
61
+ enterName: string;
62
+ intoSession: string;
63
+ conflictCount: string;
64
+ }
65
+ export declare const defaultScheduleLabels: ScheduleLabels;
66
+ /** Поля слотов/секций, которые читает редактор (контракт данных) */
67
+ export interface ScheduleTimeItem {
68
+ id?: string;
69
+ name?: string;
70
+ startTime?: string;
71
+ endTime?: string;
72
+ sessionId?: string;
73
+ scheduleId?: string;
74
+ [key: string]: unknown;
75
+ }
76
+ /**
77
+ * Адаптер персистентности. Каждый проект реализует его своими Store'ами:
78
+ *
79
+ * ```ts
80
+ * const persist: SchedulePersistence = {
81
+ * loadOptions: () => Promise.all([Store.Speakers.GetAll(), Store.Sponsors.GetAll()]),
82
+ * refresh: () => Store.Events.Get(),
83
+ * notify: (t, m) => PF.UI.Notify[t](m),
84
+ * createDay: (day) => Store.EventDays.Create(day),
85
+ * ...
86
+ * };
87
+ * ```
88
+ */
89
+ export interface SchedulePersistence {
90
+ /** Доменные опции (спикеры/спонсоры и т.п.) — вызывается при монтировании */
91
+ loadOptions?(): Promise<void>;
92
+ /** Перечитать родительскую сущность после мутаций (Store.Events.Get() и т.п.) */
93
+ refresh(): Promise<void>;
94
+ /** Уведомления (PF.UI.Notify) */
95
+ notify(type: NotifyType, message: string): void;
96
+ createDay?(day: any): Promise<any>;
97
+ updateDay(day: any): Promise<void>;
98
+ removeDay(day: any): Promise<void>;
99
+ createSchedule(schedule: any): Promise<any>;
100
+ removeSchedule(schedule: any): Promise<void>;
101
+ createSession(session: any): Promise<any>;
102
+ updateSession(session: any): Promise<void>;
103
+ removeSession(session: any): Promise<void>;
104
+ createSlot(slot: any): Promise<any>;
105
+ updateSlot(slot: any): Promise<void>;
106
+ removeSlot(slot: any): Promise<void>;
107
+ createPlace?(place: any): Promise<any>;
108
+ /**
109
+ * Привязка места к дню (создание расписания). Если не задана —
110
+ * редактор сам создаст расписание фабрикой createSchedule и вызовет createSchedule.
111
+ */
112
+ bindPlaceToDay?(place: any, day: any, makeSchedule: (placeId?: string, dayId?: string) => any): Promise<void>;
113
+ }
114
+ /** Фабрики новых сущностей (по умолчанию — generic-классы модуля) */
115
+ export interface ScheduleFactories {
116
+ createDay?(date: Date): any;
117
+ createSchedule?(placeId?: string, dayId?: string): any;
118
+ createSession?(schedule: any): any;
119
+ createSlot?(schedule: any): any;
120
+ createPlace?(name?: string): any;
121
+ }
122
+ export declare const defaultFactories: Required<ScheduleFactories>;
@@ -0,0 +1 @@
1
+ export * from './ScheduleTypes';
package/dist/sprof.js CHANGED
@@ -1,35 +1,43 @@
1
- import { A as t, a as e, b as o, c as i, d as P, e as u, f as l, g as n, E as d, L as h, h as g, i as r, j as p, k as A, l as B, m as F, n as C, o as f, p as m, P as L, q as R, r as S, s as c, t as k, u as w, v as x, w as D, x as E, y as I, z as T, B as b, C as M } from "./index-Bwtms4B9.js";
1
+ import { A as e, a as t, b as l, c as u, d as i, e as o, f as d, g as h, E as P, L as n, h as S, i as r, j as g, k as c, l as p, m as A, n as F, o as B, p as f, P as m, q as C, r as D, s as L, t as E, u as I, v as R, w as T, x as b, y as k, z as w, S as x, B as y, C as G, D as H, F as M, G as O, H as j, I as q, J as v, K as z } from "./index-CmgBwS-p.js";
2
2
  export {
3
- t as AuthButtonLogin,
4
- e as AuthButtonRefresh,
5
- o as AuthButtonRegister,
6
- i as AuthButtonRestore,
7
- P as AuthChunks,
8
- u as AuthFieldsIds,
9
- l as AuthFormSettings,
10
- n as AuthMethods,
11
- d as EmailField,
12
- h as LoginField,
13
- g as PBadge,
3
+ e as AuthButtonLogin,
4
+ t as AuthButtonRefresh,
5
+ l as AuthButtonRegister,
6
+ u as AuthButtonRestore,
7
+ i as AuthChunks,
8
+ o as AuthFieldsIds,
9
+ d as AuthFormSettings,
10
+ h as AuthMethods,
11
+ P as EmailField,
12
+ n as LoginField,
13
+ S as PBadge,
14
14
  r as PButton,
15
- p as PCard,
16
- A as PCheckBox,
17
- B as PChip,
18
- F as PCrudList,
19
- C as PDateInput,
20
- f as PDialog,
21
- m as PEditDialog,
22
- L as PF,
23
- R as PFM,
24
- S as PHint,
25
- c as PInput,
26
- k as POptionsListSingle,
27
- w as POpts,
28
- x as PSelect,
29
- D as PTableToggle,
30
- E as PToggle,
31
- I as PasswordField,
32
- T as PasswordRepeatField,
33
- b as installSprof,
34
- M as pfName
15
+ g as PCard,
16
+ c as PCheckBox,
17
+ p as PChip,
18
+ A as PCrudList,
19
+ F as PDateInput,
20
+ B as PDialog,
21
+ f as PEditDialog,
22
+ m as PF,
23
+ C as PFM,
24
+ D as PHint,
25
+ L as PInput,
26
+ E as POptionsListSingle,
27
+ I as POpts,
28
+ R as PSelect,
29
+ T as PTableToggle,
30
+ b as PToggle,
31
+ k as PasswordField,
32
+ w as PasswordRepeatField,
33
+ x as Schedule,
34
+ y as ScheduleDay,
35
+ G as ScheduleDefaultLabels,
36
+ H as ScheduleGridEditor,
37
+ M as SchedulePlace,
38
+ O as ScheduleSession,
39
+ j as ScheduleSlot,
40
+ q as ScheduleTimeline,
41
+ v as installSprof,
42
+ z as pfName
35
43
  };