CreateScrollablePanel.ts 3,6 КБ
Newer Older
avathar's avatar
avathar включено в состав коммита
1
2
// @ts-nocheck

Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
3
4
5
6
7
// import 'phaser';
// import UIPlugin from 'phaser3-rex-plugins/templates/ui/ui-plugin';
import { COLOR_LIGHT, COLOR_PRIMARY, COLOR_DARK } from './Const';
import { DefaultDepth, DragObjectDepth } from './Const';
import CreateColumnPanelsBox from './CreateColumnPanelsBox';
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
8
9
import CreateHeader from './CreateHeader';
import AddResizeController from './AddResizeController';
avathar's avatar
avathar включено в состав коммита
10
import { TreeNode } from 'src/types/stores/kanvaso';
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
11

Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
12
13
type Scene = {
  rexUI: {
avathar's avatar
avathar включено в состав коммита
14
15
16
17
    add: {
      sizer: (config: SizerConfig) => Sizer;
    };
  };
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
18
19
20
21
22
};

type SizerConfig = {
  orientation: string;
  space: {
avathar's avatar
avathar включено в состав коммита
23
24
25
26
    left: number;
    right: number;
    top: number;
    bottom: number;
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
27
28
29
30
31
32
33
  };
};

type Sizer = {
  add: (item: any, config: any) => void;
};

avathar's avatar
avathar включено в состав коммита
34
35
const CreateScrollablePanel = (
  scene: Scene,
avathar's avatar
avathar включено в состав коммита
36
  objectTree: TreeNode,
avathar's avatar
avathar включено в состав коммита
37
  registry,
avathar's avatar
avathar включено в состав коммита
38
): ScrollablePanel => {
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
39
  const config: ScrollablePanelConfig = {
avathar's avatar
avathar включено в состав коммита
40
    adaptThumbSizeMode: true,
avathar's avatar
avathar включено в состав коммита
41
42
43
44
45
46
47
    width: 400,
    height: 400,
    background: scene.rexUI.add.roundRectangle({
      radius: 10,
      strokeColor: COLOR_DARK,
    }),
    panel: {
avathar's avatar
avathar включено в состав коммита
48
49
      child: CreateColumnPanelsBox(
        scene,
avathar's avatar
avathar включено в состав коммита
50
        objectTree ? objectTree[0]?.childrens[0] : {},
avathar's avatar
avathar включено в состав коммита
51
        registry,
avathar's avatar
avathar включено в состав коммита
52
      ),
avathar's avatar
avathar включено в состав коммита
53
54
55
      mask: {
        padding: 2,
        updateMode: 'everyTick',
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
56
      },
avathar's avatar
avathar включено в состав коммита
57
58
59
60
    },
    sliderX: {
      track: { width: 20, radius: 10, color: COLOR_DARK },
      thumb: { radius: 13, color: COLOR_LIGHT },
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
61
62
      hideUnscrollableSlider: true,
      input: 'click',
avathar's avatar
avathar включено в состав коммита
63
64
65
66
    },
    sliderY: {
      track: { width: 20, radius: 10, color: COLOR_DARK },
      thumb: { radius: 13, color: COLOR_LIGHT },
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
67
68
      hideUnscrollableSlider: true,
      input: 'click',
avathar's avatar
avathar включено в состав коммита
69
70
71
72
73
74
75
76
77
78
79
    },
    scrollerX: false,
    scrollerY: false,
    space: {
      left: 10,
      right: 10,
      top: 10,
      bottom: 10,
      sliderX: 10,
      sliderY: 10,
    },
avathar's avatar
avathar включено в состав коммита
80
    header: CreateHeader(scene, objectTree[0], registry),
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
81
  };
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
82

Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
83
84
85
  // const config2: ScrollablePanelConfig = {
  //   // width: 400,
  //   // height: 400,
avathar's avatar
avathar включено в состав коммита
86

Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
  //   panel: {
  //     child: CreateColumnPanelsBox(
  //       scene,
  //       objekto ? objekto[0]?.children[0] : {},
  //     ),
  //     mask: {
  //       // padding: 2,
  //       updateMode: 'everyTick',
  //     },
  //   },
  //   sliderX: {
  //     track: { width: 20, radius: 10, color: COLOR_DARK },
  //     thumb: { radius: 13, color: COLOR_LIGHT },
  //     hideUnscrollableSlider: true,
  //     input: 'click',
  //   },
  //   sliderY: {
  //     track: { width: 20, radius: 10, color: COLOR_DARK },
  //     thumb: { radius: 13, color: COLOR_LIGHT },
  //     hideUnscrollableSlider: true,
  //     input: 'click',
  //   },
  //   scrollerX: true,
  //   scrollerY: true,
  //   space: {
  //     // left: 10,
  //     // right: 10,
  //     // top: 10,
  //     // bottom: 10,
  //     sliderX: 10,
  //     sliderY: 10,
  //   },
  //   header: CreateHeader(scene, objekto ? objekto[0]?.nomo?.enhavo : ''),
  // };
avathar's avatar
avathar включено в состав коммита
121

Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
122
  // Создаем ScrollablePanel
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
123
  const scrollablePanel = scene.rexUI.add.scrollablePanel(config);
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
124
  // const scrollablePanel2 = scene.rexUI.add.scrollablePanel(config2);
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
125
126
127

  // Устанавливаем возможность перетаскивания
  scrollablePanel.setDraggable('header');
avathar's avatar
avathar включено в состав коммита
128
  // scrollablePanel2.setDraggable('header');
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
129
130
131

  // Вызываем метод layout для обновления компоновки
  scrollablePanel.layout();
avathar's avatar
avathar включено в состав коммита
132
  // scrollablePanel2.layout();
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
133
134

  // Добавляем контроллер для изменения размера
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
135
  AddResizeController(scrollablePanel);
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
136
  // AddResizeController(scrollablePanel2);
avathar's avatar
avathar включено в состав коммита
137

Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
138
  // scrollablePanel.add(scrollablePanel2);
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
139

avathar's avatar
avathar включено в состав коммита
140
141
  return scrollablePanel;
};
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
142
143

export default CreateScrollablePanel;