Skip to content

Commit 1ddf6b0

Browse files
authored
feat: API and CLI for everything (#5838)
Closes #5287
1 parent 65d8a16 commit 1ddf6b0

323 files changed

Lines changed: 53097 additions & 10687 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

apps/builder/app/builder/features/breakpoints/breakpoints-container.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ import { BreakpointsSelector } from "./breakpoints-selector";
1111
import { BreakpointsMenu } from "./breakpoints-menu";
1212
import { BreakpointsEditor } from "./breakpoints-editor";
1313
import { ConfirmationDialog } from "./confirmation-dialog";
14-
import { $breakpointsMenuView, isBaseBreakpoint } from "~/shared/breakpoints";
14+
import { $breakpointsMenuView } from "~/shared/breakpoints";
15+
import { isBaseBreakpoint } from "@webstudio-is/project-build/runtime/breakpoints";
1516
import { setCanvasWidth } from "../../shared/calc-canvas-width";
1617
import { serverSyncStore } from "~/shared/sync/sync-stores";
1718
import type { Breakpoint } from "@webstudio-is/sdk";

apps/builder/app/builder/features/breakpoints/breakpoints-editor.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ import {
2626
groupBreakpoints,
2727
hasReachedBreakpointLimit,
2828
isBaseBreakpoint,
29-
} from "~/shared/breakpoints";
29+
} from "@webstudio-is/project-build/runtime/breakpoints";
3030
import { serverSyncStore } from "~/shared/sync/sync-stores";
3131
import { ConditionInput } from "./condition-input";
3232
import { CssValueInput } from "~/builder/features/style-panel/shared/css-value-input";

apps/builder/app/builder/features/breakpoints/breakpoints-menu.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import {
1212
Button,
1313
} from "@webstudio-is/design-system";
1414
import { EllipsesIcon } from "@webstudio-is/icons";
15-
import { groupBreakpoints } from "~/shared/breakpoints";
15+
import { groupBreakpoints } from "@webstudio-is/project-build/runtime/breakpoints";
1616
import { $selectedBreakpointId } from "~/shared/nano-states";
1717
import { setCanvasWidth } from "../../shared/calc-canvas-width";
1818

apps/builder/app/builder/features/breakpoints/breakpoints-selector.tsx

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,10 @@ import {
1717
$selectedBreakpointId,
1818
} from "~/shared/nano-states";
1919
import { $breakpoints } from "~/shared/sync/data-stores";
20-
import { groupBreakpoints, isBaseBreakpoint } from "~/shared/breakpoints";
20+
import {
21+
groupBreakpoints,
22+
isBaseBreakpoint,
23+
} from "@webstudio-is/project-build/runtime/breakpoints";
2124
import { setCanvasWidth } from "../../shared/calc-canvas-width";
2225
import { $canvasWidth } from "~/builder/shared/nano-states";
2326
import { useDebouncedCallback } from "use-debounce";

apps/builder/app/builder/features/breakpoints/canvas-settings-popover.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import {
1111
Text,
1212
} from "@webstudio-is/design-system";
1313
import { WidthInput } from "./width-input";
14-
import { minCanvasWidth } from "~/shared/breakpoints";
14+
import { minCanvasWidth } from "~/shared/breakpoints-utils";
1515
import { $canvasWidth, $scale } from "~/builder/shared/nano-states";
1616
import { $selectedBreakpoint } from "~/shared/nano-states";
1717
import { ChevronDownIcon } from "@webstudio-is/icons";

apps/builder/app/builder/features/breakpoints/cascade-indicator.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { useStore } from "@nanostores/react";
33
import { css, theme } from "@webstudio-is/design-system";
44
import type { Breakpoint, Breakpoints } from "@webstudio-is/sdk";
55
import { $breakpoints } from "~/shared/sync/data-stores";
6-
import { isBaseBreakpoint } from "~/shared/breakpoints";
6+
import { isBaseBreakpoint } from "@webstudio-is/project-build/runtime/breakpoints";
77

