@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.
Files changed (151) hide show
  1. package/dist/{defineProperty-3CuEayIP.js → defineProperty-Dcl1xgfx.js} +4 -4
  2. package/dist/library.js +2 -1
  3. package/dist/storybook.js +1 -1
  4. package/package.json +1 -1
  5. package/src/media/functional/figma/classes/FigmaPostAbstract/FigmaPostAbstract.en.mdx +46 -0
  6. package/src/media/functional/figma/classes/FigmaPostAbstract/FigmaPostAbstract.ru.mdx +46 -0
  7. package/src/media/functional/figma/classes/FigmaPostAbstract/FigmaPostAbstract.vi.mdx +46 -0
  8. package/src/media/functional/figma/classes/FigmaPostCode/FigmaPostCode.en.mdx +3 -23
  9. package/src/media/functional/figma/classes/FigmaPostCode/FigmaPostCode.ru.mdx +3 -23
  10. package/src/media/functional/figma/classes/FigmaPostCode/FigmaPostCode.vi.mdx +3 -23
  11. package/src/media/functional/figma/functions/fetchClientStorage/fetchClientStorage.en.mdx +46 -0
  12. package/src/media/functional/figma/functions/fetchClientStorage/fetchClientStorage.ru.mdx +46 -0
  13. package/src/media/functional/figma/functions/fetchClientStorage/fetchClientStorage.vi.mdx +46 -0
  14. package/src/media/functional/figma/functions/fetchFrameSelection/fetchFrameSelection.en.mdx +34 -0
  15. package/src/media/functional/figma/functions/fetchFrameSelection/fetchFrameSelection.ru.mdx +34 -0
  16. package/src/media/functional/figma/functions/fetchFrameSelection/fetchFrameSelection.vi.mdx +34 -0
  17. package/src/media/functional/figma/functions/fetchFrameStyles/fetchFrameStyles.en.mdx +49 -0
  18. package/src/media/functional/figma/functions/fetchFrameStyles/fetchFrameStyles.ru.mdx +49 -0
  19. package/src/media/functional/figma/functions/fetchFrameStyles/fetchFrameStyles.vi.mdx +49 -0
  20. package/src/media/functional/figma/functions/fetchFramesSelected/fetchFramesSelected.en.mdx +19 -8
  21. package/src/media/functional/figma/functions/fetchFramesSelected/fetchFramesSelected.ru.mdx +18 -7
  22. package/src/media/functional/figma/functions/fetchFramesSelected/fetchFramesSelected.vi.mdx +19 -8
  23. package/src/media/functional/figma/functions/fetchStorage/fetchStorage.en.mdx +42 -0
  24. package/src/media/functional/figma/functions/fetchStorage/fetchStorage.ru.mdx +42 -0
  25. package/src/media/functional/figma/functions/fetchStorage/fetchStorage.vi.mdx +42 -0
  26. package/src/media/functional/figma/functions/fetchTopLevelFrames/fetchTopLevelFrames.en.mdx +29 -7
  27. package/src/media/functional/figma/functions/fetchTopLevelFrames/fetchTopLevelFrames.ru.mdx +28 -6
  28. package/src/media/functional/figma/functions/fetchTopLevelFrames/fetchTopLevelFrames.vi.mdx +29 -7
  29. package/src/media/functional/figma/functions/sendClientStorage/sendClientStorage.en.mdx +29 -0
  30. package/src/media/functional/figma/functions/sendClientStorage/sendClientStorage.ru.mdx +29 -0
  31. package/src/media/functional/figma/functions/sendClientStorage/sendClientStorage.vi.mdx +29 -0
  32. package/src/media/functional/figma/functions/sendFrameSelection/sendFrameSelection.en.mdx +28 -0
  33. package/src/media/functional/figma/functions/sendFrameSelection/sendFrameSelection.ru.mdx +28 -0
  34. package/src/media/functional/figma/functions/sendFrameSelection/sendFrameSelection.vi.mdx +28 -0
  35. package/src/media/functional/figma/functions/sendFrameStyles/sendFrameStyles.en.mdx +40 -0
  36. package/src/media/functional/figma/functions/sendFrameStyles/sendFrameStyles.ru.mdx +40 -0
  37. package/src/media/functional/figma/functions/sendFrameStyles/sendFrameStyles.vi.mdx +40 -0
  38. package/src/media/functional/figma/functions/sendFramesSelected/sendFramesSelected.en.mdx +29 -0
  39. package/src/media/functional/figma/functions/sendFramesSelected/sendFramesSelected.ru.mdx +29 -0
  40. package/src/media/functional/figma/functions/sendFramesSelected/sendFramesSelected.vi.mdx +29 -0
  41. package/src/media/functional/figma/functions/sendStorage/sendStorage.en.mdx +30 -0
  42. package/src/media/functional/figma/functions/sendStorage/sendStorage.ru.mdx +30 -0
  43. package/src/media/functional/figma/functions/sendStorage/sendStorage.vi.mdx +30 -0
  44. package/src/media/functional/figma-code/classes/FigmaClientStorage/FigmaClientStorage.en.mdx +64 -0
  45. package/src/media/functional/figma-code/classes/FigmaClientStorage/FigmaClientStorage.ru.mdx +64 -0
  46. package/src/media/functional/figma-code/classes/FigmaClientStorage/FigmaClientStorage.vi.mdx +64 -0
  47. package/src/media/functional/figma-code/classes/FigmaFrame/FigmaFrame.en.mdx +168 -35
  48. package/src/media/functional/figma-code/classes/FigmaFrame/FigmaFrame.ru.mdx +168 -35
  49. package/src/media/functional/figma-code/classes/FigmaFrame/FigmaFrame.vi.mdx +168 -35
  50. package/src/media/functional/figma-code/classes/FigmaFramesSelected/FigmaFramesSelected.en.mdx +23 -69
  51. package/src/media/functional/figma-code/classes/FigmaFramesSelected/FigmaFramesSelected.ru.mdx +22 -68
  52. package/src/media/functional/figma-code/classes/FigmaFramesSelected/FigmaFramesSelected.vi.mdx +23 -69
  53. package/src/media/functional/figma-code/classes/FigmaItem/FigmaItem.en.mdx +79 -56
  54. package/src/media/functional/figma-code/classes/FigmaItem/FigmaItem.ru.mdx +79 -56
  55. package/src/media/functional/figma-code/classes/FigmaItem/FigmaItem.vi.mdx +79 -56
  56. package/src/media/functional/figma-code/classes/FigmaPluginMessenger/FigmaPluginMessenger.en.mdx +18 -48
  57. package/src/media/functional/figma-code/classes/FigmaPluginMessenger/FigmaPluginMessenger.ru.mdx +18 -48
  58. package/src/media/functional/figma-code/classes/FigmaPluginMessenger/FigmaPluginMessenger.vi.mdx +18 -48
  59. package/src/media/functional/figma-code/classes/FigmaStorage/FigmaStorage.en.mdx +22 -67
  60. package/src/media/functional/figma-code/classes/FigmaStorage/FigmaStorage.ru.mdx +22 -67
  61. package/src/media/functional/figma-code/classes/FigmaStorage/FigmaStorage.vi.mdx +22 -67
  62. package/src/media/functional/figma-code/classes/FigmaStorageData/FigmaStorageData.en.mdx +57 -0
  63. package/src/media/functional/figma-code/classes/FigmaStorageData/FigmaStorageData.ru.mdx +57 -0
  64. package/src/media/functional/figma-code/classes/FigmaStorageData/FigmaStorageData.vi.mdx +57 -0
  65. package/src/media/functional/figma-code/classes/FigmaTopLevelFrames/FigmaTopLevelFrames.en.mdx +24 -27
  66. package/src/media/functional/figma-code/classes/FigmaTopLevelFrames/FigmaTopLevelFrames.ru.mdx +23 -26
  67. package/src/media/functional/figma-code/classes/FigmaTopLevelFrames/FigmaTopLevelFrames.vi.mdx +24 -27
  68. package/src/media/functional/figma-code/functions/getFigmaFrameById/getFigmaFrameById.en.mdx +28 -0
  69. package/src/media/functional/figma-code/functions/getFigmaFrameById/getFigmaFrameById.ru.mdx +28 -0
  70. package/src/media/functional/figma-code/functions/getFigmaFrameById/getFigmaFrameById.vi.mdx +28 -0
  71. package/src/media/functional/figma-code/functions/getFigmaItemById/getFigmaItemById.en.mdx +43 -0
  72. package/src/media/functional/figma-code/functions/getFigmaItemById/getFigmaItemById.ru.mdx +43 -0
  73. package/src/media/functional/figma-code/functions/getFigmaItemById/getFigmaItemById.vi.mdx +43 -0
  74. package/src/media/functional/figma-code/functions/getFigmaItemByIdOrRoot/getFigmaItemByIdOrRoot.en.mdx +30 -0
  75. package/src/media/functional/figma-code/functions/getFigmaItemByIdOrRoot/getFigmaItemByIdOrRoot.ru.mdx +30 -0
  76. package/src/media/functional/figma-code/functions/getFigmaItemByIdOrRoot/getFigmaItemByIdOrRoot.vi.mdx +30 -0
  77. package/src/media/functional/figma-code/functions/makeFigmaFrameSelection/makeFigmaFrameSelection.en.mdx +21 -0
  78. package/src/media/functional/figma-code/functions/makeFigmaFrameSelection/makeFigmaFrameSelection.ru.mdx +21 -0
  79. package/src/media/functional/figma-code/functions/makeFigmaFrameSelection/makeFigmaFrameSelection.vi.mdx +21 -0
  80. package/src/media/functional/figma-code/functions/makeFigmaTexts/makeFigmaTexts.en.mdx +28 -0
  81. package/src/media/functional/figma-code/functions/makeFigmaTexts/makeFigmaTexts.ru.mdx +28 -0
  82. package/src/media/functional/figma-code/functions/makeFigmaTexts/makeFigmaTexts.vi.mdx +28 -0
  83. package/src/media/functional/figma-code/functions/setupClientStorage/setupClientStorage.en.mdx +28 -0
  84. package/src/media/functional/figma-code/functions/setupClientStorage/setupClientStorage.ru.mdx +28 -0
  85. package/src/media/functional/figma-code/functions/setupClientStorage/setupClientStorage.vi.mdx +28 -0
  86. package/src/media/functional/figma-code/functions/setupFrameSelection/setupFrameSelection.en.mdx +22 -0
  87. package/src/media/functional/figma-code/functions/setupFrameSelection/setupFrameSelection.ru.mdx +22 -0
  88. package/src/media/functional/figma-code/functions/setupFrameSelection/setupFrameSelection.vi.mdx +22 -0
  89. package/src/media/functional/figma-code/functions/setupFrameStyles/setupFrameStyles.en.mdx +19 -0
  90. package/src/media/functional/figma-code/functions/setupFrameStyles/setupFrameStyles.ru.mdx +19 -0
  91. package/src/media/functional/figma-code/functions/setupFrameStyles/setupFrameStyles.vi.mdx +19 -0
  92. package/src/media/functional/figma-code/functions/setupStorage/setupStorage.en.mdx +28 -0
  93. package/src/media/functional/figma-code/functions/setupStorage/setupStorage.ru.mdx +28 -0
  94. package/src/media/functional/figma-code/functions/setupStorage/setupStorage.vi.mdx +28 -0
  95. package/src/media/functional/figma-code/functions/toFrameSelection/toFrameSelection.en.mdx +27 -0
  96. package/src/media/functional/figma-code/functions/toFrameSelection/toFrameSelection.ru.mdx +27 -0
  97. package/src/media/functional/figma-code/functions/toFrameSelection/toFrameSelection.vi.mdx +27 -0
  98. package/src/media/functional/figma-ref/composables/useFigmaClientStorage/useFigmaClientStorage.en.mdx +26 -0
  99. package/src/media/functional/figma-ref/composables/useFigmaClientStorage/useFigmaClientStorage.ru.mdx +26 -0
  100. package/src/media/functional/figma-ref/composables/useFigmaClientStorage/useFigmaClientStorage.vi.mdx +26 -0
  101. package/src/media/functional/figma-ref/composables/useFigmaFrameSelection/useFigmaFrameSelection.en.mdx +35 -0
  102. package/src/media/functional/figma-ref/composables/useFigmaFrameSelection/useFigmaFrameSelection.ru.mdx +35 -0
  103. package/src/media/functional/figma-ref/composables/useFigmaFrameSelection/useFigmaFrameSelection.vi.mdx +35 -0
  104. package/src/media/functional/figma-ref/composables/useFigmaFrameStyles/useFigmaFrameStyles.en.mdx +33 -0
  105. package/src/media/functional/figma-ref/composables/useFigmaFrameStyles/useFigmaFrameStyles.ru.mdx +33 -0
  106. package/src/media/functional/figma-ref/composables/useFigmaFrameStyles/useFigmaFrameStyles.vi.mdx +33 -0
  107. package/src/media/functional/figma-ref/composables/useFigmaStorage/useFigmaStorage.en.mdx +28 -0
  108. package/src/media/functional/figma-ref/composables/useFigmaStorage/useFigmaStorage.ru.mdx +28 -0
  109. package/src/media/functional/figma-ref/composables/useFigmaStorage/useFigmaStorage.vi.mdx +28 -0
  110. package/src/media/functional/figma-ref/composables/useFigmaUiFrames/useFigmaUiFrames.en.mdx +7 -12
  111. package/src/media/functional/figma-ref/composables/useFigmaUiFrames/useFigmaUiFrames.ru.mdx +7 -12
  112. package/src/media/functional/figma-ref/composables/useFigmaUiFrames/useFigmaUiFrames.vi.mdx +8 -13
  113. package/src/media/functional/figma-ref/composables/useFigmaUiSelected/useFigmaUiSelected.en.mdx +12 -17
  114. package/src/media/functional/figma-ref/composables/useFigmaUiSelected/useFigmaUiSelected.ru.mdx +13 -18
  115. package/src/media/functional/figma-ref/composables/useFigmaUiSelected/useFigmaUiSelected.vi.mdx +14 -19
  116. package/src/media/functional/functional/composables/useApiAsyncRef/useApiAsyncRef.en.mdx +2 -3
  117. package/src/media/functional/functional/composables/useApiAsyncRef/useApiAsyncRef.ru.mdx +2 -3
  118. package/src/media/functional/functional/composables/useApiAsyncRef/useApiAsyncRef.vi.mdx +2 -3
  119. package/src/media/functional/functional/composables/useApiManagementRef/useApiManagementAsyncRef.en.mdx +41 -0
  120. package/src/media/functional/functional/composables/useApiManagementRef/useApiManagementAsyncRef.ru.mdx +41 -0
  121. package/src/media/functional/functional/composables/useApiManagementRef/useApiManagementAsyncRef.vi.mdx +41 -0
  122. package/src/media/functional/functional/composables/useApiManagementRef/useApiManagementRef.en.mdx +12 -0
  123. package/src/media/functional/functional/composables/useApiManagementRef/useApiManagementRef.ru.mdx +12 -0
  124. package/src/media/functional/functional/composables/useApiManagementRef/useApiManagementRef.vi.mdx +6 -0
  125. package/src/media/functional/functional/composables/useApiRef/useApiRef.en.mdx +12 -9
  126. package/src/media/functional/functional/composables/useApiRef/useApiRef.ru.mdx +12 -9
  127. package/src/media/functional/functional/composables/useApiRef/useApiRef.vi.mdx +11 -9
  128. package/src/media/functional/nitro-basic/functions/getInject.en.mdx +27 -0
  129. package/src/media/functional/nitro-basic/functions/getInject.ru.mdx +27 -0
  130. package/src/media/functional/nitro-basic/functions/getInject.vi.mdx +20 -0
  131. package/src/media/functional/ui-figma/about/about.en.mdx +52 -0
  132. package/src/media/functional/ui-figma/about/about.ru.mdx +52 -0
  133. package/src/media/functional/ui-figma/about/about.vi.mdx +52 -0
  134. package/src/media/functional/ui-figma/frames/frames.en.mdx +58 -0
  135. package/src/media/functional/ui-figma/frames/frames.ru.mdx +58 -0
  136. package/src/media/functional/ui-figma/frames/frames.vi.mdx +58 -0
  137. package/src/media/functional/ui-figma/messenger/messenger.en.mdx +67 -0
  138. package/src/media/functional/ui-figma/messenger/messenger.ru.mdx +67 -0
  139. package/src/media/functional/ui-figma/messenger/messenger.vi.mdx +67 -0
  140. package/src/media/functional/ui-figma/selection/selection.en.mdx +65 -0
  141. package/src/media/functional/ui-figma/selection/selection.ru.mdx +65 -0
  142. package/src/media/functional/ui-figma/selection/selection.vi.mdx +65 -0
  143. package/src/media/functional/ui-figma/storage/storage.en.mdx +53 -0
  144. package/src/media/functional/ui-figma/storage/storage.ru.mdx +53 -0
  145. package/src/media/functional/ui-figma/storage/storage.vi.mdx +53 -0
  146. package/src/media/functional/ui-figma/styles/styles.en.mdx +57 -0
  147. package/src/media/functional/ui-figma/styles/styles.ru.mdx +57 -0
  148. package/src/media/functional/ui-figma/styles/styles.vi.mdx +57 -0
  149. /package/src/media/functional/ui/{wiki-data.en.mdx → wiki/wiki-data.en.mdx} +0 -0
  150. /package/src/media/functional/ui/{wiki-data.ru.mdx → wiki/wiki-data.ru.mdx} +0 -0
  151. /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 - Frame Manager'/>
