mirror of
https://github.com/webstudio-is/webstudio.git
synced 2026-11-08 04:55:06 +09:00
start using feature driven architecture
This commit is contained in:
1 parent
f0e70940c3
commit
85f1ec79fb
67 files changed
+68
-69
No files matched your search
+11
-9
@@ -11,21 +11,23 @@ import {
|
||||
WrapperComponent,
|
||||
globalStyles,
|
||||
} from "@webstudio-is/sdk";
|
||||
import { publish, useSubscribe } from "./pubsub";
|
||||
import { publish, useSubscribe } from "./shared/pubsub";
|
||||
import { createElementsTree, setInstanceChildren } from "~/shared/tree-utils";
|
||||
import { useDragDropHandlers } from "./shared/use-drag-drop-handlers";
|
||||
import { useShortcuts } from "./shared/use-shortcuts";
|
||||
import {
|
||||
useDragDropHandlers,
|
||||
useShortcuts,
|
||||
usePopulateRootInstance,
|
||||
useUpdateInstanceStyle,
|
||||
usePublishSelectedInstance,
|
||||
useInsertInstance,
|
||||
useDeleteInstance,
|
||||
usePublishRootInstance,
|
||||
useActiveElementTracking,
|
||||
useReparentInstance,
|
||||
} from "./hooks";
|
||||
import { WrapperComponentDev } from "./wrapper-component";
|
||||
} from "./shared/tree";
|
||||
import { useUpdateInstanceStyle } from "./shared/style";
|
||||
import {
|
||||
usePublishSelectedInstance,
|
||||
usePublishRootInstance,
|
||||
} from "./shared/publish";
|
||||
import { useActiveElementTracking } from "./shared/active-element";
|
||||
import { WrapperComponentDev } from "./features/wrapper-component";
|
||||
|
||||
const useElementsTree = (
|
||||
rootInstance: Instance,
|
||||
|
||||
File renamed without changes.
+1
-1
@@ -5,7 +5,7 @@ import ObjectId from "bson-objectid";
|
||||
import { type ChildrenUpdates, type Instance } from "@webstudio-is/sdk";
|
||||
import { type OnChangeChildren } from "~/shared/tree-utils";
|
||||
import { primitives } from "~/shared/component";
|
||||
import { useSelectedInstance } from "~/canvas/nano-values";
|
||||
import { useSelectedInstance } from "~/canvas/shared/nano-values";
|
||||
import { useEditable, type Content } from "./use-editable";
|
||||
import { useToolbar } from "./use-toolbar";
|
||||
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
+1
-1
@@ -1,6 +1,6 @@
|
||||
import { useMemo } from "react";
|
||||
import { type Instance, css as createCss, type CSS } from "@webstudio-is/sdk";
|
||||
import { useDragData, useSelectedInstance } from "~/canvas/nano-values";
|
||||
import { useDragData, useSelectedInstance } from "~/canvas/shared/nano-values";
|
||||
import { primitives } from "~/shared/component";
|
||||
|
||||
// @todo this doesn't work with the node at the top edge of the iframe, tag gets hidden.
|
||||
+1
-1
@@ -2,7 +2,7 @@ import { useCallback, useEffect } from "react";
|
||||
import { useDrag } from "react-dnd";
|
||||
import { type Instance } from "@webstudio-is/sdk";
|
||||
import { type InitialDragData } from "~/shared/component";
|
||||
import { publish } from "../pubsub";
|
||||
import { publish } from "../../shared/pubsub";
|
||||
//import { usePointerOutline } from "~/canvas/hooks";
|
||||
|
||||
type UseDraggable = {
|
||||
File renamed without changes.
@@ -1,7 +0,0 @@
|
||||
export * from "./publish";
|
||||
export * from "./style";
|
||||
export * from "./tree";
|
||||
export * from "./use-drag-drop-handlers";
|
||||
export * from "./use-shortcuts";
|
||||
export * from "./active-element";
|
||||
export * from "./use-pointer-outline";
|
||||
@@ -1,8 +1,8 @@
|
||||
import { useCallback, useEffect } from "react";
|
||||
import { findInstanceById } from "~/shared/tree-utils";
|
||||
import { type Instance } from "@webstudio-is/sdk";
|
||||
import { useSelectedInstance, useSelectedElement } from "../nano-values";
|
||||
import { publish, useSubscribe } from "../pubsub";
|
||||
import { findInstanceById } from "~/shared/tree-utils";
|
||||
import { useSelectedInstance, useSelectedElement } from "./nano-values";
|
||||
import { publish, useSubscribe } from "./pubsub";
|
||||
|
||||
const eventOptions = {
|
||||
passive: true,
|
||||
File renamed without changes.
@@ -1,14 +1,14 @@
|
||||
import { useEffect } from "react";
|
||||
import { type SelectedInstanceData } from "~/shared/component";
|
||||
import ObjectId from "bson-objectid";
|
||||
import {
|
||||
getBrowserStyle,
|
||||
useAllUserProps,
|
||||
type Instance,
|
||||
type Tree,
|
||||
} from "@webstudio-is/sdk";
|
||||
import { useSelectedInstance, useSelectedElement } from "../nano-values";
|
||||
import { publish } from "../pubsub";
|
||||
import ObjectId from "bson-objectid";
|
||||
import { type SelectedInstanceData } from "~/shared/component";
|
||||
import { useSelectedInstance, useSelectedElement } from "./nano-values";
|
||||
import { publish } from "./pubsub";
|
||||
|
||||
export const usePublishSelectedInstance = ({
|
||||
treeId,
|
||||
File renamed without changes.
@@ -1,8 +1,8 @@
|
||||
import { type StyleUpdates } from "~/shared/component";
|
||||
import { type Instance } from "@webstudio-is/sdk";
|
||||
import { type StyleUpdates } from "~/shared/component";
|
||||
import { setInstanceStyle } from "~/shared/tree-utils";
|
||||
import { useSelectedInstance } from "../nano-values";
|
||||
import { useSubscribe } from "../pubsub";
|
||||
import { useSelectedInstance } from "./nano-values";
|
||||
import { useSubscribe } from "./pubsub";
|
||||
|
||||
export const useUpdateInstanceStyle = ({
|
||||
rootInstance,
|
||||
@@ -8,8 +8,8 @@ import {
|
||||
deleteInstance,
|
||||
reparentInstance,
|
||||
} from "~/shared/tree-utils";
|
||||
import { useSelectedInstance } from "../nano-values";
|
||||
import { useSubscribe } from "../pubsub";
|
||||
import { useSelectedInstance } from "./nano-values";
|
||||
import { useSubscribe } from "./pubsub";
|
||||
|
||||
export const usePopulateRootInstance = (tree: Tree) => {
|
||||
// Caches initial population of the instance, won't be updated after.
|
||||
+2
-2
@@ -12,8 +12,8 @@ import {
|
||||
findInsertionIndex,
|
||||
getDragOverInfo,
|
||||
} from "~/shared/dom-utils";
|
||||
import { useDragData, useSelectedInstance } from "../nano-values";
|
||||
import { publish, useSubscribe } from "../pubsub";
|
||||
import { useDragData, useSelectedInstance } from "./nano-values";
|
||||
import { publish, useSubscribe } from "./pubsub";
|
||||
//import {usePointerOutline} from './use-pointer-outline'
|
||||
|
||||
// Avoid recalculating rects for each node during dragging.
|
||||
File renamed without changes.
@@ -1,7 +1,7 @@
|
||||
import { useHotkeys } from "react-hotkeys-hook";
|
||||
import { type Instance } from "@webstudio-is/sdk";
|
||||
import { useSelectedInstance } from "../nano-values";
|
||||
import { publish } from "../pubsub";
|
||||
import { useSelectedInstance } from "./nano-values";
|
||||
import { publish } from "./pubsub";
|
||||
|
||||
export const useShortcuts = ({ rootInstance }: { rootInstance: Instance }) => {
|
||||
const [instance, setSelectedInstance] = useSelectedInstance();
|
||||
@@ -6,18 +6,22 @@ import type { Config } from "~/config";
|
||||
import type { SelectedInstanceData } from "~/shared/component";
|
||||
import { Box, Flex, Grid, type CSS } from "~/shared/design-system";
|
||||
import interStyles from "~/shared/font-faces/inter.css";
|
||||
import { SidebarLeft } from "./sidebar-left";
|
||||
import { SidebarRight } from "./inspector";
|
||||
import { CanvasIframe, useSubscribe, usePublish } from "./canvas-iframe";
|
||||
import { SidebarLeft } from "./features/sidebar-left";
|
||||
import { SidebarRight } from "./features/sidebar-right";
|
||||
import {
|
||||
CanvasIframe,
|
||||
useSubscribe,
|
||||
usePublish,
|
||||
} from "./features/canvas-iframe";
|
||||
import {
|
||||
useIsPreviewMode,
|
||||
useRootInstance,
|
||||
useSelectedInstanceData,
|
||||
} from "./nano-values";
|
||||
import { Topbar } from "./topbar";
|
||||
} from "./shared/nano-values";
|
||||
import { Topbar } from "./features/topbar";
|
||||
import designerStyles from "./designer.css";
|
||||
import { useSync } from "./sync";
|
||||
import { Breadcrumbs } from "./breadcrumbs";
|
||||
import { useSync } from "./features/sync";
|
||||
import { Breadcrumbs } from "./features/breadcrumbs";
|
||||
|
||||
export const links = () => {
|
||||
return [
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
import { ChevronRightIcon } from "~/shared/icons";
|
||||
import { Button, Flex, Text } from "~/shared/design-system";
|
||||
import { useSelectedInstancePath } from "../instance/use-selected-instance-path";
|
||||
import { useSelectedInstancePath } from "../../shared/instance/use-selected-instance-path";
|
||||
import { Instance } from "@webstudio-is/sdk";
|
||||
import { Publish } from "../canvas-iframe";
|
||||
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
+2
-2
@@ -1,6 +1,6 @@
|
||||
import { type UserProp } from "@webstudio-is/sdk";
|
||||
import { CollapsibleSection } from "~/designer/inspector";
|
||||
import type { Publish } from "~/designer/canvas-iframe";
|
||||
import { CollapsibleSection } from "~/designer/shared/inspector";
|
||||
import type { Publish } from "~/designer/features/canvas-iframe";
|
||||
import { TextField, Flex, Button } from "~/shared/design-system";
|
||||
import { PlusIcon, TrashIcon } from "~/shared/icons";
|
||||
import type { SelectedInstanceData } from "~/shared/component";
|
||||
+1
-1
@@ -3,7 +3,7 @@ import { useState, useCallback, useEffect, useRef } from "react";
|
||||
import debounce from "lodash.debounce";
|
||||
import ObjectId from "bson-objectid";
|
||||
import type { DeleteProp, UserProp, UserPropsUpdates } from "@webstudio-is/sdk";
|
||||
import type { Publish } from "~/designer/canvas-iframe";
|
||||
import type { Publish } from "~/designer/features/canvas-iframe";
|
||||
import type { SelectedInstanceData } from "~/shared/component";
|
||||
|
||||
const getInitialProp = () => ({
|
||||
File renamed without changes.
File renamed without changes.
+1
-1
@@ -10,7 +10,7 @@ import { type Instance } from "@webstudio-is/sdk";
|
||||
import { Flex, Text } from "~/shared/design-system";
|
||||
import { Component1Icon } from "~/shared/icons";
|
||||
import { primitives, type InitialDragData } from "~/shared/component";
|
||||
import { type Publish } from "~/designer/canvas-iframe";
|
||||
import { type Publish } from "~/designer/features/canvas-iframe";
|
||||
import { CustomDragLayer } from "../custom-drag-layer";
|
||||
import type { TabName } from "../types";
|
||||
|
||||
File renamed without changes.
+4
-4
@@ -2,10 +2,10 @@ import { type Instance } from "@webstudio-is/sdk";
|
||||
import { ListNestedIcon } from "~/shared/icons";
|
||||
import { Flex } from "~/shared/design-system";
|
||||
import { type SelectedInstanceData } from "~/shared/component";
|
||||
import { type Publish } from "~/designer/canvas-iframe";
|
||||
import { useSelectedInstancePath } from "~/designer/instance/use-selected-instance-path";
|
||||
import { useRootInstance } from "~/designer/nano-values";
|
||||
import { Tree } from "~/designer/tree";
|
||||
import { type Publish } from "~/designer/features/canvas-iframe";
|
||||
import { useSelectedInstancePath } from "~/designer/shared/instance/use-selected-instance-path";
|
||||
import { useRootInstance } from "~/designer/shared/nano-values";
|
||||
import { Tree } from "~/designer/shared/tree";
|
||||
|
||||
type TabContentProps = {
|
||||
publish: Publish;
|
||||
+2
-2
@@ -6,8 +6,8 @@ import {
|
||||
SidebarTabsList,
|
||||
SidebarTabsTrigger,
|
||||
} from "~/shared/design-system";
|
||||
import { useSubscribe, type Publish } from "~/designer/canvas-iframe";
|
||||
import { useSelectedInstanceData } from "../nano-values";
|
||||
import { useSubscribe, type Publish } from "~/designer/features/canvas-iframe";
|
||||
import { useSelectedInstanceData } from "../../shared/nano-values";
|
||||
import * as panels from "./panels";
|
||||
import type { TabName } from "./types";
|
||||
|
||||
File renamed without changes.
@@ -0,0 +1 @@
|
||||
export * from "./sidebar-right";
|
||||
+4
-4
@@ -7,11 +7,11 @@ import {
|
||||
Paragraph,
|
||||
Box,
|
||||
} from "~/shared/design-system";
|
||||
import { StylePanel } from "~/designer/style-panel";
|
||||
import { SettingsPanel } from "~/designer/settings-panel";
|
||||
import type { Publish } from "~/designer/canvas-iframe";
|
||||
import { StylePanel } from "~/designer/features/style-panel";
|
||||
import { SettingsPanel } from "~/designer/features/settings-panel";
|
||||
import type { Publish } from "~/designer/features/canvas-iframe";
|
||||
import { BrushIcon, GearIcon } from "~/shared/icons";
|
||||
import { useSelectedInstanceData } from "../nano-values";
|
||||
import { useSelectedInstanceData } from "~/designer/shared/nano-values";
|
||||
|
||||
type SidebarRightProps = {
|
||||
publish: Publish;
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
+1
-1
@@ -3,7 +3,7 @@ import { Box, Flex, Collapsible, Button } from "~/shared/design-system";
|
||||
import { TriangleRightIcon, TriangleDownIcon } from "~/shared/icons";
|
||||
import { categories, type Category, type Style } from "@webstudio-is/sdk";
|
||||
import { styleConfigs, type StyleConfig } from "~/shared/style-panel-configs";
|
||||
import { CollapsibleSection } from "~/designer/inspector";
|
||||
import { CollapsibleSection } from "~/designer/shared/inspector";
|
||||
import type { SectionProps } from "./types";
|
||||
import { renderProperty } from "./render-property";
|
||||
import { dependencies } from "./dependencies";
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import type { Publish } from "~/designer/canvas-iframe";
|
||||
import type { Publish } from "~/designer/features/canvas-iframe";
|
||||
import { Box } from "~/shared/design-system";
|
||||
import type { SelectedInstanceData } from "~/shared/component";
|
||||
import { useStyleData } from "./use-style-data";
|
||||
File renamed without changes.
+2
-2
@@ -1,8 +1,8 @@
|
||||
import { useState, useMemo, useEffect } from "react";
|
||||
import type { SelectedInstanceData, StyleUpdates } from "~/shared/component";
|
||||
import { type Style, type StyleProperty } from "@webstudio-is/sdk";
|
||||
import { type Publish } from "~/designer/canvas-iframe";
|
||||
import { useRootInstance } from "../nano-values";
|
||||
import { type Publish } from "~/designer/features/canvas-iframe";
|
||||
import { useRootInstance } from "../../shared/nano-values";
|
||||
import { parseValue } from "./parse-value";
|
||||
import { getInheritedStyle, type InheritedStyle } from "./get-inherited-style";
|
||||
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
@@ -12,7 +12,7 @@ import type {
|
||||
InstanceReparentingSpec,
|
||||
} from "~/shared/tree-utils";
|
||||
import type { StyleUpdates } from "~/shared/component";
|
||||
import { useSubscribe } from "~/designer/canvas-iframe";
|
||||
import { useSubscribe } from "~/designer/features/canvas-iframe";
|
||||
import { enqueue } from "./queue";
|
||||
|
||||
// @todo this entire queueing logic needs to be gone, it's a workaround,
|
||||
File renamed without changes.
@@ -20,7 +20,7 @@ import {
|
||||
useIsPreviewMode,
|
||||
useIsShareDialogOpen,
|
||||
useIsPublishDialogOpen,
|
||||
} from "../nano-values";
|
||||
} from "../../shared/nano-values";
|
||||
|
||||
type MenuProps = {
|
||||
config: Config;
|
||||
@@ -1,7 +1,7 @@
|
||||
import { EyeOpenIcon } from "~/shared/icons";
|
||||
import { SimpleToggle } from "~/shared/design-system";
|
||||
import { type Publish } from "~/designer/canvas-iframe";
|
||||
import { useIsPreviewMode } from "../nano-values";
|
||||
import { type Publish } from "~/designer/features/canvas-iframe";
|
||||
import { useIsPreviewMode } from "../../shared/nano-values";
|
||||
|
||||
type PreviewProps = {
|
||||
publish: Publish;
|
||||
@@ -14,7 +14,7 @@ import {
|
||||
Label,
|
||||
Link,
|
||||
} from "~/shared/design-system";
|
||||
import { useIsPublishDialogOpen } from "../nano-values";
|
||||
import { useIsPublishDialogOpen } from "../../shared/nano-values";
|
||||
|
||||
type PublishProps = { project: Project };
|
||||
|
||||
@@ -9,7 +9,7 @@ import {
|
||||
} from "~/shared/design-system";
|
||||
import { Share1Icon } from "~/shared/icons";
|
||||
import { type Project } from "@webstudio-is/sdk";
|
||||
import { useIsShareDialogOpen } from "../nano-values";
|
||||
import { useIsShareDialogOpen } from "../../shared/nano-values";
|
||||
|
||||
type ShareProps = { path: string; project: Project };
|
||||
|
||||
File renamed without changes.
@@ -6,7 +6,7 @@ import { Share } from "./share";
|
||||
import { Publish } from "./publish";
|
||||
import { SyncStatus } from "./sync-status";
|
||||
import { Menu } from "./menu";
|
||||
import { type Publish as PublishOnCanvas } from "~/designer/canvas-iframe";
|
||||
import { type Publish as PublishOnCanvas } from "~/designer/features/canvas-iframe";
|
||||
|
||||
type TopbarProps = {
|
||||
config: Config;
|
||||
File renamed without changes.
@@ -1,2 +1 @@
|
||||
export * from "./sidebar-right";
|
||||
export * from "./collapsible-section";
|
||||
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
Reference in new issue
Block a user