88
const cascadeIndicatorStyle = css({
99
position: "absolute",

apps/builder/app/builder/features/command-panel/groups/data-variables-group.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import {
2424
focusCommandPanel,
2525
} from "../command-state";
2626
import { InstanceList, showInstance } from "../shared/instance-list";
27-
import { deleteVariableMutable } from "~/shared/data-variables";
27+
import { deleteVariableMutable } from "@webstudio-is/project-build/runtime/data";
2828
import { updateWebstudioData } from "~/shared/instance-utils/data";
2929
import {
3030
DeleteDataVariableDialog,
@@ -33,7 +33,7 @@ import {
3333
import type { BaseOption } from "../shared/types";
3434
import { formatUsageCount, getUsageSearchTerms } from "../shared/usage-utils";
3535
import { getInstanceLabel } from "~/builder/shared/instance-label";
36-
import { findVariableUsagesByInstance } from "~/shared/data-variables";
36+
import { findVariableUsagesByInstance } from "@webstudio-is/project-build/runtime/data";
3737

3838
export type DataVariableOption = BaseOption & {
3939
type: "dataVariable";

apps/builder/app/builder/features/command-panel/groups/duplicate-tokens-group.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ import type { Instance, StyleSource } from "@webstudio-is/sdk";
2020
import { $styleSources } from "~/shared/sync/data-stores";
2121
import { $selectedStyleSources } from "~/shared/nano-states";
2222
import { $styles, $breakpoints } from "~/shared/sync/data-stores";
23-
import { findDuplicateTokens } from "~/shared/style-source-utils";
23+
import { findDuplicateTokens } from "@webstudio-is/project-build/runtime/styles";
2424
import { $styleSourceUsages } from "~/builder/shared/style-source-actions";
2525
import { InstanceList, showInstance } from "../shared/instance-list";
2626
import {
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
import { beforeEach, describe, expect, test } from "vitest";
2+
import { coreMetas, elementComponent } from "@webstudio-is/sdk";
3+
import type { Instances } from "@webstudio-is/sdk";
4+
import { createDefaultPages } from "@webstudio-is/project-build";
5+
import { $registeredComponentMetas } from "~/shared/nano-states";
6+
import { $instances, $pages, $props } from "~/shared/sync/data-stores";
7+
import {
8+
$commandSearch,
9+
closeCommandPanel,
10+
openCommandPanel,
11+
} from "../command-state";
12+
import { $instanceOptions } from "./instances-group";
13+
14+
beforeEach(() => {
15+
closeCommandPanel();
16+
$commandSearch.set("");
17+
$instances.set(new Map());
18+
$props.set(new Map());
19+
$pages.set(undefined);
20+
$registeredComponentMetas.set(new Map(Object.entries(coreMetas)));
21+
});
22+
23+
describe("$instanceOptions", () => {
24+
test("does not build instance options until command search has text", () => {
25+
const instances: Instances = new Map([
26+
[
27+
"box",
28+
{
29+
type: "instance",
30+
id: "box",
31+
component: elementComponent,
32+
tag: "div",
33+
children: [],
34+
},
35+
],
36+
]);
37+
$instances.set(instances);
38+
$pages.set(createDefaultPages({ rootInstanceId: "box" }));
39+
40+
openCommandPanel();
41+
42+
expect($instanceOptions.get()).toEqual([]);
43+
44+
$commandSearch.set("box");
45+
46+
expect($instanceOptions.get()).toHaveLength(1);
47+
expect($instanceOptions.get()[0]?.instance.id).toBe("box");
48+
});
49+
});

apps/builder/app/builder/features/command-panel/groups/command-panel-options.test.tsx renamed to apps/builder/app/builder/features/command-panel/groups/tags-group.test.tsx

Lines changed: 0 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import {
1313
closeCommandPanel,
1414
openCommandPanel,
1515
} from "../command-state";
16-
import { $instanceOptions } from "./instances-group";
1716
import { $tagOptions } from "./tags-group";
1817

1918
beforeEach(() => {
@@ -26,34 +25,6 @@ beforeEach(() => {
2625
$registeredComponentMetas.set(new Map(Object.entries(coreMetas)));
2726
});
2827

29-
describe("$instanceOptions", () => {
30-
test("does not build instance options until command search has text", () => {
31-
const instances: Instances = new Map([
32-
[
33-
"box",
34-
{
35-
type: "instance",
36-
id: "box",
37-
component: elementComponent,
38-
tag: "div",
39-
children: [],
40-
},
41-
],
42-
]);
43-
$instances.set(instances);
44-
$pages.set(createDefaultPages({ rootInstanceId: "box" }));
45-
46-
openCommandPanel();
47-
48-
expect($instanceOptions.get()).toEqual([]);
49-
50-
$commandSearch.set("box");
51-
52-
expect($instanceOptions.get()).toHaveLength(1);
53-
expect($instanceOptions.get()[0]?.instance.id).toBe("box");
54-
});
55-
});
56-
5728
describe("$tagOptions", () => {
5829
test("uses indexed html tags from props when validating content model", () => {
5930
const instances: Instances = new Map([

0 commit comments

Comments
 (0)