3
+ <Meta title='@dxtmisha/en/figma-code/Classes/FigmaFrame - Analyzing Figma structure'/>
4
4
 
5
- # FigmaFrame Class
5
+ # Class `FigmaFrame`
6
6
 
7
- A comprehensive utility for navigating and extracting data from Figma frames and sections. It supports recursive node analysis and grouping for both entire pages and active selections.
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
- - **Context Sensitivity** — Automatically handles logic differences between full page analysis and active selection.
12
- - **Node Filtering** — Specialized methods to retrieve only frames, sections, or text nodes from the hierarchy.
13
- - **Text Aggregation** — Grouping of text nodes by content for easier translation and analysis.
14
- - **Bulk Export** — Streamlined asynchronous screenshotting for all main items in the context.
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
- To initialize the object, call the `FigmaFrame(page, selection)` constructor.
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
- // 1. Initialize for the entire page
28
- const pageManager = new FigmaFrame(figma.currentPage)
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
- // 2. Initialize specifically for the active selection
31
- const selectionManager = new FigmaFrame(figma.currentPage, true)
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
- ## Context & Analysis
153
+ ### Actions and Export
35
154
 
36
- - `isSelection(): boolean`Checks if work is limited to the active selection. Example: `frameManager.isSelection()`
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
- ## Hierarchy Filtering
157
+ ## Data Types
40
158
 
