@emailmaker/filemanager 0.0.9 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  import React from 'react';
2
- import { Folder, MenuItem, LibraryMenuKey } from '../../types';
2
+ import { Folder, LibraryMenuKey, MenuItem } from '../../types';
3
3
  interface FolderSidebarProps {
4
4
  selectedFolder: string | null;
5
5
  generateMenuItems: () => MenuItem[];
@@ -0,0 +1,40 @@
1
+ import type { PixieConfig } from 'pixie/dist/types/src/config/default-config';
2
+ import { Tools } from 'pixie/dist/types/src/tools/init-tools';
3
+ export declare const PIXIE_CONTAINER_CLASS_NAME = "fm-pixie-editor";
4
+ /**
5
+ * Контроллер для работы с редактором Pixie.
6
+ * Pixie использует глобальное состояние, поэтому повторная инициализация вызывает ошибки.
7
+ * Этот класс сохраняет контейнер, в который рендерится Pixie, и переиспользует его.
8
+ * Для поддержки нескольких экземпляров Pixie потребуется переработка.
9
+ */
10
+ export declare class PixieController {
11
+ /** Контейнер для рендера Pixie */
12
+ private readonly _container;
13
+ /** Экземпляр Pixie */
14
+ private _instance;
15
+ constructor();
16
+ /** Возвращает селектор контейнера */
17
+ get className(): string;
18
+ /** Получает HTMLCanvasElement редактора, если он инициализирован */
19
+ get canvas(): HTMLCanvasElement | null;
20
+ /** Получает инструменты Pixie, если редактор инициализирован */
21
+ get tools(): Tools | undefined;
22
+ /** Проверяет, инициализирован ли редактор */
23
+ isLoaded(): boolean;
24
+ /**
25
+ * Устанавливает конфигурацию Pixie
26
+ * @param config Конфигурация Pixie
27
+ */
28
+ private _setConfig;
29
+ /**
30
+ * Отображает редактор Pixie в указанном родительском элементе
31
+ * @param config Конфигурация Pixie
32
+ * @param parent Родительский элемент, куда вставляется редактор
33
+ * @param nextSibling Элемент перед которым вставляется контейнер (по умолчанию первый ребёнок)
34
+ */
35
+ show(config: PixieConfig, parent: ParentNode, nextSibling?: ChildNode | null): Promise<void>;
36
+ /** Закрывает редактор Pixie, удаляя контейнер из DOM */
37
+ close(): void;
38
+ }
39
+ /** Глобальный экземпляр контроллера Pixie */
40
+ export declare const pixieController: PixieController;
package/file-manager.css CHANGED
@@ -392,6 +392,8 @@
392
392
  .em-filemanager .uploadButton {
393
393
  display: grid;
394
394
  grid-template-columns: 3fr 1fr;
395
+ width: 100%;
396
+ margin-bottom: 8px;
395
397
  }
396
398
 
397
399
  .em-filemanager .folderMenu {
@@ -463,164 +465,185 @@
463
465
  margin: 12px 0 !important;
464
466
  }
465
467
 
466
- /* Стили для кнопки загрузки */
467
- .em-filemanager .uploadButton {
468
- width: 100%;
469
- margin-bottom: 8px;
470
- }
471
-
472
- /* .folderMenu :global(.ant-tree-treenode-selected) .folderLabelItem {
473
- color: #1890ff !important;
474
- } */
475
- .em-filemanager .container {
476
- position: fixed;
477
- top: 20px;
478
- left: 20px;
479
- z-index: 1000;
480
- max-width: 400px;
481
- min-width: 320px;
482
- }
483
-
484
- .em-filemanager .uploadCard {
485
- box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
486
- border-radius: 8px;
487
- border: 1px solid #d9d9d9;
488
- }
489
-
490
- .em-filemanager .header {
491
- display: flex;
492
- justify-content: space-between;
493
- align-items: center;
494
- width: 100%;
495
- }
496
-
497
- .em-filemanager .headerButton {
498
- padding: 0;
499
- width: 24px;
500
- height: 24px;
468
+ .em-filemanager .uploadButton .ant-btn {
501
469
  display: flex;
502
470
  align-items: center;
503
471
  justify-content: center;
472
+ gap: 8px;
504
473
  }
505
474
 
506
- .em-filemanager .headerButton:hover {
507
- background-color: rgba(0, 0, 0, 0.04);
508
- }
509
-
510
- .em-filemanager .fileList {
511
- max-height: 300px;
512
- overflow-y: auto;
513
- }
514
-
515
- .em-filemanager .fileItem {
516
- padding: 8px 0 !important;
517
- border-bottom: 1px solid var(--colorBorderSecondary);
518
- }
519
-
520
- .em-filemanager .fileItem:last-child {
521
- border-bottom: none;
522
- }
523
-
524
- .em-filemanager .fileAvatar {
525
- background-color: transparent !important;
526
- }
527
-
528
- .em-filemanager .fileInfo {
529
- display: flex;
530
- flex-direction: column;
531
- gap: 2px;
532
- }
533
-
534
- .em-filemanager .fileName {
535
- font-size: 13px;
536
- line-height: 1.2;
537
- max-width: 200px;
538
- }
539
-
540
- .em-filemanager .fileSize {
541
- font-size: 11px;
542
- line-height: 1;
543
- }
544
-
545
- .em-filemanager .progressBar {
546
- margin-top: 4px;
547
- }
548
-
549
- .em-filemanager .errorNote {
550
- margin-top: 8px;
551
- padding: 8px;
552
- background-color: #fff2f0;
553
- border: 1px solid #ffccc7;
554
- border-radius: 4px;
555
- }
556
-
557
- /* Минимизированное состояние */
558
- .em-filemanager .minimizedContainer {
559
- position: fixed;
560
- top: 20px;
561
- left: 20px;
562
- z-index: 1000;
563
- }
564
-
565
- .em-filemanager .minimizedButton {
566
- font-size: 12px;
567
- height: 28px;
568
- padding: 0 12px;
569
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
570
- }
571
-
572
- /* Скроллбар для списка файлов */
573
- .em-filemanager .fileList::-webkit-scrollbar {
574
- width: 6px;
575
- }
576
-
577
- .em-filemanager .fileList::-webkit-scrollbar-track {
578
- background: #f1f1f1;
579
- border-radius: 3px;
580
- }
581
-
582
- .em-filemanager .fileList::-webkit-scrollbar-thumb {
583
- background: #c1c1c1;
584
- border-radius: 3px;
585
- }
586
-
587
- .em-filemanager .fileList::-webkit-scrollbar-thumb:hover {
588
- background: #a8a8a8;
589
- }
590
-
591
- /* Анимации */
592
- .em-filemanager .container {
593
- animation: slideInFromLeft 0.3s ease-out;
594
- }
475
+ /* .folderMenu :global(.ant-tree-treenode-selected) .folderLabelItem {
476
+ color: #1890ff !important;
477
+ } */
595
478
 
596
- .em-filemanager .minimizedContainer {
597
- animation: slideInFromLeft 0.3s ease-out;
479
+ .em-filemanager .buttonWrapper {
480
+ overflow: hidden;
481
+ margin-bottom: 24px;
482
+ border-radius: calc(var(--borderRadius) * 1px);
598
483
  }
599
484
 
600
- @keyframes slideInFromLeft {
601
- from {
602
- transform: translateX(-100%);
603
- opacity: 0;
604
- }
605
- to {
606
- transform: translateX(0);
607
- opacity: 1;
608
- }
485
+ .em-filemanager .uploadButtonTitle {
486
+ white-space: nowrap;
487
+ overflow: hidden;
488
+ text-overflow: ellipsis;
609
489
  }
610
490
 
611
- /* Адаптивность */
612
- @media (max-width: 768px) {
613
- .em-filemanager .container {
614
- left: 10px;
615
- right: 10px;
616
- max-width: calc(100vw - 20px);
617
- min-width: auto;
618
- }
619
-
620
- .em-filemanager .minimizedContainer {
621
- left: 10px;
622
- }
491
+ .em-filemanager .emptyFolderContainer {
492
+ margin-left: -40px;
493
+ -webkit-user-select: none;
494
+ user-select: none;
495
+ cursor: default;
496
+ color: var(--colorTextTertiary);
623
497
  }
498
+ .em-filemanager .container {
499
+ position: fixed;
500
+ top: 20px;
501
+ left: 20px;
502
+ z-index: 1000;
503
+ max-width: 400px;
504
+ min-width: 320px;
505
+ }
506
+
507
+ .em-filemanager .uploadCard {
508
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
509
+ border-radius: 8px;
510
+ border: 1px solid #d9d9d9;
511
+ }
512
+
513
+ .em-filemanager .header {
514
+ display: flex;
515
+ justify-content: space-between;
516
+ align-items: center;
517
+ width: 100%;
518
+ }
519
+
520
+ .em-filemanager .headerButton {
521
+ padding: 0;
522
+ width: 24px;
523
+ height: 24px;
524
+ display: flex;
525
+ align-items: center;
526
+ justify-content: center;
527
+ }
528
+
529
+ .em-filemanager .headerButton:hover {
530
+ background-color: rgba(0, 0, 0, 0.04);
531
+ }
532
+
533
+ .em-filemanager .fileList {
534
+ max-height: 300px;
535
+ overflow-y: auto;
536
+ }
537
+
538
+ .em-filemanager .fileItem {
539
+ padding: 8px 0 !important;
540
+ border-bottom: 1px solid var(--colorBorderSecondary);
541
+ }
542
+
543
+ .em-filemanager .fileItem:last-child {
544
+ border-bottom: none;
545
+ }
546
+
547
+ .em-filemanager .fileAvatar {
548
+ background-color: transparent !important;
549
+ }
550
+
551
+ .em-filemanager .fileInfo {
552
+ display: flex;
553
+ flex-direction: column;
554
+ gap: 2px;
555
+ }
556
+
557
+ .em-filemanager .fileName {
558
+ font-size: 13px;
559
+ line-height: 1.2;
560
+ max-width: 200px;
561
+ }
562
+
563
+ .em-filemanager .fileSize {
564
+ font-size: 11px;
565
+ line-height: 1;
566
+ }
567
+
568
+ .em-filemanager .progressBar {
569
+ margin-top: 4px;
570
+ }
571
+
572
+ .em-filemanager .errorNote {
573
+ margin-top: 8px;
574
+ padding: 8px;
575
+ background-color: #fff2f0;
576
+ border: 1px solid #ffccc7;
577
+ border-radius: 4px;
578
+ }
579
+
580
+ /* Минимизированное состояние */
581
+ .em-filemanager .minimizedContainer {
582
+ position: fixed;
583
+ top: 20px;
584
+ left: 20px;
585
+ z-index: 1000;
586
+ }
587
+
588
+ .em-filemanager .minimizedButton {
589
+ font-size: 12px;
590
+ height: 28px;
591
+ padding: 0 12px;
592
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
593
+ }
594
+
595
+ /* Скроллбар для списка файлов */
596
+ .em-filemanager .fileList::-webkit-scrollbar {
597
+ width: 6px;
598
+ }
599
+
600
+ .em-filemanager .fileList::-webkit-scrollbar-track {
601
+ background: #f1f1f1;
602
+ border-radius: 3px;
603
+ }
604
+
605
+ .em-filemanager .fileList::-webkit-scrollbar-thumb {
606
+ background: #c1c1c1;
607
+ border-radius: 3px;
608
+ }
609
+
610
+ .em-filemanager .fileList::-webkit-scrollbar-thumb:hover {
611
+ background: #a8a8a8;
612
+ }
613
+
614
+ /* Анимации */
615
+ .em-filemanager .container {
616
+ animation: slideInFromLeft 0.3s ease-out;
617
+ }
618
+
619
+ .em-filemanager .minimizedContainer {
620
+ animation: slideInFromLeft 0.3s ease-out;
621
+ }
622
+
623
+ @keyframes slideInFromLeft {
624
+ from {
625
+ transform: translateX(-100%);
626
+ opacity: 0;
627
+ }
628
+ to {
629
+ transform: translateX(0);
630
+ opacity: 1;
631
+ }
632
+ }
633
+
634
+ /* Адаптивность */
635
+ @media (max-width: 768px) {
636
+ .em-filemanager .container {
637
+ left: 10px;
638
+ right: 10px;
639
+ max-width: calc(100vw - 20px);
640
+ min-width: auto;
641
+ }
642
+
643
+ .em-filemanager .minimizedContainer {
644
+ left: 10px;
645
+ }
646
+ }
624
647
 
625
648
  .em-filemanager .gifTab {
626
649
  padding: 16px;
@@ -1204,8 +1227,9 @@
1204
1227
  }
1205
1228
  .em-filemanager .file-manager__layout .file-manager-sider .ant-dropdown-button {
1206
1229
  grid-template-columns: 10fr 40px;
1207
- margin-bottom: 24px;
1230
+ margin-bottom: 0;
1208
1231
  gap: 2px;
1232
+ border-radius: calc(var(--borderRadius) * 1px);
1209
1233
  }
1210
1234
  .em-filemanager .file-manager__layout .file-manager-sider .ant-dropdown-button button {
1211
1235
  height: 44px;
@@ -1214,6 +1238,7 @@
1214
1238
  .em-filemanager .file-manager__layout .file-manager-sider .ant-dropdown-button .ant-btn-compact-first-item {
1215
1239
  justify-content: flex-start;
1216
1240
  width: 100%;
1241
+ min-width: 160px;
1217
1242
  border-radius: calc(var(--borderRadius) * 1px) 2px 2px calc(var(--borderRadius) * 1px);
1218
1243
  background-color: var(--colorPrimary);
1219
1244
  }
@@ -1273,9 +1298,10 @@
1273
1298
  width: inherit;
1274
1299
  }
1275
1300
  .em-filemanager .file-manager__layout .file-manager-sider .ant-tree .ant-tree-switcher {
1276
- height: 40px;
1277
- width: 40px;
1278
- margin-top: 0;
1301
+ height: 36px;
1302
+ width: 36px;
1303
+ margin-top: 2px;
1304
+ margin-left: -4px;
1279
1305
  display: flex;
1280
1306
  align-items: center;
1281
1307
  justify-content: center;
@@ -1283,8 +1309,15 @@
1283
1309
  flex-shrink: 0; /* Запрещаем сжатие переключателя */
1284
1310
  }
1285
1311
  .em-filemanager .file-manager__layout .file-manager-sider .ant-tree .ant-tree-switcher:before {
1286
- height: 40px;
1287
- width: 40px;
1312
+ margin-top: 2px;
1313
+ margin-left: -2px;
1314
+ height: 36px;
1315
+ width: 36px;
1316
+ }
1317
+ .em-filemanager .file-manager__layout .file-manager-sider .ant-tree .ant-tree-switcher > .anticon {
1318
+ font-size: 14px;
1319
+ margin-left: -4px;
1320
+ margin-top: 2px;
1288
1321
  }
1289
1322
  .em-filemanager .file-manager__layout .file-manager-sider .ant-tree .folder-item-container {
1290
1323
  width: 100%;
@@ -1516,6 +1549,7 @@
1516
1549
  .em-filemanager .file-manager__layout .sidebar-container {
1517
1550
  height: 100%;
1518
1551
  padding: 36px 24px 36px 40px;
1552
+ overflow: hidden;
1519
1553
  }
1520
1554
  .em-filemanager .file-manager__layout .sidebar-container .ant-tree-treenode {
1521
1555
  display: flex;