@dxtmisha/wiki 0.57.1 → 0.57.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{defineProperty-3CuEayIP.js → defineProperty-Dcl1xgfx.js} +4 -4
- package/dist/library.js +2 -1
- package/dist/storybook.js +1 -1
- package/package.json +1 -1
- package/src/media/functional/figma/classes/FigmaPostAbstract/FigmaPostAbstract.en.mdx +46 -0
- package/src/media/functional/figma/classes/FigmaPostAbstract/FigmaPostAbstract.ru.mdx +46 -0
- package/src/media/functional/figma/classes/FigmaPostAbstract/FigmaPostAbstract.vi.mdx +46 -0
- package/src/media/functional/figma/classes/FigmaPostCode/FigmaPostCode.en.mdx +3 -23
- package/src/media/functional/figma/classes/FigmaPostCode/FigmaPostCode.ru.mdx +3 -23
- package/src/media/functional/figma/classes/FigmaPostCode/FigmaPostCode.vi.mdx +3 -23
- package/src/media/functional/figma/functions/fetchClientStorage/fetchClientStorage.en.mdx +46 -0
- package/src/media/functional/figma/functions/fetchClientStorage/fetchClientStorage.ru.mdx +46 -0
- package/src/media/functional/figma/functions/fetchClientStorage/fetchClientStorage.vi.mdx +46 -0
- package/src/media/functional/figma/functions/fetchFrameSelection/fetchFrameSelection.en.mdx +34 -0
- package/src/media/functional/figma/functions/fetchFrameSelection/fetchFrameSelection.ru.mdx +34 -0
- package/src/media/functional/figma/functions/fetchFrameSelection/fetchFrameSelection.vi.mdx +34 -0
- package/src/media/functional/figma/functions/fetchFrameStyles/fetchFrameStyles.en.mdx +49 -0
- package/src/media/functional/figma/functions/fetchFrameStyles/fetchFrameStyles.ru.mdx +49 -0
- package/src/media/functional/figma/functions/fetchFrameStyles/fetchFrameStyles.vi.mdx +49 -0
- package/src/media/functional/figma/functions/fetchFramesSelected/fetchFramesSelected.en.mdx +19 -8
- package/src/media/functional/figma/functions/fetchFramesSelected/fetchFramesSelected.ru.mdx +18 -7
- package/src/media/functional/figma/functions/fetchFramesSelected/fetchFramesSelected.vi.mdx +19 -8
- package/src/media/functional/figma/functions/fetchStorage/fetchStorage.en.mdx +42 -0
- package/src/media/functional/figma/functions/fetchStorage/fetchStorage.ru.mdx +42 -0
- package/src/media/functional/figma/functions/fetchStorage/fetchStorage.vi.mdx +42 -0
- package/src/media/functional/figma/functions/fetchTopLevelFrames/fetchTopLevelFrames.en.mdx +29 -7
- package/src/media/functional/figma/functions/fetchTopLevelFrames/fetchTopLevelFrames.ru.mdx +28 -6
- package/src/media/functional/figma/functions/fetchTopLevelFrames/fetchTopLevelFrames.vi.mdx +29 -7
- package/src/media/functional/figma/functions/sendClientStorage/sendClientStorage.en.mdx +29 -0
- package/src/media/functional/figma/functions/sendClientStorage/sendClientStorage.ru.mdx +29 -0
- package/src/media/functional/figma/functions/sendClientStorage/sendClientStorage.vi.mdx +29 -0
- package/src/media/functional/figma/functions/sendFrameSelection/sendFrameSelection.en.mdx +28 -0
- package/src/media/functional/figma/functions/sendFrameSelection/sendFrameSelection.ru.mdx +28 -0
- package/src/media/functional/figma/functions/sendFrameSelection/sendFrameSelection.vi.mdx +28 -0
- package/src/media/functional/figma/functions/sendFrameStyles/sendFrameStyles.en.mdx +40 -0
- package/src/media/functional/figma/functions/sendFrameStyles/sendFrameStyles.ru.mdx +40 -0
- package/src/media/functional/figma/functions/sendFrameStyles/sendFrameStyles.vi.mdx +40 -0
- package/src/media/functional/figma/functions/sendFramesSelected/sendFramesSelected.en.mdx +29 -0
- package/src/media/functional/figma/functions/sendFramesSelected/sendFramesSelected.ru.mdx +29 -0
- package/src/media/functional/figma/functions/sendFramesSelected/sendFramesSelected.vi.mdx +29 -0
- package/src/media/functional/figma/functions/sendStorage/sendStorage.en.mdx +30 -0
- package/src/media/functional/figma/functions/sendStorage/sendStorage.ru.mdx +30 -0
- package/src/media/functional/figma/functions/sendStorage/sendStorage.vi.mdx +30 -0
- package/src/media/functional/figma-code/classes/FigmaClientStorage/FigmaClientStorage.en.mdx +64 -0
- package/src/media/functional/figma-code/classes/FigmaClientStorage/FigmaClientStorage.ru.mdx +64 -0
- package/src/media/functional/figma-code/classes/FigmaClientStorage/FigmaClientStorage.vi.mdx +64 -0
- package/src/media/functional/figma-code/classes/FigmaFrame/FigmaFrame.en.mdx +168 -35
- package/src/media/functional/figma-code/classes/FigmaFrame/FigmaFrame.ru.mdx +168 -35
- package/src/media/functional/figma-code/classes/FigmaFrame/FigmaFrame.vi.mdx +168 -35
- package/src/media/functional/figma-code/classes/FigmaFramesSelected/FigmaFramesSelected.en.mdx +23 -69
- package/src/media/functional/figma-code/classes/FigmaFramesSelected/FigmaFramesSelected.ru.mdx +22 -68
- package/src/media/functional/figma-code/classes/FigmaFramesSelected/FigmaFramesSelected.vi.mdx +23 -69
- package/src/media/functional/figma-code/classes/FigmaItem/FigmaItem.en.mdx +79 -56
- package/src/media/functional/figma-code/classes/FigmaItem/FigmaItem.ru.mdx +79 -56
- package/src/media/functional/figma-code/classes/FigmaItem/FigmaItem.vi.mdx +79 -56
- package/src/media/functional/figma-code/classes/FigmaPluginMessenger/FigmaPluginMessenger.en.mdx +18 -48
- package/src/media/functional/figma-code/classes/FigmaPluginMessenger/FigmaPluginMessenger.ru.mdx +18 -48
- package/src/media/functional/figma-code/classes/FigmaPluginMessenger/FigmaPluginMessenger.vi.mdx +18 -48
- package/src/media/functional/figma-code/classes/FigmaStorage/FigmaStorage.en.mdx +22 -67
- package/src/media/functional/figma-code/classes/FigmaStorage/FigmaStorage.ru.mdx +22 -67
- package/src/media/functional/figma-code/classes/FigmaStorage/FigmaStorage.vi.mdx +22 -67
- package/src/media/functional/figma-code/classes/FigmaStorageData/FigmaStorageData.en.mdx +57 -0
- package/src/media/functional/figma-code/classes/FigmaStorageData/FigmaStorageData.ru.mdx +57 -0
- package/src/media/functional/figma-code/classes/FigmaStorageData/FigmaStorageData.vi.mdx +57 -0
- package/src/media/functional/figma-code/classes/FigmaTopLevelFrames/FigmaTopLevelFrames.en.mdx +24 -27
- package/src/media/functional/figma-code/classes/FigmaTopLevelFrames/FigmaTopLevelFrames.ru.mdx +23 -26
- package/src/media/functional/figma-code/classes/FigmaTopLevelFrames/FigmaTopLevelFrames.vi.mdx +24 -27
- package/src/media/functional/figma-code/functions/getFigmaFrameById/getFigmaFrameById.en.mdx +28 -0
- package/src/media/functional/figma-code/functions/getFigmaFrameById/getFigmaFrameById.ru.mdx +28 -0
- package/src/media/functional/figma-code/functions/getFigmaFrameById/getFigmaFrameById.vi.mdx +28 -0
- package/src/media/functional/figma-code/functions/getFigmaItemById/getFigmaItemById.en.mdx +43 -0
- package/src/media/functional/figma-code/functions/getFigmaItemById/getFigmaItemById.ru.mdx +43 -0
- package/src/media/functional/figma-code/functions/getFigmaItemById/getFigmaItemById.vi.mdx +43 -0
- package/src/media/functional/figma-code/functions/getFigmaItemByIdOrRoot/getFigmaItemByIdOrRoot.en.mdx +30 -0
- package/src/media/functional/figma-code/functions/getFigmaItemByIdOrRoot/getFigmaItemByIdOrRoot.ru.mdx +30 -0
- package/src/media/functional/figma-code/functions/getFigmaItemByIdOrRoot/getFigmaItemByIdOrRoot.vi.mdx +30 -0
- package/src/media/functional/figma-code/functions/makeFigmaFrameSelection/makeFigmaFrameSelection.en.mdx +21 -0
- package/src/media/functional/figma-code/functions/makeFigmaFrameSelection/makeFigmaFrameSelection.ru.mdx +21 -0
- package/src/media/functional/figma-code/functions/makeFigmaFrameSelection/makeFigmaFrameSelection.vi.mdx +21 -0
- package/src/media/functional/figma-code/functions/makeFigmaTexts/makeFigmaTexts.en.mdx +28 -0
- package/src/media/functional/figma-code/functions/makeFigmaTexts/makeFigmaTexts.ru.mdx +28 -0
- package/src/media/functional/figma-code/functions/makeFigmaTexts/makeFigmaTexts.vi.mdx +28 -0
- package/src/media/functional/figma-code/functions/setupClientStorage/setupClientStorage.en.mdx +28 -0
- package/src/media/functional/figma-code/functions/setupClientStorage/setupClientStorage.ru.mdx +28 -0
- package/src/media/functional/figma-code/functions/setupClientStorage/setupClientStorage.vi.mdx +28 -0
- package/src/media/functional/figma-code/functions/setupFrameSelection/setupFrameSelection.en.mdx +22 -0
- package/src/media/functional/figma-code/functions/setupFrameSelection/setupFrameSelection.ru.mdx +22 -0
- package/src/media/functional/figma-code/functions/setupFrameSelection/setupFrameSelection.vi.mdx +22 -0
- package/src/media/functional/figma-code/functions/setupFrameStyles/setupFrameStyles.en.mdx +19 -0
- package/src/media/functional/figma-code/functions/setupFrameStyles/setupFrameStyles.ru.mdx +19 -0
- package/src/media/functional/figma-code/functions/setupFrameStyles/setupFrameStyles.vi.mdx +19 -0
- package/src/media/functional/figma-code/functions/setupStorage/setupStorage.en.mdx +28 -0
- package/src/media/functional/figma-code/functions/setupStorage/setupStorage.ru.mdx +28 -0
- package/src/media/functional/figma-code/functions/setupStorage/setupStorage.vi.mdx +28 -0
- package/src/media/functional/figma-code/functions/toFrameSelection/toFrameSelection.en.mdx +27 -0
- package/src/media/functional/figma-code/functions/toFrameSelection/toFrameSelection.ru.mdx +27 -0
- package/src/media/functional/figma-code/functions/toFrameSelection/toFrameSelection.vi.mdx +27 -0
- package/src/media/functional/figma-ref/composables/useFigmaClientStorage/useFigmaClientStorage.en.mdx +26 -0
- package/src/media/functional/figma-ref/composables/useFigmaClientStorage/useFigmaClientStorage.ru.mdx +26 -0
- package/src/media/functional/figma-ref/composables/useFigmaClientStorage/useFigmaClientStorage.vi.mdx +26 -0
- package/src/media/functional/figma-ref/composables/useFigmaFrameSelection/useFigmaFrameSelection.en.mdx +35 -0
- package/src/media/functional/figma-ref/composables/useFigmaFrameSelection/useFigmaFrameSelection.ru.mdx +35 -0
- package/src/media/functional/figma-ref/composables/useFigmaFrameSelection/useFigmaFrameSelection.vi.mdx +35 -0
- package/src/media/functional/figma-ref/composables/useFigmaFrameStyles/useFigmaFrameStyles.en.mdx +33 -0
- package/src/media/functional/figma-ref/composables/useFigmaFrameStyles/useFigmaFrameStyles.ru.mdx +33 -0
- package/src/media/functional/figma-ref/composables/useFigmaFrameStyles/useFigmaFrameStyles.vi.mdx +33 -0
- package/src/media/functional/figma-ref/composables/useFigmaStorage/useFigmaStorage.en.mdx +28 -0
- package/src/media/functional/figma-ref/composables/useFigmaStorage/useFigmaStorage.ru.mdx +28 -0
- package/src/media/functional/figma-ref/composables/useFigmaStorage/useFigmaStorage.vi.mdx +28 -0
- package/src/media/functional/figma-ref/composables/useFigmaUiFrames/useFigmaUiFrames.en.mdx +7 -12
- package/src/media/functional/figma-ref/composables/useFigmaUiFrames/useFigmaUiFrames.ru.mdx +7 -12
- package/src/media/functional/figma-ref/composables/useFigmaUiFrames/useFigmaUiFrames.vi.mdx +8 -13
- package/src/media/functional/figma-ref/composables/useFigmaUiSelected/useFigmaUiSelected.en.mdx +12 -17
- package/src/media/functional/figma-ref/composables/useFigmaUiSelected/useFigmaUiSelected.ru.mdx +13 -18
- package/src/media/functional/figma-ref/composables/useFigmaUiSelected/useFigmaUiSelected.vi.mdx +14 -19
- package/src/media/functional/functional/composables/useApiAsyncRef/useApiAsyncRef.en.mdx +2 -3
- package/src/media/functional/functional/composables/useApiAsyncRef/useApiAsyncRef.ru.mdx +2 -3
- package/src/media/functional/functional/composables/useApiAsyncRef/useApiAsyncRef.vi.mdx +2 -3
- package/src/media/functional/functional/composables/useApiManagementRef/useApiManagementAsyncRef.en.mdx +41 -0
- package/src/media/functional/functional/composables/useApiManagementRef/useApiManagementAsyncRef.ru.mdx +41 -0
- package/src/media/functional/functional/composables/useApiManagementRef/useApiManagementAsyncRef.vi.mdx +41 -0
- package/src/media/functional/functional/composables/useApiManagementRef/useApiManagementRef.en.mdx +12 -0
- package/src/media/functional/functional/composables/useApiManagementRef/useApiManagementRef.ru.mdx +12 -0
- package/src/media/functional/functional/composables/useApiManagementRef/useApiManagementRef.vi.mdx +6 -0
- package/src/media/functional/functional/composables/useApiRef/useApiRef.en.mdx +12 -9
- package/src/media/functional/functional/composables/useApiRef/useApiRef.ru.mdx +12 -9
- package/src/media/functional/functional/composables/useApiRef/useApiRef.vi.mdx +11 -9
- package/src/media/functional/nitro-basic/functions/getInject.en.mdx +27 -0
- package/src/media/functional/nitro-basic/functions/getInject.ru.mdx +27 -0
- package/src/media/functional/nitro-basic/functions/getInject.vi.mdx +20 -0
- package/src/media/functional/ui-figma/about/about.en.mdx +52 -0
- package/src/media/functional/ui-figma/about/about.ru.mdx +52 -0
- package/src/media/functional/ui-figma/about/about.vi.mdx +52 -0
- package/src/media/functional/ui-figma/frames/frames.en.mdx +58 -0
- package/src/media/functional/ui-figma/frames/frames.ru.mdx +58 -0
- package/src/media/functional/ui-figma/frames/frames.vi.mdx +58 -0
- package/src/media/functional/ui-figma/messenger/messenger.en.mdx +67 -0
- package/src/media/functional/ui-figma/messenger/messenger.ru.mdx +67 -0
- package/src/media/functional/ui-figma/messenger/messenger.vi.mdx +67 -0
- package/src/media/functional/ui-figma/selection/selection.en.mdx +65 -0
- package/src/media/functional/ui-figma/selection/selection.ru.mdx +65 -0
- package/src/media/functional/ui-figma/selection/selection.vi.mdx +65 -0
- package/src/media/functional/ui-figma/storage/storage.en.mdx +53 -0
- package/src/media/functional/ui-figma/storage/storage.ru.mdx +53 -0
- package/src/media/functional/ui-figma/storage/storage.vi.mdx +53 -0
- package/src/media/functional/ui-figma/styles/styles.en.mdx +57 -0
- package/src/media/functional/ui-figma/styles/styles.ru.mdx +57 -0
- package/src/media/functional/ui-figma/styles/styles.vi.mdx +57 -0
- /package/src/media/functional/ui/{wiki-data.en.mdx → wiki/wiki-data.en.mdx} +0 -0
- /package/src/media/functional/ui/{wiki-data.ru.mdx → wiki/wiki-data.ru.mdx} +0 -0
- /package/src/media/functional/ui/{wiki-data.vi.mdx → wiki/wiki-data.vi.mdx} +0 -0
|
@@ -1,61 +1,194 @@
|
|
|
1
|
-
import {Meta} from '@storybook/addon-docs/blocks'
|
|
1
|
+
import { Meta, Source } from '@storybook/addon-docs/blocks'
|
|
2
2
|
|
|
3
|
-
<Meta title='@dxtmisha/en/figma-code/Classes/FigmaFrame -
|
|
3
|
+
<Meta title='@dxtmisha/en/figma-code/Classes/FigmaFrame - Analyzing Figma structure'/>
|
|
4
4
|
|
|
5
|
-
# FigmaFrame
|
|
5
|
+
# Class `FigmaFrame`
|
|
6
6
|
|
|
7
|
-
A
|
|
7
|
+
A utility class for analyzing and interacting with the structure of Figma pages or selections. It recursively scans node trees, filters elements by type, and provides helper methods for text extraction and screenshot generation.
|
|
8
8
|
|
|
9
9
|
## Key Features
|
|
10
10
|
|
|
11
|
-
- **
|
|
12
|
-
- **
|
|
13
|
-
- **Text Aggregation** —
|
|
14
|
-
- **
|
|
11
|
+
- **Recursive Scanning** — Automatically indexes all nested elements within the provided context (page or selection).
|
|
12
|
+
- **Selection Support** — Can be initialized to target either the entire document page or only the user's current selection.
|
|
13
|
+
- **Text Aggregation** — The `getTexts()` method groups identical text strings together, providing a list of unique values and their associated node IDs.
|
|
14
|
+
- **Automated Export** — Simplifies the process of generating screenshots for main elements within the frame.
|
|
15
15
|
|
|
16
16
|
## Initialization
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
**Parameters:**
|
|
21
|
-
- `page: UiFigmaNode` — The root node (usually `figma.currentPage` or a `PageNode`) for analysis.
|
|
22
|
-
- `selection: boolean = false` — If `true`, the instance will only process nodes within the current selection instead of the entire page.
|
|
18
|
+
Create a new instance by providing a starting node (usually a page) and specifying if it should focus on the selection.
|
|
23
19
|
|
|
24
20
|
```typescript
|
|
25
21
|
import { FigmaFrame } from '@dxtmisha/figma-code'
|
|
26
22
|
|
|
27
|
-
//
|
|
28
|
-
const
|
|
23
|
+
// Analyze the entire current page
|
|
24
|
+
const frameAnalyzer = new FigmaFrame(figma.currentPage)
|
|
25
|
+
|
|
26
|
+
// Analyze only the selected items
|
|
27
|
+
const selectionAnalyzer = new FigmaFrame(figma.currentPage, true)
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Methods
|
|
31
|
+
|
|
32
|
+
### State and Navigation
|
|
33
|
+
|
|
34
|
+
- `isSelection(): boolean` — Checks if the analyzer was initialized to work with the user's current selection.
|
|
35
|
+
- `getMainFrames(): FigmaItem[]` — Extracts the main frames or sections from the root of the current context.
|
|
36
|
+
|
|
37
|
+
### Filtering and Selection
|
|
38
|
+
|
|
39
|
+
- `getItemsFrame(): FigmaItem<FrameNode>[]` — Returns a list of all nested nodes that are frames.
|
|
40
|
+
- `getItemsSection(): FigmaItem<SectionNode>[]` — Returns a list of all nested nodes that are sections.
|
|
41
|
+
- `getItemsText(): FigmaItem<TextNode>[]` — Returns a list of all nested text nodes.
|
|
42
|
+
|
|
43
|
+
### Content and Information
|
|
44
|
+
|
|
45
|
+
#### `getItemsInfo`
|
|
46
|
+
|
|
47
|
+
Asynchronously collects detailed information (name, ID, screenshot) for all items in the frame.
|
|
48
|
+
|
|
49
|
+
**Returns:** `Promise<UiFigmaFramesList>` — A promise with a list of item information.
|
|
50
|
+
|
|
51
|
+
```typescript
|
|
52
|
+
const infoList: UiFigmaFramesList = await frame.getItemsInfo()
|
|
53
|
+
/*
|
|
54
|
+
[
|
|
55
|
+
{ id: '1:10', name: 'Button', image: Uint8Array[...] },
|
|
56
|
+
{ id: '1:25', name: 'Card', image: 'data:image/png;base64...' }
|
|
57
|
+
]
|
|
58
|
+
*/
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
#### `getMainItemsInfo`
|
|
62
|
+
|
|
63
|
+
Asynchronously collects detailed information only for the main (top-level) elements.
|
|
64
|
+
|
|
65
|
+
**Returns:** `Promise<UiFigmaFramesList>` — A promise with a list of main item information.
|
|
66
|
+
|
|
67
|
+
```typescript
|
|
68
|
+
const mainInfoList: UiFigmaFramesList = await frame.getMainItemsInfo()
|
|
69
|
+
/*
|
|
70
|
+
[
|
|
71
|
+
{ id: '1:10', name: 'Login Screen', image: Uint8Array[...] }
|
|
72
|
+
]
|
|
73
|
+
*/
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
#### `getTexts`
|
|
29
77
|
|
|
30
|
-
|
|
31
|
-
|
|
78
|
+
Groups text nodes by their content, returning unique strings and a list of corresponding node IDs.
|
|
79
|
+
|
|
80
|
+
**Returns:** `UiFigmaItemText[]` — An array of grouped text items.
|
|
81
|
+
|
|
82
|
+
```typescript
|
|
83
|
+
const groupedTexts: UiFigmaItemText[] = frame.getTexts()
|
|
84
|
+
/*
|
|
85
|
+
[
|
|
86
|
+
{ id: ['1:10', '1:15'], text: 'Submit' },
|
|
87
|
+
{ id: ['1:20'], text: 'Cancel' }
|
|
88
|
+
]
|
|
89
|
+
*/
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### Styles Analysis
|
|
93
|
+
|
|
94
|
+
#### `getItemsCss`
|
|
95
|
+
|
|
96
|
+
Generates a map of CSS styles for all items in the frame.
|
|
97
|
+
|
|
98
|
+
**Returns:** `Promise<UiFigmaFrameStylesCssList>` — A promise with a style map indexed by node ID.
|
|
99
|
+
|
|
100
|
+
```typescript
|
|
101
|
+
const cssStyles: UiFigmaFrameStylesCssList = await frame.getItemsCss()
|
|
102
|
+
/*
|
|
103
|
+
{
|
|
104
|
+
'1:10': { 'color': '#ff0000', 'font-size': '14px' },
|
|
105
|
+
'1:12': { 'background': '#ffffff', 'padding': '10px' }
|
|
106
|
+
}
|
|
107
|
+
*/
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
#### `getItemsStyles`
|
|
111
|
+
|
|
112
|
+
Extracts full style data (document JSON structure, text, CSS) for all items.
|
|
113
|
+
|
|
114
|
+
**Returns:** `Promise<UiFigmaFrameStylesList>` — A promise with a list of extended style data.
|
|
115
|
+
|
|
116
|
+
```typescript
|
|
117
|
+
const stylesList: UiFigmaFrameStylesList = await frame.getItemsStyles()
|
|
118
|
+
/*
|
|
119
|
+
[
|
|
120
|
+
{
|
|
121
|
+
id: '1:10',
|
|
122
|
+
name: 'Label',
|
|
123
|
+
text: 'Username',
|
|
124
|
+
styles: { 'color': '#333' },
|
|
125
|
+
json: { document: {...}, styles: {...} }
|
|
126
|
+
}
|
|
127
|
+
]
|
|
128
|
+
*/
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
#### `getMainItemsStyles`
|
|
132
|
+
|
|
133
|
+
Extracts full style data only for the main elements, including styles of their children.
|
|
134
|
+
|
|
135
|
+
**Returns:** `Promise<UiFigmaFrameStylesList>` — A promise with a list of extended style data for main elements.
|
|
136
|
+
|
|
137
|
+
```typescript
|
|
138
|
+
const mainStylesList: UiFigmaFrameStylesList = await frame.getMainItemsStyles()
|
|
139
|
+
/*
|
|
140
|
+
[
|
|
141
|
+
{
|
|
142
|
+
id: '1:10',
|
|
143
|
+
name: 'Login Form',
|
|
144
|
+
childrenStyles: {
|
|
145
|
+
'1:11': { 'color': '#000' },
|
|
146
|
+
'1:12': { 'margin-top': '20px' }
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
]
|
|
150
|
+
*/
|
|
32
151
|
```
|
|
33
152
|
|
|
34
|
-
|
|
153
|
+
### Actions and Export
|
|
35
154
|
|
|
36
|
-
- `
|
|
37
|
-
- `getMainFrames(): FigmaItem[]` — Returns top-level frames/sections from the root. Example: `const roots = frameManager.getMainFrames()`
|
|
155
|
+
- `screenshot(): Promise<Uint8Array[]>` — Creates screenshots in JPG format for all main elements.
|
|
38
156
|
|
|
39
|
-
##
|
|
157
|
+
## Data Types
|
|
40
158
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
- `getItemsText(): FigmaItem<TextNode>[]` — Filters hierarchy for TEXT nodes. Example: `const textNodes = frameManager.getItemsText()`
|
|
159
|
+
#### `UiFigmaNode`
|
|
160
|
+
The base type for Figma nodes. It represents a union of nodes (`SceneNode | DocumentNode | PageNode | FrameNode`, etc.) that support nesting and standard Figma API properties.
|
|
44
161
|
|
|
45
|
-
|
|
162
|
+
#### `UiFigmaItemText`
|
|
163
|
+
The result of grouping text layers by their content.
|
|
164
|
+
- `id: string[]` — An array of unique node identifiers that have the same text.
|
|
165
|
+
- `text: string` — The actual text string.
|
|
46
166
|
|
|
47
|
-
|
|
48
|
-
|
|
167
|
+
#### `UiFigmaMessageTexts`
|
|
168
|
+
A data structure for transmitting text analysis results.
|
|
169
|
+
- `frame: FigmaFrame` — An instance of the analyzer class.
|
|
170
|
+
- `texts: UiFigmaItemText[]` — A list of found and grouped text items.
|
|
171
|
+
- `screenshot: Uint8Array[]` — An array of screenshots for the main elements.
|
|
49
172
|
|
|
50
|
-
|
|
173
|
+
#### `UiFigmaFramesItem`
|
|
174
|
+
Simplified information about an element for display in the interface.
|
|
175
|
+
- `name: string` — The name of the element in Figma.
|
|
176
|
+
- `id: string` — The unique identifier of the node.
|
|
177
|
+
- `image?: Uint8Array | string` — A screenshot of the element (binary data or base64).
|
|
51
178
|
|
|
52
|
-
|
|
179
|
+
#### `UiFigmaFrameStylesItem`
|
|
180
|
+
Extended information about an element, including its styles. Inherits all fields from `UiFigmaFramesItem`.
|
|
181
|
+
- `json?: UiFigmaFrameStylesData` — Node data and styles structure in JSON format.
|
|
182
|
+
- `text?: string` — Text content (if the node is a text node).
|
|
183
|
+
- `styles?: Record<string, string>` — An object with CSS properties of the element itself.
|
|
184
|
+
- `childrenStyles?: Record<string, Record<string, string>>` — A map of CSS styles for all child elements, indexed by their ID.
|
|
53
185
|
|
|
54
|
-
|
|
55
|
-
-
|
|
186
|
+
#### `UiFigmaFrameStylesData`
|
|
187
|
+
- `document: UiFigmaFrameStylesJson` — Node tree in a compact format.
|
|
188
|
+
- `styles: Record<string, any>` — A dictionary of document style definitions.
|
|
56
189
|
|
|
57
|
-
|
|
190
|
+
#### `UiFigmaFrameStylesList`
|
|
191
|
+
An array of `UiFigmaFrameStylesItem` objects.
|
|
58
192
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
- `text: string` — The actual trimmed string content.
|
|
193
|
+
#### `UiFigmaFrameStylesCssList`
|
|
194
|
+
An object (`Record<string, Record<string, string>>`) where the key is the node ID and the value is its set of CSS styles.
|
|
@@ -1,61 +1,194 @@
|
|
|
1
|
-
import {Meta} from '@storybook/addon-docs/blocks'
|
|
1
|
+
import { Meta, Source } from '@storybook/addon-docs/blocks'
|
|
2
2
|
|
|
3
|
-
<Meta title='@dxtmisha/ru/figma-code/Classes/FigmaFrame -
|
|
3
|
+
<Meta title='@dxtmisha/ru/figma-code/Classes/FigmaFrame - Анализ структуры Figma'/>
|
|
4
4
|
|
|
5
|
-
# Класс FigmaFrame
|
|
5
|
+
# Класс `FigmaFrame`
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Утилитарный класс для анализа и взаимодействия со структурой страниц или выделенных областей в Figma. Он рекурсивно сканирует дерево узлов, фильтрует элементы по типу и предоставляет вспомогательные методы для извлечения текста и генерации скриншотов.
|
|
8
8
|
|
|
9
9
|
## Ключевые особенности
|
|
10
10
|
|
|
11
|
-
-
|
|
12
|
-
-
|
|
13
|
-
- **Агрегация
|
|
14
|
-
-
|
|
11
|
+
- **Рекурсивное сканирование** — Автоматически индексирует все вложенные элементы внутри предоставленного контекста (страница или выделение).
|
|
12
|
+
- **Поддержка выделения** — Может быть инициализирован для работы как со всей страницей документа, так и только с текущим выделением пользователя.
|
|
13
|
+
- **Агрегация текстов** — Метод `getTexts()` группирует идентичные текстовые строки, возвращая список уникальных значений и связанных с ними ID узлов.
|
|
14
|
+
- **Автоматизированный экспорт** — Упрощает процесс создания скриншотов для основных элементов внутри фрейма.
|
|
15
15
|
|
|
16
16
|
## Инициализация
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
**Параметры:**
|
|
21
|
-
- `page: UiFigmaNode` — Корневой узел (обычно `figma.currentPage` или `PageNode`) для анализа.
|
|
22
|
-
- `selection: boolean = false` — Если `true`, экземпляр будет обрабатывать только узлы в текущем выделении, а не на всей странице.
|
|
18
|
+
Создайте новый экземпляр, передав начальный узел (обычно страницу) и указав, следует ли фокусироваться на выделении.
|
|
23
19
|
|
|
24
20
|
```typescript
|
|
25
21
|
import { FigmaFrame } from '@dxtmisha/figma-code'
|
|
26
22
|
|
|
27
|
-
//
|
|
28
|
-
const
|
|
23
|
+
// Анализ всей текущей страницы
|
|
24
|
+
const frameAnalyzer = new FigmaFrame(figma.currentPage)
|
|
25
|
+
|
|
26
|
+
// Анализ только выделенных объектов
|
|
27
|
+
const selectionAnalyzer = new FigmaFrame(figma.currentPage, true)
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Методы
|
|
31
|
+
|
|
32
|
+
### Состояние и навигация
|
|
33
|
+
|
|
34
|
+
- `isSelection(): boolean` — Проверяет, является ли текущий контекст выделением.
|
|
35
|
+
- `getMainFrames(): FigmaItem[]` — Извлекает основные фреймы или секции из корня текущего контекста (страницы или выделения).
|
|
36
|
+
|
|
37
|
+
### Фильтрация и выборка
|
|
38
|
+
|
|
39
|
+
- `getItemsFrame(): FigmaItem<FrameNode>[]` — Возвращает список всех вложенных узлов, являющихся фреймами.
|
|
40
|
+
- `getItemsSection(): FigmaItem<SectionNode>[]` — Возвращает список всех вложенных узлов, являющихся секциями.
|
|
41
|
+
- `getItemsText(): FigmaItem<TextNode>[]` — Возвращает список всех вложенных текстовых узлов.
|
|
42
|
+
|
|
43
|
+
### Контент и информация
|
|
44
|
+
|
|
45
|
+
#### `getItemsInfo`
|
|
46
|
+
|
|
47
|
+
Асинхронно собирает подробную информацию (имя, ID, скриншот) для всех элементов во фрейме.
|
|
48
|
+
|
|
49
|
+
**Возвращает:** `Promise<UiFigmaFramesList>` — Промис со списком информации об элементах.
|
|
50
|
+
|
|
51
|
+
```typescript
|
|
52
|
+
const infoList: UiFigmaFramesList = await frame.getItemsInfo()
|
|
53
|
+
/*
|
|
54
|
+
[
|
|
55
|
+
{ id: '1:10', name: 'Button', image: Uint8Array[...] },
|
|
56
|
+
{ id: '1:25', name: 'Card', image: 'data:image/png;base64...' }
|
|
57
|
+
]
|
|
58
|
+
*/
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
#### `getMainItemsInfo`
|
|
62
|
+
|
|
63
|
+
Асинхронно собирает подробную информацию только для основных (верхнеуровневых) элементов.
|
|
64
|
+
|
|
65
|
+
**Возвращает:** `Promise<UiFigmaFramesList>` — Промис со списком информации об основных элементах.
|
|
66
|
+
|
|
67
|
+
```typescript
|
|
68
|
+
const mainInfoList: UiFigmaFramesList = await frame.getMainItemsInfo()
|
|
69
|
+
/*
|
|
70
|
+
[
|
|
71
|
+
{ id: '1:10', name: 'Login Screen', image: Uint8Array[...] }
|
|
72
|
+
]
|
|
73
|
+
*/
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
#### `getTexts`
|
|
29
77
|
|
|
30
|
-
|
|
31
|
-
|
|
78
|
+
Группирует текстовые узлы по их содержимому, возвращая уникальные строки и список ID соответствующих нод.
|
|
79
|
+
|
|
80
|
+
**Возвращает:** `UiFigmaItemText[]` — Массив сгруппированных текстовых элементов.
|
|
81
|
+
|
|
82
|
+
```typescript
|
|
83
|
+
const groupedTexts: UiFigmaItemText[] = frame.getTexts()
|
|
84
|
+
/*
|
|
85
|
+
[
|
|
86
|
+
{ id: ['1:10', '1:15'], text: 'Submit' },
|
|
87
|
+
{ id: ['1:20'], text: 'Cancel' }
|
|
88
|
+
]
|
|
89
|
+
*/
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### Анализ стилей
|
|
93
|
+
|
|
94
|
+
#### `getItemsCss`
|
|
95
|
+
|
|
96
|
+
Генерирует карту CSS-стилей для всех элементов фрейма.
|
|
97
|
+
|
|
98
|
+
**Возвращает:** `Promise<UiFigmaFrameStylesCssList>` — Промис с картой стилей, индексированной по ID узла.
|
|
99
|
+
|
|
100
|
+
```typescript
|
|
101
|
+
const cssStyles: UiFigmaFrameStylesCssList = await frame.getItemsCss()
|
|
102
|
+
/*
|
|
103
|
+
{
|
|
104
|
+
'1:10': { 'color': '#ff0000', 'font-size': '14px' },
|
|
105
|
+
'1:12': { 'background': '#ffffff', 'padding': '10px' }
|
|
106
|
+
}
|
|
107
|
+
*/
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
#### `getItemsStyles`
|
|
111
|
+
|
|
112
|
+
Извлекает полные данные о стилях (JSON-структуру документа, текст, CSS) для всех элементов.
|
|
113
|
+
|
|
114
|
+
**Возвращает:** `Promise<UiFigmaFrameStylesList>` — Промис со списком расширенных данных о стилях.
|
|
115
|
+
|
|
116
|
+
```typescript
|
|
117
|
+
const stylesList: UiFigmaFrameStylesList = await frame.getItemsStyles()
|
|
118
|
+
/*
|
|
119
|
+
[
|
|
120
|
+
{
|
|
121
|
+
id: '1:10',
|
|
122
|
+
name: 'Label',
|
|
123
|
+
text: 'Username',
|
|
124
|
+
styles: { 'color': '#333' },
|
|
125
|
+
json: { document: {...}, styles: {...} }
|
|
126
|
+
}
|
|
127
|
+
]
|
|
128
|
+
*/
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
#### `getMainItemsStyles`
|
|
132
|
+
|
|
133
|
+
Извлекает полные данные о стилях только для основных элементов, включая стили их дочерних элементов.
|
|
134
|
+
|
|
135
|
+
**Возвращает:** `Promise<UiFigmaFrameStylesList>` — Промис со списком расширенных данных о стилях основных элементов.
|
|
136
|
+
|
|
137
|
+
```typescript
|
|
138
|
+
const mainStylesList: UiFigmaFrameStylesList = await frame.getMainItemsStyles()
|
|
139
|
+
/*
|
|
140
|
+
[
|
|
141
|
+
{
|
|
142
|
+
id: '1:10',
|
|
143
|
+
name: 'Login Form',
|
|
144
|
+
childrenStyles: {
|
|
145
|
+
'1:11': { 'color': '#000' },
|
|
146
|
+
'1:12': { 'margin-top': '20px' }
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
]
|
|
150
|
+
*/
|
|
32
151
|
```
|
|
33
152
|
|
|
34
|
-
|
|
153
|
+
### Экспорт и действия
|
|
35
154
|
|
|
36
|
-
- `
|
|
37
|
-
- `getMainFrames(): FigmaItem[]` — Возвращает основные фреймы/секции от корня. Пример: `const roots = frameManager.getMainFrames()`
|
|
155
|
+
- `screenshot(): Promise<Uint8Array[]>` — Создает скриншоты в формате JPG для всех основных элементов.
|
|
38
156
|
|
|
39
|
-
##
|
|
157
|
+
## Типы данных
|
|
40
158
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
- `getItemsText(): FigmaItem<TextNode>[]` — Фильтрует иерархию по узлам TEXT. Пример: `const textNodes = frameManager.getItemsText()`
|
|
159
|
+
#### `UiFigmaNode`
|
|
160
|
+
Базовый тип для узлов Figma. Представляет собой объединение (`SceneNode | DocumentNode | PageNode | FrameNode` и др.), поддерживающих вложенность и стандартные свойства Figma API.
|
|
44
161
|
|
|
45
|
-
|
|
162
|
+
#### `UiFigmaItemText`
|
|
163
|
+
Результат группировки текстовых слоев по их содержимому.
|
|
164
|
+
- `id: string[]` — Массив уникальных идентификаторов узлов, имеющих одинаковый текст.
|
|
165
|
+
- `text: string` — Само текстовое значение.
|
|
46
166
|
|
|
47
|
-
|
|
48
|
-
|
|
167
|
+
#### `UiFigmaMessageTexts`
|
|
168
|
+
Структура данных для передачи результатов анализа текстов.
|
|
169
|
+
- `frame: FigmaFrame` — Экземпляр класса анализатора.
|
|
170
|
+
- `texts: UiFigmaItemText[]` — Список найденных и сгруппированных текстов.
|
|
171
|
+
- `screenshot: Uint8Array[]` — Массив скриншотов основных элементов.
|
|
49
172
|
|
|
50
|
-
|
|
173
|
+
#### `UiFigmaFramesItem`
|
|
174
|
+
Упрощенная информация об элементе для отображения в интерфейсе.
|
|
175
|
+
- `name: string` — Название элемента в Figma.
|
|
176
|
+
- `id: string` — Уникальный идентификатор узла.
|
|
177
|
+
- `image?: Uint8Array | string` — Скриншот элемента (бинарные данные или base64).
|
|
51
178
|
|
|
52
|
-
|
|
179
|
+
#### `UiFigmaFrameStylesItem`
|
|
180
|
+
Расширенная информация об элементе, включая его стили. Наследует все поля `UiFigmaFramesItem`.
|
|
181
|
+
- `json?: UiFigmaFrameStylesData` — Структура данных узла и стилей в формате JSON.
|
|
182
|
+
- `text?: string` — Текстовое содержимое (если узел является текстовым).
|
|
183
|
+
- `styles?: Record<string, string>` — Объект с CSS-свойствами самого элемента.
|
|
184
|
+
- `childrenStyles?: Record<string, Record<string, string>>` — Карта CSS-стилей для всех дочерних элементов, индексированная по их ID.
|
|
53
185
|
|
|
54
|
-
|
|
55
|
-
-
|
|
186
|
+
#### `UiFigmaFrameStylesData`
|
|
187
|
+
- `document: UiFigmaFrameStylesJson` — Дерево узлов в компактном формате.
|
|
188
|
+
- `styles: Record<string, any>` — Словарь определений стилей документа.
|
|
56
189
|
|
|
57
|
-
|
|
190
|
+
#### `UiFigmaFrameStylesList`
|
|
191
|
+
Массив объектов типа `UiFigmaFrameStylesItem`.
|
|
58
192
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
- `text: string` — само текстовое содержимое (очищенное от лишних пробелов).
|
|
193
|
+
#### `UiFigmaFrameStylesCssList`
|
|
194
|
+
Объект (`Record<string, Record<string, string>>`), где ключом является ID узла, а значением — его набор CSS-стилей.
|