41
- - `getItemsFrame(): FigmaItem<FrameNode>[]` — Filters hierarchy for FRAME nodes. Example: `const frames = frameManager.getItemsFrame()`
42
- - `getItemsSection(): FigmaItem<SectionNode>[]` Filters hierarchy for SECTION nodes. Example: `const sections = frameManager.getItemsSection()`
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
- ## Data & Capture
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
- - `getTexts(): UiFigmaItemText[]` — Aggregates all text nodes grouped by content. Example: `const groups = frameManager.getTexts()`
48
- - `screenshot(): Promise<Uint8Array[]>` Captures JPG screenshots of all main items. Example: `const images = await frameManager.screenshot()`
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
- ## Types
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
- ### `UiFigmaNode`
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
- A union type representing any relevant Figma node that can contain children or be processed by the manager.
55
- - Includes: `DocumentNode`, `PageNode`, `FrameNode`, `SectionNode`, `TextNode`, and other `SceneNode` variants.
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
- ### `UiFigmaItemText`
190
+ #### `UiFigmaFrameStylesList`
191
+ An array of `UiFigmaFrameStylesItem` objects.
58
192
 
59
- An object structure used for grouping text content across the document.
60
- - `id: string[]` A list of unique Figma node IDs where this exact text content is found.
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
- Комплексная утилита для навигации и извлечения данных из фреймов и секций Figma. Поддерживает рекурсивный анализ и группировку узлов как для целых страниц, так и для активных выделений.
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
- Для инициализации объекта вызовите конструктор `FigmaFrame(page, selection)`.
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
- // 1. Инициализация для всей страницы
28
- const pageManager = new FigmaFrame(figma.currentPage)
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
- // 2. Инициализация конкретно для текущего выделения
31
- const selectionManager = new FigmaFrame(figma.currentPage, true)
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
- - `isSelection(): boolean`Проверяет, ограничен ли контекст текущим выделением. Пример: `frameManager.isSelection()`
37
- - `getMainFrames(): FigmaItem[]` — Возвращает основные фреймы/секции от корня. Пример: `const roots = frameManager.getMainFrames()`
155
+ - `screenshot(): Promise<Uint8Array[]>`Создает скриншоты в формате JPG для всех основных элементов.
38
156
 
