@gogitcms/editor 0.23.0
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/app/index.html +38 -0
- package/app/src/App.tsx +2665 -0
- package/app/src/apollo.ts +119 -0
- package/app/src/auth.ts +248 -0
- package/app/src/config.ts +88 -0
- package/app/src/main.tsx +18 -0
- package/app/src/media.ts +151 -0
- package/app/src/navigation.tsx +321 -0
- package/app/src/plugins.ts +11 -0
- package/app/src/previewHost.tsx +263 -0
- package/app/src/previewToken.ts +68 -0
- package/app/src/queries.ts +591 -0
- package/app/src/virtual-cms-plugins.d.ts +6 -0
- package/app/vendor/analytics/src/__tests__/config.test.ts +91 -0
- package/app/vendor/analytics/src/config.ts +94 -0
- package/app/vendor/analytics/src/events.ts +56 -0
- package/app/vendor/analytics/src/index.ts +23 -0
- package/app/vendor/analytics/src/provider.tsx +196 -0
- package/app/vendor/design-system/src/ThemeProvider.tsx +86 -0
- package/app/vendor/design-system/src/__tests__/ApplyChangesModal.test.tsx +148 -0
- package/app/vendor/design-system/src/__tests__/BranchImport.test.tsx +46 -0
- package/app/vendor/design-system/src/__tests__/Button.test.tsx +45 -0
- package/app/vendor/design-system/src/__tests__/ChangeRequestSummary.test.tsx +57 -0
- package/app/vendor/design-system/src/__tests__/ContentBrowser.changes.test.tsx +611 -0
- package/app/vendor/design-system/src/__tests__/ContentBrowser.collab.test.tsx +322 -0
- package/app/vendor/design-system/src/__tests__/ContentBrowser.collabsync.test.tsx +264 -0
- package/app/vendor/design-system/src/__tests__/ContentBrowser.contentslot.test.tsx +53 -0
- package/app/vendor/design-system/src/__tests__/ContentBrowser.discriminator.test.tsx +142 -0
- package/app/vendor/design-system/src/__tests__/ContentBrowser.drafts.test.tsx +271 -0
- package/app/vendor/design-system/src/__tests__/ContentBrowser.fields.test.tsx +117 -0
- package/app/vendor/design-system/src/__tests__/ContentBrowser.media.test.tsx +140 -0
- package/app/vendor/design-system/src/__tests__/ContentBrowser.mixedcollab.test.tsx +63 -0
- package/app/vendor/design-system/src/__tests__/ContentBrowser.mixedvalues.test.tsx +38 -0
- package/app/vendor/design-system/src/__tests__/ContentBrowser.pagination.test.tsx +62 -0
- package/app/vendor/design-system/src/__tests__/ContentBrowser.previewtab.test.tsx +212 -0
- package/app/vendor/design-system/src/__tests__/ContentBrowser.reorder.test.tsx +45 -0
- package/app/vendor/design-system/src/__tests__/ContentBrowser.search.test.tsx +135 -0
- package/app/vendor/design-system/src/__tests__/ContentBrowser.selectvalue.test.tsx +185 -0
- package/app/vendor/design-system/src/__tests__/ContentBrowser.staged.test.tsx +132 -0
- package/app/vendor/design-system/src/__tests__/ContentBrowser.usermenu.test.tsx +56 -0
- package/app/vendor/design-system/src/__tests__/MediaBrowser.test.tsx +353 -0
- package/app/vendor/design-system/src/__tests__/MediaField.test.tsx +185 -0
- package/app/vendor/design-system/src/__tests__/Notifications.test.tsx +69 -0
- package/app/vendor/design-system/src/__tests__/Onboarding.test.tsx +287 -0
- package/app/vendor/design-system/src/__tests__/cssTokens.test.ts +201 -0
- package/app/vendor/design-system/src/__tests__/fieldComponents.test.ts +43 -0
- package/app/vendor/design-system/src/__tests__/reorder.test.ts +58 -0
- package/app/vendor/design-system/src/components/ApplyChangesModal.tsx +348 -0
- package/app/vendor/design-system/src/components/BranchImport.tsx +157 -0
- package/app/vendor/design-system/src/components/BranchMenu.tsx +192 -0
- package/app/vendor/design-system/src/components/Button.tsx +131 -0
- package/app/vendor/design-system/src/components/ChangeDetail.tsx +472 -0
- package/app/vendor/design-system/src/components/ChangeRequestSummary.tsx +173 -0
- package/app/vendor/design-system/src/components/CollabField.tsx +388 -0
- package/app/vendor/design-system/src/components/ContentBrowser.tsx +5073 -0
- package/app/vendor/design-system/src/components/Icon.tsx +28 -0
- package/app/vendor/design-system/src/components/Icon.web.tsx +31 -0
- package/app/vendor/design-system/src/components/Input.tsx +106 -0
- package/app/vendor/design-system/src/components/MediaBrowser.tsx +766 -0
- package/app/vendor/design-system/src/components/MediaField.tsx +670 -0
- package/app/vendor/design-system/src/components/MediaPreview.tsx +91 -0
- package/app/vendor/design-system/src/components/MediaPreview.web.tsx +169 -0
- package/app/vendor/design-system/src/components/NavRow.tsx +105 -0
- package/app/vendor/design-system/src/components/Notifications.tsx +301 -0
- package/app/vendor/design-system/src/components/Onboarding.tsx +751 -0
- package/app/vendor/design-system/src/components/ProjectMenu.tsx +124 -0
- package/app/vendor/design-system/src/components/Segment.tsx +87 -0
- package/app/vendor/design-system/src/components/Skeleton.tsx +216 -0
- package/app/vendor/design-system/src/components/Spinner.tsx +44 -0
- package/app/vendor/design-system/src/components/Text.tsx +85 -0
- package/app/vendor/design-system/src/components/documentDrafts.ts +213 -0
- package/app/vendor/design-system/src/components/layout.tsx +284 -0
- package/app/vendor/design-system/src/components/primitives.tsx +143 -0
- package/app/vendor/design-system/src/components/reorder.ts +40 -0
- package/app/vendor/design-system/src/fieldComponents.ts +63 -0
- package/app/vendor/design-system/src/icons.ts +102 -0
- package/app/vendor/design-system/src/index.ts +198 -0
- package/app/vendor/design-system/src/media.ts +229 -0
- package/app/vendor/design-system/src/theme.ts +116 -0
- package/app/vendor/design-system/src/web/Button.tsx +110 -0
- package/app/vendor/design-system/src/web/Icon.tsx +52 -0
- package/app/vendor/design-system/src/web/Input.tsx +39 -0
- package/app/vendor/design-system/src/web/index.ts +43 -0
- package/app/vendor/design-system/src/web/primitives.tsx +119 -0
- package/app/vendor/markdown-editor/src/MarkdownEditor.tsx +248 -0
- package/app/vendor/markdown-editor/src/Toolbar.tsx +157 -0
- package/app/vendor/markdown-editor/src/field.tsx +67 -0
- package/app/vendor/markdown-editor/src/flavors/commonmark/index.ts +27 -0
- package/app/vendor/markdown-editor/src/flavors/gfm/index.ts +30 -0
- package/app/vendor/markdown-editor/src/flavors/gfm/parser.ts +73 -0
- package/app/vendor/markdown-editor/src/flavors/gfm/schema.ts +70 -0
- package/app/vendor/markdown-editor/src/flavors/gfm/serializer.ts +82 -0
- package/app/vendor/markdown-editor/src/flavors/gfm/taskList.ts +39 -0
- package/app/vendor/markdown-editor/src/flavors/registry.ts +13 -0
- package/app/vendor/markdown-editor/src/flavors/shared/inputrules.ts +79 -0
- package/app/vendor/markdown-editor/src/flavors/shared/keymap.ts +89 -0
- package/app/vendor/markdown-editor/src/flavors/shared/placeholder.ts +24 -0
- package/app/vendor/markdown-editor/src/flavors/shared/plugins.ts +58 -0
- package/app/vendor/markdown-editor/src/flavors/types.ts +22 -0
- package/app/vendor/markdown-editor/src/formats/registry.ts +45 -0
- package/app/vendor/markdown-editor/src/icons.tsx +120 -0
- package/app/vendor/markdown-editor/src/index.ts +23 -0
- package/app/vendor/markdown-editor/src/theme.ts +249 -0
- package/app/vendor/markdown-editor/src/types.ts +58 -0
- package/app/vendor/plugin-sdk/src/__tests__/documentActions.test.ts +108 -0
- package/app/vendor/plugin-sdk/src/__tests__/loader.test.ts +75 -0
- package/app/vendor/plugin-sdk/src/__tests__/registry.test.ts +148 -0
- package/app/vendor/plugin-sdk/src/index.ts +33 -0
- package/app/vendor/plugin-sdk/src/loader.ts +45 -0
- package/app/vendor/plugin-sdk/src/navkeys.ts +17 -0
- package/app/vendor/plugin-sdk/src/react.tsx +155 -0
- package/app/vendor/plugin-sdk/src/registry.ts +337 -0
- package/app/vendor/plugin-sdk/src/types.ts +230 -0
- package/app/vendor/realtime/src/__tests__/pure.test.ts +58 -0
- package/app/vendor/realtime/src/__tests__/seeded-room.base64 +1 -0
- package/app/vendor/realtime/src/__tests__/seeding.test.ts +70 -0
- package/app/vendor/realtime/src/collab.ts +308 -0
- package/app/vendor/realtime/src/hooks.ts +57 -0
- package/app/vendor/realtime/src/index.ts +12 -0
- package/app/vendor/realtime/src/pure.ts +43 -0
- package/app/vite.config.mjs +59 -0
- package/bin/gogitcms-editor.mjs +168 -0
- package/npm-shrinkwrap.json +5696 -0
- package/package.json +74 -0
- package/src/commands/build.mjs +100 -0
- package/src/commands/dev.mjs +186 -0
- package/src/commands/init.mjs +144 -0
- package/src/commands/login.mjs +116 -0
- package/src/commands/status.mjs +68 -0
- package/src/lib/api.mjs +122 -0
- package/src/lib/appRoot.mjs +51 -0
- package/src/lib/baked.json +3 -0
- package/src/lib/config.mjs +108 -0
- package/src/lib/credentials.mjs +91 -0
- package/src/lib/defaults.mjs +26 -0
- package/src/lib/graphql.mjs +28 -0
- package/src/lib/localServer.mjs +206 -0
- package/src/lib/open.mjs +23 -0
- package/src/lib/plugins.mjs +164 -0
- package/src/lib/tokenBroker.mjs +85 -0
- package/src/tui/prompts.mjs +92 -0
- package/src/tui/screen.mjs +282 -0
- package/src/tui/theme.mjs +40 -0
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { render, fireEvent, screen } from "@testing-library/react";
|
|
3
|
+
import { ThemeProvider } from "../ThemeProvider";
|
|
4
|
+
import { Button } from "../components/Button";
|
|
5
|
+
import { Badge } from "../components/primitives";
|
|
6
|
+
import { NavRow } from "../components/NavRow";
|
|
7
|
+
import { Icon } from "../components/Icon";
|
|
8
|
+
|
|
9
|
+
const wrap = (ui: React.ReactElement) => <ThemeProvider>{ui}</ThemeProvider>;
|
|
10
|
+
|
|
11
|
+
test("Button fires onPress", () => {
|
|
12
|
+
const onPress = jest.fn();
|
|
13
|
+
render(wrap(<Button title="Commit" onPress={onPress} testID="commit" />));
|
|
14
|
+
fireEvent.click(screen.getByTestId("commit"));
|
|
15
|
+
expect(onPress).toHaveBeenCalledTimes(1);
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
test("Button does not fire when disabled", () => {
|
|
19
|
+
const onPress = jest.fn();
|
|
20
|
+
render(wrap(<Button title="Commit" onPress={onPress} disabled testID="commit" />));
|
|
21
|
+
fireEvent.click(screen.getByTestId("commit"));
|
|
22
|
+
expect(onPress).not.toHaveBeenCalled();
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
test("Badge renders its label", () => {
|
|
26
|
+
render(wrap(<Badge label="M" tone="strong" testID="status" />));
|
|
27
|
+
expect(screen.getByTestId("status")).toHaveTextContent("M");
|
|
28
|
+
});
|
|
29
|
+
|
|
30
|
+
test("NavRow shows label + count and fires onPress", () => {
|
|
31
|
+
const onPress = jest.fn();
|
|
32
|
+
render(wrap(<NavRow label="Blog posts" icon="newspaper" count={24} onPress={onPress} testID="row" />));
|
|
33
|
+
const row = screen.getByTestId("row");
|
|
34
|
+
expect(row).toHaveTextContent("Blog posts");
|
|
35
|
+
expect(row).toHaveTextContent("24");
|
|
36
|
+
fireEvent.click(row);
|
|
37
|
+
expect(onPress).toHaveBeenCalledTimes(1);
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
test("Icon (web) renders an svg with paths", () => {
|
|
41
|
+
const { container } = render(wrap(<Icon name="gitBranch" />));
|
|
42
|
+
const svg = container.querySelector("svg");
|
|
43
|
+
expect(svg).toBeTruthy();
|
|
44
|
+
expect(svg!.querySelectorAll("path").length).toBeGreaterThan(0);
|
|
45
|
+
});
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import { render, screen, fireEvent } from "@testing-library/react";
|
|
3
|
+
import { ThemeProvider } from "../ThemeProvider";
|
|
4
|
+
import { ChangeRequestSummary, type ChangeRequestSummaryData } from "../components/ChangeRequestSummary";
|
|
5
|
+
|
|
6
|
+
const wrap = (ui: React.ReactElement) => <ThemeProvider>{ui}</ThemeProvider>;
|
|
7
|
+
|
|
8
|
+
const data: ChangeRequestSummaryData = {
|
|
9
|
+
id: "cr-1",
|
|
10
|
+
status: "open",
|
|
11
|
+
sourceBranch: "draft/spring",
|
|
12
|
+
targetBranch: "main",
|
|
13
|
+
prNumber: 42,
|
|
14
|
+
prUrl: "https://github.com/acme/site/pull/42",
|
|
15
|
+
explanation: "Updated the pricing table and checkout copy",
|
|
16
|
+
conflictFiles: ["src/app.go", "package.json"],
|
|
17
|
+
mergeBranch: "cms-merge/abc123",
|
|
18
|
+
description: "Opened by the CMS because a content merge conflicts in code files.",
|
|
19
|
+
comments: [{ author: "dev", body: "On it — resolving now.", createdAt: "2026-07-23T10:00:00Z" }],
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
test("renders the description, conflicting files, dev instructions and comments", () => {
|
|
23
|
+
render(wrap(<ChangeRequestSummary data={data} cloneUrl="https://github.com/acme/site.git" />));
|
|
24
|
+
|
|
25
|
+
// Status + PR number.
|
|
26
|
+
expect(screen.getByTestId("cr-status")).toHaveTextContent("open");
|
|
27
|
+
expect(screen.getByText("#42")).toBeInTheDocument();
|
|
28
|
+
|
|
29
|
+
// Explanation + live description.
|
|
30
|
+
expect(screen.getByText("Updated the pricing table and checkout copy")).toBeInTheDocument();
|
|
31
|
+
expect(screen.getByText(/content merge conflicts in code files/)).toBeInTheDocument();
|
|
32
|
+
|
|
33
|
+
// Conflicting files.
|
|
34
|
+
expect(screen.getByTestId("cr-file-src/app.go")).toBeInTheDocument();
|
|
35
|
+
expect(screen.getByTestId("cr-file-package.json")).toBeInTheDocument();
|
|
36
|
+
|
|
37
|
+
// Developer instructions reference the merge branch to check out.
|
|
38
|
+
expect(screen.getByText("git fetch origin main cms-merge/abc123")).toBeInTheDocument();
|
|
39
|
+
expect(screen.getByText("git checkout cms-merge/abc123")).toBeInTheDocument();
|
|
40
|
+
|
|
41
|
+
// Comments.
|
|
42
|
+
expect(screen.getByText("dev")).toBeInTheDocument();
|
|
43
|
+
expect(screen.getByText("On it — resolving now.")).toBeInTheDocument();
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
test("back button fires onBack", () => {
|
|
47
|
+
const onBack = jest.fn();
|
|
48
|
+
render(wrap(<ChangeRequestSummary data={data} onBack={onBack} />));
|
|
49
|
+
fireEvent.click(screen.getByTestId("cr-back"));
|
|
50
|
+
expect(onBack).toHaveBeenCalledTimes(1);
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
test("a completed request hides the resolve-it instructions", () => {
|
|
54
|
+
render(wrap(<ChangeRequestSummary data={{ ...data, status: "completed" }} />));
|
|
55
|
+
expect(screen.getByTestId("cr-status")).toHaveTextContent("completed");
|
|
56
|
+
expect(screen.queryByText(/git fetch origin/)).not.toBeInTheDocument();
|
|
57
|
+
});
|