@dxtmisha/wiki 0.57.3 → 0.57.6
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-CbNEU1Ei.js} +4 -4
- package/dist/library.js +4 -4
- package/dist/media.js +115 -38
- package/dist/src/media/descriptions/wikiDescriptionsButtonGroup.d.ts +7 -0
- package/dist/src/media/descriptions/wikiDescriptionsRadio.d.ts +7 -0
- package/dist/src/media/mdx/ButtonGroup/wikiMdxButtonGroup.d.ts +7 -0
- package/dist/src/media/props/wikiButtonGroup.d.ts +7 -0
- package/dist/src/media/props/wikiRadio.d.ts +7 -0
- package/dist/storybook.js +2086 -1813
- package/dist/{wikiDescriptions-7XaHU3Yk.js → wikiDescriptions-CJv5fdyX.js} +107 -1
- package/package.json +9 -9
- 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/functional-basic/api/api.en.mdx +39 -2
- package/src/media/functional/functional-basic/api/api.ru.mdx +39 -2
- package/src/media/functional/functional-basic/api/api.vi.mdx +39 -2
- 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/library.ts +0 -8
- /package/dist/{classes → src/classes}/WikiStorybook.d.ts +0 -0
- /package/dist/{classes → src/classes}/WikiStorybookDescriptions.d.ts +0 -0
- /package/dist/{classes → src/classes}/WikiStorybookItem.d.ts +0 -0
- /package/dist/{classes → src/classes}/WikiStorybookProp.d.ts +0 -0
- /package/dist/{documentation → src/documentation}/storybook/StorybookDescriptions.d.ts +0 -0
- /package/dist/{documentation → src/documentation}/storybook/StorybookMain.d.ts +0 -0
- /package/dist/{library.d.ts → src/library.d.ts} +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptions.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsAccordion.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsActionSheet.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsActions.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsAnchor.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsArea.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsArrow.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsBadge.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsBars.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsBlock.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsButton.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsCell.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsCheckbox.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsChip.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsChipGroup.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsClientOnly.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsContainer.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsDialog.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsDummy.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsField.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsFieldCounter.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsFieldLabel.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsFieldMessage.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsGrid.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsGridItem.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsGroup.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsHeader.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsHorizontalScroll.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsIcon.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsImage.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsInput.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsList.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsListGroup.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsListItem.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsListMenu.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsMask.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsMenu.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsModal.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsMotionAxis.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsMotionTransform.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsPage.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsPageArea.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsProgress.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsRipple.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsScrollbar.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsSection.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsSelect.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsSelectValue.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsSkeleton.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsSnackbar.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsSnackbarItem.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsTabItem.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsTabs.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsTabsNavigation.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsTextarea.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsTextareaAutosize.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsTooltip.d.ts +0 -0
- /package/dist/{media → src/media}/descriptions/wikiDescriptionsWindow.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/Accordion/wikiMdxAccordion.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/ActionSheet/wikiMdxActionSheet.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/Actions/wikiMdxActions.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/Anchor/wikiMdxAnchor.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/Area/wikiMdxArea.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/Arrow/wikiMdxArrow.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/Badge/wikiMdxBadge.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/Bars/wikiMdxBars.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/Block/wikiMdxBlock.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/Button/wikiMdxButton.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/Cell/wikiMdxCell.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/Checkbox/wikiMdxCheckbox.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/Chip/wikiMdxChip.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/ChipGroup/wikiMdxChipGroup.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/ClientOnly/wikiMdxClientOnly.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/Container/wikiMdxContainer.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/Dialog/wikiMdxDialog.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/Dummy/wikiMdxDummy.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/Field/wikiMdxField.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/FieldCounter/wikiMdxFieldCounter.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/FieldLabel/wikiMdxFieldLabel.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/FieldMessage/wikiMdxFieldMessage.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/Grid/wikiMdxGrid.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/GridItem/wikiMdxGridItem.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/Group/wikiMdxGroup.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/Header/wikiMdxHeader.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/HorizontalScroll/wikiMdxHorizontalScroll.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/Icon/wikiMdxIcon.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/Image/wikiMdxImage.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/Input/wikiMdxInput.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/List/wikiMdxList.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/ListGroup/wikiMdxListGroup.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/ListItem/wikiMdxListItem.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/ListMenu/wikiMdxListMenu.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/Mask/wikiMdxMask.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/Menu/wikiMdxMenu.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/Modal/wikiMdxModal.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/MotionAxis/wikiMdxMotionAxis.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/MotionTransform/wikiMdxMotionTransform.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/Page/wikiMdxPage.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/PageArea/wikiMdxPageArea.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/Progress/wikiMdxProgress.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/Ripple/wikiMdxRipple.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/Scrollbar/wikiMdxScrollbar.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/Section/wikiMdxSection.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/Select/wikiMdxSelect.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/SelectValue/wikiMdxSelectValue.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/Skeleton/wikiMdxSkeleton.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/Snackbar/wikiMdxSnackbar.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/SnackbarItem/wikiMdxSnackbarItem.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/TabItem/wikiMdxTabItem.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/Tabs/wikiMdxTabs.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/TabsNavigation/wikiMdxTabsNavigation.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/Textarea/wikiMdxTextarea.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/TextareaAutosize/wikiMdxTextareaAutosize.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/Tooltip/wikiMdxTooltip.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/Window/wikiMdxWindow.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/event/wikiMdxEvent.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/expose/wikiMdxExpose.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/slot/wikiMdxSlot.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/style/wikiMdxStyle.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/value/wikiMdxValue.d.ts +0 -0
- /package/dist/{media → src/media}/mdx/wikiMdx.d.ts +0 -0
- /package/dist/{media → src/media}/props/wiki.d.ts +0 -0
- /package/dist/{media → src/media}/props/wikiActions.d.ts +0 -0
- /package/dist/{media → src/media}/props/wikiActionsInclude.d.ts +0 -0
- /package/dist/{media → src/media}/props/wikiAnchor.d.ts +0 -0
- /package/dist/{media → src/media}/props/wikiAria.d.ts +0 -0
- /package/dist/{media → src/media}/props/wikiArrow.d.ts +0 -0
- /package/dist/{media → src/media}/props/wikiArrowInclude.d.ts +0 -0
- /package/dist/{media → src/media}/props/wikiAttributes.d.ts +0 -0
- /package/dist/{media → src/media}/props/wikiBadge.d.ts +0 -0
- /package/dist/{media → src/media}/props/wikiBars.d.ts +0 -0
- /package/dist/{media → src/media}/props/wikiBarsInclude.d.ts +0 -0
- /package/dist/{media → src/media}/props/wikiButton.d.ts +0 -0
- /package/dist/{media → src/media}/props/wikiCheckbox.d.ts +0 -0
- /package/dist/{media → src/media}/props/wikiChip.d.ts +0 -0
- /package/dist/{media → src/media}/props/wikiChipGroup.d.ts +0 -0
- /package/dist/{media → src/media}/props/wikiDialog.d.ts +0 -0
- /package/dist/{media → src/media}/props/wikiField.d.ts +0 -0
- /package/dist/{media → src/media}/props/wikiFieldCounterInclude.d.ts +0 -0
- /package/dist/{media → src/media}/props/wikiForm.d.ts +0 -0
- /package/dist/{media → src/media}/props/wikiGridItem.d.ts +0 -0
- /package/dist/{media → src/media}/props/wikiHook.d.ts +0 -0
- /package/dist/{media → src/media}/props/wikiIcon.d.ts +0 -0
- /package/dist/{media → src/media}/props/wikiIconInclude.d.ts +0 -0
- /package/dist/{media → src/media}/props/wikiImage.d.ts +0 -0
- /package/dist/{media → src/media}/props/wikiInformation.d.ts +0 -0
- /package/dist/{media → src/media}/props/wikiInput.d.ts +0 -0
- /package/dist/{media → src/media}/props/wikiList.d.ts +0 -0
- /package/dist/{media → src/media}/props/wikiListItem.d.ts +0 -0
- /package/dist/{media → src/media}/props/wikiMask.d.ts +0 -0
- /package/dist/{media → src/media}/props/wikiMaskInclude.d.ts +0 -0
- /package/dist/{media → src/media}/props/wikiMenu.d.ts +0 -0
- /package/dist/{media → src/media}/props/wikiMotionAxis.d.ts +0 -0
- /package/dist/{media → src/media}/props/wikiMotionTransform.d.ts +0 -0
- /package/dist/{media → src/media}/props/wikiOption.d.ts +0 -0
- /package/dist/{media → src/media}/props/wikiProgress.d.ts +0 -0
- /package/dist/{media → src/media}/props/wikiPropsTextarea.d.ts +0 -0
- /package/dist/{media → src/media}/props/wikiScrollbar.d.ts +0 -0
- /package/dist/{media → src/media}/props/wikiSelect.d.ts +0 -0
- /package/dist/{media → src/media}/props/wikiSelectValue.d.ts +0 -0
- /package/dist/{media → src/media}/props/wikiSnackbar.d.ts +0 -0
- /package/dist/{media → src/media}/props/wikiSnackbarItem.d.ts +0 -0
- /package/dist/{media → src/media}/props/wikiStatus.d.ts +0 -0
- /package/dist/{media → src/media}/props/wikiStyle.d.ts +0 -0
- /package/dist/{media → src/media}/props/wikiTabs.d.ts +0 -0
- /package/dist/{media → src/media}/props/wikiTabsNavigation.d.ts +0 -0
- /package/dist/{media → src/media}/props/wikiTechnical.d.ts +0 -0
- /package/dist/{media → src/media}/props/wikiText.d.ts +0 -0
- /package/dist/{media → src/media}/props/wikiTooltip.d.ts +0 -0
- /package/dist/{media → src/media}/props/wikiValue.d.ts +0 -0
- /package/dist/{media → src/media}/props/wikiWindow.d.ts +0 -0
- /package/dist/{media.d.ts → src/media.d.ts} +0 -0
- /package/dist/{shims-mdx.d.ts → src/shims-mdx.d.ts} +0 -0
- /package/dist/{storybook.d.ts → src/storybook.d.ts} +0 -0
- /package/dist/{types → src/types}/storybookTypes.d.ts +0 -0
- /package/dist/{types → src/types}/wikiTypes.d.ts +0 -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
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { Meta } from '@storybook/addon-docs/blocks'
|
|
2
|
+
|
|
3
|
+
<Meta title='@dxtmisha/vi/# UI Figma/! Giới thiệu về thư viện'/>
|
|
4
|
+
|
|
5
|
+
# Hệ sinh thái UI Figma
|
|
6
|
+
|
|
7
|
+
Hệ thống `UI Figma` là một cơ sở hạ tầng toàn diện để phát triển các plugin Figma. Nó được thiết kế để xóa bỏ rào cản giữa "phía Mã" (backend của plugin) và "phía UI" (frontend), cung cấp khả năng tương tác liền mạch, quản lý dữ liệu phản hồi và định kiểu dữ liệu đầy đủ.
|
|
8
|
+
|
|
9
|
+
Hệ sinh thái được xây dựng trên kiến trúc ba tầng, trong đó mỗi lớp xử lý một phần cụ thể trong vòng đời của plugin.
|
|
10
|
+
|
|
11
|
+
## Ba tầng tương tác
|
|
12
|
+
|
|
13
|
+
### 1. Cốt lõi giao tiếp (@dxtmisha/figma)
|
|
14
|
+
Gói cơ bản xác định các giao thức tương tác. Nó bao gồm:
|
|
15
|
+
- Các hằng số loại tin nhắn.
|
|
16
|
+
- Các kiểu dữ liệu và giao diện dùng chung.
|
|
17
|
+
- Các lớp trình nhắn tin trừu tượng để tiêu chuẩn hóa việc trao đổi dữ liệu.
|
|
18
|
+
- Các tiện ích để định tuyến tin nhắn giữa UI và sandbox của Figma.
|
|
19
|
+
|
|
20
|
+
### 2. Logic Plugin (@dxtmisha/figma-code)
|
|
21
|
+
Một gói chạy trong môi trường thực thi của Figma (Sandbox). Đây là "bộ não" của plugin, có quyền truy cập trực tiếp vào Figma API:
|
|
22
|
+
- **Phân tích phần tử**: Các lớp `FigmaItem` và `FigmaFrame` để khám phá sâu cấu trúc tài liệu.
|
|
23
|
+
- **Lưu trữ dữ liệu**: `FigmaStorage` để làm việc với PluginData (lưu trữ dữ liệu trực tiếp trong tệp `.fig`).
|
|
24
|
+
- **Xuất dữ liệu**: Các công cụ để tự động tạo ảnh chụp màn hình và xuất tài sản.
|
|
25
|
+
- **Đồng bộ hóa**: Các lớp `FigmaTopLevelFrames` và `FigmaFramesSelected` để chuyển trạng thái tài liệu hiện tại sang UI.
|
|
26
|
+
|
|
27
|
+
### 3. Giao diện phản hồi (@dxtmisha/figma-ref)
|
|
28
|
+
Một gói để phát triển giao diện người dùng bằng Vue 3. Nó chuyển đổi các phản hồi bất đồng bộ từ plugin thành các tham chiếu phản hồi (composables) thuận tiện:
|
|
29
|
+
- **Kho lưu trữ phản hồi**: `useFigmaStorage` và `useFigmaClientStorage` để liên kết dữ liệu tức thì giữa UI và bộ nhớ Figma.
|
|
30
|
+
- **Trình quan sát**: `useFigmaUiFrames` để tự động cập nhật danh sách các frame có sẵn.
|
|
31
|
+
- **Quản lý lựa chọn**: `useFigmaUiSelected` để liên kết các phần tử được chọn trong UI với vùng lựa chọn hoạt động trong Figma.
|
|
32
|
+
|
|
33
|
+
## Các tính năng của hệ thống
|
|
34
|
+
|
|
35
|
+
**Tương tác liền mạch**
|
|
36
|
+
Các nhà phát triển không còn cần phải quản lý thủ công các lệnh gọi `postMessage` và trình lắng nghe sự kiện. Hệ thống tự động xử lý việc định tuyến và xác thực kiểu dữ liệu.
|
|
37
|
+
|
|
38
|
+
**Tính phản hồi có sẵn**
|
|
39
|
+
Sử dụng Vue Composition API cho phép bạn xây dựng giao diện plugin dễ dàng như các ứng dụng web tiêu chuẩn, với dữ liệu tự động được lưu trữ bền vững trong tài liệu Figma.
|
|
40
|
+
|
|
41
|
+
**An toàn kiểu dữ liệu**
|
|
42
|
+
Tất cả các tin nhắn và cấu trúc dữ liệu đều được định kiểu nghiêm ngặt, loại bỏ lỗi khi chuyển dữ liệu giữa các môi trường biệt lập (UI và Sandbox).
|
|
43
|
+
|
|
44
|
+
## Tại sao nên sử dụng hệ sinh thái này?
|
|
45
|
+
|
|
46
|
+
- **Tốc độ phát triển**: Nền tảng có sẵn cho các tác vụ điển hình (lựa chọn, cài đặt, ảnh chụp màn hình).
|
|
47
|
+
- **Kiến trúc sạch**: Phân tách rõ ràng các mối quan tâm giữa logic nghiệp vụ và giao diện người dùng.
|
|
48
|
+
- **Khả năng mở rộng**: Dễ dàng thêm các tính năng mới nhờ cấu trúc mô-đun và mô hình Messenger.
|
|
49
|
+
|
|
50
|
+
## Git
|
|
51
|
+
|
|
52
|
+
[https://github.com/dxtmisha/dxt-ui/tree/main/packages/figma](https://github.com/dxtmisha/dxt-ui/tree/main/packages/figma)
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { Meta } from '@storybook/addon-docs/blocks'
|
|
2
|
+
|
|
3
|
+
<Meta title='@dxtmisha/en/# UI Figma/# Working with Frames'/>
|
|
4
|
+
|
|
5
|
+
# Working with Frames
|
|
6
|
+
|
|
7
|
+
The library provides tools for managing the list of frames on the current Figma page and tracking selected elements. This allows you to build complex navigation interfaces and bulk selection systems within your plugin.
|
|
8
|
+
|
|
9
|
+
## Backend (Backend / plugin/code.ts)
|
|
10
|
+
|
|
11
|
+
For automatic frame data synchronization, the corresponding handlers must be initialized on the plugin side.
|
|
12
|
+
|
|
13
|
+
### Initialization
|
|
14
|
+
```typescript
|
|
15
|
+
import { FigmaTopLevelFrames, FigmaFramesSelected } from '@dxtmisha/figma-code'
|
|
16
|
+
|
|
17
|
+
// Activate listeners for frame list and selection management
|
|
18
|
+
FigmaTopLevelFrames.send()
|
|
19
|
+
FigmaFramesSelected.send()
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Interface (UI / Iframe)
|
|
23
|
+
|
|
24
|
+
Data about all frames on the page and tools for managing the plugin's internal selection list are available in the interface.
|
|
25
|
+
|
|
26
|
+
### Page Frame List (Vue)
|
|
27
|
+
Allows you to retrieve a list of all frames and sections at the root of the current page with screenshots.
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
import { useFigmaUiFrames } from '@dxtmisha/figma-ref'
|
|
31
|
+
|
|
32
|
+
const { frames, loading } = useFigmaUiFrames()
|
|
33
|
+
|
|
34
|
+
/* frames.value contains a list of objects:
|
|
35
|
+
{
|
|
36
|
+
id: string,
|
|
37
|
+
name: string,
|
|
38
|
+
image: Uint8Array | string // JPG screenshot
|
|
39
|
+
}
|
|
40
|
+
*/
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### Plugin Selected Elements (Vue)
|
|
44
|
+
A mechanism for tracking and modifying the list of "selected" elements within the plugin's interface. This state is preserved globally at the plugin session level.
|
|
45
|
+
|
|
46
|
+
```typescript
|
|
47
|
+
import { useFigmaUiSelected } from '@dxtmisha/figma-ref'
|
|
48
|
+
|
|
49
|
+
const {
|
|
50
|
+
selected, // List of selected frame IDs
|
|
51
|
+
isSelected, // Check function: isSelected(id)
|
|
52
|
+
toggleSelected, // Toggle function: toggleSelected(id, boolean)
|
|
53
|
+
} = useFigmaUiSelected()
|
|
54
|
+
|
|
55
|
+
// Example usage:
|
|
56
|
+
const active = isSelected('1:123')
|
|
57
|
+
const toggle = () => toggleSelected('1:123', !active.value)
|
|
58
|
+
```
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { Meta } from '@storybook/addon-docs/blocks'
|
|
2
|
+
|
|
3
|
+
<Meta title='@dxtmisha/ru/# UI Figma/# Работа с фреймами'/>
|
|
4
|
+
|
|
5
|
+
# Работа с фреймами
|
|
6
|
+
|
|
7
|
+
Библиотека предоставляет инструменты для управления списком фреймов на текущей странице Figma и отслеживания выбранных элементов. Это позволяет строить сложные интерфейсы навигации и системы массового выбора внутри плагина.
|
|
8
|
+
|
|
9
|
+
## Бэкенд (Backend / plugin/code.ts)
|
|
10
|
+
|
|
11
|
+
Для автоматической синхронизации данных о фреймах необходимо инициализировать соответствующие обработчики на стороне плагина.
|
|
12
|
+
|
|
13
|
+
### Инициализация
|
|
14
|
+
```typescript
|
|
15
|
+
import { FigmaTopLevelFrames, FigmaFramesSelected } from '@dxtmisha/figma-code'
|
|
16
|
+
|
|
17
|
+
// Активация слушателей списка фреймов и управления выбором
|
|
18
|
+
FigmaTopLevelFrames.send()
|
|
19
|
+
FigmaFramesSelected.send()
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Интерфейс (UI / Iframe)
|
|
23
|
+
|
|
24
|
+
В интерфейсе доступны данные о всех фреймах страницы и инструменты для управления внутренним списком выбора плагина.
|
|
25
|
+
|
|
26
|
+
### Список фреймов страницы (Vue)
|
|
27
|
+
Позволяет получить список всех фреймов и секций в корне текущей страницы со скриншотами.
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
import { useFigmaUiFrames } from '@dxtmisha/figma-ref'
|
|
31
|
+
|
|
32
|
+
const { frames, loading } = useFigmaUiFrames()
|
|
33
|
+
|
|
34
|
+
/* frames.value содержит список объектов:
|
|
35
|
+
{
|
|
36
|
+
id: string,
|
|
37
|
+
name: string,
|
|
38
|
+
image: Uint8Array | string // Скриншот JPG
|
|
39
|
+
}
|
|
40
|
+
*/
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### Выбранные элементы плагина (Vue)
|
|
44
|
+
Механизм для отслеживания и изменения списка «выбранных» элементов внутри интерфейса плагина. Это состояние сохраняется глобально на уровне сессии плагина.
|
|
45
|
+
|
|
46
|
+
```typescript
|
|
47
|
+
import { useFigmaUiSelected } from '@dxtmisha/figma-ref'
|
|
48
|
+
|
|
49
|
+
const {
|
|
50
|
+
selected, // Список ID выбранных фреймов
|
|
51
|
+
isSelected, // Функция проверки: isSelected(id)
|
|
52
|
+
toggleSelected, // Функция переключения: toggleSelected(id, boolean)
|
|
53
|
+
} = useFigmaUiSelected()
|
|
54
|
+
|
|
55
|
+
// Пример использования:
|
|
56
|
+
const active = isSelected('1:123')
|
|
57
|
+
const toggle = () => toggleSelected('1:123', !active.value)
|
|
58
|
+
```
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { Meta } from '@storybook/addon-docs/blocks'
|
|
2
|
+
|
|
3
|
+
<Meta title='@dxtmisha/vi/# UI Figma/# Làm việc với Frame'/>
|
|
4
|
+
|
|
5
|
+
# Làm việc với Frame
|
|
6
|
+
|
|
7
|
+
Thư viện cung cấp các công cụ để quản lý danh sách các frame trên trang Figma hiện tại và theo dõi các phần tử được chọn. Điều này cho phép bạn xây dựng các giao diện điều hướng phức tạp và hệ thống chọn hàng loạt bên trong plugin của mình.
|
|
8
|
+
|
|
9
|
+
## Backend (Backend / plugin/code.ts)
|
|
10
|
+
|
|
11
|
+
Để đồng bộ hóa dữ liệu frame tự động, các trình xử lý tương ứng phải được khởi tạo ở phía plugin.
|
|
12
|
+
|
|
13
|
+
### Khởi tạo
|
|
14
|
+
```typescript
|
|
15
|
+
import { FigmaTopLevelFrames, FigmaFramesSelected } from '@dxtmisha/figma-code'
|
|
16
|
+
|
|
17
|
+
// Kích hoạt trình lắng nghe cho danh sách frame và quản lý vùng chọn
|
|
18
|
+
FigmaTopLevelFrames.send()
|
|
19
|
+
FigmaFramesSelected.send()
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
## Giao diện (UI / Iframe)
|
|
23
|
+
|
|
24
|
+
Dữ liệu về tất cả các frame trên trang và các công cụ để quản lý danh sách vùng chọn nội bộ của plugin có sẵn trong giao diện.
|
|
25
|
+
|
|
26
|
+
### Danh sách Frame của trang (Vue)
|
|
27
|
+
Cho phép bạn lấy danh sách tất cả các frame và section tại thư mục gốc của trang hiện tại kèm theo ảnh chụp màn hình.
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
import { useFigmaUiFrames } from '@dxtmisha/figma-ref'
|
|
31
|
+
|
|
32
|
+
const { frames, loading } = useFigmaUiFrames()
|
|
33
|
+
|
|
34
|
+
/* frames.value chứa danh sách các đối tượng:
|
|
35
|
+
{
|
|
36
|
+
id: string,
|
|
37
|
+
name: string,
|
|
38
|
+
image: Uint8Array | string // Ảnh chụp màn hình JPG
|
|
39
|
+
}
|
|
40
|
+
*/
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### Các phần tử được chọn trong Plugin (Vue)
|
|
44
|
+
Một cơ chế để theo dõi và sửa đổi danh sách các phần tử "được chọn" trong giao diện của plugin. Trạng thái này được duy trì trên toàn cầu ở cấp độ phiên plugin.
|
|
45
|
+
|
|
46
|
+
```typescript
|
|
47
|
+
import { useFigmaUiSelected } from '@dxtmisha/figma-ref'
|
|
48
|
+
|
|
49
|
+
const {
|
|
50
|
+
selected, // Danh sách ID các frame được chọn
|
|
51
|
+
isSelected, // Hàm kiểm tra: isSelected(id)
|
|
52
|
+
toggleSelected, // Hàm chuyển đổi: toggleSelected(id, boolean)
|
|
53
|
+
} = useFigmaUiSelected()
|
|
54
|
+
|
|
55
|
+
// Ví dụ sử dụng:
|
|
56
|
+
const active = isSelected('1:123')
|
|
57
|
+
const toggle = () => toggleSelected('1:123', !active.value)
|
|
58
|
+
```
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { Meta } from '@storybook/addon-docs/blocks'
|
|
2
|
+
|
|
3
|
+
<Meta title='@dxtmisha/en/# UI Figma/# Messenger System'/>
|
|
4
|
+
|
|
5
|
+
# Working with Messages (Messenger)
|
|
6
|
+
|
|
7
|
+
The messaging mechanism is the central link in the architecture of Figma plugins. Since the "Code Side" (Sandbox) and the "Interface Side" (UI) run in isolated environments, any interaction between them requires the use of the `postMessage` system.
|
|
8
|
+
|
|
9
|
+
The library simplifies this process by providing standardized messengers and automatic routing.
|
|
10
|
+
|
|
11
|
+
## Initialization and Security
|
|
12
|
+
|
|
13
|
+
Figma plugins operate in an environment where multiple plugins can be active simultaneously. To prevent message conflicts and ensure that your UI only processes data from your specific plugin, the library uses the `FigmaPostCode` system.
|
|
14
|
+
|
|
15
|
+
Both the **Backend** and the **Interface** must be initialized with the same unique identifier (typically the `id` from your `manifest.json`) before using the messengers.
|
|
16
|
+
|
|
17
|
+
```typescript
|
|
18
|
+
import { FigmaPostCode } from '@dxtmisha/figma'
|
|
19
|
+
import manifest from '../manifest.json'
|
|
20
|
+
|
|
21
|
+
// Must be called on both sides (Code and UI)
|
|
22
|
+
FigmaPostCode.set(manifest.id)
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Backend (Backend / plugin/code.ts)
|
|
26
|
+
|
|
27
|
+
On the code side, the `FigmaPluginMessenger` class is used to subscribe to events and send data to the UI.
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
import { FigmaPostCode } from '@dxtmisha/figma'
|
|
31
|
+
import { FigmaPluginMessenger } from '@dxtmisha/figma-code'
|
|
32
|
+
import manifest from '../manifest.json'
|
|
33
|
+
|
|
34
|
+
// 1. Initialize identification
|
|
35
|
+
FigmaPostCode.set(manifest.id)
|
|
36
|
+
|
|
37
|
+
// 2. Work with the messenger
|
|
38
|
+
const messenger = FigmaPluginMessenger.getInstance()
|
|
39
|
+
|
|
40
|
+
messenger.add('my-action', (data) => {
|
|
41
|
+
console.log('Data received:', data)
|
|
42
|
+
messenger.post('my-action', { status: 'success' })
|
|
43
|
+
})
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Interface (UI / Iframe)
|
|
47
|
+
|
|
48
|
+
In the interface, the mirror class `FigmaUiMessenger` is used for interaction with the backend.
|
|
49
|
+
|
|
50
|
+
```typescript
|
|
51
|
+
import { FigmaPostCode } from '@dxtmisha/figma'
|
|
52
|
+
import { FigmaUiMessenger } from '@dxtmisha/figma'
|
|
53
|
+
import manifest from '../manifest.json'
|
|
54
|
+
|
|
55
|
+
// 1. Initialize identification (same ID as backend)
|
|
56
|
+
FigmaPostCode.set(manifest.id)
|
|
57
|
+
|
|
58
|
+
// 2. Work with the messenger
|
|
59
|
+
const messenger = FigmaUiMessenger.getInstance()
|
|
60
|
+
|
|
61
|
+
messenger.post('my-action', { payload: 'hello' })
|
|
62
|
+
|
|
63
|
+
messenger.add('my-action', (result) => {
|
|
64
|
+
console.log('Result:', result)
|
|
65
|
+
})
|
|
66
|
+
```
|
|
67
|
+
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { Meta } from '@storybook/addon-docs/blocks'
|
|
2
|
+
|
|
3
|
+
<Meta title='@dxtmisha/ru/# UI Figma/# Система мессенджеров'/>
|
|
4
|
+
|
|
5
|
+
# Работа с сообщениями (Messenger)
|
|
6
|
+
|
|
7
|
+
Механизм сообщений — центральное звено архитектуры Figma-плагинов. Поскольку «сторона кода» (Sandbox) и «сторона интерфейса» (UI) работают в изолированных средах, любое взаимодействие между ними требует использования системы `postMessage`.
|
|
8
|
+
|
|
9
|
+
Библиотека упрощает этот процесс, предоставляя стандартизированные мессенджеры и автоматическую маршрутизацию.
|
|
10
|
+
|
|
11
|
+
## Инициализация и безопасность
|
|
12
|
+
|
|
13
|
+
Плагины Figma работают в среде, где одновременно могут быть активны несколько плагинов. Чтобы предотвратить конфликты сообщений и гарантировать, что ваш UI обрабатывает данные только от вашего конкретного плагина, библиотека использует систему `FigmaPostCode`.
|
|
14
|
+
|
|
15
|
+
Обе стороны (**Бэкенд** и **Интерфейс**) должны быть инициализированы одним и тем же уникальным идентификатором (обычно это `id` из вашего `manifest.json`) перед использованием мессенджеров.
|
|
16
|
+
|
|
17
|
+
```typescript
|
|
18
|
+
import { FigmaPostCode } from '@dxtmisha/figma'
|
|
19
|
+
import manifest from '../manifest.json'
|
|
20
|
+
|
|
21
|
+
// Необходимо вызвать на обеих сторонах (Code и UI)
|
|
22
|
+
FigmaPostCode.set(manifest.id)
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Бэкенд (Backend / plugin/code.ts)
|
|
26
|
+
|
|
27
|
+
На стороне кода используется класс `FigmaPluginMessenger` для подписки на события и отправки данных в UI.
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
import { FigmaPostCode } from '@dxtmisha/figma'
|
|
31
|
+
import { FigmaPluginMessenger } from '@dxtmisha/figma-code'
|
|
32
|
+
import manifest from '../manifest.json'
|
|
33
|
+
|
|
34
|
+
// 1. Инициализация идентификации
|
|
35
|
+
FigmaPostCode.set(manifest.id)
|
|
36
|
+
|
|
37
|
+
// 2. Работа с мессенджером
|
|
38
|
+
const messenger = FigmaPluginMessenger.getInstance()
|
|
39
|
+
|
|
40
|
+
messenger.add('my-action', (data) => {
|
|
41
|
+
console.log('Данные получены:', data)
|
|
42
|
+
messenger.post('my-action', { status: 'success' })
|
|
43
|
+
})
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Интерфейс (UI / Iframe)
|
|
47
|
+
|
|
48
|
+
В интерфейсе используется зеркальный класс `FigmaUiMessenger` для взаимодействия с бэкендом.
|
|
49
|
+
|
|
50
|
+
```typescript
|
|
51
|
+
import { FigmaPostCode } from '@dxtmisha/figma'
|
|
52
|
+
import { FigmaUiMessenger } from '@dxtmisha/figma'
|
|
53
|
+
import manifest from '../manifest.json'
|
|
54
|
+
|
|
55
|
+
// 1. Инициализация идентификации (тот же ID, что и в бэкенде)
|
|
56
|
+
FigmaPostCode.set(manifest.id)
|
|
57
|
+
|
|
58
|
+
// 2. Работа с мессенджером
|
|
59
|
+
const messenger = FigmaUiMessenger.getInstance()
|
|
60
|
+
|
|
61
|
+
messenger.post('my-action', { payload: 'hello' })
|
|
62
|
+
|
|
63
|
+
messenger.add('my-action', (result) => {
|
|
64
|
+
console.log('Результат:', result)
|
|
65
|
+
})
|
|
66
|
+
```
|
|
67
|
+
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { Meta } from '@storybook/addon-docs/blocks'
|
|
2
|
+
|
|
3
|
+
<Meta title='@dxtmisha/vi/# UI Figma/# Hệ thống Messenger'/>
|
|
4
|
+
|
|
5
|
+
# Làm việc với tin nhắn (Messenger)
|
|
6
|
+
|
|
7
|
+
Cơ chế gửi tin nhắn là mắt xích trung tâm trong kiến trúc của các plugin Figma. Vì "Phía Mã" (Sandbox) và "Phía Giao diện" (UI) chạy trong các môi trường biệt lập, nên bất kỳ tương tác nào giữa chúng đều yêu cầu sử dụng hệ thống `postMessage`.
|
|
8
|
+
|
|
9
|
+
Thư viện đơn giản hóa quy trình này bằng cách cung cấp các messenger tiêu chuẩn hóa và định tuyến tự động.
|
|
10
|
+
|
|
11
|
+
## Khởi tạo và Bảo mật
|
|
12
|
+
|
|
13
|
+
Các plugin Figma hoạt động trong môi trường có thể có nhiều plugin cùng hoạt động. Để ngăn chặn xung đột tin nhắn và đảm bảo UI của bạn chỉ xử lý dữ liệu từ plugin cụ thể của mình, thư viện sử dụng hệ thống `FigmaPostCode`.
|
|
14
|
+
|
|
15
|
+
Cả **Backend** và **Giao diện** phải được khởi tạo với cùng một mã định danh duy nhất (thường là `id` từ `manifest.json` của bạn) trước khi sử dụng messenger.
|
|
16
|
+
|
|
17
|
+
```typescript
|
|
18
|
+
import { FigmaPostCode } from '@dxtmisha/figma'
|
|
19
|
+
import manifest from '../manifest.json'
|
|
20
|
+
|
|
21
|
+
// Phải được gọi ở cả hai phía (Code và UI)
|
|
22
|
+
FigmaPostCode.set(manifest.id)
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Backend (Backend / plugin/code.ts)
|
|
26
|
+
|
|
27
|
+
Về phía mã, lớp `FigmaPluginMessenger` được sử dụng để đăng ký các sự kiện và gửi dữ liệu đến UI.
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
import { FigmaPostCode } from '@dxtmisha/figma'
|
|
31
|
+
import { FigmaPluginMessenger } from '@dxtmisha/figma-code'
|
|
32
|
+
import manifest from '../manifest.json'
|
|
33
|
+
|
|
34
|
+
// 1. Khởi tạo định danh
|
|
35
|
+
FigmaPostCode.set(manifest.id)
|
|
36
|
+
|
|
37
|
+
// 2. Làm việc với messenger
|
|
38
|
+
const messenger = FigmaPluginMessenger.getInstance()
|
|
39
|
+
|
|
40
|
+
messenger.add('my-action', (data) => {
|
|
41
|
+
console.log('Dữ liệu đã nhận:', data)
|
|
42
|
+
messenger.post('my-action', { status: 'success' })
|
|
43
|
+
})
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## Giao diện (UI / Iframe)
|
|
47
|
+
|
|
48
|
+
Trong giao diện, lớp gương `FigmaUiMessenger` được sử dụng để tương tác với backend.
|
|
49
|
+
|
|
50
|
+
```typescript
|
|
51
|
+
import { FigmaPostCode } from '@dxtmisha/figma'
|
|
52
|
+
import { FigmaUiMessenger } from '@dxtmisha/figma'
|
|
53
|
+
import manifest from '../manifest.json'
|
|
54
|
+
|
|
55
|
+
// 1. Khởi tạo định danh (cùng ID với backend)
|
|
56
|
+
FigmaPostCode.set(manifest.id)
|
|
57
|
+
|
|
58
|
+
// 2. Làm việc với messenger
|
|
59
|
+
const messenger = FigmaUiMessenger.getInstance()
|
|
60
|
+
|
|
61
|
+
messenger.post('my-action', { payload: 'hello' })
|
|
62
|
+
|
|
63
|
+
messenger.add('my-action', (result) => {
|
|
64
|
+
console.log('Kết quả:', result)
|
|
65
|
+
})
|
|
66
|
+
```
|
|
67
|
+
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { Meta } from '@storybook/addon-docs/blocks'
|
|
2
|
+
|
|
3
|
+
<Meta title='@dxtmisha/en/# UI Figma/# Frame Selection'/>
|
|
4
|
+
|
|
5
|
+
# Working with Selection
|
|
6
|
+
|
|
7
|
+
The selection system provides a connection between the Figma canvas and the plugin interface. It allows the application to react to user actions in the editor and manage focus programmatically.
|
|
8
|
+
|
|
9
|
+
## Backend (Backend / plugin/code.ts)
|
|
10
|
+
|
|
11
|
+
On the plugin's code side, it is necessary to initialize synchronization mechanisms and, if needed, use functions for programmatic focus.
|
|
12
|
+
|
|
13
|
+
#### Initialization
|
|
14
|
+
Call one of the functions depending on the required level of control:
|
|
15
|
+
|
|
16
|
+
- **`setupFrameSelection()`** — Recommended. Sets up bidirectional communication (tracking + programmatic selection from the UI).
|
|
17
|
+
- **`makeFigmaFrameSelection()`** — Sets up only tracking of changes on the Figma canvas (Backend -> UI).
|
|
18
|
+
|
|
19
|
+
```typescript
|
|
20
|
+
import { setupFrameSelection } from '@dxtmisha/figma-code'
|
|
21
|
+
|
|
22
|
+
// Called once during plugin startup
|
|
23
|
+
setupFrameSelection()
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
#### Programmatic Management
|
|
27
|
+
If you need to select an object and focus the camera on it directly from the backend code:
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
import { toFrameSelection } from '@dxtmisha/figma-code'
|
|
31
|
+
|
|
32
|
+
await toFrameSelection('12:34')
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Interface (UI / Iframe)
|
|
36
|
+
|
|
37
|
+
Tools for retrieving current selection data and commanding changes from the plugin interface.
|
|
38
|
+
|
|
39
|
+
#### Reactive Usage (Vue)
|
|
40
|
+
The most convenient way is through the `useFigmaFrameSelection` composable.
|
|
41
|
+
|
|
42
|
+
```typescript
|
|
43
|
+
import { useFigmaFrameSelection } from '@dxtmisha/figma-ref'
|
|
44
|
+
|
|
45
|
+
const {
|
|
46
|
+
selection, // List of selected frames (ComputedRef)
|
|
47
|
+
setSelection, // Method to change selection: setSelection(id)
|
|
48
|
+
loading // Loading state
|
|
49
|
+
} = useFigmaFrameSelection()
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
#### Direct Control (JavaScript)
|
|
53
|
+
If you are not using Vue, you can send a command or manually subscribe to changes:
|
|
54
|
+
|
|
55
|
+
```typescript
|
|
56
|
+
import { sendFrameSelection, fetchFrameSelection } from '@dxtmisha/figma'
|
|
57
|
+
|
|
58
|
+
// Change selection
|
|
59
|
+
sendFrameSelection('12:34')
|
|
60
|
+
|
|
61
|
+
// Subscribe to changes manually
|
|
62
|
+
fetchFrameSelection((selection) => {
|
|
63
|
+
console.log('Current selection:', selection)
|
|
64
|
+
})
|
|
65
|
+
```
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { Meta } from '@storybook/addon-docs/blocks'
|
|
2
|
+
|
|
3
|
+
<Meta title='@dxtmisha/ru/# UI Figma/# Работа с выделением'/>
|
|
4
|
+
|
|
5
|
+
# Работа с выделением
|
|
6
|
+
|
|
7
|
+
Система выделения обеспечивает связь между холстом Figma и интерфейсом плагина. Она позволяет приложению реагировать на действия пользователя в редакторе и управлять фокусом программно.
|
|
8
|
+
|
|
9
|
+
## Бэкенд (Backend / plugin/code.ts)
|
|
10
|
+
|
|
11
|
+
На стороне кода плагина необходимо инициализировать механизмы синхронизации и, при необходимости, использовать функции для программного фокуса.
|
|
12
|
+
|
|
13
|
+
#### Инициализация
|
|
14
|
+
Вызовите одну из функций в зависимости от требуемого уровня контроля:
|
|
15
|
+
|
|
16
|
+
- **`setupFrameSelection()`** — Рекомендуется. Настраивает двустороннюю связь (отслеживание + программное выделение из UI).
|
|
17
|
+
- **`makeFigmaFrameSelection()`** — Настраивает только отслеживание изменений на холсте Figma (Backend -> UI).
|
|
18
|
+
|
|
19
|
+
```typescript
|
|
20
|
+
import { setupFrameSelection } from '@dxtmisha/figma-code'
|
|
21
|
+
|
|
22
|
+
// Вызывается один раз при старте плагина
|
|
23
|
+
setupFrameSelection()
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
#### Программное управление
|
|
27
|
+
Если нужно выделить объект и сфокусировать на нем камеру прямо из кода бэкенда:
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
import { toFrameSelection } from '@dxtmisha/figma-code'
|
|
31
|
+
|
|
32
|
+
await toFrameSelection('12:34')
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Интерфейс (UI / Iframe)
|
|
36
|
+
|
|
37
|
+
Инструменты для получения данных о текущем выделении и подачи команд на его изменение из интерфейса плагина.
|
|
38
|
+
|
|
39
|
+
#### Реактивное использование (Vue)
|
|
40
|
+
Самый удобный способ работы через композитор `useFigmaFrameSelection`.
|
|
41
|
+
|
|
42
|
+
```typescript
|
|
43
|
+
import { useFigmaFrameSelection } from '@dxtmisha/figma-ref'
|
|
44
|
+
|
|
45
|
+
const {
|
|
46
|
+
selection, // Список выделенных фреймов (ComputedRef)
|
|
47
|
+
setSelection, // Метод для смены выделения: setSelection(id)
|
|
48
|
+
loading // Состояние загрузки
|
|
49
|
+
} = useFigmaFrameSelection()
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
#### Прямое управление (JavaScript)
|
|
53
|
+
Если вы не используете Vue, можно отправить команду или вручную подписаться на изменения:
|
|
54
|
+
|
|
55
|
+
```typescript
|
|
56
|
+
import { sendFrameSelection, fetchFrameSelection } from '@dxtmisha/figma'
|
|
57
|
+
|
|
58
|
+
// Сменить выделение
|
|
59
|
+
sendFrameSelection('12:34')
|
|
60
|
+
|
|
61
|
+
// Подписаться на изменения вручную
|
|
62
|
+
fetchFrameSelection((selection) => {
|
|
63
|
+
console.log('Текущее выделение:', selection)
|
|
64
|
+
})
|
|
65
|
+
```
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { Meta } from '@storybook/addon-docs/blocks'
|
|
2
|
+
|
|
3
|
+
<Meta title='@dxtmisha/vi/# UI Figma/# Quản lý vùng chọn'/>
|
|
4
|
+
|
|
5
|
+
# Quản lý vùng chọn
|
|
6
|
+
|
|
7
|
+
Hệ thống vùng chọn cung cấp sự kết nối giữa canvas Figma và giao diện plugin. Nó cho phép ứng dụng phản ứng với các hành động của người dùng trong trình chỉnh sửa và quản lý tiêu điểm theo chương trình.
|
|
8
|
+
|
|
9
|
+
## Backend (Backend / plugin/code.ts)
|
|
10
|
+
|
|
11
|
+
Về phía mã của plugin, cần phải khởi tạo các cơ chế đồng bộ hóa và, nếu cần, sử dụng các hàm để lấy nét theo chương trình.
|
|
12
|
+
|
|
13
|
+
#### Khởi tạo
|
|
14
|
+
Gọi một trong các hàm tùy thuộc vào mức độ kiểm soát yêu cầu:
|
|
15
|
+
|
|
16
|
+
- **`setupFrameSelection()`** — Được khuyến nghị. Thiết lập giao tiếp hai chiều (theo dõi + chọn theo chương trình từ UI).
|
|
17
|
+
- **`makeFigmaFrameSelection()`** — Chỉ thiết lập theo dõi các thay đổi trên canvas Figma (Backend -> UI).
|
|
18
|
+
|
|
19
|
+
```typescript
|
|
20
|
+
import { setupFrameSelection } from '@dxtmisha/figma-code'
|
|
21
|
+
|
|
22
|
+
// Được gọi một lần khi khởi động plugin
|
|
23
|
+
setupFrameSelection()
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
#### Quản lý theo chương trình
|
|
27
|
+
Nếu bạn cần chọn một đối tượng và lấy nét camera vào đối tượng đó trực tiếp từ mã backend:
|
|
28
|
+
|
|
29
|
+
```typescript
|
|
30
|
+
import { toFrameSelection } from '@dxtmisha/figma-code'
|
|
31
|
+
|
|
32
|
+
await toFrameSelection('12:34')
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Giao diện (UI / Iframe)
|
|
36
|
+
|
|
37
|
+
Các công cụ để lấy dữ liệu vùng chọn hiện tại và ra lệnh thay đổi từ giao diện plugin.
|
|
38
|
+
|
|
39
|
+
#### Sử dụng phản hồi (Vue)
|
|
40
|
+
Cách thuận tiện nhất là thông qua `useFigmaFrameSelection` composable.
|
|
41
|
+
|
|
42
|
+
```typescript
|
|
43
|
+
import { useFigmaFrameSelection } from '@dxtmisha/figma-ref'
|
|
44
|
+
|
|
45
|
+
const {
|
|
46
|
+
selection, // Danh sách các frame được chọn (ComputedRef)
|
|
47
|
+
setSelection, // Phương thức thay đổi vùng chọn: setSelection(id)
|
|
48
|
+
loading // Trạng thái tải
|
|
49
|
+
} = useFigmaFrameSelection()
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
#### Điều khiển trực tiếp (JavaScript)
|
|
53
|
+
Nếu bạn không sử dụng Vue, bạn có thể gửi lệnh hoặc đăng ký thay đổi thủ công:
|
|
54
|
+
|
|
55
|
+
```typescript
|
|
56
|
+
import { sendFrameSelection, fetchFrameSelection } from '@dxtmisha/figma'
|
|
57
|
+
|
|
58
|
+
// Thay đổi vùng chọn
|
|
59
|
+
sendFrameSelection('12:34')
|
|
60
|
+
|
|
61
|
+
// Đăng ký thay đổi thủ công
|
|
62
|
+
fetchFrameSelection((selection) => {
|
|
63
|
+
console.log('Vùng chọn hiện tại:', selection)
|
|
64
|
+
})
|
|
65
|
+
```
|