39
- ## Фильтрация иерархии
157
+ ## Типы данных
40
158
 
41
- - `getItemsFrame(): FigmaItem<FrameNode>[]` — Фильтрует иерархию по узлам FRAME. Пример: `const frames = frameManager.getItemsFrame()`
42
- - `getItemsSection(): FigmaItem<SectionNode>[]` Фильтрует иерархию по узлам SECTION. Пример: `const sections = frameManager.getItemsSection()`
43
- - `getItemsText(): FigmaItem<TextNode>[]` — Фильтрует иерархию по узлам TEXT. Пример: `const textNodes = frameManager.getItemsText()`
159
+ #### `UiFigmaNode`
160
+ Базовый тип для узлов Figma. Представляет собой объединение (`SceneNode | DocumentNode | PageNode | FrameNode` и др.), поддерживающих вложенность и стандартные свойства Figma API.
44
161
 
45
- ## Данные и захват (Capture)
162
+ #### `UiFigmaItemText`
163
+ Результат группировки текстовых слоев по их содержимому.
164
+ - `id: string[]` — Массив уникальных идентификаторов узлов, имеющих одинаковый текст.
165
+ - `text: string` — Само текстовое значение.
46
166
 
47
- - `getTexts(): UiFigmaItemText[]` — Агрегирует текстовые узлы, группируя их по контенту. Пример: `const groups = frameManager.getTexts()`
48
- - `screenshot(): Promise<Uint8Array[]>` Асинхронно создает JPG-скриншоты элементов. Пример: `const images = await frameManager.screenshot()`
167
+ #### `UiFigmaMessageTexts`
168
+ Структура данных для передачи результатов анализа текстов.
169
+ - `frame: FigmaFrame` — Экземпляр класса анализатора.
170
+ - `texts: UiFigmaItemText[]` — Список найденных и сгруппированных текстов.
171
+ - `screenshot: Uint8Array[]` — Массив скриншотов основных элементов.
49
172
 
