openpencil/packages/vue/src/index.ts
Luca Candela 18899ff13c
feat(editor): add Figma-style frame presets (#418)
Add frame preset creation and resizing with constraint-aware layout, undo/redo, toolbar flyouts, localization, documentation, and regression coverage.
2026-07-26 00:05:57 +03:00

388 lines
12 KiB
TypeScript

export type {
Editor,
EditorState,
EditorOptions,
EditorEvents,
EditorEventName,
Tool,
EditorToolDef
} from '@open-pencil/core/editor'
export { createEditor, EDITOR_TOOLS, TOOL_SHORTCUTS } from '@open-pencil/core/editor'
/**
* Public editor-context API for the Vue SDK.
*
* These are the primary entry points for making an editor available to a Vue
* subtree and reading it back inside composables and headless primitives.
*/
export { provideEditor, useEditor, EDITOR_KEY } from '#vue/editor/context'
/** Canvas and input integration composables. */
export { useCanvas } from '#vue/canvas/surface/use'
export type { UseCanvasOptions } from '#vue/canvas/surface/use'
export { useCanvasInput } from '#vue/canvas/useCanvasInput'
export { useCanvasVirtualReference } from '#vue/canvas/overlays/useCanvasVirtualReference'
export { useTextEdit } from '#vue/canvas/text-edit/use'
export { useCanvasDrop, extractImageFilesFromClipboard } from '#vue/canvas/drop/use'
/** Low-level selection, graph, and derived-state helpers. */
export { useNodeProps, MIXED } from '#vue/controls/node-props/use'
export type { MixedValue } from '#vue/controls/node-props/use'
export { useSceneComputed } from '#vue/internal/scene-computed/use'
export { useSelectionState } from '#vue/editor/selection-state/use'
export { useEditorEvent } from '#vue/editor/events/use'
export { useSelectionCapabilities } from '#vue/editor/selection-capabilities/use'
/** Command and menu composition helpers. */
export { useEditorCommands } from '#vue/editor/commands/use'
export { EDITOR_COMMAND_METADATA, editorCommandMetadata } from '#vue/editor/commands/registry'
export { formatShortcut, shortcutPlatform } from '#vue/editor/commands/shortcut'
export type { EditorCommandMetadata } from '#vue/editor/commands/registry'
export type { ShortcutPlatform } from '#vue/editor/commands/shortcut'
export type { EditorCommand, EditorCommandId } from '#vue/editor/commands/use'
export { useMenuModel } from '#vue/editor/menu-model/use'
export type { MenuActionNode, MenuEntry, MenuSeparatorNode } from '#vue/editor/menu-model/use'
/** Miscellaneous editor-shell helpers. */
export { useViewportKind } from '#vue/editor/viewport-kind/use'
export { useLayerDrag } from '#vue/primitives/LayerTree/useLayerDrag'
export { useFlatReorderDrag } from '#vue/shared/drag/useFlatReorderDrag'
export type {
FlatReorderAxis,
FlatReorderInstruction,
FlatReorderItem,
UseFlatReorderDragOptions
} from '#vue/shared/drag/useFlatReorderDrag'
export { useInlineRename } from '#vue/editor/inline-rename/use'
export {
getToolbarToolSelection,
isToolbarToolActive,
useToolbarState
} from '#vue/primitives/Toolbar/useToolbarState'
export { useNodeFontStatus } from '#vue/shared/font-status/use'
export { usePropScrub } from '#vue/controls/prop-scrub/use'
export { toolCursor } from '#vue/editor/tool-cursor'
export {
acpPermissionOptionTestId,
testId,
testIdSelector,
toolbarFlyoutItemTestId,
toolbarFlyoutTestId,
toolbarToolTestId,
variablesAddTestId
} from '#vue/testing/test-id'
export { vTestId } from '#vue/testing/v-test-id'
export type { TestId } from '#vue/testing/test-id'
/** Property-panel composables. */
export { usePosition } from '#vue/controls/position/use'
export { useLayout } from '#vue/controls/layout/use'
export type { LayoutAxis, SizeLimitProp } from '#vue/controls/layout/helpers'
export { useAppearance } from '#vue/controls/appearance/use'
export { useMask } from '#vue/controls/mask/use'
export { useTypography } from '#vue/controls/typography/use'
export type { UseTypographyOptions } from '#vue/controls/typography/use'
export { useExport } from '#vue/document/export/use'
export type { ExportFormatId, ExportSetting } from '#vue/document/export/use'
export { useFillControls } from '#vue/controls/fill/use'
export { useColorVariableBinding } from '#vue/controls/color-variable-binding/use'
export { useNumberVariableBinding } from '#vue/controls/number-variable-binding/use'
export type { NumberBindingPath } from '#vue/controls/number-variable-binding/use'
export { useVariableBinding } from '#vue/controls/variable-binding/use'
export type {
VariableBindingState,
UseVariableBindingOptions
} from '#vue/controls/variable-binding/use'
export { useEffectsControls } from '#vue/controls/effects/use'
export { useSharedStyleBinding } from '#vue/controls/shared-style/use'
export { useStrokeControls } from '#vue/controls/stroke/use'
export {
applySolidFillColor,
applySolidStrokeColor,
BUILT_IN_COLOR_FORMATS,
fromPercent,
toPercent,
useColorModel
} from '#vue/controls/color-model'
export type {
BuiltInColorFormat,
ColorFieldFormat,
ColorFieldOption,
OkHCLControls,
UseColorModelOptions
} from '#vue/controls/color-model'
export { useOkHCL } from '#vue/controls/okhcl/use'
/** Variables, page navigation, and picker helpers. */
export { useVariables } from '#vue/variables/use'
export { useVariablesDialogState } from '#vue/variables/dialog/use'
export { useVariablesEditor } from '#vue/variables/editor/use'
export { useVariablesTable } from '#vue/variables/table/use'
export { usePageList } from '#vue/primitives/PageList/usePageList'
export {
fillCategory,
fillIsTransparent,
fillSwatchBackground,
useFill
} from '#vue/primitives/Fill'
export type { FillActions, FillCategory } from '#vue/primitives/Fill'
export { useGradientStops } from '#vue/primitives/GradientEditor/useGradientStops'
export { useFontPicker } from '#vue/primitives/FontPicker/useFontPicker'
/** Headless structural primitives and their local contexts. */
export { CanvasRoot, CanvasSurface, useCanvasContext } from '#vue/canvas'
export type { CanvasContext } from '#vue/canvas'
export { ColorInputRoot, ColorPickerRoot } from '#vue/primitives/ColorPicker'
export {
ChannelSliderRoot,
ChannelSliderThumb,
ChannelSliderTrack
} from '#vue/primitives/ChannelSlider'
export type {
ChannelSliderOrientation,
ChannelSliderPartProps,
ChannelSliderRootProps,
ChannelSliderRootSlotProps,
ChannelSliderThumbSlotProps
} from '#vue/primitives/ChannelSlider'
export { FillRoot, FillSwatch } from '#vue/primitives/Fill'
export type {
FillRootSlotProps,
FillRootSlots,
FillSwatchProps,
FillSwatchSlotProps,
FillSwatchSlots
} from '#vue/primitives/Fill'
export { FontPickerRoot } from '#vue/primitives/FontPicker'
export type { FontFamilyOption, FontPickerUI } from '#vue/primitives/FontPicker'
export {
GradientEditorRoot,
GradientEditorBar,
GradientEditorStop
} from '#vue/primitives/GradientEditor'
export type {
GradientEditorStopActions,
GradientEditorStopProps,
GradientEditorStopSlotProps,
GradientEditorStopSlots
} from '#vue/primitives/GradientEditor'
export {
buildLayerTreeModel,
indexLayerNodes,
layerSelectionForTarget,
LayerTreeItem,
LayerTreeRoot,
patchLayerNode,
useLayerTree,
visibleLayerRows
} from '#vue/primitives/LayerTree'
export type {
LayerDragInstruction,
LayerNode,
LayerRow,
LayerSelectionMode,
LayerTreeContext,
LayerTreeVirtualizer
} from '#vue/primitives/LayerTree'
export { LayoutControlsRoot, useLayoutControlsContext } from '#vue/primitives/LayoutControls'
export type {
LayoutControlsContext,
LayoutControlsRootSlotProps,
LayoutControlsRootSlots
} from '#vue/primitives/LayoutControls'
export { AppearanceControlsRoot } from '#vue/primitives/AppearanceControls'
export type {
AppearanceControlsActions,
AppearanceControlsRootSlotProps,
AppearanceControlsRootSlots
} from '#vue/primitives/AppearanceControls'
export { ConstraintsControlRoot } from '#vue/primitives/ConstraintsControl'
export type {
ConstraintsControlActions,
ConstraintsControlRootSlotProps,
ConstraintsControlRootSlots
} from '#vue/primitives/ConstraintsControl'
export {
constraintPins,
isConstraintEligible,
toggleConstraintPin,
useConstraints
} from '#vue/controls/constraints'
export type { ConstraintAxis, ConstraintEdge, ConstraintValue } from '#vue/controls/constraints'
export {
compatibleComponentPropertyDefinitions,
instanceSwapOptions,
mergedComponentPropertyValue,
useComponentProperties
} from '#vue/controls/component-props'
export type {
ComponentPropertyControl,
ComponentPropertyOption
} from '#vue/controls/component-props'
export type { CornerGeometryKey, CornerRadiusKey } from '#vue/controls/appearance/types'
export { PageListRoot } from '#vue/primitives/PageList'
export { PositionControlsRoot } from '#vue/primitives/PositionControls'
export { useEditorPropertyList } from '#vue/controls/property-list'
export {
PropertyListRoot,
PropertyListItem,
PropertyListAdd,
PropertyListRemove,
PropertyListVisibility,
usePropertyList
} from '#vue/primitives/PropertyList'
export type {
PropertyListActions,
PropertyListContext,
PropertyListIdentity,
PropertyListItemActions,
PropertyListItemFor,
PropertyListItemMap,
PropertyListItemSlotProps,
PropertyListKey,
PropertyListPartProps,
PropertyListPatchFor,
PropertyListRootProps,
PropertyListRootSlotProps,
PropertyListRootSlots
} from '#vue/primitives/PropertyList'
export {
PropertySectionRoot,
PropertySectionHeader,
PropertySectionTitle,
PropertySectionActions,
PropertySectionContent,
PropertySectionEmptyAction,
usePropertySection
} from '#vue/primitives/PropertySection'
export type {
PropertySectionActionAPI,
PropertySectionContext,
PropertySectionPartProps,
PropertySectionRootProps,
PropertySectionRootSlots,
PropertySectionSlotProps,
PropertySectionStateAttrs
} from '#vue/primitives/PropertySection'
export {
SegmentedControlRoot,
SegmentedControlItem,
useSegmentedControl
} from '#vue/primitives/SegmentedControl'
export type {
SegmentedControlContext,
SegmentedControlItemProps,
SegmentedControlItemSlotProps,
SegmentedControlItemSlots,
SegmentedControlMode,
SegmentedControlOrientation,
SegmentedControlRootProps,
SegmentedControlRootSlots
} from '#vue/primitives/SegmentedControl'
export {
BindableValueRoot,
BindableValueTrigger,
BindableValuePicker,
useBindableValue,
useOptionalBindableValue
} from '#vue/primitives/BindableValue'
export type {
BindableValueActions,
BindableValueContext,
BindableValueRootProps,
BindableValueRootSlots,
BindableValueSlotProps,
BindableValueStateAttrs,
BindableValueTriggerProps
} from '#vue/primitives/BindableValue'
export {
provideBindingProvider,
useBindingProvider,
useOpenPencilBindingProvider,
useNumberBindingProvider,
useColorBindingProvider
} from '#vue/controls/binding-provider'
export type {
BindingMutationSource,
BindingProvider,
BindingState,
BindingTarget,
BoundEditPolicy,
OpenPencilBindingProviderOptions
} from '#vue/controls/binding-provider'
export {
NumberFieldRoot,
NumberFieldInput,
NumberFieldValue,
NumberFieldLeading,
NumberFieldUnit,
NumberFieldTrailing,
NumberFieldMenu,
useNumberField
} from '#vue/primitives/NumberField'
export type {
NumberFieldActions,
NumberFieldContext,
NumberFieldEditPolicy,
NumberFieldMutationSource,
NumberFieldRootAttrs,
NumberFieldRootEmits,
NumberFieldRootProps,
NumberFieldRootSlots,
NumberFieldSlotProps,
NumberFieldState,
NumberFieldStateAttrs,
NumberFieldValueSlots
} from '#vue/primitives/NumberField'
export {
clampNumberValue,
evaluateNumberExpression,
normalizeNumberValue,
stepNumberValue
} from '#vue/controls/number-expression'
export type {
NumberExpressionError,
NumberExpressionOptions,
NumberExpressionResult
} from '#vue/controls/number-expression'
export { TypographyControlsRoot } from '#vue/primitives/TypographyControls'
export { ToolbarRoot, ToolbarItem, useToolbar } from '#vue/primitives/Toolbar'
export type { ToolbarContext } from '#vue/primitives/Toolbar'
/** DOM event helpers for cast-free template bindings. */
export { blurTarget, inputNumberValue, inputValue, selectTarget } from '#vue/shared/dom-events'
/** Internationalization. */
export {
useI18n,
useI18nNamespace,
useMenuMessages,
useCommandMessages,
useToolMessages,
usePanelMessages,
useVariableTypeMessages,
usePageMessages,
useDialogMessages,
i18n
} from '#vue/i18n'
export {
locale,
localeSetting,
setLocale,
AVAILABLE_LOCALES,
TRANSLATED_LOCALES,
LOCALE_DIR_NAMES,
LOCALE_LABELS
} from '#vue/i18n'
export type { Locale, TranslatedLocale } from '#vue/i18n'
export {
menuMessages,
commandMessages,
toolMessages,
panelMessages,
variableTypeMessages,
pageMessages,
dialogMessages,
messageDefaults
} from '#vue/i18n'