/*
* Copyright (c) 2020 - present Cloudogu GmbH
*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU Affero General Public License as published by the Free
* Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
* details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see https://www.gnu.org/licenses/.
*/
// import { storiesOf } from "@storybook/react";
// import React, { FC, ReactNode } from "react";
// import styled from "styled-components";
// import Annotate from "./Annotate";
// import { MemoryRouter } from "react-router-dom";
// import repository from "../../__resources__/repository";
// import { Binder, BinderContext } from "@scm-manager/ui-extensions";
// import { Person } from "../../avatar/Avatar";
// import { AnnotatedSource } from "@scm-manager/ui-types";
//
// const Wrapper = styled.div`
// margin: 2rem;
// `;
//
// const commitCreateNewApp = {
// revision: "0d8c1d328f4599b363755671afe667c7ace52bae",
// author: {
// name: "Arthur Dent",
// mail: "arthur.dent@hitchhiker.com",
// },
// description: "create new app",
// when: new Date("2020-04-09T13:07:42Z"),
// };
//
// const commitFixedMissingImport = {
// revision: "fab38559ce3ab8c388e067712b4bd7ab94b9fa9b",
// author: {
// name: "Tricia Marie McMillan",
// mail: "trillian@hitchhiker.com",
// },
// description: "fixed missing import",
// when: new Date("2020-05-10T09:18:42Z"),
// };
//
// const commitImplementMain = {
// revision: "5203292ab2bc0c020dd22adc4d3897da4930e43f",
// author: {
// name: "Ford Prefect",
// mail: "ford.prefect@hitchhiker.com",
// },
// description: "implemented main function",
// when: new Date("2020-04-12T16:29:42Z"),
// };
//
// const source: AnnotatedSource = {
// language: "go",
// lines: [
// {
// lineNumber: 1,
// code: "package main",
// ...commitCreateNewApp,
// },
// {
// lineNumber: 2,
// code: "",
// ...commitCreateNewApp,
// },
// {
// lineNumber: 3,
// code: 'import "fmt"',
// ...commitFixedMissingImport,
// },
// {
// lineNumber: 4,
// code: "",
// ...commitFixedMissingImport,
// },
// {
// lineNumber: 5,
// code: "func main() {",
// ...commitCreateNewApp,
// },
// {
// lineNumber: 6,
// code: ' fmt.Println("Hello World")',
// ...commitImplementMain,
// },
// {
// lineNumber: 7,
// code: "}",
// ...commitCreateNewApp,
// },
// {
// lineNumber: 8,
// code: "",
// ...commitCreateNewApp,
// },
// ],
// };
//
// const markdownSource: AnnotatedSource = {
// language: "markdown",
// lines: [
// {
// lineNumber: 1,
// code: "# Title",
// ...commitCreateNewApp,
// },
// {
// lineNumber: 2,
// code: "",
// ...commitCreateNewApp,
// },
// {
// lineNumber: 3,
// code: "This is a short Markdown text.",
// ...commitFixedMissingImport,
// },
// {
// lineNumber: 4,
// code: "",
// ...commitFixedMissingImport,
// },
// {
// lineNumber: 5,
// code: "With **bold** and __italic__ words.",
// ...commitCreateNewApp,
// },
// {
// lineNumber: 6,
// code: "",
// ...commitImplementMain,
// },
// {
// lineNumber: 7,
// code: "> This should be a quote",
// ...commitCreateNewApp,
// },
// {
// lineNumber: 8,
// code: "",
// ...commitCreateNewApp,
// },
// ],
// };
//
// const Robohash: FC<{ children: ReactNode }> = ({ children }) => {
// const binder = new Binder("robohash");
// binder.bind("avatar.factory", (person: Person) => `https://robohash.org/${person.mail}.png`);
// return {children};
// };
//
// storiesOf("Repositories/Annotate", module)
// .addDecorator((storyFn) => {storyFn()})
// .addDecorator((storyFn) => {storyFn()})
// .add("Default", () => (
//
// ))
// .add("Markdown", () => (
//
// ))
// .add("With Avatars", () => (
//
//
//
// ));
import React, { FC, ReactNode } from "react";
import styled from "styled-components";
import type { Meta, StoryObj } from "@storybook/react";
import { Binder, BinderContext } from "@scm-manager/ui-extensions";
import { AnnotatedSource } from "@scm-manager/ui-types";
import Annotate from "./Annotate";
import { Person } from "../../avatar/Avatar";
import repository from "../../__resources__/repository";
// --- Mock-Daten und Helfer-Komponenten (aus der Original-Story übernommen) ---
const Wrapper = styled.div`
margin: 2rem;
`;
const commitCreateNewApp = {
revision: "0d8c1d328f4599b363755671afe667c7ace52bae",
author: { name: "Arthur Dent", mail: "arthur.dent@hitchhiker.com" },
description: "create new app",
when: new Date("2020-04-09T13:07:42Z"),
};
const commitFixedMissingImport = {
revision: "fab38559ce3ab8c388e067712b4bd7ab94b9fa9b",
author: { name: "Tricia Marie McMillan", mail: "trillian@hitchhiker.com" },
description: "fixed missing import",
when: new Date("2020-05-10T09:18:42Z"),
};
const commitImplementMain = {
revision: "5203292ab2bc0c020dd22adc4d3897da4930e43f",
author: { name: "Ford Prefect", mail: "ford.prefect@hitchhiker.com" },
description: "implemented main function",
when: new Date("2020-04-12T16:29:42Z"),
};
const source: AnnotatedSource = {
language: "go",
lines: [
{ lineNumber: 1, code: "package main", ...commitCreateNewApp },
{ lineNumber: 2, code: "", ...commitCreateNewApp },
{ lineNumber: 3, code: 'import "fmt"', ...commitFixedMissingImport },
{ lineNumber: 4, code: "", ...commitFixedMissingImport },
{ lineNumber: 5, code: "func main() {", ...commitCreateNewApp },
{ lineNumber: 6, code: ' fmt.Println("Hello World")', ...commitImplementMain },
{ lineNumber: 7, code: "}", ...commitCreateNewApp },
],
};
const markdownSource: AnnotatedSource = {
language: "markdown",
lines: [
{ lineNumber: 1, code: "# Title", ...commitCreateNewApp },
{ lineNumber: 2, code: "", ...commitCreateNewApp },
{ lineNumber: 3, code: "This is a short Markdown text.", ...commitFixedMissingImport },
{ lineNumber: 4, code: "", ...commitFixedMissingImport },
{ lineNumber: 5, code: "With **bold** and __italic__ words.", ...commitCreateNewApp },
],
};
// Diese Helfer-Komponente stellt den Kontext für die benutzerdefinierten Avatare bereit.
const Robohash: FC<{ children: ReactNode }> = ({ children }) => {
const binder = new Binder("robohash");
binder.bind("avatar.factory", (person: Person) => `https://robohash.org/${person.mail}.png`);
return {children};
};
// --- Storybook Metadaten ---
const meta: Meta = {
title: "Repositories/Annotate",
component: Annotate,
// Der MemoryRouter-Decorator wurde entfernt. Nur der Wrapper bleibt.
decorators: [(Story) => {Story()}],
tags: ["autodocs"],
};
export default meta;
// --- Story-Definitionen ---
type Story = StoryObj;
export const Default: Story = {
args: {
// Die Props für die Komponente werden in das `args`-Objekt verschoben.
source: source,
repository: repository,
},
};
export const Markdown: Story = {
args: {
source: markdownSource,
repository: repository,
},
};
export const WithAvatars: Story = {
// Hier wird eine benutzerdefinierte `render`-Funktion verwendet, um die Komponente
// mit dem Robohash-Kontext-Provider zu umschließen.
render: (args) => (
),
args: {
...Default.args,
},
};