50
- ## Типы (Types)
173
+ #### `UiFigmaFramesItem`
174
+ Упрощенная информация об элементе для отображения в интерфейсе.
175
+ - `name: string` — Название элемента в Figma.
176
+ - `id: string` — Уникальный идентификатор узла.
177
+ - `image?: Uint8Array | string` — Скриншот элемента (бинарные данные или base64).
51
178
 
52
- ### `UiFigmaNode`
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
- Тип-объединение (union), представляющий любой релевантный узел Figma, который может содержать дочерние элементы или обрабатываться менеджером.
55
- - Включает: `DocumentNode`, `PageNode`, `FrameNode`, `SectionNode`, `TextNode` и другие варианты `SceneNode`.
186
+ #### `UiFigmaFrameStylesData`
187
+ - `document: UiFigmaFrameStylesJson` Дерево узлов в компактном формате.
188
+ - `styles: Record<string, any>` — Словарь определений стилей документа.
56
189
 
57
- ### `UiFigmaItemText`
190
+ #### `UiFigmaFrameStylesList`
191
+ Массив объектов типа `UiFigmaFrameStylesItem`.
58
192
 
59
- Структура объекта, используемая для группировки текстового содержимого по всему документу.
60
- - `id: string[]` список уникальных ID узлов Figma, в которых найден этот текст.
61
- - `text: string` — само текстовое содержимое (очищенное от лишних пробелов).
193
+ #### `UiFigmaFrameStylesCssList`
194
+ Объект (`Record<string, Record<string, string>>`), где ключом является ID узла, а значением его набор CSS-стилей.