diff --git a/gradle/changelog/highcontrast.yaml b/gradle/changelog/highcontrast.yaml new file mode 100644 index 0000000000..54b568c4a8 --- /dev/null +++ b/gradle/changelog/highcontrast.yaml @@ -0,0 +1,2 @@ +- type: added + descripion: Experimental high contrast mode ([#1845](https://github.com/scm-manager/scm-manager/pull/1845)) diff --git a/scm-ui/ui-components/.storybook/RemoveThemesPlugin.js b/scm-ui/ui-components/.storybook/RemoveThemesPlugin.js new file mode 100644 index 0000000000..3d92ff4fe4 --- /dev/null +++ b/scm-ui/ui-components/.storybook/RemoveThemesPlugin.js @@ -0,0 +1,46 @@ +/* + * MIT License + * + * Copyright (c) 2020-present Cloudogu GmbH and Contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +const HtmlWebpackPlugin = require('html-webpack-plugin'); + +class RemoveThemesPlugin { + apply (compiler) { + compiler.hooks.compilation.tap('RemoveThemesPlugin', (compilation) => { + + HtmlWebpackPlugin.getHooks(compilation).beforeAssetTagGeneration.tapAsync( + 'RemoveThemesPlugin', + (data, cb) => { + if (data.assets.css) { + data.assets.css = data.assets.css.filter(css => css.startsWith("ui-theme-")) + } + data.assets.css = []; + // Tell webpack to move on + cb(null, data) + } + ) + }) + } +} + +module.exports = RemoveThemesPlugin diff --git a/scm-ui/ui-components/.storybook/main.js b/scm-ui/ui-components/.storybook/main.js new file mode 100644 index 0000000000..0aa191f8ed --- /dev/null +++ b/scm-ui/ui-components/.storybook/main.js @@ -0,0 +1,80 @@ +/* + * MIT License + * + * Copyright (c) 2020-present Cloudogu GmbH and Contributors + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +const path = require("path"); +const fs = require("fs"); +const MiniCssExtractPlugin = require("mini-css-extract-plugin"); +const RemoveThemesPlugin = require("./RemoveThemesPlugin"); +const WorkerPlugin = require("worker-plugin"); + +const root = path.resolve(".."); + +const themedir = path.join(root, "ui-styles", "src"); + +const themes = fs + .readdirSync(themedir) + .map((filename) => path.parse(filename)) + .filter((p) => p.ext === ".scss") + .reduce((entries, current) => ({ ...entries, [current.name]: path.join(themedir, current.base) }), {}); + +module.exports = { + stories: ["../src/**/*.stories.tsx"], + addons: ["storybook-addon-i18next", "storybook-addon-themes"], + webpackFinal: async (config) => { + // add our themes to webpack entry points + config.entry = { + main: config.entry, + ...themes, + }; + + // fix usage of web workers + // required for diff with syntax highlighting + config.plugins.push(new WorkerPlugin()); + + // create separate css files for our themes + config.plugins.push( + new MiniCssExtractPlugin({ + filename: "ui-theme-[name].css", + ignoreOrder: false + }), + ); + + config.module.rules.push({ + test: /\.scss$/, + use: [ + MiniCssExtractPlugin.loader, + "css-loader", + "sass-loader", + ], + }); + + // the html-webpack-plugin adds the generated css to iframe, + // which overrides our manually loaded css files. + // So we use a custom plugin which uses a hook of html-webpack-plugin + // to filter our themes from the output. + config.plugins.push(new RemoveThemesPlugin()); + + return config; + }, +}; diff --git a/scm-ui/ui-components/.storybook/preview-head.html b/scm-ui/ui-components/.storybook/preview-head.html new file mode 100644 index 0000000000..d5b19b0ac4 --- /dev/null +++ b/scm-ui/ui-components/.storybook/preview-head.html @@ -0,0 +1,26 @@ + + diff --git a/scm-ui/ui-components/.storybook/config.js b/scm-ui/ui-components/.storybook/preview.js similarity index 68% rename from scm-ui/ui-components/.storybook/config.js rename to scm-ui/ui-components/.storybook/preview.js index bb24933bb1..db1527ac30 100644 --- a/scm-ui/ui-components/.storybook/config.js +++ b/scm-ui/ui-components/.storybook/preview.js @@ -23,11 +23,10 @@ */ import i18next from "i18next"; import { initReactI18next } from "react-i18next"; -import { addDecorator, configure } from "@storybook/react"; import { withI18next } from "storybook-addon-i18next"; -import "!style-loader!css-loader!sass-loader!../../ui-styles/src/scm.scss"; -import React from "react"; +import React, {useEffect} from "react"; import withApiProvider from "./withApiProvider"; +import { withThemes } from 'storybook-addon-themes/react'; let i18n = i18next; @@ -43,30 +42,52 @@ i18n.use(initReactI18next).init({ lng: "en", fallbackLng: "en", interpolation: { - escapeValue: false + escapeValue: false, }, react: { - useSuspense: false + useSuspense: false, }, backend: { loadPath: "/locales/{{lng}}/{{ns}}.json", init: { - credentials: "same-origin" - } - } + credentials: "same-origin", + }, + }, }); -addDecorator( +export const decorators = [ withI18next({ i18n, languages: { en: "English", de: "Deutsch", - es: "Spanisch" + es: "Spanisch", + }, + }), + withApiProvider, + withThemes +]; + +const Decorator = ({children, themeName}) => { + useEffect(() => { + const link = document.querySelector("#ui-theme"); + if (link && link["data-theme"] !== themeName) { + link.href = `/ui-theme-${themeName}.css`; + link["data-theme"] = themeName; } - }) -); + }, [themeName]); + return <>{children} +}; -addDecorator(withApiProvider); - -configure(require.context("../src", true, /\.stories\.tsx?$/), module); +export const parameters = { + actions: { argTypesRegex: "^on[A-Z].*" }, + themes: { + Decorator, + clearable: false, + default: "light", + list: [ + { name: "light", color: "#fff" }, + { name: "highcontrast", color: "#000" }, + ], + }, +}; diff --git a/scm-ui/ui-components/package.json b/scm-ui/ui-components/package.json index a033272b6c..7aeac69a0d 100644 --- a/scm-ui/ui-components/package.json +++ b/scm-ui/ui-components/package.json @@ -26,9 +26,9 @@ "@scm-manager/prettier-config": "^2.10.1", "@scm-manager/tsconfig": "^2.12.0", "@scm-manager/ui-tests": "^2.25.1-SNAPSHOT", - "@storybook/addon-actions": "^6.1.17", - "@storybook/addon-storyshots": "^6.1.17", - "@storybook/react": "^6.1.17", + "@storybook/addon-actions": "^6.3.12", + "@storybook/addon-storyshots": "^6.3.12", + "@storybook/react": "^6.3.12", "@types/classnames": "^2.2.9", "@types/css": "^0.0.31", "@types/enzyme": "^3.10.3", @@ -52,9 +52,11 @@ "fetch-mock": "^7.5.1", "gitdiff-parser": "^0.1.2", "i18next-fetch-backend": "^2.2.0", + "mini-css-extract-plugin": "^1.6.2", "raf": "^3.4.0", "react-test-renderer": "^17.0.1", "storybook-addon-i18next": "^1.3.0", + "storybook-addon-themes": "^6.1.0", "to-camel-case": "^1.0.0", "worker-plugin": "^3.2.0" }, diff --git a/scm-ui/ui-components/src/__snapshots__/storyshots.test.ts.snap b/scm-ui/ui-components/src/__snapshots__/storyshots.test.ts.snap index fb7c3d1804..cb71f26749 100644 --- a/scm-ui/ui-components/src/__snapshots__/storyshots.test.ts.snap +++ b/scm-ui/ui-components/src/__snapshots__/storyshots.test.ts.snap @@ -1,1608 +1,5 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`Storyshots Annotate Default 1`] = ` -
-
-
-      
-        
-
-
- Arthur Dent -
- -
- -
- -
-
- 1 -
- -
- - - package - - - main - - - -
-
-
-
-
- 2 -
- -
- - - - -
-
-
-
-
- Tricia Marie McMillan -
- -
- -
- -
-
- 3 -
- -
- - - - - - import - - - - - - "fmt" - - - - - - -
-
-
-
-
- 4 -
- -
- - - - -
-
-
-
-
- Arthur Dent -
- -
- -
- -
-
- 5 -
- -
- - - - - - func - - - - - - main - - - ( - - - ) - - - - - - { - - - - - - -
-
-
-
-
- Ford Prefect -
- -
- -
- -
-
- 6 -
- -
- - - fmt - - - . - - - Println - - - ( - - - "Hello World" - - - ) - - - - - - -
-
-
-
-
- Arthur Dent -
- -
- -
- -
-
- 7 -
- -
- - - - - - } - - - - - - -
-
-
-
-
- 8 -
- -
- - - - -
-
- - - - -
-
-
-
-`; - -exports[`Storyshots Annotate Markdown 1`] = ` -
-
-
-      
-        
-
-
- Arthur Dent -
- -
- -
- -
-
- 1 -
- -
- - - # - - - Title - - - - - - -
-
-
-
-
- 2 -
- -
- - - - -
-
-
-
-
- Tricia Marie McMillan -
- -
- -
- -
-
- 3 -
- -
- - This is a short Markdown text. - - -
-
-
-
-
- 4 -
- -
- - - - -
-
-
-
-
- Arthur Dent -
- -
- -
- -
-
- 5 -
- -
- - - With - - - ** - - - bold - - - ** - - - and - - - __ - - - italic - - - __ - - - words. - - - -
-
-
-
-
- Ford Prefect -
- -
- -
- -
-
- 6 -
- -
- - - - -
-
-
-
-
- Arthur Dent -
- -
- -
- -
-
- 7 -
- -
- - - - - - > - - - This should be a quote - - - -
-
-
-
-
- 8 -
- -
- - - - -
-
- - - - -
-
-
-
-`; - -exports[`Storyshots Annotate With Avatars 1`] = ` -
-
-
-      
-        
-
-
- Arthur Dent - Arthur Dent -
- -
- -
- -
-
- 1 -
- -
- - - package - - - main - - - -
-
-
-
-
- 2 -
- -
- - - - -
-
-
-
-
- Tricia Marie McMillan - Tricia Marie McMillan -
- -
- -
- -
-
- 3 -
- -
- - - - - - import - - - - - - "fmt" - - - - - - -
-
-
-
-
- 4 -
- -
- - - - -
-
-
-
-
- Arthur Dent - Arthur Dent -
- -
- -
- -
-
- 5 -
- -
- - - - - - func - - - - - - main - - - ( - - - ) - - - - - - { - - - - - - -
-
-
-
-
- Ford Prefect - Ford Prefect -
- -
- -
- -
-
- 6 -
- -
- - - fmt - - - . - - - Println - - - ( - - - "Hello World" - - - ) - - - - - - -
-
-
-
-
- Arthur Dent - Arthur Dent -
- -
- -
- -
-
- 7 -
- -
- - - - - - } - - - - - - -
-
-
-
-
- 8 -
- -
- - - - -
-
- - - - -
-
-
-
-`; - exports[`Storyshots BranchSelector Default 1`] = `
`; -exports[`Storyshots Buttons|AddButton Default 1`] = ` +exports[`Storyshots Buttons/AddButton Default 1`] = `
@@ -2068,7 +465,7 @@ exports[`Storyshots Buttons|AddButton Default 1`] = `
`; -exports[`Storyshots Buttons|Button Colors 1`] = ` +exports[`Storyshots Buttons/Button Colors 1`] = `
`; -exports[`Storyshots Buttons|Button Disabled 1`] = ` +exports[`Storyshots Buttons/Button Disabled 1`] = `
`; -exports[`Storyshots Buttons|Button Loading 1`] = ` +exports[`Storyshots Buttons/Button Loading 1`] = `
@@ -2368,7 +765,7 @@ exports[`Storyshots Buttons|Button Loading 1`] = `
`; -exports[`Storyshots Buttons|CreateButton Default 1`] = ` +exports[`Storyshots Buttons/CreateButton Default 1`] = `
@@ -2387,7 +784,7 @@ exports[`Storyshots Buttons|CreateButton Default 1`] = `
`; -exports[`Storyshots Buttons|DeleteButton Default 1`] = ` +exports[`Storyshots Buttons/DeleteButton Default 1`] = `
@@ -2413,7 +810,7 @@ exports[`Storyshots Buttons|DeleteButton Default 1`] = `
`; -exports[`Storyshots Buttons|DownloadButton Default 1`] = ` +exports[`Storyshots Buttons/DownloadButton Default 1`] = `
@@ -2437,7 +834,7 @@ exports[`Storyshots Buttons|DownloadButton Default 1`] = `
`; -exports[`Storyshots Buttons|DownloadButton Disabled 1`] = ` +exports[`Storyshots Buttons/DownloadButton Disabled 1`] = `
@@ -2461,7 +858,7 @@ exports[`Storyshots Buttons|DownloadButton Disabled 1`] = `
`; -exports[`Storyshots Buttons|EditButton Default 1`] = ` +exports[`Storyshots Buttons/EditButton Default 1`] = `
@@ -2476,7 +873,7 @@ exports[`Storyshots Buttons|EditButton Default 1`] = `
`; -exports[`Storyshots Buttons|SubmitButton Default 1`] = ` +exports[`Storyshots Buttons/SubmitButton Default 1`] = `
@@ -2801,2186 +1198,6 @@ exports[`Storyshots CardColumnSmall Task 1`] = `
`; -exports[`Storyshots Changesets Co-Authors with avatar 1`] = ` -
-
-
-
-
-
-
-
-
- SCM Administrator -
-
-
-

- - Added design docs - -

-

-

-

-

- changeset.contributors.authoredBy - - - SCM Administrator - - - commaSeparatedList.lastDivider - - changeset.contributors.coAuthoredBy - - - - Ford Prefect - - - Zaphod Beeblebrox - - - Tricia Marie McMillan - - - -

-
-
-
-
-
-
-
-
-
-

- -

-

- -

-
-
-
-
-
-`; - -exports[`Storyshots Changesets Commiter and Co-Authors with avatar 1`] = ` -
-
-
-
-
-
-
-
-
- SCM Administrator -
-
-
-

- - The starship Heart of Gold was the first spacecraft to make use of the Infinite Improbability Drive. The craft was stolen by then-President Zaphod Beeblebrox at the official launch of the ship, as he was supposed to be officiating the launch. Later, during the use of the Infinite Improbability Drive, the ship picked up Arthur Dent and Ford Prefect, who were floating unprotected in deep space in the same star sector, having just escaped the destruction of the same planet. - -

-

-

-

-

- changeset.contributors.authoredBy - - - SCM Administrator - - , - changeset.contributors.committedBy - - - Zaphod Beeblebrox - - - commaSeparatedList.lastDivider - - changeset.contributors.coAuthoredBy - - - Ford Prefect - - -

-
-
-
-
-
-
-
-
-
-

- -

-

- -

-
-
-
-
-
-`; - -exports[`Storyshots Changesets Default 1`] = ` -
-
-
-
-
-
-
-
-

- - initialize repository - -

-

-

-

-

- changeset.contributors.authoredBy - - - SCM Administrator - -

-
-
-
-
-
-
-
-
-
-

- -

-

- -

-
-
-
-
-
-`; - -exports[`Storyshots Changesets Replacements 1`] = ` -
-
-
-
-
-
-
-
-

- - HOG-42 - -   - Change mail to -   - - Arthur - -

-

-

-

-

- changeset.contributors.authoredBy - - - SCM Administrator - -

-
-
-
-
-
-
-
-
-
-

- -

-

- -

-
-
-
-
-
-`; - -exports[`Storyshots Changesets With Committer 1`] = ` -
-
-
-
-
-
-
-
-

- - Change heading to "Heart Of Gold" - -

-

-

-

-

- changeset.contributors.authoredBy - - - SCM Administrator - - - commaSeparatedList.lastDivider - - changeset.contributors.committedBy - - - Zaphod Beeblebrox - - -

-
-
-
-
-
-
-
-
-
-

- -

-

- -

-
-
-
-
-
-`; - -exports[`Storyshots Changesets With Committer and Co-Author 1`] = ` -
-
-
-
-
-
-
-
-

- - The starship Heart of Gold was the first spacecraft to make use of the Infinite Improbability Drive. The craft was stolen by then-President Zaphod Beeblebrox at the official launch of the ship, as he was supposed to be officiating the launch. Later, during the use of the Infinite Improbability Drive, the ship picked up Arthur Dent and Ford Prefect, who were floating unprotected in deep space in the same star sector, having just escaped the destruction of the same planet. - -

-

-

-

-

- changeset.contributors.authoredBy - - - SCM Administrator - - , - changeset.contributors.committedBy - - - Zaphod Beeblebrox - - - commaSeparatedList.lastDivider - - changeset.contributors.coAuthoredBy - - - Ford Prefect - - -

-
-
-
-
-
-
-
-
-
-

- -

-

- -

-
-
-
-
-
-`; - -exports[`Storyshots Changesets With avatar 1`] = ` -
-
-
-
-
-
-
-
-
- SCM Administrator -
-
-
-

- - initialize repository - -

-

-

-

-

- changeset.contributors.authoredBy - - - SCM Administrator - -

-
-
-
-
-
-
-
-
-
-

- -

-

- -

-
-
-
-
-
-`; - -exports[`Storyshots Changesets With contactless signature 1`] = ` -
-
-
-
-
-
-
-
-

- - initialize repository - -

-

-

-

-

- changeset.contributors.authoredBy - - - SCM Administrator - -

-
- -
-
-
-
-
-
-
-
-
-
-

- -

-

- -

-
-
-
-
-
-`; - -exports[`Storyshots Changesets With invalid signature 1`] = ` -
-
-
-
-
-
-
-
-

- - initialize repository - -

-

-

-

-

- changeset.contributors.authoredBy - - - SCM Administrator - -

-
- -
-
-
-
-
-
-
-
-
-
-

- -

-

- -

-
-
-
-
-
-`; - -exports[`Storyshots Changesets With multiple Co-Authors 1`] = ` -
-
-
-
-
-
-
-
-

- - Added design docs - -

-

-

-

-

- changeset.contributors.authoredBy - - - SCM Administrator - - - commaSeparatedList.lastDivider - - changeset.contributors.coAuthoredBy - - - changeset.contributors.more - - -

-
-
-
-
-
-
-
-
-
-

- -

-

- -

-
-
-
-
-
-`; - -exports[`Storyshots Changesets With multiple signatures and invalid status 1`] = ` -
-
-
-
-
-
-
-
-

- - initialize repository - -

-

-

-

-

- changeset.contributors.authoredBy - - - SCM Administrator - -

-
- -
-
-
-
-
-
-
-
-
-
-

- -

-

- -

-
-
-
-
-
-`; - -exports[`Storyshots Changesets With multiple signatures and not found status 1`] = ` -
-
-
-
-
-
-
-
-

- - initialize repository - -

-

-

-

-

- changeset.contributors.authoredBy - - - SCM Administrator - -

-
- -
-
-
-
-
-
-
-
-
-
-

- -

-

- -

-
-
-
-
-
-`; - -exports[`Storyshots Changesets With multiple signatures and valid status 1`] = ` -
-
-
-
-
-
-
-
-

- - initialize repository - -

-

-

-

-

- changeset.contributors.authoredBy - - - SCM Administrator - -

-
- -
-
-
-
-
-
-
-
-
-
-

- -

-

- -

-
-
-
-
-
-`; - -exports[`Storyshots Changesets With unknown signature 1`] = ` -
-
-
-
-
-
-
-
-

- - initialize repository - -

-

-

-

-

- changeset.contributors.authoredBy - - - SCM Administrator - -

-
- -
-
-
-
-
-
-
-
-
-
-

- -

-

- -

-
-
-
-
-
-`; - -exports[`Storyshots Changesets With unowned signature 1`] = ` -
-
-
-
-
-
-
-
-

- - initialize repository - -

-

-

-

-

- changeset.contributors.authoredBy - - - SCM Administrator - -

-
- -
-
-
-
-
-
-
-
-
-
-

- -

-

- -

-
-
-
-
-
-`; - -exports[`Storyshots Changesets With valid signature 1`] = ` -
-
-
-
-
-
-
-
-

- - initialize repository - -

-

-

-

-

- changeset.contributors.authoredBy - - - SCM Administrator - -

-
- -
-
-
-
-
-
-
-
-
-
-

- -

-

- -

-
-
-
-
-
-`; - exports[`Storyshots Date Date from now 1`] = `
`; -exports[`Storyshots Diff Binaries 1`] = ` -
-
-
-
-
-
- - - Main.java - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- 1 - - 1 - - class Main { -
- 2 - - 2 - - - public static void main(String[] args) { -
- 3 - - 3 - - + public static void main(String[] arguments) { -
- 4 - - 4 - - System.out.println("Expect nothing more to happen."); -
- 5 - - 5 - - } -
-
-
-
-
-
-
- - conflict.png - - - add - -
-
-
-
-
-
-
- - - - - - -
-
-
-
-
-`; - -exports[`Storyshots Diff Changing Content 1`] = ` -
-
- -
-
-
-
-
- - - src/main/java/com/cloudogu/scm/review/events/EventListener.java - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- 1 - - 1 - - package com.cloudogu.scm.review.events; -
- 2 - - 2 - - -
- 3 - - - import com.cloudogu.scm.review.comment.service.BasicComment; -
- 4 - - - import com.cloudogu.scm.review.comment.service.BasicCommentEvent; -
- 5 - - - import com.cloudogu.scm.review.comment.service.CommentEvent; -
- 6 - - - import com.cloudogu.scm.review.comment.service.ReplyEvent; -
- 7 - - 3 - - import com.cloudogu.scm.review.pullrequest.service.BasicPullRequestEvent; -
- 8 - - 4 - - import com.cloudogu.scm.review.pullrequest.service.PullRequest; -
- 9 - - - import com.cloudogu.scm.review.pullrequest.service.PullRequestEvent; -
- 10 - - 5 - - import com.github.legman.Subscribe; -
- 11 - - - import lombok.Data; -
- 12 - - 6 - - import org.apache.shiro.SecurityUtils; -
- 13 - - 7 - - import org.apache.shiro.subject.PrincipalCollection; -
- 14 - - 8 - - import org.apache.shiro.subject.Subject; -
- 15 - - 9 - - import sonia.scm.EagerSingleton; -
- 16 - - - import sonia.scm.HandlerEventType; -
- 17 - - - import sonia.scm.event.HandlerEvent; -
- 18 - - 10 - - import sonia.scm.plugin.Extension; -
- 19 - - 11 - - import sonia.scm.repository.Repository; -
- 20 - - 12 - - import sonia.scm.security.SessionId; -
-
- - - - diff.expandLastBottomByLines - - - - - - diff.expandLastBottomComplete - -
-
-
-
-
-
-
-
- - - src/main/js/ChangeNotification.tsx - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - diff.expandComplete - -
-
- 2 - - 2 - - import { Link } from "@scm-manager/ui-types"; -
- 3 - - 3 - - import { apiClient, Toast, ToastButtons, ToastButton } from "@scm-manager/ui-components"; -
- 4 - - 4 - - import { PullRequest } from "./types/PullRequest"; -
- - 5 - - import { useTranslation } from "react-i18next"; -
- 5 - - 6 - - -
- 6 - - 7 - - type HandlerProps = { -
- 7 - - 8 - - url: string; -
-
- - - - diff.expandComplete - -
-
-
- - - - diff.expandComplete - -
-
- 15 - - 16 - - pullRequest: setEvent -
- 16 - - 17 - - }); -
- 17 - - 18 - - }, [url]); -
- - 19 - - const { t } = useTranslation("plugins"); -
- 18 - - 20 - - if (event) { -
- 19 - - 21 - - return ( -
- 20 - - - <Toast type="warning" title="New Changes"> -
- 21 - - - <p>The underlying Pull-Request has changed. Press reload to see the changes.</p> -
- 22 - - - <p>Warning: Non saved modification will be lost.</p> -
- - 22 - - <Toast type="warning" title={t("scm-review-plugin.changeNotification.title")}> -
- - 23 - - <p>{t("scm-review-plugin.changeNotification.description")}</p> -
- - 24 - - <p>{t("scm-review-plugin.changeNotification.modificationWarning")}</p> -
- 23 - - 25 - - <ToastButtons> -
- 24 - - - <ToastButton icon="redo" onClick={reload}>Reload</ToastButton> -
- 25 - - - <ToastButton icon="times" onClick={() => setEvent(undefined)}>Ignore</ToastButton> -
- - 26 - - <ToastButton icon="redo" onClick={reload}> -
- - 27 - - {t("scm-review-plugin.changeNotification.buttons.reload")} -
- - 28 - - </ToastButton> -
- - 29 - - <ToastButton icon="times" onClick={() => setEvent(undefined)}> -
- - 30 - - {t("scm-review-plugin.changeNotification.buttons.ignore")} -
- - 31 - - </ToastButton> -
- 26 - - 32 - - </ToastButtons> -
- 27 - - 33 - - </Toast> -
- 28 - - 34 - - ); -
-
- - - - diff.expandLastBottomByLines - - - - - - diff.expandLastBottomComplete - -
-
-
-
-
-
-
-
- - - src/main/resources/locales/de/plugins.json - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - diff.expandByLines - - - - - - diff.expandComplete - -
-
- 181 - - 181 - - "titleClickable": "Der Kommentar bezieht sich auf eine ältere Version des Source- oder Target-Branches. Klicken Sie hier, um den ursprünglichen Kontext zu sehen." -
- 182 - - 182 - - } -
- 183 - - 183 - - } -
- - 184 - - }, -
- - 185 - - "changeNotification": { -
- - 186 - - "title": "Neue Änderungen", -
- - 187 - - "description": "An diesem Pull Request wurden Änderungen vorgenommen. Laden Sie die Seite neu um diese anzuzeigen.", -
- - 188 - - "modificationWarning": "Warnung: Nicht gespeicherte Eingaben gehen verloren.", -
- - 189 - - "buttons": { -
- - 190 - - "reload": "Neu laden", -
- - 191 - - "ignore": "Ignorieren" -
- - 192 - - } -
- 184 - - 193 - - } -
- 185 - - 194 - - }, -
- 186 - - 195 - - "permissions": { -
-
- - - - diff.expandLastBottomByLines - - - - - - diff.expandLastBottomComplete - -
-
-
-
-
-
-
-
- - - src/main/resources/locales/en/plugins.json - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - diff.expandByLines - - - - - - diff.expandComplete - -
-
- 181 - - 181 - - "titleClickable": "The comment is related to an older of the source or target branch. Click here to see the original context." -
- 182 - - 182 - - } -
- 183 - - 183 - - } -
- - 184 - - }, -
- - 185 - - "changeNotification": { -
- - 186 - - "title": "New Changes", -
- - 187 - - "description": "The underlying Pull-Request has changed. Press reload to see the changes.", -
- - 188 - - "modificationWarning": "Warning: Non saved modification will be lost.", -
- - 189 - - "buttons": { -
- - 190 - - "reload": "Reload", -
- - 191 - - "ignore": "Ignore" -
- - 192 - - } -
- 184 - - 193 - - } -
- 185 - - 194 - - }, -
- 186 - - 195 - - "permissions": { -
-
- - - - diff.expandLastBottomByLines - - - - - - diff.expandLastBottomComplete - -
-
-
-
-
-
-
-
- - - src/test/java/com/cloudogu/scm/review/events/ClientTest.java - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - diff.expandComplete - -
-
- 7 - - 7 - - import org.mockito.Mock; -
- 8 - - 8 - - import org.mockito.junit.jupiter.MockitoExtension; -
- 9 - - 9 - - import sonia.scm.security.SessionId; -
- - 10 - - -
- 10 - - 11 - - import javax.ws.rs.sse.OutboundSseEvent; -
- 11 - - 12 - - import javax.ws.rs.sse.SseEventSink; -
- 12 - - - -
- 13 - - 13 - - import java.time.Clock; -
- 14 - - 14 - - import java.time.Instant; -
- 15 - - 15 - - import java.time.LocalDateTime; -
- 16 - - 16 - - import java.time.ZoneOffset; -
- 17 - - 17 - - import java.time.temporal.ChronoField; -
- 18 - - - import java.time.temporal.ChronoUnit; -
- 19 - - - import java.time.temporal.TemporalField; -
- 20 - - 18 - - import java.util.concurrent.CompletableFuture; -
- 21 - - 19 - - import java.util.concurrent.CompletionStage; -
- 22 - - - import java.util.concurrent.atomic.AtomicLong; -
- 23 - - 20 - - import java.util.concurrent.atomic.AtomicReference; -
- 24 - - 21 - - -
- 25 - - 22 - - import static java.time.temporal.ChronoUnit.MINUTES; -
-
- - - - diff.expandByLines - - - - - - diff.expandComplete - -
-
-
- - - - diff.expandByLines - - - - - - diff.expandComplete - -
-
- 83 - - 80 - - -
- 84 - - 81 - - @Test -
- 85 - - 82 - - @SuppressWarnings("unchecked") -
- 86 - - - void shouldCloseEventSinkOnFailure() throws InterruptedException { -
- - 83 - - void shouldCloseEventSinkOnFailure() { -
- 87 - - 84 - - CompletionStage future = CompletableFuture.supplyAsync(() -> { -
- 88 - - 85 - - throw new RuntimeException("failed to send message"); -
- 89 - - 86 - - }); -
-
- - - - diff.expandComplete - -
-
-
- - - - diff.expandComplete - -
-
- 91 - - 88 - - -
- 92 - - 89 - - client.send(message); -
- 93 - - 90 - - -
- 94 - - - Thread.sleep(50L); -
- 95 - - - -
- 96 - - - verify(eventSink).close(); -
- - 91 - - verify(eventSink, timeout(50L)).close(); -
- 97 - - 92 - - } -
- 98 - - 93 - - -
- 99 - - 94 - - @Test -
-
- - - - diff.expandLastBottomByLines - - - - - - diff.expandLastBottomComplete - -
-
-
-
-
-
-
-
- - - Main.java - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - 1 - - import java.io.PrintStream; -
- 1 - - 2 - - import java.util.Arrays; -
- 2 - - 3 - - -
- 3 - - 4 - - class Main { -
- - 5 - - private static final PrintStream OUT = System.out; -
- - 6 - - -
- 4 - - 7 - - public static void main(String[] args) { -
- - 8 - - <<<<<<< HEAD -
- 5 - - 9 - - System.out.println("Expect nothing more to happen."); -
- 6 - - 10 - - System.out.println("The command line parameters are:"); -
- 7 - - 11 - - Arrays.stream(args).map(arg -> "- " + arg).forEach(System.out::println); -
- - 12 - - ======= -
- - 13 - - OUT.println("Expect nothing more to happen."); -
- - 14 - - OUT.println("Parameters:"); -
- - 15 - - Arrays.stream(args).map(arg -> "- " + arg).forEach(OUT::println); -
- - 16 - - >>>>>>> feature/use_constant -
- 8 - - 17 - - } -
- 9 - - 18 - - } -
-
- - - - diff.expandLastBottomByLines - - - - - - diff.expandLastBottomComplete - -
-
-
-
-
-
-
-`; - -exports[`Storyshots Diff Collapsed 1`] = ` -
-
-
-
-
-
- - - src/main/java/com/cloudogu/scm/review/events/EventListener.java - - - modify - -
-
-
-
- - - -
-
- - - -
-
- - - - - -
-
- - - - - -
-
-
-
-
-
-
-
-
-
- - - src/main/js/ChangeNotification.tsx - - - modify - -
-
-
-
- - - -
-
- - - -
-
- - - - - -
-
- - - - - -
-
-
-
-
-
-
-
-
-
- - - src/main/resources/locales/de/plugins.json - - - modify - -
-
-
-
- - - -
-
- - - -
-
- - - - - -
-
- - - - - -
-
-
-
-
-
-
-
-
-
- - - src/main/resources/locales/en/plugins.json - - - modify - -
-
-
-
- - - -
-
- - - -
-
- - - - - -
-
- - - - - -
-
-
-
-
-
-
-
-
-
- - - src/test/java/com/cloudogu/scm/review/events/ClientTest.java - - - modify - -
-
-
-
- - - -
-
- - - -
-
- - - - - -
-
- - - - - -
-
-
-
-
-
-
-
-
-
- - - Main.java - - - modify - -
-
-
-
- - - -
-
- - - -
-
- - - - - -
-
- - - - - -
-
-
-
-
-
-
-
-`; - -exports[`Storyshots Diff CollapsingWithFunction 1`] = ` -
-
-
-
-
-
- - - src/main/java/com/cloudogu/scm/review/events/EventListener.java - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
-
-
-
-
- - - src/main/js/ChangeNotification.tsx - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- 2 - - 2 - - import { Link } from "@scm-manager/ui-types"; -
- 3 - - 3 - - import { apiClient, Toast, ToastButtons, ToastButton } from "@scm-manager/ui-components"; -
- 4 - - 4 - - import { PullRequest } from "./types/PullRequest"; -
- - 5 - - import { useTranslation } from "react-i18next"; -
- 5 - - 6 - - -
- 6 - - 7 - - type HandlerProps = { -
- 7 - - 8 - - url: string; -
-
-
- 15 - - 16 - - pullRequest: setEvent -
- 16 - - 17 - - }); -
- 17 - - 18 - - }, [url]); -
- - 19 - - const { t } = useTranslation("plugins"); -
- 18 - - 20 - - if (event) { -
- 19 - - 21 - - return ( -
- 20 - - - <Toast type="warning" title="New Changes"> -
- 21 - - - <p>The underlying Pull-Request has changed. Press reload to see the changes.</p> -
- 22 - - - <p>Warning: Non saved modification will be lost.</p> -
- - 22 - - <Toast type="warning" title={t("scm-review-plugin.changeNotification.title")}> -
- - 23 - - <p>{t("scm-review-plugin.changeNotification.description")}</p> -
- - 24 - - <p>{t("scm-review-plugin.changeNotification.modificationWarning")}</p> -
- 23 - - 25 - - <ToastButtons> -
- 24 - - - <ToastButton icon="redo" onClick={reload}>Reload</ToastButton> -
- 25 - - - <ToastButton icon="times" onClick={() => setEvent(undefined)}>Ignore</ToastButton> -
- - 26 - - <ToastButton icon="redo" onClick={reload}> -
- - 27 - - {t("scm-review-plugin.changeNotification.buttons.reload")} -
- - 28 - - </ToastButton> -
- - 29 - - <ToastButton icon="times" onClick={() => setEvent(undefined)}> -
- - 30 - - {t("scm-review-plugin.changeNotification.buttons.ignore")} -
- - 31 - - </ToastButton> -
- 26 - - 32 - - </ToastButtons> -
- 27 - - 33 - - </Toast> -
- 28 - - 34 - - ); -
-
-
-
-
-
-
- - - src/main/resources/locales/de/plugins.json - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- 181 - - 181 - - "titleClickable": "Der Kommentar bezieht sich auf eine ältere Version des Source- oder Target-Branches. Klicken Sie hier, um den ursprünglichen Kontext zu sehen." -
- 182 - - 182 - - } -
- 183 - - 183 - - } -
- - 184 - - }, -
- - 185 - - "changeNotification": { -
- - 186 - - "title": "Neue Änderungen", -
- - 187 - - "description": "An diesem Pull Request wurden Änderungen vorgenommen. Laden Sie die Seite neu um diese anzuzeigen.", -
- - 188 - - "modificationWarning": "Warnung: Nicht gespeicherte Eingaben gehen verloren.", -
- - 189 - - "buttons": { -
- - 190 - - "reload": "Neu laden", -
- - 191 - - "ignore": "Ignorieren" -
- - 192 - - } -
- 184 - - 193 - - } -
- 185 - - 194 - - }, -
- 186 - - 195 - - "permissions": { -
-
-
-
-
-
-
- - - src/main/resources/locales/en/plugins.json - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- 181 - - 181 - - "titleClickable": "The comment is related to an older of the source or target branch. Click here to see the original context." -
- 182 - - 182 - - } -
- 183 - - 183 - - } -
- - 184 - - }, -
- - 185 - - "changeNotification": { -
- - 186 - - "title": "New Changes", -
- - 187 - - "description": "The underlying Pull-Request has changed. Press reload to see the changes.", -
- - 188 - - "modificationWarning": "Warning: Non saved modification will be lost.", -
- - 189 - - "buttons": { -
- - 190 - - "reload": "Reload", -
- - 191 - - "ignore": "Ignore" -
- - 192 - - } -
- 184 - - 193 - - } -
- 185 - - 194 - - }, -
- 186 - - 195 - - "permissions": { -
-
-
-
-
-
-
- - - src/test/java/com/cloudogu/scm/review/events/ClientTest.java - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
-
-
-
-
- - - Main.java - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
-
-
-`; - -exports[`Storyshots Diff Default 1`] = ` -
-
-
-
-
-
- - - src/main/java/com/cloudogu/scm/review/events/EventListener.java - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- 1 - - 1 - - package com.cloudogu.scm.review.events; -
- 2 - - 2 - - -
- 3 - - - import com.cloudogu.scm.review.comment.service.BasicComment; -
- 4 - - - import com.cloudogu.scm.review.comment.service.BasicCommentEvent; -
- 5 - - - import com.cloudogu.scm.review.comment.service.CommentEvent; -
- 6 - - - import com.cloudogu.scm.review.comment.service.ReplyEvent; -
- 7 - - 3 - - import com.cloudogu.scm.review.pullrequest.service.BasicPullRequestEvent; -
- 8 - - 4 - - import com.cloudogu.scm.review.pullrequest.service.PullRequest; -
- 9 - - - import com.cloudogu.scm.review.pullrequest.service.PullRequestEvent; -
- 10 - - 5 - - import com.github.legman.Subscribe; -
- 11 - - - import lombok.Data; -
- 12 - - 6 - - import org.apache.shiro.SecurityUtils; -
- 13 - - 7 - - import org.apache.shiro.subject.PrincipalCollection; -
- 14 - - 8 - - import org.apache.shiro.subject.Subject; -
- 15 - - 9 - - import sonia.scm.EagerSingleton; -
- 16 - - - import sonia.scm.HandlerEventType; -
- 17 - - - import sonia.scm.event.HandlerEvent; -
- 18 - - 10 - - import sonia.scm.plugin.Extension; -
- 19 - - 11 - - import sonia.scm.repository.Repository; -
- 20 - - 12 - - import sonia.scm.security.SessionId; -
-
-
-
-
-
-
- - - src/main/js/ChangeNotification.tsx - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- 2 - - 2 - - import { Link } from "@scm-manager/ui-types"; -
- 3 - - 3 - - import { apiClient, Toast, ToastButtons, ToastButton } from "@scm-manager/ui-components"; -
- 4 - - 4 - - import { PullRequest } from "./types/PullRequest"; -
- - 5 - - import { useTranslation } from "react-i18next"; -
- 5 - - 6 - - -
- 6 - - 7 - - type HandlerProps = { -
- 7 - - 8 - - url: string; -
-
-
- 15 - - 16 - - pullRequest: setEvent -
- 16 - - 17 - - }); -
- 17 - - 18 - - }, [url]); -
- - 19 - - const { t } = useTranslation("plugins"); -
- 18 - - 20 - - if (event) { -
- 19 - - 21 - - return ( -
- 20 - - - <Toast type="warning" title="New Changes"> -
- 21 - - - <p>The underlying Pull-Request has changed. Press reload to see the changes.</p> -
- 22 - - - <p>Warning: Non saved modification will be lost.</p> -
- - 22 - - <Toast type="warning" title={t("scm-review-plugin.changeNotification.title")}> -
- - 23 - - <p>{t("scm-review-plugin.changeNotification.description")}</p> -
- - 24 - - <p>{t("scm-review-plugin.changeNotification.modificationWarning")}</p> -
- 23 - - 25 - - <ToastButtons> -
- 24 - - - <ToastButton icon="redo" onClick={reload}>Reload</ToastButton> -
- 25 - - - <ToastButton icon="times" onClick={() => setEvent(undefined)}>Ignore</ToastButton> -
- - 26 - - <ToastButton icon="redo" onClick={reload}> -
- - 27 - - {t("scm-review-plugin.changeNotification.buttons.reload")} -
- - 28 - - </ToastButton> -
- - 29 - - <ToastButton icon="times" onClick={() => setEvent(undefined)}> -
- - 30 - - {t("scm-review-plugin.changeNotification.buttons.ignore")} -
- - 31 - - </ToastButton> -
- 26 - - 32 - - </ToastButtons> -
- 27 - - 33 - - </Toast> -
- 28 - - 34 - - ); -
-
-
-
-
-
-
- - - src/main/resources/locales/de/plugins.json - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- 181 - - 181 - - "titleClickable": "Der Kommentar bezieht sich auf eine ältere Version des Source- oder Target-Branches. Klicken Sie hier, um den ursprünglichen Kontext zu sehen." -
- 182 - - 182 - - } -
- 183 - - 183 - - } -
- - 184 - - }, -
- - 185 - - "changeNotification": { -
- - 186 - - "title": "Neue Änderungen", -
- - 187 - - "description": "An diesem Pull Request wurden Änderungen vorgenommen. Laden Sie die Seite neu um diese anzuzeigen.", -
- - 188 - - "modificationWarning": "Warnung: Nicht gespeicherte Eingaben gehen verloren.", -
- - 189 - - "buttons": { -
- - 190 - - "reload": "Neu laden", -
- - 191 - - "ignore": "Ignorieren" -
- - 192 - - } -
- 184 - - 193 - - } -
- 185 - - 194 - - }, -
- 186 - - 195 - - "permissions": { -
-
-
-
-
-
-
- - - src/main/resources/locales/en/plugins.json - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- 181 - - 181 - - "titleClickable": "The comment is related to an older of the source or target branch. Click here to see the original context." -
- 182 - - 182 - - } -
- 183 - - 183 - - } -
- - 184 - - }, -
- - 185 - - "changeNotification": { -
- - 186 - - "title": "New Changes", -
- - 187 - - "description": "The underlying Pull-Request has changed. Press reload to see the changes.", -
- - 188 - - "modificationWarning": "Warning: Non saved modification will be lost.", -
- - 189 - - "buttons": { -
- - 190 - - "reload": "Reload", -
- - 191 - - "ignore": "Ignore" -
- - 192 - - } -
- 184 - - 193 - - } -
- 185 - - 194 - - }, -
- 186 - - 195 - - "permissions": { -
-
-
-
-
-
-
- - - src/test/java/com/cloudogu/scm/review/events/ClientTest.java - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- 7 - - 7 - - import org.mockito.Mock; -
- 8 - - 8 - - import org.mockito.junit.jupiter.MockitoExtension; -
- 9 - - 9 - - import sonia.scm.security.SessionId; -
- - 10 - - -
- 10 - - 11 - - import javax.ws.rs.sse.OutboundSseEvent; -
- 11 - - 12 - - import javax.ws.rs.sse.SseEventSink; -
- 12 - - - -
- 13 - - 13 - - import java.time.Clock; -
- 14 - - 14 - - import java.time.Instant; -
- 15 - - 15 - - import java.time.LocalDateTime; -
- 16 - - 16 - - import java.time.ZoneOffset; -
- 17 - - 17 - - import java.time.temporal.ChronoField; -
- 18 - - - import java.time.temporal.ChronoUnit; -
- 19 - - - import java.time.temporal.TemporalField; -
- 20 - - 18 - - import java.util.concurrent.CompletableFuture; -
- 21 - - 19 - - import java.util.concurrent.CompletionStage; -
- 22 - - - import java.util.concurrent.atomic.AtomicLong; -
- 23 - - 20 - - import java.util.concurrent.atomic.AtomicReference; -
- 24 - - 21 - - -
- 25 - - 22 - - import static java.time.temporal.ChronoUnit.MINUTES; -
-
-
- 83 - - 80 - - -
- 84 - - 81 - - @Test -
- 85 - - 82 - - @SuppressWarnings("unchecked") -
- 86 - - - void shouldCloseEventSinkOnFailure() throws InterruptedException { -
- - 83 - - void shouldCloseEventSinkOnFailure() { -
- 87 - - 84 - - CompletionStage future = CompletableFuture.supplyAsync(() -> { -
- 88 - - 85 - - throw new RuntimeException("failed to send message"); -
- 89 - - 86 - - }); -
-
-
- 91 - - 88 - - -
- 92 - - 89 - - client.send(message); -
- 93 - - 90 - - -
- 94 - - - Thread.sleep(50L); -
- 95 - - - -
- 96 - - - verify(eventSink).close(); -
- - 91 - - verify(eventSink, timeout(50L)).close(); -
- 97 - - 92 - - } -
- 98 - - 93 - - -
- 99 - - 94 - - @Test -
-
-
-
-
-
-
- - - Main.java - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - 1 - - import java.io.PrintStream; -
- 1 - - 2 - - import java.util.Arrays; -
- 2 - - 3 - - -
- 3 - - 4 - - class Main { -
- - 5 - - private static final PrintStream OUT = System.out; -
- - 6 - - -
- 4 - - 7 - - public static void main(String[] args) { -
- - 8 - - <<<<<<< HEAD -
- 5 - - 9 - - System.out.println("Expect nothing more to happen."); -
- 6 - - 10 - - System.out.println("The command line parameters are:"); -
- 7 - - 11 - - Arrays.stream(args).map(arg -> "- " + arg).forEach(System.out::println); -
- - 12 - - ======= -
- - 13 - - OUT.println("Expect nothing more to happen."); -
- - 14 - - OUT.println("Parameters:"); -
- - 15 - - Arrays.stream(args).map(arg -> "- " + arg).forEach(OUT::println); -
- - 16 - - >>>>>>> feature/use_constant -
- 8 - - 17 - - } -
- 9 - - 18 - - } -
-
-
-
-
-`; - -exports[`Storyshots Diff Expandable 1`] = ` -
-
-
-
-
-
- - - src/main/java/com/cloudogu/scm/review/events/EventListener.java - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- 1 - - 1 - - package com.cloudogu.scm.review.events; -
- 2 - - 2 - - -
- 3 - - - import com.cloudogu.scm.review.comment.service.BasicComment; -
- 4 - - - import com.cloudogu.scm.review.comment.service.BasicCommentEvent; -
- 5 - - - import com.cloudogu.scm.review.comment.service.CommentEvent; -
- 6 - - - import com.cloudogu.scm.review.comment.service.ReplyEvent; -
- 7 - - 3 - - import com.cloudogu.scm.review.pullrequest.service.BasicPullRequestEvent; -
- 8 - - 4 - - import com.cloudogu.scm.review.pullrequest.service.PullRequest; -
- 9 - - - import com.cloudogu.scm.review.pullrequest.service.PullRequestEvent; -
- 10 - - 5 - - import com.github.legman.Subscribe; -
- 11 - - - import lombok.Data; -
- 12 - - 6 - - import org.apache.shiro.SecurityUtils; -
- 13 - - 7 - - import org.apache.shiro.subject.PrincipalCollection; -
- 14 - - 8 - - import org.apache.shiro.subject.Subject; -
- 15 - - 9 - - import sonia.scm.EagerSingleton; -
- 16 - - - import sonia.scm.HandlerEventType; -
- 17 - - - import sonia.scm.event.HandlerEvent; -
- 18 - - 10 - - import sonia.scm.plugin.Extension; -
- 19 - - 11 - - import sonia.scm.repository.Repository; -
- 20 - - 12 - - import sonia.scm.security.SessionId; -
-
- - - - diff.expandLastBottomByLines - - - - - - diff.expandLastBottomComplete - -
-
-
-
-
-
-
-
- - - src/main/js/ChangeNotification.tsx - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - diff.expandComplete - -
-
- 2 - - 2 - - import { Link } from "@scm-manager/ui-types"; -
- 3 - - 3 - - import { apiClient, Toast, ToastButtons, ToastButton } from "@scm-manager/ui-components"; -
- 4 - - 4 - - import { PullRequest } from "./types/PullRequest"; -
- - 5 - - import { useTranslation } from "react-i18next"; -
- 5 - - 6 - - -
- 6 - - 7 - - type HandlerProps = { -
- 7 - - 8 - - url: string; -
-
- - - - diff.expandComplete - -
-
-
- - - - diff.expandComplete - -
-
- 15 - - 16 - - pullRequest: setEvent -
- 16 - - 17 - - }); -
- 17 - - 18 - - }, [url]); -
- - 19 - - const { t } = useTranslation("plugins"); -
- 18 - - 20 - - if (event) { -
- 19 - - 21 - - return ( -
- 20 - - - <Toast type="warning" title="New Changes"> -
- 21 - - - <p>The underlying Pull-Request has changed. Press reload to see the changes.</p> -
- 22 - - - <p>Warning: Non saved modification will be lost.</p> -
- - 22 - - <Toast type="warning" title={t("scm-review-plugin.changeNotification.title")}> -
- - 23 - - <p>{t("scm-review-plugin.changeNotification.description")}</p> -
- - 24 - - <p>{t("scm-review-plugin.changeNotification.modificationWarning")}</p> -
- 23 - - 25 - - <ToastButtons> -
- 24 - - - <ToastButton icon="redo" onClick={reload}>Reload</ToastButton> -
- 25 - - - <ToastButton icon="times" onClick={() => setEvent(undefined)}>Ignore</ToastButton> -
- - 26 - - <ToastButton icon="redo" onClick={reload}> -
- - 27 - - {t("scm-review-plugin.changeNotification.buttons.reload")} -
- - 28 - - </ToastButton> -
- - 29 - - <ToastButton icon="times" onClick={() => setEvent(undefined)}> -
- - 30 - - {t("scm-review-plugin.changeNotification.buttons.ignore")} -
- - 31 - - </ToastButton> -
- 26 - - 32 - - </ToastButtons> -
- 27 - - 33 - - </Toast> -
- 28 - - 34 - - ); -
-
- - - - diff.expandLastBottomByLines - - - - - - diff.expandLastBottomComplete - -
-
-
-
-
-
-
-
- - - src/main/resources/locales/de/plugins.json - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - diff.expandByLines - - - - - - diff.expandComplete - -
-
- 181 - - 181 - - "titleClickable": "Der Kommentar bezieht sich auf eine ältere Version des Source- oder Target-Branches. Klicken Sie hier, um den ursprünglichen Kontext zu sehen." -
- 182 - - 182 - - } -
- 183 - - 183 - - } -
- - 184 - - }, -
- - 185 - - "changeNotification": { -
- - 186 - - "title": "Neue Änderungen", -
- - 187 - - "description": "An diesem Pull Request wurden Änderungen vorgenommen. Laden Sie die Seite neu um diese anzuzeigen.", -
- - 188 - - "modificationWarning": "Warnung: Nicht gespeicherte Eingaben gehen verloren.", -
- - 189 - - "buttons": { -
- - 190 - - "reload": "Neu laden", -
- - 191 - - "ignore": "Ignorieren" -
- - 192 - - } -
- 184 - - 193 - - } -
- 185 - - 194 - - }, -
- 186 - - 195 - - "permissions": { -
-
- - - - diff.expandLastBottomByLines - - - - - - diff.expandLastBottomComplete - -
-
-
-
-
-
-
-
- - - src/main/resources/locales/en/plugins.json - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - diff.expandByLines - - - - - - diff.expandComplete - -
-
- 181 - - 181 - - "titleClickable": "The comment is related to an older of the source or target branch. Click here to see the original context." -
- 182 - - 182 - - } -
- 183 - - 183 - - } -
- - 184 - - }, -
- - 185 - - "changeNotification": { -
- - 186 - - "title": "New Changes", -
- - 187 - - "description": "The underlying Pull-Request has changed. Press reload to see the changes.", -
- - 188 - - "modificationWarning": "Warning: Non saved modification will be lost.", -
- - 189 - - "buttons": { -
- - 190 - - "reload": "Reload", -
- - 191 - - "ignore": "Ignore" -
- - 192 - - } -
- 184 - - 193 - - } -
- 185 - - 194 - - }, -
- 186 - - 195 - - "permissions": { -
-
- - - - diff.expandLastBottomByLines - - - - - - diff.expandLastBottomComplete - -
-
-
-
-
-
-
-
- - - src/test/java/com/cloudogu/scm/review/events/ClientTest.java - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - diff.expandComplete - -
-
- 7 - - 7 - - import org.mockito.Mock; -
- 8 - - 8 - - import org.mockito.junit.jupiter.MockitoExtension; -
- 9 - - 9 - - import sonia.scm.security.SessionId; -
- - 10 - - -
- 10 - - 11 - - import javax.ws.rs.sse.OutboundSseEvent; -
- 11 - - 12 - - import javax.ws.rs.sse.SseEventSink; -
- 12 - - - -
- 13 - - 13 - - import java.time.Clock; -
- 14 - - 14 - - import java.time.Instant; -
- 15 - - 15 - - import java.time.LocalDateTime; -
- 16 - - 16 - - import java.time.ZoneOffset; -
- 17 - - 17 - - import java.time.temporal.ChronoField; -
- 18 - - - import java.time.temporal.ChronoUnit; -
- 19 - - - import java.time.temporal.TemporalField; -
- 20 - - 18 - - import java.util.concurrent.CompletableFuture; -
- 21 - - 19 - - import java.util.concurrent.CompletionStage; -
- 22 - - - import java.util.concurrent.atomic.AtomicLong; -
- 23 - - 20 - - import java.util.concurrent.atomic.AtomicReference; -
- 24 - - 21 - - -
- 25 - - 22 - - import static java.time.temporal.ChronoUnit.MINUTES; -
-
- - - - diff.expandByLines - - - - - - diff.expandComplete - -
-
-
- - - - diff.expandByLines - - - - - - diff.expandComplete - -
-
- 83 - - 80 - - -
- 84 - - 81 - - @Test -
- 85 - - 82 - - @SuppressWarnings("unchecked") -
- 86 - - - void shouldCloseEventSinkOnFailure() throws InterruptedException { -
- - 83 - - void shouldCloseEventSinkOnFailure() { -
- 87 - - 84 - - CompletionStage future = CompletableFuture.supplyAsync(() -> { -
- 88 - - 85 - - throw new RuntimeException("failed to send message"); -
- 89 - - 86 - - }); -
-
- - - - diff.expandComplete - -
-
-
- - - - diff.expandComplete - -
-
- 91 - - 88 - - -
- 92 - - 89 - - client.send(message); -
- 93 - - 90 - - -
- 94 - - - Thread.sleep(50L); -
- 95 - - - -
- 96 - - - verify(eventSink).close(); -
- - 91 - - verify(eventSink, timeout(50L)).close(); -
- 97 - - 92 - - } -
- 98 - - 93 - - -
- 99 - - 94 - - @Test -
-
- - - - diff.expandLastBottomByLines - - - - - - diff.expandLastBottomComplete - -
-
-
-
-
-
-
-
- - - Main.java - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - 1 - - import java.io.PrintStream; -
- 1 - - 2 - - import java.util.Arrays; -
- 2 - - 3 - - -
- 3 - - 4 - - class Main { -
- - 5 - - private static final PrintStream OUT = System.out; -
- - 6 - - -
- 4 - - 7 - - public static void main(String[] args) { -
- - 8 - - <<<<<<< HEAD -
- 5 - - 9 - - System.out.println("Expect nothing more to happen."); -
- 6 - - 10 - - System.out.println("The command line parameters are:"); -
- 7 - - 11 - - Arrays.stream(args).map(arg -> "- " + arg).forEach(System.out::println); -
- - 12 - - ======= -
- - 13 - - OUT.println("Expect nothing more to happen."); -
- - 14 - - OUT.println("Parameters:"); -
- - 15 - - Arrays.stream(args).map(arg -> "- " + arg).forEach(OUT::println); -
- - 16 - - >>>>>>> feature/use_constant -
- 8 - - 17 - - } -
- 9 - - 18 - - } -
-
- - - - diff.expandLastBottomByLines - - - - - - diff.expandLastBottomComplete - -
-
-
-
-
-
-`; - -exports[`Storyshots Diff External state management 1`] = ` -
-
-
-
-
-
- - - src/main/java/com/cloudogu/scm/review/events/EventListener.java - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- 1 - - 1 - - package com.cloudogu.scm.review.events; -
- 2 - - 2 - - -
- 3 - - - import com.cloudogu.scm.review.comment.service.BasicComment; -
- 4 - - - import com.cloudogu.scm.review.comment.service.BasicCommentEvent; -
- 5 - - - import com.cloudogu.scm.review.comment.service.CommentEvent; -
- 6 - - - import com.cloudogu.scm.review.comment.service.ReplyEvent; -
- 7 - - 3 - - import com.cloudogu.scm.review.pullrequest.service.BasicPullRequestEvent; -
- 8 - - 4 - - import com.cloudogu.scm.review.pullrequest.service.PullRequest; -
- 9 - - - import com.cloudogu.scm.review.pullrequest.service.PullRequestEvent; -
- 10 - - 5 - - import com.github.legman.Subscribe; -
- 11 - - - import lombok.Data; -
- 12 - - 6 - - import org.apache.shiro.SecurityUtils; -
- 13 - - 7 - - import org.apache.shiro.subject.PrincipalCollection; -
- 14 - - 8 - - import org.apache.shiro.subject.Subject; -
- 15 - - 9 - - import sonia.scm.EagerSingleton; -
- 16 - - - import sonia.scm.HandlerEventType; -
- 17 - - - import sonia.scm.event.HandlerEvent; -
- 18 - - 10 - - import sonia.scm.plugin.Extension; -
- 19 - - 11 - - import sonia.scm.repository.Repository; -
- 20 - - 12 - - import sonia.scm.security.SessionId; -
-
- - - - diff.expandLastBottomByLines - - - - - - diff.expandLastBottomComplete - -
-
-
-
-
-
-
-
- - - src/main/js/ChangeNotification.tsx - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - diff.expandComplete - -
-
- 2 - - 2 - - import { Link } from "@scm-manager/ui-types"; -
- 3 - - 3 - - import { apiClient, Toast, ToastButtons, ToastButton } from "@scm-manager/ui-components"; -
- 4 - - 4 - - import { PullRequest } from "./types/PullRequest"; -
- - 5 - - import { useTranslation } from "react-i18next"; -
- 5 - - 6 - - -
- 6 - - 7 - - type HandlerProps = { -
- 7 - - 8 - - url: string; -
-
- - - - diff.expandComplete - -
-
-
- - - - diff.expandComplete - -
-
- 15 - - 16 - - pullRequest: setEvent -
- 16 - - 17 - - }); -
- 17 - - 18 - - }, [url]); -
- - 19 - - const { t } = useTranslation("plugins"); -
- 18 - - 20 - - if (event) { -
- 19 - - 21 - - return ( -
- 20 - - - <Toast type="warning" title="New Changes"> -
- 21 - - - <p>The underlying Pull-Request has changed. Press reload to see the changes.</p> -
- 22 - - - <p>Warning: Non saved modification will be lost.</p> -
- - 22 - - <Toast type="warning" title={t("scm-review-plugin.changeNotification.title")}> -
- - 23 - - <p>{t("scm-review-plugin.changeNotification.description")}</p> -
- - 24 - - <p>{t("scm-review-plugin.changeNotification.modificationWarning")}</p> -
- 23 - - 25 - - <ToastButtons> -
- 24 - - - <ToastButton icon="redo" onClick={reload}>Reload</ToastButton> -
- 25 - - - <ToastButton icon="times" onClick={() => setEvent(undefined)}>Ignore</ToastButton> -
- - 26 - - <ToastButton icon="redo" onClick={reload}> -
- - 27 - - {t("scm-review-plugin.changeNotification.buttons.reload")} -
- - 28 - - </ToastButton> -
- - 29 - - <ToastButton icon="times" onClick={() => setEvent(undefined)}> -
- - 30 - - {t("scm-review-plugin.changeNotification.buttons.ignore")} -
- - 31 - - </ToastButton> -
- 26 - - 32 - - </ToastButtons> -
- 27 - - 33 - - </Toast> -
- 28 - - 34 - - ); -
-
- - - - diff.expandLastBottomByLines - - - - - - diff.expandLastBottomComplete - -
-
-
-
-
-
-
-
- - - src/main/resources/locales/de/plugins.json - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - diff.expandByLines - - - - - - diff.expandComplete - -
-
- 181 - - 181 - - "titleClickable": "Der Kommentar bezieht sich auf eine ältere Version des Source- oder Target-Branches. Klicken Sie hier, um den ursprünglichen Kontext zu sehen." -
- 182 - - 182 - - } -
- 183 - - 183 - - } -
- - 184 - - }, -
- - 185 - - "changeNotification": { -
- - 186 - - "title": "Neue Änderungen", -
- - 187 - - "description": "An diesem Pull Request wurden Änderungen vorgenommen. Laden Sie die Seite neu um diese anzuzeigen.", -
- - 188 - - "modificationWarning": "Warnung: Nicht gespeicherte Eingaben gehen verloren.", -
- - 189 - - "buttons": { -
- - 190 - - "reload": "Neu laden", -
- - 191 - - "ignore": "Ignorieren" -
- - 192 - - } -
- 184 - - 193 - - } -
- 185 - - 194 - - }, -
- 186 - - 195 - - "permissions": { -
-
- - - - diff.expandLastBottomByLines - - - - - - diff.expandLastBottomComplete - -
-
-
-
-
-
-
-
- - - src/main/resources/locales/en/plugins.json - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - diff.expandByLines - - - - - - diff.expandComplete - -
-
- 181 - - 181 - - "titleClickable": "The comment is related to an older of the source or target branch. Click here to see the original context." -
- 182 - - 182 - - } -
- 183 - - 183 - - } -
- - 184 - - }, -
- - 185 - - "changeNotification": { -
- - 186 - - "title": "New Changes", -
- - 187 - - "description": "The underlying Pull-Request has changed. Press reload to see the changes.", -
- - 188 - - "modificationWarning": "Warning: Non saved modification will be lost.", -
- - 189 - - "buttons": { -
- - 190 - - "reload": "Reload", -
- - 191 - - "ignore": "Ignore" -
- - 192 - - } -
- 184 - - 193 - - } -
- 185 - - 194 - - }, -
- 186 - - 195 - - "permissions": { -
-
- - - - diff.expandLastBottomByLines - - - - - - diff.expandLastBottomComplete - -
-
-
-
-
-
-
-
- - - src/test/java/com/cloudogu/scm/review/events/ClientTest.java - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - diff.expandComplete - -
-
- 7 - - 7 - - import org.mockito.Mock; -
- 8 - - 8 - - import org.mockito.junit.jupiter.MockitoExtension; -
- 9 - - 9 - - import sonia.scm.security.SessionId; -
- - 10 - - -
- 10 - - 11 - - import javax.ws.rs.sse.OutboundSseEvent; -
- 11 - - 12 - - import javax.ws.rs.sse.SseEventSink; -
- 12 - - - -
- 13 - - 13 - - import java.time.Clock; -
- 14 - - 14 - - import java.time.Instant; -
- 15 - - 15 - - import java.time.LocalDateTime; -
- 16 - - 16 - - import java.time.ZoneOffset; -
- 17 - - 17 - - import java.time.temporal.ChronoField; -
- 18 - - - import java.time.temporal.ChronoUnit; -
- 19 - - - import java.time.temporal.TemporalField; -
- 20 - - 18 - - import java.util.concurrent.CompletableFuture; -
- 21 - - 19 - - import java.util.concurrent.CompletionStage; -
- 22 - - - import java.util.concurrent.atomic.AtomicLong; -
- 23 - - 20 - - import java.util.concurrent.atomic.AtomicReference; -
- 24 - - 21 - - -
- 25 - - 22 - - import static java.time.temporal.ChronoUnit.MINUTES; -
-
- - - - diff.expandByLines - - - - - - diff.expandComplete - -
-
-
- - - - diff.expandByLines - - - - - - diff.expandComplete - -
-
- 83 - - 80 - - -
- 84 - - 81 - - @Test -
- 85 - - 82 - - @SuppressWarnings("unchecked") -
- 86 - - - void shouldCloseEventSinkOnFailure() throws InterruptedException { -
- - 83 - - void shouldCloseEventSinkOnFailure() { -
- 87 - - 84 - - CompletionStage future = CompletableFuture.supplyAsync(() -> { -
- 88 - - 85 - - throw new RuntimeException("failed to send message"); -
- 89 - - 86 - - }); -
-
- - - - diff.expandComplete - -
-
-
- - - - diff.expandComplete - -
-
- 91 - - 88 - - -
- 92 - - 89 - - client.send(message); -
- 93 - - 90 - - -
- 94 - - - Thread.sleep(50L); -
- 95 - - - -
- 96 - - - verify(eventSink).close(); -
- - 91 - - verify(eventSink, timeout(50L)).close(); -
- 97 - - 92 - - } -
- 98 - - 93 - - -
- 99 - - 94 - - @Test -
-
- - - - diff.expandLastBottomByLines - - - - - - diff.expandLastBottomComplete - -
-
-
-
-
-
-
-
- - - Main.java - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - 1 - - import java.io.PrintStream; -
- 1 - - 2 - - import java.util.Arrays; -
- 2 - - 3 - - -
- 3 - - 4 - - class Main { -
- - 5 - - private static final PrintStream OUT = System.out; -
- - 6 - - -
- 4 - - 7 - - public static void main(String[] args) { -
- - 8 - - <<<<<<< HEAD -
- 5 - - 9 - - System.out.println("Expect nothing more to happen."); -
- 6 - - 10 - - System.out.println("The command line parameters are:"); -
- 7 - - 11 - - Arrays.stream(args).map(arg -> "- " + arg).forEach(System.out::println); -
- - 12 - - ======= -
- - 13 - - OUT.println("Expect nothing more to happen."); -
- - 14 - - OUT.println("Parameters:"); -
- - 15 - - Arrays.stream(args).map(arg -> "- " + arg).forEach(OUT::println); -
- - 16 - - >>>>>>> feature/use_constant -
- 8 - - 17 - - } -
- 9 - - 18 - - } -
-
- - - - diff.expandLastBottomByLines - - - - - - diff.expandLastBottomComplete - -
-
-
-
-
-
-`; - -exports[`Storyshots Diff File Annotation 1`] = ` -
-
-
-
-
-
- - - src/main/java/com/cloudogu/scm/review/events/EventListener.java - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
-

- Custom File annotation for - src/main/java/com/cloudogu/scm/review/events/EventListener.java -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- 1 - - 1 - - package com.cloudogu.scm.review.events; -
- 2 - - 2 - - -
- 3 - - - import com.cloudogu.scm.review.comment.service.BasicComment; -
- 4 - - - import com.cloudogu.scm.review.comment.service.BasicCommentEvent; -
- 5 - - - import com.cloudogu.scm.review.comment.service.CommentEvent; -
- 6 - - - import com.cloudogu.scm.review.comment.service.ReplyEvent; -
- 7 - - 3 - - import com.cloudogu.scm.review.pullrequest.service.BasicPullRequestEvent; -
- 8 - - 4 - - import com.cloudogu.scm.review.pullrequest.service.PullRequest; -
- 9 - - - import com.cloudogu.scm.review.pullrequest.service.PullRequestEvent; -
- 10 - - 5 - - import com.github.legman.Subscribe; -
- 11 - - - import lombok.Data; -
- 12 - - 6 - - import org.apache.shiro.SecurityUtils; -
- 13 - - 7 - - import org.apache.shiro.subject.PrincipalCollection; -
- 14 - - 8 - - import org.apache.shiro.subject.Subject; -
- 15 - - 9 - - import sonia.scm.EagerSingleton; -
- 16 - - - import sonia.scm.HandlerEventType; -
- 17 - - - import sonia.scm.event.HandlerEvent; -
- 18 - - 10 - - import sonia.scm.plugin.Extension; -
- 19 - - 11 - - import sonia.scm.repository.Repository; -
- 20 - - 12 - - import sonia.scm.security.SessionId; -
-
-
-
-
-
-
- - - src/main/js/ChangeNotification.tsx - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
-

- Custom File annotation for - src/main/js/ChangeNotification.tsx -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- 2 - - 2 - - import { Link } from "@scm-manager/ui-types"; -
- 3 - - 3 - - import { apiClient, Toast, ToastButtons, ToastButton } from "@scm-manager/ui-components"; -
- 4 - - 4 - - import { PullRequest } from "./types/PullRequest"; -
- - 5 - - import { useTranslation } from "react-i18next"; -
- 5 - - 6 - - -
- 6 - - 7 - - type HandlerProps = { -
- 7 - - 8 - - url: string; -
-
-
- 15 - - 16 - - pullRequest: setEvent -
- 16 - - 17 - - }); -
- 17 - - 18 - - }, [url]); -
- - 19 - - const { t } = useTranslation("plugins"); -
- 18 - - 20 - - if (event) { -
- 19 - - 21 - - return ( -
- 20 - - - <Toast type="warning" title="New Changes"> -
- 21 - - - <p>The underlying Pull-Request has changed. Press reload to see the changes.</p> -
- 22 - - - <p>Warning: Non saved modification will be lost.</p> -
- - 22 - - <Toast type="warning" title={t("scm-review-plugin.changeNotification.title")}> -
- - 23 - - <p>{t("scm-review-plugin.changeNotification.description")}</p> -
- - 24 - - <p>{t("scm-review-plugin.changeNotification.modificationWarning")}</p> -
- 23 - - 25 - - <ToastButtons> -
- 24 - - - <ToastButton icon="redo" onClick={reload}>Reload</ToastButton> -
- 25 - - - <ToastButton icon="times" onClick={() => setEvent(undefined)}>Ignore</ToastButton> -
- - 26 - - <ToastButton icon="redo" onClick={reload}> -
- - 27 - - {t("scm-review-plugin.changeNotification.buttons.reload")} -
- - 28 - - </ToastButton> -
- - 29 - - <ToastButton icon="times" onClick={() => setEvent(undefined)}> -
- - 30 - - {t("scm-review-plugin.changeNotification.buttons.ignore")} -
- - 31 - - </ToastButton> -
- 26 - - 32 - - </ToastButtons> -
- 27 - - 33 - - </Toast> -
- 28 - - 34 - - ); -
-
-
-
-
-
-
- - - src/main/resources/locales/de/plugins.json - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
-

- Custom File annotation for - src/main/resources/locales/de/plugins.json -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- 181 - - 181 - - "titleClickable": "Der Kommentar bezieht sich auf eine ältere Version des Source- oder Target-Branches. Klicken Sie hier, um den ursprünglichen Kontext zu sehen." -
- 182 - - 182 - - } -
- 183 - - 183 - - } -
- - 184 - - }, -
- - 185 - - "changeNotification": { -
- - 186 - - "title": "Neue Änderungen", -
- - 187 - - "description": "An diesem Pull Request wurden Änderungen vorgenommen. Laden Sie die Seite neu um diese anzuzeigen.", -
- - 188 - - "modificationWarning": "Warnung: Nicht gespeicherte Eingaben gehen verloren.", -
- - 189 - - "buttons": { -
- - 190 - - "reload": "Neu laden", -
- - 191 - - "ignore": "Ignorieren" -
- - 192 - - } -
- 184 - - 193 - - } -
- 185 - - 194 - - }, -
- 186 - - 195 - - "permissions": { -
-
-
-
-
-
-
- - - src/main/resources/locales/en/plugins.json - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
-

- Custom File annotation for - src/main/resources/locales/en/plugins.json -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- 181 - - 181 - - "titleClickable": "The comment is related to an older of the source or target branch. Click here to see the original context." -
- 182 - - 182 - - } -
- 183 - - 183 - - } -
- - 184 - - }, -
- - 185 - - "changeNotification": { -
- - 186 - - "title": "New Changes", -
- - 187 - - "description": "The underlying Pull-Request has changed. Press reload to see the changes.", -
- - 188 - - "modificationWarning": "Warning: Non saved modification will be lost.", -
- - 189 - - "buttons": { -
- - 190 - - "reload": "Reload", -
- - 191 - - "ignore": "Ignore" -
- - 192 - - } -
- 184 - - 193 - - } -
- 185 - - 194 - - }, -
- 186 - - 195 - - "permissions": { -
-
-
-
-
-
-
- - - src/test/java/com/cloudogu/scm/review/events/ClientTest.java - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
-

- Custom File annotation for - src/test/java/com/cloudogu/scm/review/events/ClientTest.java -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- 7 - - 7 - - import org.mockito.Mock; -
- 8 - - 8 - - import org.mockito.junit.jupiter.MockitoExtension; -
- 9 - - 9 - - import sonia.scm.security.SessionId; -
- - 10 - - -
- 10 - - 11 - - import javax.ws.rs.sse.OutboundSseEvent; -
- 11 - - 12 - - import javax.ws.rs.sse.SseEventSink; -
- 12 - - - -
- 13 - - 13 - - import java.time.Clock; -
- 14 - - 14 - - import java.time.Instant; -
- 15 - - 15 - - import java.time.LocalDateTime; -
- 16 - - 16 - - import java.time.ZoneOffset; -
- 17 - - 17 - - import java.time.temporal.ChronoField; -
- 18 - - - import java.time.temporal.ChronoUnit; -
- 19 - - - import java.time.temporal.TemporalField; -
- 20 - - 18 - - import java.util.concurrent.CompletableFuture; -
- 21 - - 19 - - import java.util.concurrent.CompletionStage; -
- 22 - - - import java.util.concurrent.atomic.AtomicLong; -
- 23 - - 20 - - import java.util.concurrent.atomic.AtomicReference; -
- 24 - - 21 - - -
- 25 - - 22 - - import static java.time.temporal.ChronoUnit.MINUTES; -
-
-
- 83 - - 80 - - -
- 84 - - 81 - - @Test -
- 85 - - 82 - - @SuppressWarnings("unchecked") -
- 86 - - - void shouldCloseEventSinkOnFailure() throws InterruptedException { -
- - 83 - - void shouldCloseEventSinkOnFailure() { -
- 87 - - 84 - - CompletionStage future = CompletableFuture.supplyAsync(() -> { -
- 88 - - 85 - - throw new RuntimeException("failed to send message"); -
- 89 - - 86 - - }); -
-
-
- 91 - - 88 - - -
- 92 - - 89 - - client.send(message); -
- 93 - - 90 - - -
- 94 - - - Thread.sleep(50L); -
- 95 - - - -
- 96 - - - verify(eventSink).close(); -
- - 91 - - verify(eventSink, timeout(50L)).close(); -
- 97 - - 92 - - } -
- 98 - - 93 - - -
- 99 - - 94 - - @Test -
-
-
-
-
-
-
- - - Main.java - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
-

- Custom File annotation for - Main.java -

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - 1 - - import java.io.PrintStream; -
- 1 - - 2 - - import java.util.Arrays; -
- 2 - - 3 - - -
- 3 - - 4 - - class Main { -
- - 5 - - private static final PrintStream OUT = System.out; -
- - 6 - - -
- 4 - - 7 - - public static void main(String[] args) { -
- - 8 - - <<<<<<< HEAD -
- 5 - - 9 - - System.out.println("Expect nothing more to happen."); -
- 6 - - 10 - - System.out.println("The command line parameters are:"); -
- 7 - - 11 - - Arrays.stream(args).map(arg -> "- " + arg).forEach(System.out::println); -
- - 12 - - ======= -
- - 13 - - OUT.println("Expect nothing more to happen."); -
- - 14 - - OUT.println("Parameters:"); -
- - 15 - - Arrays.stream(args).map(arg -> "- " + arg).forEach(OUT::println); -
- - 16 - - >>>>>>> feature/use_constant -
- 8 - - 17 - - } -
- 9 - - 18 - - } -
-
-
-
-
-`; - -exports[`Storyshots Diff File Controls 1`] = ` -
-
-
-
-
-
- - - src/main/java/com/cloudogu/scm/review/events/EventListener.java - - - modify - -
-
-
-
- - - -
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- 1 - - 1 - - package com.cloudogu.scm.review.events; -
- 2 - - 2 - - -
- 3 - - - import com.cloudogu.scm.review.comment.service.BasicComment; -
- 4 - - - import com.cloudogu.scm.review.comment.service.BasicCommentEvent; -
- 5 - - - import com.cloudogu.scm.review.comment.service.CommentEvent; -
- 6 - - - import com.cloudogu.scm.review.comment.service.ReplyEvent; -
- 7 - - 3 - - import com.cloudogu.scm.review.pullrequest.service.BasicPullRequestEvent; -
- 8 - - 4 - - import com.cloudogu.scm.review.pullrequest.service.PullRequest; -
- 9 - - - import com.cloudogu.scm.review.pullrequest.service.PullRequestEvent; -
- 10 - - 5 - - import com.github.legman.Subscribe; -
- 11 - - - import lombok.Data; -
- 12 - - 6 - - import org.apache.shiro.SecurityUtils; -
- 13 - - 7 - - import org.apache.shiro.subject.PrincipalCollection; -
- 14 - - 8 - - import org.apache.shiro.subject.Subject; -
- 15 - - 9 - - import sonia.scm.EagerSingleton; -
- 16 - - - import sonia.scm.HandlerEventType; -
- 17 - - - import sonia.scm.event.HandlerEvent; -
- 18 - - 10 - - import sonia.scm.plugin.Extension; -
- 19 - - 11 - - import sonia.scm.repository.Repository; -
- 20 - - 12 - - import sonia.scm.security.SessionId; -
-
-
-
-
-
-
- - - src/main/js/ChangeNotification.tsx - - - modify - -
-
-
-
- - - -
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- 2 - - 2 - - import { Link } from "@scm-manager/ui-types"; -
- 3 - - 3 - - import { apiClient, Toast, ToastButtons, ToastButton } from "@scm-manager/ui-components"; -
- 4 - - 4 - - import { PullRequest } from "./types/PullRequest"; -
- - 5 - - import { useTranslation } from "react-i18next"; -
- 5 - - 6 - - -
- 6 - - 7 - - type HandlerProps = { -
- 7 - - 8 - - url: string; -
-
-
- 15 - - 16 - - pullRequest: setEvent -
- 16 - - 17 - - }); -
- 17 - - 18 - - }, [url]); -
- - 19 - - const { t } = useTranslation("plugins"); -
- 18 - - 20 - - if (event) { -
- 19 - - 21 - - return ( -
- 20 - - - <Toast type="warning" title="New Changes"> -
- 21 - - - <p>The underlying Pull-Request has changed. Press reload to see the changes.</p> -
- 22 - - - <p>Warning: Non saved modification will be lost.</p> -
- - 22 - - <Toast type="warning" title={t("scm-review-plugin.changeNotification.title")}> -
- - 23 - - <p>{t("scm-review-plugin.changeNotification.description")}</p> -
- - 24 - - <p>{t("scm-review-plugin.changeNotification.modificationWarning")}</p> -
- 23 - - 25 - - <ToastButtons> -
- 24 - - - <ToastButton icon="redo" onClick={reload}>Reload</ToastButton> -
- 25 - - - <ToastButton icon="times" onClick={() => setEvent(undefined)}>Ignore</ToastButton> -
- - 26 - - <ToastButton icon="redo" onClick={reload}> -
- - 27 - - {t("scm-review-plugin.changeNotification.buttons.reload")} -
- - 28 - - </ToastButton> -
- - 29 - - <ToastButton icon="times" onClick={() => setEvent(undefined)}> -
- - 30 - - {t("scm-review-plugin.changeNotification.buttons.ignore")} -
- - 31 - - </ToastButton> -
- 26 - - 32 - - </ToastButtons> -
- 27 - - 33 - - </Toast> -
- 28 - - 34 - - ); -
-
-
-
-
-
-
- - - src/main/resources/locales/de/plugins.json - - - modify - -
-
-
-
- - - -
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- 181 - - 181 - - "titleClickable": "Der Kommentar bezieht sich auf eine ältere Version des Source- oder Target-Branches. Klicken Sie hier, um den ursprünglichen Kontext zu sehen." -
- 182 - - 182 - - } -
- 183 - - 183 - - } -
- - 184 - - }, -
- - 185 - - "changeNotification": { -
- - 186 - - "title": "Neue Änderungen", -
- - 187 - - "description": "An diesem Pull Request wurden Änderungen vorgenommen. Laden Sie die Seite neu um diese anzuzeigen.", -
- - 188 - - "modificationWarning": "Warnung: Nicht gespeicherte Eingaben gehen verloren.", -
- - 189 - - "buttons": { -
- - 190 - - "reload": "Neu laden", -
- - 191 - - "ignore": "Ignorieren" -
- - 192 - - } -
- 184 - - 193 - - } -
- 185 - - 194 - - }, -
- 186 - - 195 - - "permissions": { -
-
-
-
-
-
-
- - - src/main/resources/locales/en/plugins.json - - - modify - -
-
-
-
- - - -
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- 181 - - 181 - - "titleClickable": "The comment is related to an older of the source or target branch. Click here to see the original context." -
- 182 - - 182 - - } -
- 183 - - 183 - - } -
- - 184 - - }, -
- - 185 - - "changeNotification": { -
- - 186 - - "title": "New Changes", -
- - 187 - - "description": "The underlying Pull-Request has changed. Press reload to see the changes.", -
- - 188 - - "modificationWarning": "Warning: Non saved modification will be lost.", -
- - 189 - - "buttons": { -
- - 190 - - "reload": "Reload", -
- - 191 - - "ignore": "Ignore" -
- - 192 - - } -
- 184 - - 193 - - } -
- 185 - - 194 - - }, -
- 186 - - 195 - - "permissions": { -
-
-
-
-
-
-
- - - src/test/java/com/cloudogu/scm/review/events/ClientTest.java - - - modify - -
-
-
-
- - - -
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- 7 - - 7 - - import org.mockito.Mock; -
- 8 - - 8 - - import org.mockito.junit.jupiter.MockitoExtension; -
- 9 - - 9 - - import sonia.scm.security.SessionId; -
- - 10 - - -
- 10 - - 11 - - import javax.ws.rs.sse.OutboundSseEvent; -
- 11 - - 12 - - import javax.ws.rs.sse.SseEventSink; -
- 12 - - - -
- 13 - - 13 - - import java.time.Clock; -
- 14 - - 14 - - import java.time.Instant; -
- 15 - - 15 - - import java.time.LocalDateTime; -
- 16 - - 16 - - import java.time.ZoneOffset; -
- 17 - - 17 - - import java.time.temporal.ChronoField; -
- 18 - - - import java.time.temporal.ChronoUnit; -
- 19 - - - import java.time.temporal.TemporalField; -
- 20 - - 18 - - import java.util.concurrent.CompletableFuture; -
- 21 - - 19 - - import java.util.concurrent.CompletionStage; -
- 22 - - - import java.util.concurrent.atomic.AtomicLong; -
- 23 - - 20 - - import java.util.concurrent.atomic.AtomicReference; -
- 24 - - 21 - - -
- 25 - - 22 - - import static java.time.temporal.ChronoUnit.MINUTES; -
-
-
- 83 - - 80 - - -
- 84 - - 81 - - @Test -
- 85 - - 82 - - @SuppressWarnings("unchecked") -
- 86 - - - void shouldCloseEventSinkOnFailure() throws InterruptedException { -
- - 83 - - void shouldCloseEventSinkOnFailure() { -
- 87 - - 84 - - CompletionStage future = CompletableFuture.supplyAsync(() -> { -
- 88 - - 85 - - throw new RuntimeException("failed to send message"); -
- 89 - - 86 - - }); -
-
-
- 91 - - 88 - - -
- 92 - - 89 - - client.send(message); -
- 93 - - 90 - - -
- 94 - - - Thread.sleep(50L); -
- 95 - - - -
- 96 - - - verify(eventSink).close(); -
- - 91 - - verify(eventSink, timeout(50L)).close(); -
- 97 - - 92 - - } -
- 98 - - 93 - - -
- 99 - - 94 - - @Test -
-
-
-
-
-
-
- - - Main.java - - - modify - -
-
-
-
- - - -
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - 1 - - import java.io.PrintStream; -
- 1 - - 2 - - import java.util.Arrays; -
- 2 - - 3 - - -
- 3 - - 4 - - class Main { -
- - 5 - - private static final PrintStream OUT = System.out; -
- - 6 - - -
- 4 - - 7 - - public static void main(String[] args) { -
- - 8 - - <<<<<<< HEAD -
- 5 - - 9 - - System.out.println("Expect nothing more to happen."); -
- 6 - - 10 - - System.out.println("The command line parameters are:"); -
- 7 - - 11 - - Arrays.stream(args).map(arg -> "- " + arg).forEach(System.out::println); -
- - 12 - - ======= -
- - 13 - - OUT.println("Expect nothing more to happen."); -
- - 14 - - OUT.println("Parameters:"); -
- - 15 - - Arrays.stream(args).map(arg -> "- " + arg).forEach(OUT::println); -
- - 16 - - >>>>>>> feature/use_constant -
- 8 - - 17 - - } -
- 9 - - 18 - - } -
-
-
-
-
-`; - -exports[`Storyshots Diff Hunks 1`] = ` -
-
-
-
-
-
- - - src/main/java/com/cloudogu/scm/review/pullrequest/service/DefaultPullRequestService.java - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- 25 - - 25 - - import java.util.Set; -
- 26 - - 26 - - import java.util.stream.Collectors; -
- 27 - - 27 - - -
- - 28 - - import static com.cloudogu.scm.review.pullrequest.service.PullRequestApprovalEvent.ApprovalCause.APPROVAL_REMOVED; -
- - 29 - - import static com.cloudogu.scm.review.pullrequest.service.PullRequestApprovalEvent.ApprovalCause.APPROVED; -
- 28 - - 30 - - import static com.cloudogu.scm.review.pullrequest.service.PullRequestStatus.MERGED; -
- 29 - - 31 - - import static com.cloudogu.scm.review.pullrequest.service.PullRequestStatus.OPEN; -
- 30 - - 32 - - import static com.cloudogu.scm.review.pullrequest.service.PullRequestStatus.REJECTED; -
-
-
- 200 - - 202 - - PullRequest pullRequest = getPullRequestFromStore(repository, pullRequestId); -
- 201 - - 203 - - pullRequest.addApprover(user.getId()); -
- 202 - - 204 - - getStore(repository).update(pullRequest); -
- - 205 - - eventBus.post(new PullRequestApprovalEvent(repository, pullRequest, APPROVED)); -
- 203 - - 206 - - } -
- 204 - - 207 - - -
- 205 - - 208 - - @Override -
-
-
- 211 - - 214 - - approver.stream() -
- 212 - - 215 - - .filter(recipient -> user.getId().equals(recipient)) -
- 213 - - 216 - - .findFirst() -
- 214 - - - .ifPresent(pullRequest::removeApprover); -
- 215 - - - getStore(repository).update(pullRequest); -
- - 217 - - .ifPresent( -
- - 218 - - approval -> { -
- - 219 - - pullRequest.removeApprover(approval); -
- - 220 - - getStore(repository).update(pullRequest); -
- - 221 - - eventBus.post(new PullRequestApprovalEvent(repository, pullRequest, APPROVAL_REMOVED)); -
- - 222 - - }); -
- 216 - - 223 - - } -
- 217 - - 224 - - -
- 218 - - 225 - - @Override -
-
-
-
-
-`; - -exports[`Storyshots Diff Line Annotation 1`] = ` -
-
-
-
-
-
- - - src/main/java/com/cloudogu/scm/review/events/EventListener.java - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- 1 - - 1 - - package com.cloudogu.scm.review.events; -
- 2 - - 2 - - -
-

- Line Annotation -

-
- 3 - - - import com.cloudogu.scm.review.comment.service.BasicComment; -
- 4 - - - import com.cloudogu.scm.review.comment.service.BasicCommentEvent; -
- 5 - - - import com.cloudogu.scm.review.comment.service.CommentEvent; -
- 6 - - - import com.cloudogu.scm.review.comment.service.ReplyEvent; -
- 7 - - 3 - - import com.cloudogu.scm.review.pullrequest.service.BasicPullRequestEvent; -
- 8 - - 4 - - import com.cloudogu.scm.review.pullrequest.service.PullRequest; -
- 9 - - - import com.cloudogu.scm.review.pullrequest.service.PullRequestEvent; -
- 10 - - 5 - - import com.github.legman.Subscribe; -
- 11 - - - import lombok.Data; -
- 12 - - 6 - - import org.apache.shiro.SecurityUtils; -
- 13 - - 7 - - import org.apache.shiro.subject.PrincipalCollection; -
- 14 - - 8 - - import org.apache.shiro.subject.Subject; -
- 15 - - 9 - - import sonia.scm.EagerSingleton; -
- 16 - - - import sonia.scm.HandlerEventType; -
- 17 - - - import sonia.scm.event.HandlerEvent; -
- 18 - - 10 - - import sonia.scm.plugin.Extension; -
- 19 - - 11 - - import sonia.scm.repository.Repository; -
- 20 - - 12 - - import sonia.scm.security.SessionId; -
-
-
-
-
-
-
- - - src/main/js/ChangeNotification.tsx - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- 2 - - 2 - - import { Link } from "@scm-manager/ui-types"; -
-

- Line Annotation -

-
- 3 - - 3 - - import { apiClient, Toast, ToastButtons, ToastButton } from "@scm-manager/ui-components"; -
- 4 - - 4 - - import { PullRequest } from "./types/PullRequest"; -
- - 5 - - import { useTranslation } from "react-i18next"; -
- 5 - - 6 - - -
- 6 - - 7 - - type HandlerProps = { -
- 7 - - 8 - - url: string; -
-
-
- 15 - - 16 - - pullRequest: setEvent -
- 16 - - 17 - - }); -
- 17 - - 18 - - }, [url]); -
- - 19 - - const { t } = useTranslation("plugins"); -
- 18 - - 20 - - if (event) { -
- 19 - - 21 - - return ( -
- 20 - - - <Toast type="warning" title="New Changes"> -
- 21 - - - <p>The underlying Pull-Request has changed. Press reload to see the changes.</p> -
- 22 - - - <p>Warning: Non saved modification will be lost.</p> -
- - 22 - - <Toast type="warning" title={t("scm-review-plugin.changeNotification.title")}> -
- - 23 - - <p>{t("scm-review-plugin.changeNotification.description")}</p> -
- - 24 - - <p>{t("scm-review-plugin.changeNotification.modificationWarning")}</p> -
- 23 - - 25 - - <ToastButtons> -
- 24 - - - <ToastButton icon="redo" onClick={reload}>Reload</ToastButton> -
- 25 - - - <ToastButton icon="times" onClick={() => setEvent(undefined)}>Ignore</ToastButton> -
- - 26 - - <ToastButton icon="redo" onClick={reload}> -
- - 27 - - {t("scm-review-plugin.changeNotification.buttons.reload")} -
- - 28 - - </ToastButton> -
- - 29 - - <ToastButton icon="times" onClick={() => setEvent(undefined)}> -
- - 30 - - {t("scm-review-plugin.changeNotification.buttons.ignore")} -
- - 31 - - </ToastButton> -
- 26 - - 32 - - </ToastButtons> -
- 27 - - 33 - - </Toast> -
- 28 - - 34 - - ); -
-
-
-
-
-
-
- - - src/main/resources/locales/de/plugins.json - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- 181 - - 181 - - "titleClickable": "Der Kommentar bezieht sich auf eine ältere Version des Source- oder Target-Branches. Klicken Sie hier, um den ursprünglichen Kontext zu sehen." -
- 182 - - 182 - - } -
- 183 - - 183 - - } -
- - 184 - - }, -
- - 185 - - "changeNotification": { -
- - 186 - - "title": "Neue Änderungen", -
- - 187 - - "description": "An diesem Pull Request wurden Änderungen vorgenommen. Laden Sie die Seite neu um diese anzuzeigen.", -
- - 188 - - "modificationWarning": "Warnung: Nicht gespeicherte Eingaben gehen verloren.", -
- - 189 - - "buttons": { -
- - 190 - - "reload": "Neu laden", -
- - 191 - - "ignore": "Ignorieren" -
- - 192 - - } -
- 184 - - 193 - - } -
- 185 - - 194 - - }, -
- 186 - - 195 - - "permissions": { -
-
-
-
-
-
-
- - - src/main/resources/locales/en/plugins.json - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- 181 - - 181 - - "titleClickable": "The comment is related to an older of the source or target branch. Click here to see the original context." -
- 182 - - 182 - - } -
- 183 - - 183 - - } -
- - 184 - - }, -
- - 185 - - "changeNotification": { -
- - 186 - - "title": "New Changes", -
- - 187 - - "description": "The underlying Pull-Request has changed. Press reload to see the changes.", -
- - 188 - - "modificationWarning": "Warning: Non saved modification will be lost.", -
- - 189 - - "buttons": { -
- - 190 - - "reload": "Reload", -
- - 191 - - "ignore": "Ignore" -
- - 192 - - } -
- 184 - - 193 - - } -
- 185 - - 194 - - }, -
- 186 - - 195 - - "permissions": { -
-
-
-
-
-
-
- - - src/test/java/com/cloudogu/scm/review/events/ClientTest.java - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- 7 - - 7 - - import org.mockito.Mock; -
- 8 - - 8 - - import org.mockito.junit.jupiter.MockitoExtension; -
- 9 - - 9 - - import sonia.scm.security.SessionId; -
- - 10 - - -
- 10 - - 11 - - import javax.ws.rs.sse.OutboundSseEvent; -
- 11 - - 12 - - import javax.ws.rs.sse.SseEventSink; -
- 12 - - - -
- 13 - - 13 - - import java.time.Clock; -
- 14 - - 14 - - import java.time.Instant; -
- 15 - - 15 - - import java.time.LocalDateTime; -
- 16 - - 16 - - import java.time.ZoneOffset; -
- 17 - - 17 - - import java.time.temporal.ChronoField; -
- 18 - - - import java.time.temporal.ChronoUnit; -
- 19 - - - import java.time.temporal.TemporalField; -
- 20 - - 18 - - import java.util.concurrent.CompletableFuture; -
- 21 - - 19 - - import java.util.concurrent.CompletionStage; -
- 22 - - - import java.util.concurrent.atomic.AtomicLong; -
- 23 - - 20 - - import java.util.concurrent.atomic.AtomicReference; -
- 24 - - 21 - - -
- 25 - - 22 - - import static java.time.temporal.ChronoUnit.MINUTES; -
-
-
- 83 - - 80 - - -
- 84 - - 81 - - @Test -
- 85 - - 82 - - @SuppressWarnings("unchecked") -
- 86 - - - void shouldCloseEventSinkOnFailure() throws InterruptedException { -
- - 83 - - void shouldCloseEventSinkOnFailure() { -
- 87 - - 84 - - CompletionStage future = CompletableFuture.supplyAsync(() -> { -
- 88 - - 85 - - throw new RuntimeException("failed to send message"); -
- 89 - - 86 - - }); -
-
-
- 91 - - 88 - - -
- 92 - - 89 - - client.send(message); -
- 93 - - 90 - - -
- 94 - - - Thread.sleep(50L); -
- 95 - - - -
- 96 - - - verify(eventSink).close(); -
- - 91 - - verify(eventSink, timeout(50L)).close(); -
- 97 - - 92 - - } -
- 98 - - 93 - - -
- 99 - - 94 - - @Test -
-
-
-
-
-
-
- - - Main.java - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - 1 - - import java.io.PrintStream; -
- 1 - - 2 - - import java.util.Arrays; -
- 2 - - 3 - - -
-

- Line Annotation -

-
- 3 - - 4 - - class Main { -
- - 5 - - private static final PrintStream OUT = System.out; -
- - 6 - - -
- 4 - - 7 - - public static void main(String[] args) { -
- - 8 - - <<<<<<< HEAD -
- 5 - - 9 - - System.out.println("Expect nothing more to happen."); -
- 6 - - 10 - - System.out.println("The command line parameters are:"); -
- 7 - - 11 - - Arrays.stream(args).map(arg -> "- " + arg).forEach(System.out::println); -
- - 12 - - ======= -
- - 13 - - OUT.println("Expect nothing more to happen."); -
- - 14 - - OUT.println("Parameters:"); -
- - 15 - - Arrays.stream(args).map(arg -> "- " + arg).forEach(OUT::println); -
- - 16 - - >>>>>>> feature/use_constant -
- 8 - - 17 - - } -
- 9 - - 18 - - } -
-
-
-
-
-`; - -exports[`Storyshots Diff OnClick 1`] = ` -
-
-
-
-
-
- - - src/main/java/com/cloudogu/scm/review/events/EventListener.java - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- 1 - - 1 - - package com.cloudogu.scm.review.events; -
- 2 - - 2 - - -
- 3 - - - import com.cloudogu.scm.review.comment.service.BasicComment; -
- 4 - - - import com.cloudogu.scm.review.comment.service.BasicCommentEvent; -
- 5 - - - import com.cloudogu.scm.review.comment.service.CommentEvent; -
- 6 - - - import com.cloudogu.scm.review.comment.service.ReplyEvent; -
- 7 - - 3 - - import com.cloudogu.scm.review.pullrequest.service.BasicPullRequestEvent; -
- 8 - - 4 - - import com.cloudogu.scm.review.pullrequest.service.PullRequest; -
- 9 - - - import com.cloudogu.scm.review.pullrequest.service.PullRequestEvent; -
- 10 - - 5 - - import com.github.legman.Subscribe; -
- 11 - - - import lombok.Data; -
- 12 - - 6 - - import org.apache.shiro.SecurityUtils; -
- 13 - - 7 - - import org.apache.shiro.subject.PrincipalCollection; -
- 14 - - 8 - - import org.apache.shiro.subject.Subject; -
- 15 - - 9 - - import sonia.scm.EagerSingleton; -
- 16 - - - import sonia.scm.HandlerEventType; -
- 17 - - - import sonia.scm.event.HandlerEvent; -
- 18 - - 10 - - import sonia.scm.plugin.Extension; -
- 19 - - 11 - - import sonia.scm.repository.Repository; -
- 20 - - 12 - - import sonia.scm.security.SessionId; -
-
-
-
-
-
-
- - - src/main/js/ChangeNotification.tsx - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- 2 - - 2 - - import { Link } from "@scm-manager/ui-types"; -
- 3 - - 3 - - import { apiClient, Toast, ToastButtons, ToastButton } from "@scm-manager/ui-components"; -
- 4 - - 4 - - import { PullRequest } from "./types/PullRequest"; -
- - 5 - - import { useTranslation } from "react-i18next"; -
- 5 - - 6 - - -
- 6 - - 7 - - type HandlerProps = { -
- 7 - - 8 - - url: string; -
-
-
- 15 - - 16 - - pullRequest: setEvent -
- 16 - - 17 - - }); -
- 17 - - 18 - - }, [url]); -
- - 19 - - const { t } = useTranslation("plugins"); -
- 18 - - 20 - - if (event) { -
- 19 - - 21 - - return ( -
- 20 - - - <Toast type="warning" title="New Changes"> -
- 21 - - - <p>The underlying Pull-Request has changed. Press reload to see the changes.</p> -
- 22 - - - <p>Warning: Non saved modification will be lost.</p> -
- - 22 - - <Toast type="warning" title={t("scm-review-plugin.changeNotification.title")}> -
- - 23 - - <p>{t("scm-review-plugin.changeNotification.description")}</p> -
- - 24 - - <p>{t("scm-review-plugin.changeNotification.modificationWarning")}</p> -
- 23 - - 25 - - <ToastButtons> -
- 24 - - - <ToastButton icon="redo" onClick={reload}>Reload</ToastButton> -
- 25 - - - <ToastButton icon="times" onClick={() => setEvent(undefined)}>Ignore</ToastButton> -
- - 26 - - <ToastButton icon="redo" onClick={reload}> -
- - 27 - - {t("scm-review-plugin.changeNotification.buttons.reload")} -
- - 28 - - </ToastButton> -
- - 29 - - <ToastButton icon="times" onClick={() => setEvent(undefined)}> -
- - 30 - - {t("scm-review-plugin.changeNotification.buttons.ignore")} -
- - 31 - - </ToastButton> -
- 26 - - 32 - - </ToastButtons> -
- 27 - - 33 - - </Toast> -
- 28 - - 34 - - ); -
-
-
-
-
-
-
- - - src/main/resources/locales/de/plugins.json - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- 181 - - 181 - - "titleClickable": "Der Kommentar bezieht sich auf eine ältere Version des Source- oder Target-Branches. Klicken Sie hier, um den ursprünglichen Kontext zu sehen." -
- 182 - - 182 - - } -
- 183 - - 183 - - } -
- - 184 - - }, -
- - 185 - - "changeNotification": { -
- - 186 - - "title": "Neue Änderungen", -
- - 187 - - "description": "An diesem Pull Request wurden Änderungen vorgenommen. Laden Sie die Seite neu um diese anzuzeigen.", -
- - 188 - - "modificationWarning": "Warnung: Nicht gespeicherte Eingaben gehen verloren.", -
- - 189 - - "buttons": { -
- - 190 - - "reload": "Neu laden", -
- - 191 - - "ignore": "Ignorieren" -
- - 192 - - } -
- 184 - - 193 - - } -
- 185 - - 194 - - }, -
- 186 - - 195 - - "permissions": { -
-
-
-
-
-
-
- - - src/main/resources/locales/en/plugins.json - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- 181 - - 181 - - "titleClickable": "The comment is related to an older of the source or target branch. Click here to see the original context." -
- 182 - - 182 - - } -
- 183 - - 183 - - } -
- - 184 - - }, -
- - 185 - - "changeNotification": { -
- - 186 - - "title": "New Changes", -
- - 187 - - "description": "The underlying Pull-Request has changed. Press reload to see the changes.", -
- - 188 - - "modificationWarning": "Warning: Non saved modification will be lost.", -
- - 189 - - "buttons": { -
- - 190 - - "reload": "Reload", -
- - 191 - - "ignore": "Ignore" -
- - 192 - - } -
- 184 - - 193 - - } -
- 185 - - 194 - - }, -
- 186 - - 195 - - "permissions": { -
-
-
-
-
-
-
- - - src/test/java/com/cloudogu/scm/review/events/ClientTest.java - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- 7 - - 7 - - import org.mockito.Mock; -
- 8 - - 8 - - import org.mockito.junit.jupiter.MockitoExtension; -
- 9 - - 9 - - import sonia.scm.security.SessionId; -
- - 10 - - -
- 10 - - 11 - - import javax.ws.rs.sse.OutboundSseEvent; -
- 11 - - 12 - - import javax.ws.rs.sse.SseEventSink; -
- 12 - - - -
- 13 - - 13 - - import java.time.Clock; -
- 14 - - 14 - - import java.time.Instant; -
- 15 - - 15 - - import java.time.LocalDateTime; -
- 16 - - 16 - - import java.time.ZoneOffset; -
- 17 - - 17 - - import java.time.temporal.ChronoField; -
- 18 - - - import java.time.temporal.ChronoUnit; -
- 19 - - - import java.time.temporal.TemporalField; -
- 20 - - 18 - - import java.util.concurrent.CompletableFuture; -
- 21 - - 19 - - import java.util.concurrent.CompletionStage; -
- 22 - - - import java.util.concurrent.atomic.AtomicLong; -
- 23 - - 20 - - import java.util.concurrent.atomic.AtomicReference; -
- 24 - - 21 - - -
- 25 - - 22 - - import static java.time.temporal.ChronoUnit.MINUTES; -
-
-
- 83 - - 80 - - -
- 84 - - 81 - - @Test -
- 85 - - 82 - - @SuppressWarnings("unchecked") -
- 86 - - - void shouldCloseEventSinkOnFailure() throws InterruptedException { -
- - 83 - - void shouldCloseEventSinkOnFailure() { -
- 87 - - 84 - - CompletionStage future = CompletableFuture.supplyAsync(() -> { -
- 88 - - 85 - - throw new RuntimeException("failed to send message"); -
- 89 - - 86 - - }); -
-
-
- 91 - - 88 - - -
- 92 - - 89 - - client.send(message); -
- 93 - - 90 - - -
- 94 - - - Thread.sleep(50L); -
- 95 - - - -
- 96 - - - verify(eventSink).close(); -
- - 91 - - verify(eventSink, timeout(50L)).close(); -
- 97 - - 92 - - } -
- 98 - - 93 - - -
- 99 - - 94 - - @Test -
-
-
-
-
-
-
- - - Main.java - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - 1 - - import java.io.PrintStream; -
- 1 - - 2 - - import java.util.Arrays; -
- 2 - - 3 - - -
- 3 - - 4 - - class Main { -
- - 5 - - private static final PrintStream OUT = System.out; -
- - 6 - - -
- 4 - - 7 - - public static void main(String[] args) { -
- - 8 - - <<<<<<< HEAD -
- 5 - - 9 - - System.out.println("Expect nothing more to happen."); -
- 6 - - 10 - - System.out.println("The command line parameters are:"); -
- 7 - - 11 - - Arrays.stream(args).map(arg -> "- " + arg).forEach(System.out::println); -
- - 12 - - ======= -
- - 13 - - OUT.println("Expect nothing more to happen."); -
- - 14 - - OUT.println("Parameters:"); -
- - 15 - - Arrays.stream(args).map(arg -> "- " + arg).forEach(OUT::println); -
- - 16 - - >>>>>>> feature/use_constant -
- 8 - - 17 - - } -
- 9 - - 18 - - } -
-
-
-
-
-`; - -exports[`Storyshots Diff Side-By-Side 1`] = ` -
-
-
-
-
-
- - - src/main/java/com/cloudogu/scm/review/events/EventListener.java - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- 1 - - package com.cloudogu.scm.review.events; - - 1 - - package com.cloudogu.scm.review.events; -
- 2 - - - - 2 - - -
- 3 - - import com.cloudogu.scm.review.comment.service.BasicComment; - - -
- 4 - - import com.cloudogu.scm.review.comment.service.BasicCommentEvent; - - -
- 5 - - import com.cloudogu.scm.review.comment.service.CommentEvent; - - -
- 6 - - import com.cloudogu.scm.review.comment.service.ReplyEvent; - - -
- 7 - - import com.cloudogu.scm.review.pullrequest.service.BasicPullRequestEvent; - - 3 - - import com.cloudogu.scm.review.pullrequest.service.BasicPullRequestEvent; -
- 8 - - import com.cloudogu.scm.review.pullrequest.service.PullRequest; - - 4 - - import com.cloudogu.scm.review.pullrequest.service.PullRequest; -
- 9 - - import com.cloudogu.scm.review.pullrequest.service.PullRequestEvent; - - -
- 10 - - import com.github.legman.Subscribe; - - 5 - - import com.github.legman.Subscribe; -
- 11 - - import lombok.Data; - - -
- 12 - - import org.apache.shiro.SecurityUtils; - - 6 - - import org.apache.shiro.SecurityUtils; -
- 13 - - import org.apache.shiro.subject.PrincipalCollection; - - 7 - - import org.apache.shiro.subject.PrincipalCollection; -
- 14 - - import org.apache.shiro.subject.Subject; - - 8 - - import org.apache.shiro.subject.Subject; -
- 15 - - import sonia.scm.EagerSingleton; - - 9 - - import sonia.scm.EagerSingleton; -
- 16 - - import sonia.scm.HandlerEventType; - - -
- 17 - - import sonia.scm.event.HandlerEvent; - - -
- 18 - - import sonia.scm.plugin.Extension; - - 10 - - import sonia.scm.plugin.Extension; -
- 19 - - import sonia.scm.repository.Repository; - - 11 - - import sonia.scm.repository.Repository; -
- 20 - - import sonia.scm.security.SessionId; - - 12 - - import sonia.scm.security.SessionId; -
-
-
-
-
-
-
- - - src/main/js/ChangeNotification.tsx - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- 2 - - import { Link } from "@scm-manager/ui-types"; - - 2 - - import { Link } from "@scm-manager/ui-types"; -
- 3 - - import { apiClient, Toast, ToastButtons, ToastButton } from "@scm-manager/ui-components"; - - 3 - - import { apiClient, Toast, ToastButtons, ToastButton } from "@scm-manager/ui-components"; -
- 4 - - import { PullRequest } from "./types/PullRequest"; - - 4 - - import { PullRequest } from "./types/PullRequest"; -
- - - 5 - - import { useTranslation } from "react-i18next"; -
- 5 - - - - 6 - - -
- 6 - - type HandlerProps = { - - 7 - - type HandlerProps = { -
- 7 - - url: string; - - 8 - - url: string; -
-
-
- 15 - - pullRequest: setEvent - - 16 - - pullRequest: setEvent -
- 16 - - }); - - 17 - - }); -
- 17 - - }, [url]); - - 18 - - }, [url]); -
- - - 19 - - const { t } = useTranslation("plugins"); -
- 18 - - if (event) { - - 20 - - if (event) { -
- 19 - - return ( - - 21 - - return ( -
- 20 - - <Toast type="warning" title="New Changes"> - - -
- 21 - - <p>The underlying Pull-Request has changed. Press reload to see the changes.</p> - - -
- 22 - - <p>Warning: Non saved modification will be lost.</p> - - 22 - - <Toast type="warning" title={t("scm-review-plugin.changeNotification.title")}> -
- - - 23 - - <p>{t("scm-review-plugin.changeNotification.description")}</p> -
- - - 24 - - <p>{t("scm-review-plugin.changeNotification.modificationWarning")}</p> -
- 23 - - <ToastButtons> - - 25 - - <ToastButtons> -
- 24 - - <ToastButton icon="redo" onClick={reload}>Reload</ToastButton> - - -
- 25 - - <ToastButton icon="times" onClick={() => setEvent(undefined)}>Ignore</ToastButton> - - 26 - - <ToastButton icon="redo" onClick={reload}> -
- - - 27 - - {t("scm-review-plugin.changeNotification.buttons.reload")} -
- - - 28 - - </ToastButton> -
- - - 29 - - <ToastButton icon="times" onClick={() => setEvent(undefined)}> -
- - - 30 - - {t("scm-review-plugin.changeNotification.buttons.ignore")} -
- - - 31 - - </ToastButton> -
- 26 - - </ToastButtons> - - 32 - - </ToastButtons> -
- 27 - - </Toast> - - 33 - - </Toast> -
- 28 - - ); - - 34 - - ); -
-
-
-
-
-
-
- - - src/main/resources/locales/de/plugins.json - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- 181 - - "titleClickable": "Der Kommentar bezieht sich auf eine ältere Version des Source- oder Target-Branches. Klicken Sie hier, um den ursprünglichen Kontext zu sehen." - - 181 - - "titleClickable": "Der Kommentar bezieht sich auf eine ältere Version des Source- oder Target-Branches. Klicken Sie hier, um den ursprünglichen Kontext zu sehen." -
- 182 - - } - - 182 - - } -
- 183 - - } - - 183 - - } -
- - - 184 - - }, -
- - - 185 - - "changeNotification": { -
- - - 186 - - "title": "Neue Änderungen", -
- - - 187 - - "description": "An diesem Pull Request wurden Änderungen vorgenommen. Laden Sie die Seite neu um diese anzuzeigen.", -
- - - 188 - - "modificationWarning": "Warnung: Nicht gespeicherte Eingaben gehen verloren.", -
- - - 189 - - "buttons": { -
- - - 190 - - "reload": "Neu laden", -
- - - 191 - - "ignore": "Ignorieren" -
- - - 192 - - } -
- 184 - - } - - 193 - - } -
- 185 - - }, - - 194 - - }, -
- 186 - - "permissions": { - - 195 - - "permissions": { -
-
-
-
-
-
-
- - - src/main/resources/locales/en/plugins.json - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- 181 - - "titleClickable": "The comment is related to an older of the source or target branch. Click here to see the original context." - - 181 - - "titleClickable": "The comment is related to an older of the source or target branch. Click here to see the original context." -
- 182 - - } - - 182 - - } -
- 183 - - } - - 183 - - } -
- - - 184 - - }, -
- - - 185 - - "changeNotification": { -
- - - 186 - - "title": "New Changes", -
- - - 187 - - "description": "The underlying Pull-Request has changed. Press reload to see the changes.", -
- - - 188 - - "modificationWarning": "Warning: Non saved modification will be lost.", -
- - - 189 - - "buttons": { -
- - - 190 - - "reload": "Reload", -
- - - 191 - - "ignore": "Ignore" -
- - - 192 - - } -
- 184 - - } - - 193 - - } -
- 185 - - }, - - 194 - - }, -
- 186 - - "permissions": { - - 195 - - "permissions": { -
-
-
-
-
-
-
- - - src/test/java/com/cloudogu/scm/review/events/ClientTest.java - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- 7 - - import org.mockito.Mock; - - 7 - - import org.mockito.Mock; -
- 8 - - import org.mockito.junit.jupiter.MockitoExtension; - - 8 - - import org.mockito.junit.jupiter.MockitoExtension; -
- 9 - - import sonia.scm.security.SessionId; - - 9 - - import sonia.scm.security.SessionId; -
- - - 10 - - -
- 10 - - import javax.ws.rs.sse.OutboundSseEvent; - - 11 - - import javax.ws.rs.sse.OutboundSseEvent; -
- 11 - - import javax.ws.rs.sse.SseEventSink; - - 12 - - import javax.ws.rs.sse.SseEventSink; -
- 12 - - - - -
- 13 - - import java.time.Clock; - - 13 - - import java.time.Clock; -
- 14 - - import java.time.Instant; - - 14 - - import java.time.Instant; -
- 15 - - import java.time.LocalDateTime; - - 15 - - import java.time.LocalDateTime; -
- 16 - - import java.time.ZoneOffset; - - 16 - - import java.time.ZoneOffset; -
- 17 - - import java.time.temporal.ChronoField; - - 17 - - import java.time.temporal.ChronoField; -
- 18 - - import java.time.temporal.ChronoUnit; - - -
- 19 - - import java.time.temporal.TemporalField; - - -
- 20 - - import java.util.concurrent.CompletableFuture; - - 18 - - import java.util.concurrent.CompletableFuture; -
- 21 - - import java.util.concurrent.CompletionStage; - - 19 - - import java.util.concurrent.CompletionStage; -
- 22 - - import java.util.concurrent.atomic.AtomicLong; - - -
- 23 - - import java.util.concurrent.atomic.AtomicReference; - - 20 - - import java.util.concurrent.atomic.AtomicReference; -
- 24 - - - - 21 - - -
- 25 - - import static java.time.temporal.ChronoUnit.MINUTES; - - 22 - - import static java.time.temporal.ChronoUnit.MINUTES; -
-
-
- 83 - - - - 80 - - -
- 84 - - @Test - - 81 - - @Test -
- 85 - - @SuppressWarnings("unchecked") - - 82 - - @SuppressWarnings("unchecked") -
- 86 - - void shouldCloseEventSinkOnFailure() throws InterruptedException { - - 83 - - void shouldCloseEventSinkOnFailure() { -
- 87 - - CompletionStage future = CompletableFuture.supplyAsync(() -> { - - 84 - - CompletionStage future = CompletableFuture.supplyAsync(() -> { -
- 88 - - throw new RuntimeException("failed to send message"); - - 85 - - throw new RuntimeException("failed to send message"); -
- 89 - - }); - - 86 - - }); -
-
-
- 91 - - - - 88 - - -
- 92 - - client.send(message); - - 89 - - client.send(message); -
- 93 - - - - 90 - - -
- 94 - - Thread.sleep(50L); - - -
- 95 - - - - -
- 96 - - verify(eventSink).close(); - - 91 - - verify(eventSink, timeout(50L)).close(); -
- 97 - - } - - 92 - - } -
- 98 - - - - 93 - - -
- 99 - - @Test - - 94 - - @Test -
-
-
-
-
-
-
- - - Main.java - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - 1 - - import java.io.PrintStream; -
- 1 - - import java.util.Arrays; - - 2 - - import java.util.Arrays; -
- 2 - - - - 3 - - -
- 3 - - class Main { - - 4 - - class Main { -
- - - 5 - - private static final PrintStream OUT = System.out; -
- - - 6 - - -
- 4 - - public static void main(String[] args) { - - 7 - - public static void main(String[] args) { -
- - - 8 - - <<<<<<< HEAD -
- 5 - - System.out.println("Expect nothing more to happen."); - - 9 - - System.out.println("Expect nothing more to happen."); -
- 6 - - System.out.println("The command line parameters are:"); - - 10 - - System.out.println("The command line parameters are:"); -
- 7 - - Arrays.stream(args).map(arg -> "- " + arg).forEach(System.out::println); - - 11 - - Arrays.stream(args).map(arg -> "- " + arg).forEach(System.out::println); -
- - - 12 - - ======= -
- - - 13 - - OUT.println("Expect nothing more to happen."); -
- - - 14 - - OUT.println("Parameters:"); -
- - - 15 - - Arrays.stream(args).map(arg -> "- " + arg).forEach(OUT::println); -
- - - 16 - - >>>>>>> feature/use_constant -
- 8 - - } - - 17 - - } -
- 9 - - } - - 18 - - } -
-
-
-
-
-`; - -exports[`Storyshots Diff SyntaxHighlighting (Markdown) 1`] = ` -
-
-
-
-
-
- - - CHANGELOG.md - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - diff.expandComplete - -
-
- 5 - - 5 - - The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), -
- 6 - - 6 - - and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -
- 7 - - 7 - - -
- 8 - - - ## Unreleased -
- - 8 - - ## [2.7.1] - 2020-10-14 -
- 9 - - 9 - - ### Fixed -
- 10 - - 10 - - - Null Pointer Exception on anonymous migration with deleted repositories ([#1371](https://github.com/scm-manager/scm-manager/pull/1371)) -
- 11 - - 11 - - - Null Pointer Exception on parsing SVN properties ([#1373](https://github.com/scm-manager/scm-manager/pull/1373)) -
-
- - - - diff.expandLastBottomByLines - - - - - - diff.expandLastBottomComplete - -
-
-
-
-
-
-`; - -exports[`Storyshots Diff SyntaxHighlighting 1`] = ` -
-
-
-
-
-
- - - src/main/java/com/cloudogu/scm/review/events/EventListener.java - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- 1 - - 1 - - package com.cloudogu.scm.review.events; -
- 2 - - 2 - - -
- 3 - - - import com.cloudogu.scm.review.comment.service.BasicComment; -
- 4 - - - import com.cloudogu.scm.review.comment.service.BasicCommentEvent; -
- 5 - - - import com.cloudogu.scm.review.comment.service.CommentEvent; -
- 6 - - - import com.cloudogu.scm.review.comment.service.ReplyEvent; -
- 7 - - 3 - - import com.cloudogu.scm.review.pullrequest.service.BasicPullRequestEvent; -
- 8 - - 4 - - import com.cloudogu.scm.review.pullrequest.service.PullRequest; -
- 9 - - - import com.cloudogu.scm.review.pullrequest.service.PullRequestEvent; -
- 10 - - 5 - - import com.github.legman.Subscribe; -
- 11 - - - import lombok.Data; -
- 12 - - 6 - - import org.apache.shiro.SecurityUtils; -
- 13 - - 7 - - import org.apache.shiro.subject.PrincipalCollection; -
- 14 - - 8 - - import org.apache.shiro.subject.Subject; -
- 15 - - 9 - - import sonia.scm.EagerSingleton; -
- 16 - - - import sonia.scm.HandlerEventType; -
- 17 - - - import sonia.scm.event.HandlerEvent; -
- 18 - - 10 - - import sonia.scm.plugin.Extension; -
- 19 - - 11 - - import sonia.scm.repository.Repository; -
- 20 - - 12 - - import sonia.scm.security.SessionId; -
-
-
-
-
-
-
- - - src/main/js/ChangeNotification.tsx - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- 2 - - 2 - - import { Link } from "@scm-manager/ui-types"; -
- 3 - - 3 - - import { apiClient, Toast, ToastButtons, ToastButton } from "@scm-manager/ui-components"; -
- 4 - - 4 - - import { PullRequest } from "./types/PullRequest"; -
- - 5 - - import { useTranslation } from "react-i18next"; -
- 5 - - 6 - - -
- 6 - - 7 - - type HandlerProps = { -
- 7 - - 8 - - url: string; -
-
-
- 15 - - 16 - - pullRequest: setEvent -
- 16 - - 17 - - }); -
- 17 - - 18 - - }, [url]); -
- - 19 - - const { t } = useTranslation("plugins"); -
- 18 - - 20 - - if (event) { -
- 19 - - 21 - - return ( -
- 20 - - - <Toast type="warning" title="New Changes"> -
- 21 - - - <p>The underlying Pull-Request has changed. Press reload to see the changes.</p> -
- 22 - - - <p>Warning: Non saved modification will be lost.</p> -
- - 22 - - <Toast type="warning" title={t("scm-review-plugin.changeNotification.title")}> -
- - 23 - - <p>{t("scm-review-plugin.changeNotification.description")}</p> -
- - 24 - - <p>{t("scm-review-plugin.changeNotification.modificationWarning")}</p> -
- 23 - - 25 - - <ToastButtons> -
- 24 - - - <ToastButton icon="redo" onClick={reload}>Reload</ToastButton> -
- 25 - - - <ToastButton icon="times" onClick={() => setEvent(undefined)}>Ignore</ToastButton> -
- - 26 - - <ToastButton icon="redo" onClick={reload}> -
- - 27 - - {t("scm-review-plugin.changeNotification.buttons.reload")} -
- - 28 - - </ToastButton> -
- - 29 - - <ToastButton icon="times" onClick={() => setEvent(undefined)}> -
- - 30 - - {t("scm-review-plugin.changeNotification.buttons.ignore")} -
- - 31 - - </ToastButton> -
- 26 - - 32 - - </ToastButtons> -
- 27 - - 33 - - </Toast> -
- 28 - - 34 - - ); -
-
-
-
-
-
-
- - - src/main/resources/locales/de/plugins.json - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- 181 - - 181 - - "titleClickable": "Der Kommentar bezieht sich auf eine ältere Version des Source- oder Target-Branches. Klicken Sie hier, um den ursprünglichen Kontext zu sehen." -
- 182 - - 182 - - } -
- 183 - - 183 - - } -
- - 184 - - }, -
- - 185 - - "changeNotification": { -
- - 186 - - "title": "Neue Änderungen", -
- - 187 - - "description": "An diesem Pull Request wurden Änderungen vorgenommen. Laden Sie die Seite neu um diese anzuzeigen.", -
- - 188 - - "modificationWarning": "Warnung: Nicht gespeicherte Eingaben gehen verloren.", -
- - 189 - - "buttons": { -
- - 190 - - "reload": "Neu laden", -
- - 191 - - "ignore": "Ignorieren" -
- - 192 - - } -
- 184 - - 193 - - } -
- 185 - - 194 - - }, -
- 186 - - 195 - - "permissions": { -
-
-
-
-
-
-
- - - src/main/resources/locales/en/plugins.json - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- 181 - - 181 - - "titleClickable": "The comment is related to an older of the source or target branch. Click here to see the original context." -
- 182 - - 182 - - } -
- 183 - - 183 - - } -
- - 184 - - }, -
- - 185 - - "changeNotification": { -
- - 186 - - "title": "New Changes", -
- - 187 - - "description": "The underlying Pull-Request has changed. Press reload to see the changes.", -
- - 188 - - "modificationWarning": "Warning: Non saved modification will be lost.", -
- - 189 - - "buttons": { -
- - 190 - - "reload": "Reload", -
- - 191 - - "ignore": "Ignore" -
- - 192 - - } -
- 184 - - 193 - - } -
- 185 - - 194 - - }, -
- 186 - - 195 - - "permissions": { -
-
-
-
-
-
-
- - - src/test/java/com/cloudogu/scm/review/events/ClientTest.java - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- 7 - - 7 - - import org.mockito.Mock; -
- 8 - - 8 - - import org.mockito.junit.jupiter.MockitoExtension; -
- 9 - - 9 - - import sonia.scm.security.SessionId; -
- - 10 - - -
- 10 - - 11 - - import javax.ws.rs.sse.OutboundSseEvent; -
- 11 - - 12 - - import javax.ws.rs.sse.SseEventSink; -
- 12 - - - -
- 13 - - 13 - - import java.time.Clock; -
- 14 - - 14 - - import java.time.Instant; -
- 15 - - 15 - - import java.time.LocalDateTime; -
- 16 - - 16 - - import java.time.ZoneOffset; -
- 17 - - 17 - - import java.time.temporal.ChronoField; -
- 18 - - - import java.time.temporal.ChronoUnit; -
- 19 - - - import java.time.temporal.TemporalField; -
- 20 - - 18 - - import java.util.concurrent.CompletableFuture; -
- 21 - - 19 - - import java.util.concurrent.CompletionStage; -
- 22 - - - import java.util.concurrent.atomic.AtomicLong; -
- 23 - - 20 - - import java.util.concurrent.atomic.AtomicReference; -
- 24 - - 21 - - -
- 25 - - 22 - - import static java.time.temporal.ChronoUnit.MINUTES; -
-
-
- 83 - - 80 - - -
- 84 - - 81 - - @Test -
- 85 - - 82 - - @SuppressWarnings("unchecked") -
- 86 - - - void shouldCloseEventSinkOnFailure() throws InterruptedException { -
- - 83 - - void shouldCloseEventSinkOnFailure() { -
- 87 - - 84 - - CompletionStage future = CompletableFuture.supplyAsync(() -> { -
- 88 - - 85 - - throw new RuntimeException("failed to send message"); -
- 89 - - 86 - - }); -
-
-
- 91 - - 88 - - -
- 92 - - 89 - - client.send(message); -
- 93 - - 90 - - -
- 94 - - - Thread.sleep(50L); -
- 95 - - - -
- 96 - - - verify(eventSink).close(); -
- - 91 - - verify(eventSink, timeout(50L)).close(); -
- 97 - - 92 - - } -
- 98 - - 93 - - -
- 99 - - 94 - - @Test -
-
-
-
-
-
-
- - - Main.java - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - 1 - - import java.io.PrintStream; -
- 1 - - 2 - - import java.util.Arrays; -
- 2 - - 3 - - -
- 3 - - 4 - - class Main { -
- - 5 - - private static final PrintStream OUT = System.out; -
- - 6 - - -
- 4 - - 7 - - public static void main(String[] args) { -
- - 8 - - <<<<<<< HEAD -
- 5 - - 9 - - System.out.println("Expect nothing more to happen."); -
- 6 - - 10 - - System.out.println("The command line parameters are:"); -
- 7 - - 11 - - Arrays.stream(args).map(arg -> "- " + arg).forEach(System.out::println); -
- - 12 - - ======= -
- - 13 - - OUT.println("Expect nothing more to happen."); -
- - 14 - - OUT.println("Parameters:"); -
- - 15 - - Arrays.stream(args).map(arg -> "- " + arg).forEach(OUT::println); -
- - 16 - - >>>>>>> feature/use_constant -
- 8 - - 17 - - } -
- 9 - - 18 - - } -
-
-
-
-
-`; - -exports[`Storyshots Diff WithLinkToFile 1`] = ` -
-
-
-
-
-
- - - src/main/java/com/cloudogu/scm/review/events/EventListener.java - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- 1 - - 1 - - package com.cloudogu.scm.review.events; -
- 2 - - 2 - - -
- 3 - - - import com.cloudogu.scm.review.comment.service.BasicComment; -
- 4 - - - import com.cloudogu.scm.review.comment.service.BasicCommentEvent; -
- 5 - - - import com.cloudogu.scm.review.comment.service.CommentEvent; -
- 6 - - - import com.cloudogu.scm.review.comment.service.ReplyEvent; -
- 7 - - 3 - - import com.cloudogu.scm.review.pullrequest.service.BasicPullRequestEvent; -
- 8 - - 4 - - import com.cloudogu.scm.review.pullrequest.service.PullRequest; -
- 9 - - - import com.cloudogu.scm.review.pullrequest.service.PullRequestEvent; -
- 10 - - 5 - - import com.github.legman.Subscribe; -
- 11 - - - import lombok.Data; -
- 12 - - 6 - - import org.apache.shiro.SecurityUtils; -
- 13 - - 7 - - import org.apache.shiro.subject.PrincipalCollection; -
- 14 - - 8 - - import org.apache.shiro.subject.Subject; -
- 15 - - 9 - - import sonia.scm.EagerSingleton; -
- 16 - - - import sonia.scm.HandlerEventType; -
- 17 - - - import sonia.scm.event.HandlerEvent; -
- 18 - - 10 - - import sonia.scm.plugin.Extension; -
- 19 - - 11 - - import sonia.scm.repository.Repository; -
- 20 - - 12 - - import sonia.scm.security.SessionId; -
-
- - - - diff.expandLastBottomByLines - - - - - - diff.expandLastBottomComplete - -
-
-
-
-
-
-
-
- - - src/main/js/ChangeNotification.tsx - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - diff.expandComplete - -
-
- 2 - - 2 - - import { Link } from "@scm-manager/ui-types"; -
- 3 - - 3 - - import { apiClient, Toast, ToastButtons, ToastButton } from "@scm-manager/ui-components"; -
- 4 - - 4 - - import { PullRequest } from "./types/PullRequest"; -
- - 5 - - import { useTranslation } from "react-i18next"; -
- 5 - - 6 - - -
- 6 - - 7 - - type HandlerProps = { -
- 7 - - 8 - - url: string; -
-
- - - - diff.expandComplete - -
-
-
- - - - diff.expandComplete - -
-
- 15 - - 16 - - pullRequest: setEvent -
- 16 - - 17 - - }); -
- 17 - - 18 - - }, [url]); -
- - 19 - - const { t } = useTranslation("plugins"); -
- 18 - - 20 - - if (event) { -
- 19 - - 21 - - return ( -
- 20 - - - <Toast type="warning" title="New Changes"> -
- 21 - - - <p>The underlying Pull-Request has changed. Press reload to see the changes.</p> -
- 22 - - - <p>Warning: Non saved modification will be lost.</p> -
- - 22 - - <Toast type="warning" title={t("scm-review-plugin.changeNotification.title")}> -
- - 23 - - <p>{t("scm-review-plugin.changeNotification.description")}</p> -
- - 24 - - <p>{t("scm-review-plugin.changeNotification.modificationWarning")}</p> -
- 23 - - 25 - - <ToastButtons> -
- 24 - - - <ToastButton icon="redo" onClick={reload}>Reload</ToastButton> -
- 25 - - - <ToastButton icon="times" onClick={() => setEvent(undefined)}>Ignore</ToastButton> -
- - 26 - - <ToastButton icon="redo" onClick={reload}> -
- - 27 - - {t("scm-review-plugin.changeNotification.buttons.reload")} -
- - 28 - - </ToastButton> -
- - 29 - - <ToastButton icon="times" onClick={() => setEvent(undefined)}> -
- - 30 - - {t("scm-review-plugin.changeNotification.buttons.ignore")} -
- - 31 - - </ToastButton> -
- 26 - - 32 - - </ToastButtons> -
- 27 - - 33 - - </Toast> -
- 28 - - 34 - - ); -
-
- - - - diff.expandLastBottomByLines - - - - - - diff.expandLastBottomComplete - -
-
-
-
-
-
-
-
- - - src/main/resources/locales/de/plugins.json - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - diff.expandByLines - - - - - - diff.expandComplete - -
-
- 181 - - 181 - - "titleClickable": "Der Kommentar bezieht sich auf eine ältere Version des Source- oder Target-Branches. Klicken Sie hier, um den ursprünglichen Kontext zu sehen." -
- 182 - - 182 - - } -
- 183 - - 183 - - } -
- - 184 - - }, -
- - 185 - - "changeNotification": { -
- - 186 - - "title": "Neue Änderungen", -
- - 187 - - "description": "An diesem Pull Request wurden Änderungen vorgenommen. Laden Sie die Seite neu um diese anzuzeigen.", -
- - 188 - - "modificationWarning": "Warnung: Nicht gespeicherte Eingaben gehen verloren.", -
- - 189 - - "buttons": { -
- - 190 - - "reload": "Neu laden", -
- - 191 - - "ignore": "Ignorieren" -
- - 192 - - } -
- 184 - - 193 - - } -
- 185 - - 194 - - }, -
- 186 - - 195 - - "permissions": { -
-
- - - - diff.expandLastBottomByLines - - - - - - diff.expandLastBottomComplete - -
-
-
-
-
-
-
-
- - - src/main/resources/locales/en/plugins.json - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - diff.expandByLines - - - - - - diff.expandComplete - -
-
- 181 - - 181 - - "titleClickable": "The comment is related to an older of the source or target branch. Click here to see the original context." -
- 182 - - 182 - - } -
- 183 - - 183 - - } -
- - 184 - - }, -
- - 185 - - "changeNotification": { -
- - 186 - - "title": "New Changes", -
- - 187 - - "description": "The underlying Pull-Request has changed. Press reload to see the changes.", -
- - 188 - - "modificationWarning": "Warning: Non saved modification will be lost.", -
- - 189 - - "buttons": { -
- - 190 - - "reload": "Reload", -
- - 191 - - "ignore": "Ignore" -
- - 192 - - } -
- 184 - - 193 - - } -
- 185 - - 194 - - }, -
- 186 - - 195 - - "permissions": { -
-
- - - - diff.expandLastBottomByLines - - - - - - diff.expandLastBottomComplete - -
-
-
-
-
-
-
-
- - - src/test/java/com/cloudogu/scm/review/events/ClientTest.java - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - diff.expandComplete - -
-
- 7 - - 7 - - import org.mockito.Mock; -
- 8 - - 8 - - import org.mockito.junit.jupiter.MockitoExtension; -
- 9 - - 9 - - import sonia.scm.security.SessionId; -
- - 10 - - -
- 10 - - 11 - - import javax.ws.rs.sse.OutboundSseEvent; -
- 11 - - 12 - - import javax.ws.rs.sse.SseEventSink; -
- 12 - - - -
- 13 - - 13 - - import java.time.Clock; -
- 14 - - 14 - - import java.time.Instant; -
- 15 - - 15 - - import java.time.LocalDateTime; -
- 16 - - 16 - - import java.time.ZoneOffset; -
- 17 - - 17 - - import java.time.temporal.ChronoField; -
- 18 - - - import java.time.temporal.ChronoUnit; -
- 19 - - - import java.time.temporal.TemporalField; -
- 20 - - 18 - - import java.util.concurrent.CompletableFuture; -
- 21 - - 19 - - import java.util.concurrent.CompletionStage; -
- 22 - - - import java.util.concurrent.atomic.AtomicLong; -
- 23 - - 20 - - import java.util.concurrent.atomic.AtomicReference; -
- 24 - - 21 - - -
- 25 - - 22 - - import static java.time.temporal.ChronoUnit.MINUTES; -
-
- - - - diff.expandByLines - - - - - - diff.expandComplete - -
-
-
- - - - diff.expandByLines - - - - - - diff.expandComplete - -
-
- 83 - - 80 - - -
- 84 - - 81 - - @Test -
- 85 - - 82 - - @SuppressWarnings("unchecked") -
- 86 - - - void shouldCloseEventSinkOnFailure() throws InterruptedException { -
- - 83 - - void shouldCloseEventSinkOnFailure() { -
- 87 - - 84 - - CompletionStage future = CompletableFuture.supplyAsync(() -> { -
- 88 - - 85 - - throw new RuntimeException("failed to send message"); -
- 89 - - 86 - - }); -
-
- - - - diff.expandComplete - -
-
-
- - - - diff.expandComplete - -
-
- 91 - - 88 - - -
- 92 - - 89 - - client.send(message); -
- 93 - - 90 - - -
- 94 - - - Thread.sleep(50L); -
- 95 - - - -
- 96 - - - verify(eventSink).close(); -
- - 91 - - verify(eventSink, timeout(50L)).close(); -
- 97 - - 92 - - } -
- 98 - - 93 - - -
- 99 - - 94 - - @Test -
-
- - - - diff.expandLastBottomByLines - - - - - - diff.expandLastBottomComplete - -
-
-
-
-
-
-
-
- - - Main.java - - - modify - -
-
-
-
- - - -
-
- - - -
-
-
-
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - 1 - - import java.io.PrintStream; -
- 1 - - 2 - - import java.util.Arrays; -
- 2 - - 3 - - -
- 3 - - 4 - - class Main { -
- - 5 - - private static final PrintStream OUT = System.out; -
- - 6 - - -
- 4 - - 7 - - public static void main(String[] args) { -
- - 8 - - <<<<<<< HEAD -
- 5 - - 9 - - System.out.println("Expect nothing more to happen."); -
- 6 - - 10 - - System.out.println("The command line parameters are:"); -
- 7 - - 11 - - Arrays.stream(args).map(arg -> "- " + arg).forEach(System.out::println); -
- - 12 - - ======= -
- - 13 - - OUT.println("Expect nothing more to happen."); -
- - 14 - - OUT.println("Parameters:"); -
- - 15 - - Arrays.stream(args).map(arg -> "- " + arg).forEach(OUT::println); -
- - 16 - - >>>>>>> feature/use_constant -
- 8 - - 17 - - } -
- 9 - - 18 - - } -
-
- - - - diff.expandLastBottomByLines - - - - - - diff.expandLastBottomComplete - -
-
-
-
-
-
-`; - exports[`Storyshots Duration Duration 1`] = `
`; -exports[`Storyshots Forms|AddKeyValueEntryToTableField Default 1`] = ` +exports[`Storyshots Footer Default 1`] = ` + +`; + +exports[`Storyshots Footer Full 1`] = ` + +`; + +exports[`Storyshots Footer With Avatar 1`] = ` + +`; + +exports[`Storyshots Footer With Plugin Links 1`] = ` + +`; + +exports[`Storyshots Forms/AddKeyValueEntryToTableField Default 1`] = `
@@ -55995,7 +1935,7 @@ exports[`Storyshots Forms|AddKeyValueEntryToTableField Default 1`] = `
`; -exports[`Storyshots Forms|AddKeyValueEntryToTableField Disabled 1`] = ` +exports[`Storyshots Forms/AddKeyValueEntryToTableField Disabled 1`] = `
@@ -56070,7 +2010,7 @@ exports[`Storyshots Forms|AddKeyValueEntryToTableField Disabled 1`] = `
`; -exports[`Storyshots Forms|Checkbox Default 1`] = ` +exports[`Storyshots Forms/Checkbox Default 1`] = `
@@ -56140,7 +2080,7 @@ exports[`Storyshots Forms|Checkbox Default 1`] = `
`; -exports[`Storyshots Forms|Checkbox Disabled 1`] = ` +exports[`Storyshots Forms/Checkbox Disabled 1`] = `
@@ -56170,7 +2110,7 @@ exports[`Storyshots Forms|Checkbox Disabled 1`] = `
`; -exports[`Storyshots Forms|Checkbox Legacy Events 1`] = ` +exports[`Storyshots Forms/Checkbox Legacy Events 1`] = ` Array [
@@ -56308,7 +2248,7 @@ exports[`Storyshots Forms|Checkbox ReactHookForm 1`] = ` `; -exports[`Storyshots Forms|Checkbox Ref 1`] = ` +exports[`Storyshots Forms/Checkbox Ref 1`] = ` Array [
@@ -56413,7 +2353,7 @@ exports[`Storyshots Forms|Checkbox With HelpText 1`] = `
`; -exports[`Storyshots Forms|DropDown Add preselect if missing in options 1`] = ` +exports[`Storyshots Forms/DropDown Add preselect if missing in options 1`] = `
@@ -56450,7 +2390,7 @@ exports[`Storyshots Forms|DropDown Add preselect if missing in options 1`] = `
`; -exports[`Storyshots Forms|DropDown Default 1`] = ` +exports[`Storyshots Forms/DropDown Default 1`] = `
@@ -56481,7 +2421,7 @@ exports[`Storyshots Forms|DropDown Default 1`] = `
`; -exports[`Storyshots Forms|DropDown With Translation 1`] = ` +exports[`Storyshots Forms/DropDown With Translation 1`] = `
@@ -56518,7 +2458,7 @@ exports[`Storyshots Forms|DropDown With Translation 1`] = `
`; -exports[`Storyshots Forms|FileInput Default 1`] = ` +exports[`Storyshots Forms/FileInput Default 1`] = `
@@ -56606,7 +2546,7 @@ exports[`Storyshots Forms|FileInput Default 1`] = `
`; -exports[`Storyshots Forms|InputField AutoFocus 1`] = ` +exports[`Storyshots Forms/InputField AutoFocus 1`] = `
@@ -56633,7 +2573,7 @@ exports[`Storyshots Forms|InputField AutoFocus 1`] = `
`; -exports[`Storyshots Forms|InputField AutoFocusAndRef 1`] = ` +exports[`Storyshots Forms/InputField AutoFocusAndRef 1`] = `
@@ -56680,7 +2620,7 @@ exports[`Storyshots Forms|InputField AutoFocusAndRef 1`] = `
`; -exports[`Storyshots Forms|InputField Default Value 1`] = ` +exports[`Storyshots Forms/InputField Default Value 1`] = `
@@ -56708,7 +2648,7 @@ exports[`Storyshots Forms|InputField Default Value 1`] = `
`; -exports[`Storyshots Forms|InputField Legacy Events 1`] = ` +exports[`Storyshots Forms/InputField Legacy Events 1`] = `
@@ -56737,7 +2677,7 @@ exports[`Storyshots Forms|InputField Legacy Events 1`] = `
`; -exports[`Storyshots Forms|InputField React Hook Form 1`] = ` +exports[`Storyshots Forms/InputField React Hook Form 1`] = `
@@ -56849,7 +2789,7 @@ exports[`Storyshots Forms|InputField React Hook Form 1`] = `
`; -exports[`Storyshots Forms|InputField Ref 1`] = ` +exports[`Storyshots Forms/InputField Ref 1`] = `
@@ -56880,7 +2820,7 @@ exports[`Storyshots Forms|InputField Ref 1`] = `
`; -exports[`Storyshots Forms|Radio Default 1`] = ` +exports[`Storyshots Forms/Radio Default 1`] = `
@@ -56919,7 +2859,7 @@ exports[`Storyshots Forms|Radio Default 1`] = `
`; -exports[`Storyshots Forms|Radio Disabled 1`] = ` +exports[`Storyshots Forms/Radio Disabled 1`] = `
@@ -56944,7 +2884,7 @@ exports[`Storyshots Forms|Radio Disabled 1`] = `
`; -exports[`Storyshots Forms|Radio Legacy Events 1`] = ` +exports[`Storyshots Forms/Radio Legacy Events 1`] = ` Array [
@@ -57081,7 +3021,7 @@ exports[`Storyshots Forms|Radio ReactHookForm 1`] = ` `; -exports[`Storyshots Forms|Radio Ref 1`] = ` +exports[`Storyshots Forms/Radio Ref 1`] = ` Array [
@@ -57171,7 +3111,7 @@ exports[`Storyshots Forms|Radio With HelpText 1`] = `
`; -exports[`Storyshots Forms|Select Add no existing value 1`] = ` +exports[`Storyshots Forms/Select Add no existing value 1`] = ` Array [
@@ -57427,7 +3367,7 @@ exports[`Storyshots Forms|Select ReactHookForm 1`] = ` `; -exports[`Storyshots Forms|Select Ref 1`] = ` +exports[`Storyshots Forms/Select Ref 1`] = ` Array [
@@ -57494,7 +3434,7 @@ exports[`Storyshots Forms|Textarea AutoFocus 1`] = `
`; -exports[`Storyshots Forms|Textarea AutoFocusAndRef 1`] = ` +exports[`Storyshots Forms/Textarea AutoFocusAndRef 1`] = ` Array [
@@ -57563,7 +3503,7 @@ exports[`Storyshots Forms|Textarea Default Value 1`] = `
`; -exports[`Storyshots Forms|Textarea Legacy Events 1`] = ` +exports[`Storyshots Forms/Textarea Legacy Events 1`] = ` Array [
@@ -57613,7 +3553,7 @@ exports[`Storyshots Forms|Textarea OnCancel 1`] = `
`; -exports[`Storyshots Forms|Textarea OnChange 1`] = ` +exports[`Storyshots Forms/Textarea OnChange 1`] = `
@@ -57640,7 +3580,7 @@ exports[`Storyshots Forms|Textarea OnChange 1`] = `
`; -exports[`Storyshots Forms|Textarea OnSubmit 1`] = ` +exports[`Storyshots Forms/Textarea OnSubmit 1`] = `
@@ -57667,7 +3607,7 @@ exports[`Storyshots Forms|Textarea OnSubmit 1`] = `
`; -exports[`Storyshots Forms|Textarea ReactHookForm 1`] = ` +exports[`Storyshots Forms/Textarea ReactHookForm 1`] = `
@@ -57775,7 +3715,7 @@ exports[`Storyshots Forms|Textarea ReactHookForm 1`] = `
`; -exports[`Storyshots Forms|Textarea Ref 1`] = ` +exports[`Storyshots Forms/Textarea Ref 1`] = ` Array [
`; -exports[`Storyshots Layout|Footer Default 1`] = ` - -`; - -exports[`Storyshots Layout|Footer Full 1`] = ` - -`; - -exports[`Storyshots Layout|Footer With Avatar 1`] = ` - -`; - -exports[`Storyshots Layout|Footer With Plugin Links 1`] = ` - -`; - exports[`Storyshots Loading Default 1`] = `
@@ -60199,7 +5609,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#00a984", + "color": "var(--sh-keyword-color)", } } > @@ -60214,7 +5624,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -60262,7 +5672,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#005f9a", + "color": "var(--sh-selector-color)", } } > @@ -60310,7 +5720,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#005f9a", + "color": "var(--sh-selector-color)", } } > @@ -60358,7 +5768,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -60435,7 +5845,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#00a984", + "color": "var(--sh-keyword-color)", } } > @@ -60450,7 +5860,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#ff3860", + "color": "var(--sh-function-color)", } } > @@ -60460,7 +5870,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -60475,7 +5885,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -60490,7 +5900,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -60505,7 +5915,8 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -60520,7 +5931,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -60535,7 +5946,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -60550,7 +5961,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -60598,7 +6009,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -60608,7 +6019,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#ff3860", + "color": "var(--sh-function-color)", } } > @@ -60618,7 +6029,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -60633,7 +6044,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -60648,7 +6059,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#005f9a", + "color": "var(--sh-selector-color)", } } > @@ -60658,7 +6069,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -60673,7 +6084,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -60688,7 +6099,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -60703,7 +6114,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -60713,7 +6124,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#2c99c7", + "color": "var(--sh-property-color)", } } > @@ -60723,7 +6134,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -60733,7 +6144,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -60743,7 +6154,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -60791,7 +6202,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -60868,7 +6279,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#00a984", + "color": "var(--sh-keyword-color)", } } > @@ -60883,7 +6294,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#ff3860", + "color": "var(--sh-function-color)", } } > @@ -60893,7 +6304,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -60903,7 +6314,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -60918,7 +6329,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -60966,7 +6377,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -60976,7 +6387,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#ff3860", + "color": "var(--sh-function-color)", } } > @@ -60986,7 +6397,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -60996,7 +6407,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#005f9a", + "color": "var(--sh-selector-color)", } } > @@ -61006,7 +6417,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -61021,7 +6432,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -61069,7 +6480,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -61079,7 +6490,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#ff3860", + "color": "var(--sh-function-color)", } } > @@ -61089,7 +6500,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -61099,7 +6510,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#005f9a", + "color": "var(--sh-selector-color)", } } > @@ -61109,7 +6520,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -61124,7 +6535,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#2c99c7", + "color": "var(--sh-property-color)", } } > @@ -61134,7 +6545,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -61182,7 +6593,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -69146,10 +14557,10 @@ exports[`Storyshots MarkdownView Inline Xml 1`] = ` "MozTabSize": "4", "OTabSize": "4", "WebkitHyphens": "none", - "background": "#ffffff", - "color": "#363636", + "background": "var(--sh-block-background)", + "color": "var(--sh-base-color)", "direction": "ltr", - "fontFamily": "Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace", + "fontFamily": "var(--sh-font-family)", "fontSize": "1rem", "hyphens": "none", "lineHeight": "1.5", @@ -69174,9 +14585,9 @@ exports[`Storyshots MarkdownView Inline Xml 1`] = ` "MozTabSize": "4", "OTabSize": "4", "WebkitHyphens": "none", - "color": "#363636", + "color": "var(--sh-base-color)", "direction": "ltr", - "fontFamily": "Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace", + "fontFamily": "var(--sh-font-family)", "fontSize": "1rem", "hyphens": "none", "lineHeight": "1.5", @@ -70728,10 +16139,10 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip "MozTabSize": "4", "OTabSize": "4", "WebkitHyphens": "none", - "background": "#ffffff", - "color": "#363636", + "background": "var(--sh-block-background)", + "color": "var(--sh-base-color)", "direction": "ltr", - "fontFamily": "Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace", + "fontFamily": "var(--sh-font-family)", "fontSize": "1rem", "hyphens": "none", "lineHeight": "1.5", @@ -70756,9 +16167,9 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip "MozTabSize": "4", "OTabSize": "4", "WebkitHyphens": "none", - "color": "#363636", + "color": "var(--sh-base-color)", "direction": "ltr", - "fontFamily": "Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace", + "fontFamily": "var(--sh-font-family)", "fontSize": "1rem", "hyphens": "none", "lineHeight": "1.5", @@ -70801,7 +16212,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#00a984", + "color": "var(--sh-keyword-color)", } } > @@ -70878,7 +16289,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#00a984", + "color": "var(--sh-keyword-color)", } } > @@ -70893,7 +16304,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -70941,7 +16352,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#005f9a", + "color": "var(--sh-selector-color)", } } > @@ -70989,7 +16400,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#005f9a", + "color": "var(--sh-selector-color)", } } > @@ -71037,7 +16448,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -71114,7 +16525,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#00a984", + "color": "var(--sh-keyword-color)", } } > @@ -71129,7 +16540,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#ff3860", + "color": "var(--sh-function-color)", } } > @@ -71139,7 +16550,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -71154,7 +16565,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -71169,7 +16580,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -71184,7 +16595,8 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -71199,7 +16611,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -71214,7 +16626,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -71229,7 +16641,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -71277,7 +16689,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -71287,7 +16699,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#ff3860", + "color": "var(--sh-function-color)", } } > @@ -71297,7 +16709,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -71312,7 +16724,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -71327,7 +16739,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#005f9a", + "color": "var(--sh-selector-color)", } } > @@ -71337,7 +16749,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -71352,7 +16764,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -71367,7 +16779,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -71382,7 +16794,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -71392,7 +16804,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#2c99c7", + "color": "var(--sh-property-color)", } } > @@ -71402,7 +16814,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -71412,7 +16824,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -71422,7 +16834,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -71470,7 +16882,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -71547,7 +16959,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#00a984", + "color": "var(--sh-keyword-color)", } } > @@ -71562,7 +16974,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#ff3860", + "color": "var(--sh-function-color)", } } > @@ -71572,7 +16984,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -71582,7 +16994,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -71597,7 +17009,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -71645,7 +17057,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -71655,7 +17067,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#ff3860", + "color": "var(--sh-function-color)", } } > @@ -71665,7 +17077,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -71675,7 +17087,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#005f9a", + "color": "var(--sh-selector-color)", } } > @@ -71685,7 +17097,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -71700,7 +17112,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -71748,7 +17160,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -71758,7 +17170,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#ff3860", + "color": "var(--sh-function-color)", } } > @@ -71768,7 +17180,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -71778,7 +17190,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#005f9a", + "color": "var(--sh-selector-color)", } } > @@ -71788,7 +17200,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -71803,7 +17215,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#2c99c7", + "color": "var(--sh-property-color)", } } > @@ -71813,7 +17225,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -71861,7 +17273,7 @@ Deserunt officia esse aliquip consectetur duis ut labore laborum commodo aliquip className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -72110,10 +17522,10 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` "MozTabSize": "4", "OTabSize": "4", "WebkitHyphens": "none", - "background": "#ffffff", - "color": "#363636", + "background": "var(--sh-block-background)", + "color": "var(--sh-base-color)", "direction": "ltr", - "fontFamily": "Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace", + "fontFamily": "var(--sh-font-family)", "fontSize": "1rem", "hyphens": "none", "lineHeight": "1.5", @@ -72138,9 +17550,9 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` "MozTabSize": "4", "OTabSize": "4", "WebkitHyphens": "none", - "color": "#363636", + "color": "var(--sh-base-color)", "direction": "ltr", - "fontFamily": "Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace", + "fontFamily": "var(--sh-font-family)", "fontSize": "1rem", "hyphens": "none", "lineHeight": "1.5", @@ -72183,7 +17595,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -72193,7 +17605,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#2c99c7", + "color": "var(--sh-property-color)", } } > @@ -72203,7 +17615,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#2c99c7", + "color": "var(--sh-property-color)", } } > @@ -72213,7 +17625,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#005f9a", + "color": "var(--sh-selector-color)", } } > @@ -72223,7 +17635,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -72358,7 +17770,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -72368,7 +17780,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#2c99c7", + "color": "var(--sh-property-color)", } } > @@ -72378,7 +17790,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -72426,7 +17838,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -72436,7 +17848,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#2c99c7", + "color": "var(--sh-property-color)", } } > @@ -72446,7 +17858,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -72581,7 +17993,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -72591,7 +18003,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#2c99c7", + "color": "var(--sh-property-color)", } } > @@ -72601,7 +18013,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -72649,7 +18061,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -72659,7 +18071,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#2c99c7", + "color": "var(--sh-property-color)", } } > @@ -72669,7 +18081,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -72684,7 +18096,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -72694,7 +18106,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#2c99c7", + "color": "var(--sh-property-color)", } } > @@ -72704,7 +18116,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -72752,7 +18164,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -72762,7 +18174,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#2c99c7", + "color": "var(--sh-property-color)", } } > @@ -72772,7 +18184,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -72787,7 +18199,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -72797,7 +18209,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#2c99c7", + "color": "var(--sh-property-color)", } } > @@ -72807,7 +18219,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -72855,7 +18267,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -72865,7 +18277,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#2c99c7", + "color": "var(--sh-property-color)", } } > @@ -72875,7 +18287,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -72923,7 +18335,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -72933,7 +18345,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#2c99c7", + "color": "var(--sh-property-color)", } } > @@ -72943,7 +18355,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -72991,7 +18403,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -73001,7 +18413,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#2c99c7", + "color": "var(--sh-property-color)", } } > @@ -73011,7 +18423,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -73026,7 +18438,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -73036,7 +18448,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#2c99c7", + "color": "var(--sh-property-color)", } } > @@ -73046,7 +18458,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -73094,7 +18506,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -73104,7 +18516,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#2c99c7", + "color": "var(--sh-property-color)", } } > @@ -73114,7 +18526,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -73129,7 +18541,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -73139,7 +18551,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#2c99c7", + "color": "var(--sh-property-color)", } } > @@ -73149,7 +18561,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -73197,7 +18609,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -73207,7 +18619,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#2c99c7", + "color": "var(--sh-property-color)", } } > @@ -73217,7 +18629,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -73265,7 +18677,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -73275,7 +18687,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#2c99c7", + "color": "var(--sh-property-color)", } } > @@ -73285,7 +18697,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -73333,7 +18745,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -73343,7 +18755,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#2c99c7", + "color": "var(--sh-property-color)", } } > @@ -73353,7 +18765,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -73488,7 +18900,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -73498,7 +18910,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#2c99c7", + "color": "var(--sh-property-color)", } } > @@ -73508,7 +18920,7 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -73559,9 +18971,9 @@ exports[`Storyshots MarkdownView Xml Code Block 1`] = `
`; -exports[`Storyshots Modal|ConfirmAlert Default 1`] = `null`; +exports[`Storyshots Modal/ConfirmAlert Default 1`] = `null`; -exports[`Storyshots Modal|ConfirmAlert WithButton 1`] = ` +exports[`Storyshots Modal/ConfirmAlert WithButton 1`] = ` Array [
-`; - -exports[`Storyshots Navigation|Secondary Default 1`] = ` -
-
- -
-
-`; - -exports[`Storyshots Navigation|Secondary Extension Point 1`] = ` -
-
- -
-
-`; - -exports[`Storyshots Navigation|Secondary Sub Navigation 1`] = ` -
-
- -
-
-`; +exports[`Storyshots Modal/Modal With long tooltips 1`] = `null`; exports[`Storyshots Notification Closeable 1`] = `
`; -exports[`Storyshots RepositoryEntry Archived 1`] = ` +exports[`Storyshots Repositories/Annotate Default 1`] = ` +
+
+
+      
+        
+
+
+ Arthur Dent +
+ +
+ +
+ +
+
+ 1 +
+ +
+ + + package + + + main + + + +
+
+
+
+
+ 2 +
+ +
+ + + + +
+
+
+
+
+ Tricia Marie McMillan +
+ +
+ +
+ +
+
+ 3 +
+ +
+ + + + + + import + + + + + + "fmt" + + + + + + +
+
+
+
+
+ 4 +
+ +
+ + + + +
+
+
+
+
+ Arthur Dent +
+ +
+ +
+ +
+
+ 5 +
+ +
+ + + + + + func + + + + + + main + + + ( + + + ) + + + + + + { + + + + + + +
+
+
+
+
+ Ford Prefect +
+ +
+ +
+ +
+
+ 6 +
+ +
+ + + fmt + + + . + + + Println + + + ( + + + "Hello World" + + + ) + + + + + + +
+
+
+
+
+ Arthur Dent +
+ +
+ +
+ +
+
+ 7 +
+ +
+ + + + + + } + + + + + + +
+
+
+
+
+ 8 +
+ +
+ + + + +
+
+ + + + +
+
+
+
+`; + +exports[`Storyshots Repositories/Annotate Markdown 1`] = ` +
+
+
+      
+        
+
+
+ Arthur Dent +
+ +
+ +
+ +
+
+ 1 +
+ +
+ + + # + + + Title + + + + + + +
+
+
+
+
+ 2 +
+ +
+ + + + +
+
+
+
+
+ Tricia Marie McMillan +
+ +
+ +
+ +
+
+ 3 +
+ +
+ + This is a short Markdown text. + + +
+
+
+
+
+ 4 +
+ +
+ + + + +
+
+
+
+
+ Arthur Dent +
+ +
+ +
+ +
+
+ 5 +
+ +
+ + + With + + + ** + + + bold + + + ** + + + and + + + __ + + + italic + + + __ + + + words. + + + +
+
+
+
+
+ Ford Prefect +
+ +
+ +
+ +
+
+ 6 +
+ +
+ + + + +
+
+
+
+
+ Arthur Dent +
+ +
+ +
+ +
+
+ 7 +
+ +
+ + + + + + > + + + This should be a quote + + + +
+
+
+
+
+ 8 +
+ +
+ + + + +
+
+ + + + +
+
+
+
+`; + +exports[`Storyshots Repositories/Annotate With Avatars 1`] = ` +
+
+
+      
+        
+
+
+ Arthur Dent + Arthur Dent +
+ +
+ +
+ +
+
+ 1 +
+ +
+ + + package + + + main + + + +
+
+
+
+
+ 2 +
+ +
+ + + + +
+
+
+
+
+ Tricia Marie McMillan + Tricia Marie McMillan +
+ +
+ +
+ +
+
+ 3 +
+ +
+ + + + + + import + + + + + + "fmt" + + + + + + +
+
+
+
+
+ 4 +
+ +
+ + + + +
+
+
+
+
+ Arthur Dent + Arthur Dent +
+ +
+ +
+ +
+
+ 5 +
+ +
+ + + + + + func + + + + + + main + + + ( + + + ) + + + + + + { + + + + + + +
+
+
+
+
+ Ford Prefect + Ford Prefect +
+ +
+ +
+ +
+
+ 6 +
+ +
+ + + fmt + + + . + + + Println + + + ( + + + "Hello World" + + + ) + + + + + + +
+
+
+
+
+ Arthur Dent + Arthur Dent +
+ +
+ +
+ +
+
+ 7 +
+ +
+ + + + + + } + + + + + + +
+
+
+
+
+ 8 +
+ +
+ + + + +
+
+ + + + +
+
+
+
+`; + +exports[`Storyshots Repositories/Changesets Co-Authors with avatar 1`] = ` +
+
+
+
+
+
+
+
+
+ SCM Administrator +
+
+
+

+ + Added design docs + +

+

+

+

+

+ changeset.contributors.authoredBy + + + SCM Administrator + + + commaSeparatedList.lastDivider + + changeset.contributors.coAuthoredBy + + + + Ford Prefect + + + Zaphod Beeblebrox + + + Tricia Marie McMillan + + + +

+
+
+
+
+
+
+
+
+
+

+ +

+

+ +

+
+
+
+
+
+`; + +exports[`Storyshots Repositories/Changesets Commiter and Co-Authors with avatar 1`] = ` +
+
+
+
+
+
+
+
+
+ SCM Administrator +
+
+
+

+ + The starship Heart of Gold was the first spacecraft to make use of the Infinite Improbability Drive. The craft was stolen by then-President Zaphod Beeblebrox at the official launch of the ship, as he was supposed to be officiating the launch. Later, during the use of the Infinite Improbability Drive, the ship picked up Arthur Dent and Ford Prefect, who were floating unprotected in deep space in the same star sector, having just escaped the destruction of the same planet. + +

+

+

+

+

+ changeset.contributors.authoredBy + + + SCM Administrator + + , + changeset.contributors.committedBy + + + Zaphod Beeblebrox + + + commaSeparatedList.lastDivider + + changeset.contributors.coAuthoredBy + + + Ford Prefect + + +

+
+
+
+
+
+
+
+
+
+

+ +

+

+ +

+
+
+
+
+
+`; + +exports[`Storyshots Repositories/Changesets Default 1`] = ` +
+
+
+
+
+
+
+
+

+ + initialize repository + +

+

+

+

+

+ changeset.contributors.authoredBy + + + SCM Administrator + +

+
+
+
+
+
+
+
+
+
+

+ +

+

+ +

+
+
+
+
+
+`; + +exports[`Storyshots Repositories/Changesets Replacements 1`] = ` +
+
+
+
+
+
+
+
+

+ + HOG-42 + +   + Change mail to +   + + Arthur + +

+

+

+

+

+ changeset.contributors.authoredBy + + + SCM Administrator + +

+
+
+
+
+
+
+
+
+
+

+ +

+

+ +

+
+
+
+
+
+`; + +exports[`Storyshots Repositories/Changesets With Committer 1`] = ` +
+
+
+
+
+
+
+
+

+ + Change heading to "Heart Of Gold" + +

+

+

+

+

+ changeset.contributors.authoredBy + + + SCM Administrator + + + commaSeparatedList.lastDivider + + changeset.contributors.committedBy + + + Zaphod Beeblebrox + + +

+
+
+
+
+
+
+
+
+
+

+ +

+

+ +

+
+
+
+
+
+`; + +exports[`Storyshots Repositories/Changesets With Committer and Co-Author 1`] = ` +
+
+
+
+
+
+
+
+

+ + The starship Heart of Gold was the first spacecraft to make use of the Infinite Improbability Drive. The craft was stolen by then-President Zaphod Beeblebrox at the official launch of the ship, as he was supposed to be officiating the launch. Later, during the use of the Infinite Improbability Drive, the ship picked up Arthur Dent and Ford Prefect, who were floating unprotected in deep space in the same star sector, having just escaped the destruction of the same planet. + +

+

+

+

+

+ changeset.contributors.authoredBy + + + SCM Administrator + + , + changeset.contributors.committedBy + + + Zaphod Beeblebrox + + + commaSeparatedList.lastDivider + + changeset.contributors.coAuthoredBy + + + Ford Prefect + + +

+
+
+
+
+
+
+
+
+
+

+ +

+

+ +

+
+
+
+
+
+`; + +exports[`Storyshots Repositories/Changesets With avatar 1`] = ` +
+
+
+
+
+
+
+
+
+ SCM Administrator +
+
+
+

+ + initialize repository + +

+

+

+

+

+ changeset.contributors.authoredBy + + + SCM Administrator + +

+
+
+
+
+
+
+
+
+
+

+ +

+

+ +

+
+
+
+
+
+`; + +exports[`Storyshots Repositories/Changesets With contactless signature 1`] = ` +
+
+
+
+
+
+
+
+

+ + initialize repository + +

+

+

+

+

+ changeset.contributors.authoredBy + + + SCM Administrator + +

+
+ +
+
+
+
+
+
+
+
+
+
+

+ +

+

+ +

+
+
+
+
+
+`; + +exports[`Storyshots Repositories/Changesets With invalid signature 1`] = ` +
+
+
+
+
+
+
+
+

+ + initialize repository + +

+

+

+

+

+ changeset.contributors.authoredBy + + + SCM Administrator + +

+
+ +
+
+
+
+
+
+
+
+
+
+

+ +

+

+ +

+
+
+
+
+
+`; + +exports[`Storyshots Repositories/Changesets With multiple Co-Authors 1`] = ` +
+
+
+
+
+
+
+
+

+ + Added design docs + +

+

+

+

+

+ changeset.contributors.authoredBy + + + SCM Administrator + + + commaSeparatedList.lastDivider + + changeset.contributors.coAuthoredBy + + + changeset.contributors.more + + +

+
+
+
+
+
+
+
+
+
+

+ +

+

+ +

+
+
+
+
+
+`; + +exports[`Storyshots Repositories/Changesets With multiple signatures and invalid status 1`] = ` +
+
+
+
+
+
+
+
+

+ + initialize repository + +

+

+

+

+

+ changeset.contributors.authoredBy + + + SCM Administrator + +

+
+ +
+
+
+
+
+
+
+
+
+
+

+ +

+

+ +

+
+
+
+
+
+`; + +exports[`Storyshots Repositories/Changesets With multiple signatures and not found status 1`] = ` +
+
+
+
+
+
+
+
+

+ + initialize repository + +

+

+

+

+

+ changeset.contributors.authoredBy + + + SCM Administrator + +

+
+ +
+
+
+
+
+
+
+
+
+
+

+ +

+

+ +

+
+
+
+
+
+`; + +exports[`Storyshots Repositories/Changesets With multiple signatures and valid status 1`] = ` +
+
+
+
+
+
+
+
+

+ + initialize repository + +

+

+

+

+

+ changeset.contributors.authoredBy + + + SCM Administrator + +

+
+ +
+
+
+
+
+
+
+
+
+
+

+ +

+

+ +

+
+
+
+
+
+`; + +exports[`Storyshots Repositories/Changesets With unknown signature 1`] = ` +
+
+
+
+
+
+
+
+

+ + initialize repository + +

+

+

+

+

+ changeset.contributors.authoredBy + + + SCM Administrator + +

+
+ +
+
+
+
+
+
+
+
+
+
+

+ +

+

+ +

+
+
+
+
+
+`; + +exports[`Storyshots Repositories/Changesets With unowned signature 1`] = ` +
+
+
+
+
+
+
+
+

+ + initialize repository + +

+

+

+

+

+ changeset.contributors.authoredBy + + + SCM Administrator + +

+
+ +
+
+
+
+
+
+
+
+
+
+

+ +

+

+ +

+
+
+
+
+
+`; + +exports[`Storyshots Repositories/Changesets With valid signature 1`] = ` +
+
+
+
+
+
+
+
+

+ + initialize repository + +

+

+

+

+

+ changeset.contributors.authoredBy + + + SCM Administrator + +

+
+ +
+
+
+
+
+
+
+
+
+
+

+ +

+

+ +

+
+
+
+
+
+`; + +exports[`Storyshots Repositories/Diff Binaries 1`] = ` +
+
+
+
+
+
+ + + Main.java + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 1 + + 1 + + class Main { +
+ 2 + + 2 + + - public static void main(String[] args) { +
+ 3 + + 3 + + + public static void main(String[] arguments) { +
+ 4 + + 4 + + System.out.println("Expect nothing more to happen."); +
+ 5 + + 5 + + } +
+
+
+
+
+
+
+ + conflict.png + + + add + +
+
+
+
+
+
+
+ + + + + + +
+
+
+
+
+`; + +exports[`Storyshots Repositories/Diff Changing Content 1`] = ` +
+
+ +
+
+
+
+
+ + + src/main/java/com/cloudogu/scm/review/events/EventListener.java + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 1 + + 1 + + package com.cloudogu.scm.review.events; +
+ 2 + + 2 + + +
+ 3 + + + import com.cloudogu.scm.review.comment.service.BasicComment; +
+ 4 + + + import com.cloudogu.scm.review.comment.service.BasicCommentEvent; +
+ 5 + + + import com.cloudogu.scm.review.comment.service.CommentEvent; +
+ 6 + + + import com.cloudogu.scm.review.comment.service.ReplyEvent; +
+ 7 + + 3 + + import com.cloudogu.scm.review.pullrequest.service.BasicPullRequestEvent; +
+ 8 + + 4 + + import com.cloudogu.scm.review.pullrequest.service.PullRequest; +
+ 9 + + + import com.cloudogu.scm.review.pullrequest.service.PullRequestEvent; +
+ 10 + + 5 + + import com.github.legman.Subscribe; +
+ 11 + + + import lombok.Data; +
+ 12 + + 6 + + import org.apache.shiro.SecurityUtils; +
+ 13 + + 7 + + import org.apache.shiro.subject.PrincipalCollection; +
+ 14 + + 8 + + import org.apache.shiro.subject.Subject; +
+ 15 + + 9 + + import sonia.scm.EagerSingleton; +
+ 16 + + + import sonia.scm.HandlerEventType; +
+ 17 + + + import sonia.scm.event.HandlerEvent; +
+ 18 + + 10 + + import sonia.scm.plugin.Extension; +
+ 19 + + 11 + + import sonia.scm.repository.Repository; +
+ 20 + + 12 + + import sonia.scm.security.SessionId; +
+
+ + + + diff.expandLastBottomByLines + + + + + + diff.expandLastBottomComplete + +
+
+
+
+
+
+
+
+ + + src/main/js/ChangeNotification.tsx + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + diff.expandComplete + +
+
+ 2 + + 2 + + import { Link } from "@scm-manager/ui-types"; +
+ 3 + + 3 + + import { apiClient, Toast, ToastButtons, ToastButton } from "@scm-manager/ui-components"; +
+ 4 + + 4 + + import { PullRequest } from "./types/PullRequest"; +
+ + 5 + + import { useTranslation } from "react-i18next"; +
+ 5 + + 6 + + +
+ 6 + + 7 + + type HandlerProps = { +
+ 7 + + 8 + + url: string; +
+
+ + + + diff.expandComplete + +
+
+
+ + + + diff.expandComplete + +
+
+ 15 + + 16 + + pullRequest: setEvent +
+ 16 + + 17 + + }); +
+ 17 + + 18 + + }, [url]); +
+ + 19 + + const { t } = useTranslation("plugins"); +
+ 18 + + 20 + + if (event) { +
+ 19 + + 21 + + return ( +
+ 20 + + + <Toast type="warning" title="New Changes"> +
+ 21 + + + <p>The underlying Pull-Request has changed. Press reload to see the changes.</p> +
+ 22 + + + <p>Warning: Non saved modification will be lost.</p> +
+ + 22 + + <Toast type="warning" title={t("scm-review-plugin.changeNotification.title")}> +
+ + 23 + + <p>{t("scm-review-plugin.changeNotification.description")}</p> +
+ + 24 + + <p>{t("scm-review-plugin.changeNotification.modificationWarning")}</p> +
+ 23 + + 25 + + <ToastButtons> +
+ 24 + + + <ToastButton icon="redo" onClick={reload}>Reload</ToastButton> +
+ 25 + + + <ToastButton icon="times" onClick={() => setEvent(undefined)}>Ignore</ToastButton> +
+ + 26 + + <ToastButton icon="redo" onClick={reload}> +
+ + 27 + + {t("scm-review-plugin.changeNotification.buttons.reload")} +
+ + 28 + + </ToastButton> +
+ + 29 + + <ToastButton icon="times" onClick={() => setEvent(undefined)}> +
+ + 30 + + {t("scm-review-plugin.changeNotification.buttons.ignore")} +
+ + 31 + + </ToastButton> +
+ 26 + + 32 + + </ToastButtons> +
+ 27 + + 33 + + </Toast> +
+ 28 + + 34 + + ); +
+
+ + + + diff.expandLastBottomByLines + + + + + + diff.expandLastBottomComplete + +
+
+
+
+
+
+
+
+ + + src/main/resources/locales/de/plugins.json + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + diff.expandByLines + + + + + + diff.expandComplete + +
+
+ 181 + + 181 + + "titleClickable": "Der Kommentar bezieht sich auf eine ältere Version des Source- oder Target-Branches. Klicken Sie hier, um den ursprünglichen Kontext zu sehen." +
+ 182 + + 182 + + } +
+ 183 + + 183 + + } +
+ + 184 + + }, +
+ + 185 + + "changeNotification": { +
+ + 186 + + "title": "Neue Änderungen", +
+ + 187 + + "description": "An diesem Pull Request wurden Änderungen vorgenommen. Laden Sie die Seite neu um diese anzuzeigen.", +
+ + 188 + + "modificationWarning": "Warnung: Nicht gespeicherte Eingaben gehen verloren.", +
+ + 189 + + "buttons": { +
+ + 190 + + "reload": "Neu laden", +
+ + 191 + + "ignore": "Ignorieren" +
+ + 192 + + } +
+ 184 + + 193 + + } +
+ 185 + + 194 + + }, +
+ 186 + + 195 + + "permissions": { +
+
+ + + + diff.expandLastBottomByLines + + + + + + diff.expandLastBottomComplete + +
+
+
+
+
+
+
+
+ + + src/main/resources/locales/en/plugins.json + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + diff.expandByLines + + + + + + diff.expandComplete + +
+
+ 181 + + 181 + + "titleClickable": "The comment is related to an older of the source or target branch. Click here to see the original context." +
+ 182 + + 182 + + } +
+ 183 + + 183 + + } +
+ + 184 + + }, +
+ + 185 + + "changeNotification": { +
+ + 186 + + "title": "New Changes", +
+ + 187 + + "description": "The underlying Pull-Request has changed. Press reload to see the changes.", +
+ + 188 + + "modificationWarning": "Warning: Non saved modification will be lost.", +
+ + 189 + + "buttons": { +
+ + 190 + + "reload": "Reload", +
+ + 191 + + "ignore": "Ignore" +
+ + 192 + + } +
+ 184 + + 193 + + } +
+ 185 + + 194 + + }, +
+ 186 + + 195 + + "permissions": { +
+
+ + + + diff.expandLastBottomByLines + + + + + + diff.expandLastBottomComplete + +
+
+
+
+
+
+
+
+ + + src/test/java/com/cloudogu/scm/review/events/ClientTest.java + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + diff.expandComplete + +
+
+ 7 + + 7 + + import org.mockito.Mock; +
+ 8 + + 8 + + import org.mockito.junit.jupiter.MockitoExtension; +
+ 9 + + 9 + + import sonia.scm.security.SessionId; +
+ + 10 + + +
+ 10 + + 11 + + import javax.ws.rs.sse.OutboundSseEvent; +
+ 11 + + 12 + + import javax.ws.rs.sse.SseEventSink; +
+ 12 + + + +
+ 13 + + 13 + + import java.time.Clock; +
+ 14 + + 14 + + import java.time.Instant; +
+ 15 + + 15 + + import java.time.LocalDateTime; +
+ 16 + + 16 + + import java.time.ZoneOffset; +
+ 17 + + 17 + + import java.time.temporal.ChronoField; +
+ 18 + + + import java.time.temporal.ChronoUnit; +
+ 19 + + + import java.time.temporal.TemporalField; +
+ 20 + + 18 + + import java.util.concurrent.CompletableFuture; +
+ 21 + + 19 + + import java.util.concurrent.CompletionStage; +
+ 22 + + + import java.util.concurrent.atomic.AtomicLong; +
+ 23 + + 20 + + import java.util.concurrent.atomic.AtomicReference; +
+ 24 + + 21 + + +
+ 25 + + 22 + + import static java.time.temporal.ChronoUnit.MINUTES; +
+
+ + + + diff.expandByLines + + + + + + diff.expandComplete + +
+
+
+ + + + diff.expandByLines + + + + + + diff.expandComplete + +
+
+ 83 + + 80 + + +
+ 84 + + 81 + + @Test +
+ 85 + + 82 + + @SuppressWarnings("unchecked") +
+ 86 + + + void shouldCloseEventSinkOnFailure() throws InterruptedException { +
+ + 83 + + void shouldCloseEventSinkOnFailure() { +
+ 87 + + 84 + + CompletionStage future = CompletableFuture.supplyAsync(() -> { +
+ 88 + + 85 + + throw new RuntimeException("failed to send message"); +
+ 89 + + 86 + + }); +
+
+ + + + diff.expandComplete + +
+
+
+ + + + diff.expandComplete + +
+
+ 91 + + 88 + + +
+ 92 + + 89 + + client.send(message); +
+ 93 + + 90 + + +
+ 94 + + + Thread.sleep(50L); +
+ 95 + + + +
+ 96 + + + verify(eventSink).close(); +
+ + 91 + + verify(eventSink, timeout(50L)).close(); +
+ 97 + + 92 + + } +
+ 98 + + 93 + + +
+ 99 + + 94 + + @Test +
+
+ + + + diff.expandLastBottomByLines + + + + + + diff.expandLastBottomComplete + +
+
+
+
+
+
+
+
+ + + Main.java + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + 1 + + import java.io.PrintStream; +
+ 1 + + 2 + + import java.util.Arrays; +
+ 2 + + 3 + + +
+ 3 + + 4 + + class Main { +
+ + 5 + + private static final PrintStream OUT = System.out; +
+ + 6 + + +
+ 4 + + 7 + + public static void main(String[] args) { +
+ + 8 + + <<<<<<< HEAD +
+ 5 + + 9 + + System.out.println("Expect nothing more to happen."); +
+ 6 + + 10 + + System.out.println("The command line parameters are:"); +
+ 7 + + 11 + + Arrays.stream(args).map(arg -> "- " + arg).forEach(System.out::println); +
+ + 12 + + ======= +
+ + 13 + + OUT.println("Expect nothing more to happen."); +
+ + 14 + + OUT.println("Parameters:"); +
+ + 15 + + Arrays.stream(args).map(arg -> "- " + arg).forEach(OUT::println); +
+ + 16 + + >>>>>>> feature/use_constant +
+ 8 + + 17 + + } +
+ 9 + + 18 + + } +
+
+ + + + diff.expandLastBottomByLines + + + + + + diff.expandLastBottomComplete + +
+
+
+
+
+
+
+`; + +exports[`Storyshots Repositories/Diff Collapsed 1`] = ` +
+
+
+
+
+
+ + + src/main/java/com/cloudogu/scm/review/events/EventListener.java + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+ + + + + +
+
+ + + + + +
+
+
+
+
+
+
+
+
+
+ + + src/main/js/ChangeNotification.tsx + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+ + + + + +
+
+ + + + + +
+
+
+
+
+
+
+
+
+
+ + + src/main/resources/locales/de/plugins.json + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+ + + + + +
+
+ + + + + +
+
+
+
+
+
+
+
+
+
+ + + src/main/resources/locales/en/plugins.json + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+ + + + + +
+
+ + + + + +
+
+
+
+
+
+
+
+
+
+ + + src/test/java/com/cloudogu/scm/review/events/ClientTest.java + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+ + + + + +
+
+ + + + + +
+
+
+
+
+
+
+
+
+
+ + + Main.java + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+ + + + + +
+
+ + + + + +
+
+
+
+
+
+
+
+`; + +exports[`Storyshots Repositories/Diff CollapsingWithFunction 1`] = ` +
+
+
+
+
+
+ + + src/main/java/com/cloudogu/scm/review/events/EventListener.java + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+
+
+
+
+ + + src/main/js/ChangeNotification.tsx + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 2 + + 2 + + import { Link } from "@scm-manager/ui-types"; +
+ 3 + + 3 + + import { apiClient, Toast, ToastButtons, ToastButton } from "@scm-manager/ui-components"; +
+ 4 + + 4 + + import { PullRequest } from "./types/PullRequest"; +
+ + 5 + + import { useTranslation } from "react-i18next"; +
+ 5 + + 6 + + +
+ 6 + + 7 + + type HandlerProps = { +
+ 7 + + 8 + + url: string; +
+
+
+ 15 + + 16 + + pullRequest: setEvent +
+ 16 + + 17 + + }); +
+ 17 + + 18 + + }, [url]); +
+ + 19 + + const { t } = useTranslation("plugins"); +
+ 18 + + 20 + + if (event) { +
+ 19 + + 21 + + return ( +
+ 20 + + + <Toast type="warning" title="New Changes"> +
+ 21 + + + <p>The underlying Pull-Request has changed. Press reload to see the changes.</p> +
+ 22 + + + <p>Warning: Non saved modification will be lost.</p> +
+ + 22 + + <Toast type="warning" title={t("scm-review-plugin.changeNotification.title")}> +
+ + 23 + + <p>{t("scm-review-plugin.changeNotification.description")}</p> +
+ + 24 + + <p>{t("scm-review-plugin.changeNotification.modificationWarning")}</p> +
+ 23 + + 25 + + <ToastButtons> +
+ 24 + + + <ToastButton icon="redo" onClick={reload}>Reload</ToastButton> +
+ 25 + + + <ToastButton icon="times" onClick={() => setEvent(undefined)}>Ignore</ToastButton> +
+ + 26 + + <ToastButton icon="redo" onClick={reload}> +
+ + 27 + + {t("scm-review-plugin.changeNotification.buttons.reload")} +
+ + 28 + + </ToastButton> +
+ + 29 + + <ToastButton icon="times" onClick={() => setEvent(undefined)}> +
+ + 30 + + {t("scm-review-plugin.changeNotification.buttons.ignore")} +
+ + 31 + + </ToastButton> +
+ 26 + + 32 + + </ToastButtons> +
+ 27 + + 33 + + </Toast> +
+ 28 + + 34 + + ); +
+
+
+
+
+
+
+ + + src/main/resources/locales/de/plugins.json + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 181 + + 181 + + "titleClickable": "Der Kommentar bezieht sich auf eine ältere Version des Source- oder Target-Branches. Klicken Sie hier, um den ursprünglichen Kontext zu sehen." +
+ 182 + + 182 + + } +
+ 183 + + 183 + + } +
+ + 184 + + }, +
+ + 185 + + "changeNotification": { +
+ + 186 + + "title": "Neue Änderungen", +
+ + 187 + + "description": "An diesem Pull Request wurden Änderungen vorgenommen. Laden Sie die Seite neu um diese anzuzeigen.", +
+ + 188 + + "modificationWarning": "Warnung: Nicht gespeicherte Eingaben gehen verloren.", +
+ + 189 + + "buttons": { +
+ + 190 + + "reload": "Neu laden", +
+ + 191 + + "ignore": "Ignorieren" +
+ + 192 + + } +
+ 184 + + 193 + + } +
+ 185 + + 194 + + }, +
+ 186 + + 195 + + "permissions": { +
+
+
+
+
+
+
+ + + src/main/resources/locales/en/plugins.json + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 181 + + 181 + + "titleClickable": "The comment is related to an older of the source or target branch. Click here to see the original context." +
+ 182 + + 182 + + } +
+ 183 + + 183 + + } +
+ + 184 + + }, +
+ + 185 + + "changeNotification": { +
+ + 186 + + "title": "New Changes", +
+ + 187 + + "description": "The underlying Pull-Request has changed. Press reload to see the changes.", +
+ + 188 + + "modificationWarning": "Warning: Non saved modification will be lost.", +
+ + 189 + + "buttons": { +
+ + 190 + + "reload": "Reload", +
+ + 191 + + "ignore": "Ignore" +
+ + 192 + + } +
+ 184 + + 193 + + } +
+ 185 + + 194 + + }, +
+ 186 + + 195 + + "permissions": { +
+
+
+
+
+
+
+ + + src/test/java/com/cloudogu/scm/review/events/ClientTest.java + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+
+
+
+
+ + + Main.java + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+
+
+`; + +exports[`Storyshots Repositories/Diff Default 1`] = ` +
+
+
+
+
+
+ + + src/main/java/com/cloudogu/scm/review/events/EventListener.java + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 1 + + 1 + + package com.cloudogu.scm.review.events; +
+ 2 + + 2 + + +
+ 3 + + + import com.cloudogu.scm.review.comment.service.BasicComment; +
+ 4 + + + import com.cloudogu.scm.review.comment.service.BasicCommentEvent; +
+ 5 + + + import com.cloudogu.scm.review.comment.service.CommentEvent; +
+ 6 + + + import com.cloudogu.scm.review.comment.service.ReplyEvent; +
+ 7 + + 3 + + import com.cloudogu.scm.review.pullrequest.service.BasicPullRequestEvent; +
+ 8 + + 4 + + import com.cloudogu.scm.review.pullrequest.service.PullRequest; +
+ 9 + + + import com.cloudogu.scm.review.pullrequest.service.PullRequestEvent; +
+ 10 + + 5 + + import com.github.legman.Subscribe; +
+ 11 + + + import lombok.Data; +
+ 12 + + 6 + + import org.apache.shiro.SecurityUtils; +
+ 13 + + 7 + + import org.apache.shiro.subject.PrincipalCollection; +
+ 14 + + 8 + + import org.apache.shiro.subject.Subject; +
+ 15 + + 9 + + import sonia.scm.EagerSingleton; +
+ 16 + + + import sonia.scm.HandlerEventType; +
+ 17 + + + import sonia.scm.event.HandlerEvent; +
+ 18 + + 10 + + import sonia.scm.plugin.Extension; +
+ 19 + + 11 + + import sonia.scm.repository.Repository; +
+ 20 + + 12 + + import sonia.scm.security.SessionId; +
+
+
+
+
+
+
+ + + src/main/js/ChangeNotification.tsx + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 2 + + 2 + + import { Link } from "@scm-manager/ui-types"; +
+ 3 + + 3 + + import { apiClient, Toast, ToastButtons, ToastButton } from "@scm-manager/ui-components"; +
+ 4 + + 4 + + import { PullRequest } from "./types/PullRequest"; +
+ + 5 + + import { useTranslation } from "react-i18next"; +
+ 5 + + 6 + + +
+ 6 + + 7 + + type HandlerProps = { +
+ 7 + + 8 + + url: string; +
+
+
+ 15 + + 16 + + pullRequest: setEvent +
+ 16 + + 17 + + }); +
+ 17 + + 18 + + }, [url]); +
+ + 19 + + const { t } = useTranslation("plugins"); +
+ 18 + + 20 + + if (event) { +
+ 19 + + 21 + + return ( +
+ 20 + + + <Toast type="warning" title="New Changes"> +
+ 21 + + + <p>The underlying Pull-Request has changed. Press reload to see the changes.</p> +
+ 22 + + + <p>Warning: Non saved modification will be lost.</p> +
+ + 22 + + <Toast type="warning" title={t("scm-review-plugin.changeNotification.title")}> +
+ + 23 + + <p>{t("scm-review-plugin.changeNotification.description")}</p> +
+ + 24 + + <p>{t("scm-review-plugin.changeNotification.modificationWarning")}</p> +
+ 23 + + 25 + + <ToastButtons> +
+ 24 + + + <ToastButton icon="redo" onClick={reload}>Reload</ToastButton> +
+ 25 + + + <ToastButton icon="times" onClick={() => setEvent(undefined)}>Ignore</ToastButton> +
+ + 26 + + <ToastButton icon="redo" onClick={reload}> +
+ + 27 + + {t("scm-review-plugin.changeNotification.buttons.reload")} +
+ + 28 + + </ToastButton> +
+ + 29 + + <ToastButton icon="times" onClick={() => setEvent(undefined)}> +
+ + 30 + + {t("scm-review-plugin.changeNotification.buttons.ignore")} +
+ + 31 + + </ToastButton> +
+ 26 + + 32 + + </ToastButtons> +
+ 27 + + 33 + + </Toast> +
+ 28 + + 34 + + ); +
+
+
+
+
+
+
+ + + src/main/resources/locales/de/plugins.json + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 181 + + 181 + + "titleClickable": "Der Kommentar bezieht sich auf eine ältere Version des Source- oder Target-Branches. Klicken Sie hier, um den ursprünglichen Kontext zu sehen." +
+ 182 + + 182 + + } +
+ 183 + + 183 + + } +
+ + 184 + + }, +
+ + 185 + + "changeNotification": { +
+ + 186 + + "title": "Neue Änderungen", +
+ + 187 + + "description": "An diesem Pull Request wurden Änderungen vorgenommen. Laden Sie die Seite neu um diese anzuzeigen.", +
+ + 188 + + "modificationWarning": "Warnung: Nicht gespeicherte Eingaben gehen verloren.", +
+ + 189 + + "buttons": { +
+ + 190 + + "reload": "Neu laden", +
+ + 191 + + "ignore": "Ignorieren" +
+ + 192 + + } +
+ 184 + + 193 + + } +
+ 185 + + 194 + + }, +
+ 186 + + 195 + + "permissions": { +
+
+
+
+
+
+
+ + + src/main/resources/locales/en/plugins.json + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 181 + + 181 + + "titleClickable": "The comment is related to an older of the source or target branch. Click here to see the original context." +
+ 182 + + 182 + + } +
+ 183 + + 183 + + } +
+ + 184 + + }, +
+ + 185 + + "changeNotification": { +
+ + 186 + + "title": "New Changes", +
+ + 187 + + "description": "The underlying Pull-Request has changed. Press reload to see the changes.", +
+ + 188 + + "modificationWarning": "Warning: Non saved modification will be lost.", +
+ + 189 + + "buttons": { +
+ + 190 + + "reload": "Reload", +
+ + 191 + + "ignore": "Ignore" +
+ + 192 + + } +
+ 184 + + 193 + + } +
+ 185 + + 194 + + }, +
+ 186 + + 195 + + "permissions": { +
+
+
+
+
+
+
+ + + src/test/java/com/cloudogu/scm/review/events/ClientTest.java + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 7 + + 7 + + import org.mockito.Mock; +
+ 8 + + 8 + + import org.mockito.junit.jupiter.MockitoExtension; +
+ 9 + + 9 + + import sonia.scm.security.SessionId; +
+ + 10 + + +
+ 10 + + 11 + + import javax.ws.rs.sse.OutboundSseEvent; +
+ 11 + + 12 + + import javax.ws.rs.sse.SseEventSink; +
+ 12 + + + +
+ 13 + + 13 + + import java.time.Clock; +
+ 14 + + 14 + + import java.time.Instant; +
+ 15 + + 15 + + import java.time.LocalDateTime; +
+ 16 + + 16 + + import java.time.ZoneOffset; +
+ 17 + + 17 + + import java.time.temporal.ChronoField; +
+ 18 + + + import java.time.temporal.ChronoUnit; +
+ 19 + + + import java.time.temporal.TemporalField; +
+ 20 + + 18 + + import java.util.concurrent.CompletableFuture; +
+ 21 + + 19 + + import java.util.concurrent.CompletionStage; +
+ 22 + + + import java.util.concurrent.atomic.AtomicLong; +
+ 23 + + 20 + + import java.util.concurrent.atomic.AtomicReference; +
+ 24 + + 21 + + +
+ 25 + + 22 + + import static java.time.temporal.ChronoUnit.MINUTES; +
+
+
+ 83 + + 80 + + +
+ 84 + + 81 + + @Test +
+ 85 + + 82 + + @SuppressWarnings("unchecked") +
+ 86 + + + void shouldCloseEventSinkOnFailure() throws InterruptedException { +
+ + 83 + + void shouldCloseEventSinkOnFailure() { +
+ 87 + + 84 + + CompletionStage future = CompletableFuture.supplyAsync(() -> { +
+ 88 + + 85 + + throw new RuntimeException("failed to send message"); +
+ 89 + + 86 + + }); +
+
+
+ 91 + + 88 + + +
+ 92 + + 89 + + client.send(message); +
+ 93 + + 90 + + +
+ 94 + + + Thread.sleep(50L); +
+ 95 + + + +
+ 96 + + + verify(eventSink).close(); +
+ + 91 + + verify(eventSink, timeout(50L)).close(); +
+ 97 + + 92 + + } +
+ 98 + + 93 + + +
+ 99 + + 94 + + @Test +
+
+
+
+
+
+
+ + + Main.java + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + 1 + + import java.io.PrintStream; +
+ 1 + + 2 + + import java.util.Arrays; +
+ 2 + + 3 + + +
+ 3 + + 4 + + class Main { +
+ + 5 + + private static final PrintStream OUT = System.out; +
+ + 6 + + +
+ 4 + + 7 + + public static void main(String[] args) { +
+ + 8 + + <<<<<<< HEAD +
+ 5 + + 9 + + System.out.println("Expect nothing more to happen."); +
+ 6 + + 10 + + System.out.println("The command line parameters are:"); +
+ 7 + + 11 + + Arrays.stream(args).map(arg -> "- " + arg).forEach(System.out::println); +
+ + 12 + + ======= +
+ + 13 + + OUT.println("Expect nothing more to happen."); +
+ + 14 + + OUT.println("Parameters:"); +
+ + 15 + + Arrays.stream(args).map(arg -> "- " + arg).forEach(OUT::println); +
+ + 16 + + >>>>>>> feature/use_constant +
+ 8 + + 17 + + } +
+ 9 + + 18 + + } +
+
+
+
+
+`; + +exports[`Storyshots Repositories/Diff Expandable 1`] = ` +
+
+
+
+
+
+ + + src/main/java/com/cloudogu/scm/review/events/EventListener.java + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 1 + + 1 + + package com.cloudogu.scm.review.events; +
+ 2 + + 2 + + +
+ 3 + + + import com.cloudogu.scm.review.comment.service.BasicComment; +
+ 4 + + + import com.cloudogu.scm.review.comment.service.BasicCommentEvent; +
+ 5 + + + import com.cloudogu.scm.review.comment.service.CommentEvent; +
+ 6 + + + import com.cloudogu.scm.review.comment.service.ReplyEvent; +
+ 7 + + 3 + + import com.cloudogu.scm.review.pullrequest.service.BasicPullRequestEvent; +
+ 8 + + 4 + + import com.cloudogu.scm.review.pullrequest.service.PullRequest; +
+ 9 + + + import com.cloudogu.scm.review.pullrequest.service.PullRequestEvent; +
+ 10 + + 5 + + import com.github.legman.Subscribe; +
+ 11 + + + import lombok.Data; +
+ 12 + + 6 + + import org.apache.shiro.SecurityUtils; +
+ 13 + + 7 + + import org.apache.shiro.subject.PrincipalCollection; +
+ 14 + + 8 + + import org.apache.shiro.subject.Subject; +
+ 15 + + 9 + + import sonia.scm.EagerSingleton; +
+ 16 + + + import sonia.scm.HandlerEventType; +
+ 17 + + + import sonia.scm.event.HandlerEvent; +
+ 18 + + 10 + + import sonia.scm.plugin.Extension; +
+ 19 + + 11 + + import sonia.scm.repository.Repository; +
+ 20 + + 12 + + import sonia.scm.security.SessionId; +
+
+ + + + diff.expandLastBottomByLines + + + + + + diff.expandLastBottomComplete + +
+
+
+
+
+
+
+
+ + + src/main/js/ChangeNotification.tsx + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + diff.expandComplete + +
+
+ 2 + + 2 + + import { Link } from "@scm-manager/ui-types"; +
+ 3 + + 3 + + import { apiClient, Toast, ToastButtons, ToastButton } from "@scm-manager/ui-components"; +
+ 4 + + 4 + + import { PullRequest } from "./types/PullRequest"; +
+ + 5 + + import { useTranslation } from "react-i18next"; +
+ 5 + + 6 + + +
+ 6 + + 7 + + type HandlerProps = { +
+ 7 + + 8 + + url: string; +
+
+ + + + diff.expandComplete + +
+
+
+ + + + diff.expandComplete + +
+
+ 15 + + 16 + + pullRequest: setEvent +
+ 16 + + 17 + + }); +
+ 17 + + 18 + + }, [url]); +
+ + 19 + + const { t } = useTranslation("plugins"); +
+ 18 + + 20 + + if (event) { +
+ 19 + + 21 + + return ( +
+ 20 + + + <Toast type="warning" title="New Changes"> +
+ 21 + + + <p>The underlying Pull-Request has changed. Press reload to see the changes.</p> +
+ 22 + + + <p>Warning: Non saved modification will be lost.</p> +
+ + 22 + + <Toast type="warning" title={t("scm-review-plugin.changeNotification.title")}> +
+ + 23 + + <p>{t("scm-review-plugin.changeNotification.description")}</p> +
+ + 24 + + <p>{t("scm-review-plugin.changeNotification.modificationWarning")}</p> +
+ 23 + + 25 + + <ToastButtons> +
+ 24 + + + <ToastButton icon="redo" onClick={reload}>Reload</ToastButton> +
+ 25 + + + <ToastButton icon="times" onClick={() => setEvent(undefined)}>Ignore</ToastButton> +
+ + 26 + + <ToastButton icon="redo" onClick={reload}> +
+ + 27 + + {t("scm-review-plugin.changeNotification.buttons.reload")} +
+ + 28 + + </ToastButton> +
+ + 29 + + <ToastButton icon="times" onClick={() => setEvent(undefined)}> +
+ + 30 + + {t("scm-review-plugin.changeNotification.buttons.ignore")} +
+ + 31 + + </ToastButton> +
+ 26 + + 32 + + </ToastButtons> +
+ 27 + + 33 + + </Toast> +
+ 28 + + 34 + + ); +
+
+ + + + diff.expandLastBottomByLines + + + + + + diff.expandLastBottomComplete + +
+
+
+
+
+
+
+
+ + + src/main/resources/locales/de/plugins.json + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + diff.expandByLines + + + + + + diff.expandComplete + +
+
+ 181 + + 181 + + "titleClickable": "Der Kommentar bezieht sich auf eine ältere Version des Source- oder Target-Branches. Klicken Sie hier, um den ursprünglichen Kontext zu sehen." +
+ 182 + + 182 + + } +
+ 183 + + 183 + + } +
+ + 184 + + }, +
+ + 185 + + "changeNotification": { +
+ + 186 + + "title": "Neue Änderungen", +
+ + 187 + + "description": "An diesem Pull Request wurden Änderungen vorgenommen. Laden Sie die Seite neu um diese anzuzeigen.", +
+ + 188 + + "modificationWarning": "Warnung: Nicht gespeicherte Eingaben gehen verloren.", +
+ + 189 + + "buttons": { +
+ + 190 + + "reload": "Neu laden", +
+ + 191 + + "ignore": "Ignorieren" +
+ + 192 + + } +
+ 184 + + 193 + + } +
+ 185 + + 194 + + }, +
+ 186 + + 195 + + "permissions": { +
+
+ + + + diff.expandLastBottomByLines + + + + + + diff.expandLastBottomComplete + +
+
+
+
+
+
+
+
+ + + src/main/resources/locales/en/plugins.json + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + diff.expandByLines + + + + + + diff.expandComplete + +
+
+ 181 + + 181 + + "titleClickable": "The comment is related to an older of the source or target branch. Click here to see the original context." +
+ 182 + + 182 + + } +
+ 183 + + 183 + + } +
+ + 184 + + }, +
+ + 185 + + "changeNotification": { +
+ + 186 + + "title": "New Changes", +
+ + 187 + + "description": "The underlying Pull-Request has changed. Press reload to see the changes.", +
+ + 188 + + "modificationWarning": "Warning: Non saved modification will be lost.", +
+ + 189 + + "buttons": { +
+ + 190 + + "reload": "Reload", +
+ + 191 + + "ignore": "Ignore" +
+ + 192 + + } +
+ 184 + + 193 + + } +
+ 185 + + 194 + + }, +
+ 186 + + 195 + + "permissions": { +
+
+ + + + diff.expandLastBottomByLines + + + + + + diff.expandLastBottomComplete + +
+
+
+
+
+
+
+
+ + + src/test/java/com/cloudogu/scm/review/events/ClientTest.java + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + diff.expandComplete + +
+
+ 7 + + 7 + + import org.mockito.Mock; +
+ 8 + + 8 + + import org.mockito.junit.jupiter.MockitoExtension; +
+ 9 + + 9 + + import sonia.scm.security.SessionId; +
+ + 10 + + +
+ 10 + + 11 + + import javax.ws.rs.sse.OutboundSseEvent; +
+ 11 + + 12 + + import javax.ws.rs.sse.SseEventSink; +
+ 12 + + + +
+ 13 + + 13 + + import java.time.Clock; +
+ 14 + + 14 + + import java.time.Instant; +
+ 15 + + 15 + + import java.time.LocalDateTime; +
+ 16 + + 16 + + import java.time.ZoneOffset; +
+ 17 + + 17 + + import java.time.temporal.ChronoField; +
+ 18 + + + import java.time.temporal.ChronoUnit; +
+ 19 + + + import java.time.temporal.TemporalField; +
+ 20 + + 18 + + import java.util.concurrent.CompletableFuture; +
+ 21 + + 19 + + import java.util.concurrent.CompletionStage; +
+ 22 + + + import java.util.concurrent.atomic.AtomicLong; +
+ 23 + + 20 + + import java.util.concurrent.atomic.AtomicReference; +
+ 24 + + 21 + + +
+ 25 + + 22 + + import static java.time.temporal.ChronoUnit.MINUTES; +
+
+ + + + diff.expandByLines + + + + + + diff.expandComplete + +
+
+
+ + + + diff.expandByLines + + + + + + diff.expandComplete + +
+
+ 83 + + 80 + + +
+ 84 + + 81 + + @Test +
+ 85 + + 82 + + @SuppressWarnings("unchecked") +
+ 86 + + + void shouldCloseEventSinkOnFailure() throws InterruptedException { +
+ + 83 + + void shouldCloseEventSinkOnFailure() { +
+ 87 + + 84 + + CompletionStage future = CompletableFuture.supplyAsync(() -> { +
+ 88 + + 85 + + throw new RuntimeException("failed to send message"); +
+ 89 + + 86 + + }); +
+
+ + + + diff.expandComplete + +
+
+
+ + + + diff.expandComplete + +
+
+ 91 + + 88 + + +
+ 92 + + 89 + + client.send(message); +
+ 93 + + 90 + + +
+ 94 + + + Thread.sleep(50L); +
+ 95 + + + +
+ 96 + + + verify(eventSink).close(); +
+ + 91 + + verify(eventSink, timeout(50L)).close(); +
+ 97 + + 92 + + } +
+ 98 + + 93 + + +
+ 99 + + 94 + + @Test +
+
+ + + + diff.expandLastBottomByLines + + + + + + diff.expandLastBottomComplete + +
+
+
+
+
+
+
+
+ + + Main.java + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + 1 + + import java.io.PrintStream; +
+ 1 + + 2 + + import java.util.Arrays; +
+ 2 + + 3 + + +
+ 3 + + 4 + + class Main { +
+ + 5 + + private static final PrintStream OUT = System.out; +
+ + 6 + + +
+ 4 + + 7 + + public static void main(String[] args) { +
+ + 8 + + <<<<<<< HEAD +
+ 5 + + 9 + + System.out.println("Expect nothing more to happen."); +
+ 6 + + 10 + + System.out.println("The command line parameters are:"); +
+ 7 + + 11 + + Arrays.stream(args).map(arg -> "- " + arg).forEach(System.out::println); +
+ + 12 + + ======= +
+ + 13 + + OUT.println("Expect nothing more to happen."); +
+ + 14 + + OUT.println("Parameters:"); +
+ + 15 + + Arrays.stream(args).map(arg -> "- " + arg).forEach(OUT::println); +
+ + 16 + + >>>>>>> feature/use_constant +
+ 8 + + 17 + + } +
+ 9 + + 18 + + } +
+
+ + + + diff.expandLastBottomByLines + + + + + + diff.expandLastBottomComplete + +
+
+
+
+
+
+`; + +exports[`Storyshots Repositories/Diff External state management 1`] = ` +
+
+
+
+
+
+ + + src/main/java/com/cloudogu/scm/review/events/EventListener.java + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 1 + + 1 + + package com.cloudogu.scm.review.events; +
+ 2 + + 2 + + +
+ 3 + + + import com.cloudogu.scm.review.comment.service.BasicComment; +
+ 4 + + + import com.cloudogu.scm.review.comment.service.BasicCommentEvent; +
+ 5 + + + import com.cloudogu.scm.review.comment.service.CommentEvent; +
+ 6 + + + import com.cloudogu.scm.review.comment.service.ReplyEvent; +
+ 7 + + 3 + + import com.cloudogu.scm.review.pullrequest.service.BasicPullRequestEvent; +
+ 8 + + 4 + + import com.cloudogu.scm.review.pullrequest.service.PullRequest; +
+ 9 + + + import com.cloudogu.scm.review.pullrequest.service.PullRequestEvent; +
+ 10 + + 5 + + import com.github.legman.Subscribe; +
+ 11 + + + import lombok.Data; +
+ 12 + + 6 + + import org.apache.shiro.SecurityUtils; +
+ 13 + + 7 + + import org.apache.shiro.subject.PrincipalCollection; +
+ 14 + + 8 + + import org.apache.shiro.subject.Subject; +
+ 15 + + 9 + + import sonia.scm.EagerSingleton; +
+ 16 + + + import sonia.scm.HandlerEventType; +
+ 17 + + + import sonia.scm.event.HandlerEvent; +
+ 18 + + 10 + + import sonia.scm.plugin.Extension; +
+ 19 + + 11 + + import sonia.scm.repository.Repository; +
+ 20 + + 12 + + import sonia.scm.security.SessionId; +
+
+ + + + diff.expandLastBottomByLines + + + + + + diff.expandLastBottomComplete + +
+
+
+
+
+
+
+
+ + + src/main/js/ChangeNotification.tsx + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + diff.expandComplete + +
+
+ 2 + + 2 + + import { Link } from "@scm-manager/ui-types"; +
+ 3 + + 3 + + import { apiClient, Toast, ToastButtons, ToastButton } from "@scm-manager/ui-components"; +
+ 4 + + 4 + + import { PullRequest } from "./types/PullRequest"; +
+ + 5 + + import { useTranslation } from "react-i18next"; +
+ 5 + + 6 + + +
+ 6 + + 7 + + type HandlerProps = { +
+ 7 + + 8 + + url: string; +
+
+ + + + diff.expandComplete + +
+
+
+ + + + diff.expandComplete + +
+
+ 15 + + 16 + + pullRequest: setEvent +
+ 16 + + 17 + + }); +
+ 17 + + 18 + + }, [url]); +
+ + 19 + + const { t } = useTranslation("plugins"); +
+ 18 + + 20 + + if (event) { +
+ 19 + + 21 + + return ( +
+ 20 + + + <Toast type="warning" title="New Changes"> +
+ 21 + + + <p>The underlying Pull-Request has changed. Press reload to see the changes.</p> +
+ 22 + + + <p>Warning: Non saved modification will be lost.</p> +
+ + 22 + + <Toast type="warning" title={t("scm-review-plugin.changeNotification.title")}> +
+ + 23 + + <p>{t("scm-review-plugin.changeNotification.description")}</p> +
+ + 24 + + <p>{t("scm-review-plugin.changeNotification.modificationWarning")}</p> +
+ 23 + + 25 + + <ToastButtons> +
+ 24 + + + <ToastButton icon="redo" onClick={reload}>Reload</ToastButton> +
+ 25 + + + <ToastButton icon="times" onClick={() => setEvent(undefined)}>Ignore</ToastButton> +
+ + 26 + + <ToastButton icon="redo" onClick={reload}> +
+ + 27 + + {t("scm-review-plugin.changeNotification.buttons.reload")} +
+ + 28 + + </ToastButton> +
+ + 29 + + <ToastButton icon="times" onClick={() => setEvent(undefined)}> +
+ + 30 + + {t("scm-review-plugin.changeNotification.buttons.ignore")} +
+ + 31 + + </ToastButton> +
+ 26 + + 32 + + </ToastButtons> +
+ 27 + + 33 + + </Toast> +
+ 28 + + 34 + + ); +
+
+ + + + diff.expandLastBottomByLines + + + + + + diff.expandLastBottomComplete + +
+
+
+
+
+
+
+
+ + + src/main/resources/locales/de/plugins.json + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + diff.expandByLines + + + + + + diff.expandComplete + +
+
+ 181 + + 181 + + "titleClickable": "Der Kommentar bezieht sich auf eine ältere Version des Source- oder Target-Branches. Klicken Sie hier, um den ursprünglichen Kontext zu sehen." +
+ 182 + + 182 + + } +
+ 183 + + 183 + + } +
+ + 184 + + }, +
+ + 185 + + "changeNotification": { +
+ + 186 + + "title": "Neue Änderungen", +
+ + 187 + + "description": "An diesem Pull Request wurden Änderungen vorgenommen. Laden Sie die Seite neu um diese anzuzeigen.", +
+ + 188 + + "modificationWarning": "Warnung: Nicht gespeicherte Eingaben gehen verloren.", +
+ + 189 + + "buttons": { +
+ + 190 + + "reload": "Neu laden", +
+ + 191 + + "ignore": "Ignorieren" +
+ + 192 + + } +
+ 184 + + 193 + + } +
+ 185 + + 194 + + }, +
+ 186 + + 195 + + "permissions": { +
+
+ + + + diff.expandLastBottomByLines + + + + + + diff.expandLastBottomComplete + +
+
+
+
+
+
+
+
+ + + src/main/resources/locales/en/plugins.json + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + diff.expandByLines + + + + + + diff.expandComplete + +
+
+ 181 + + 181 + + "titleClickable": "The comment is related to an older of the source or target branch. Click here to see the original context." +
+ 182 + + 182 + + } +
+ 183 + + 183 + + } +
+ + 184 + + }, +
+ + 185 + + "changeNotification": { +
+ + 186 + + "title": "New Changes", +
+ + 187 + + "description": "The underlying Pull-Request has changed. Press reload to see the changes.", +
+ + 188 + + "modificationWarning": "Warning: Non saved modification will be lost.", +
+ + 189 + + "buttons": { +
+ + 190 + + "reload": "Reload", +
+ + 191 + + "ignore": "Ignore" +
+ + 192 + + } +
+ 184 + + 193 + + } +
+ 185 + + 194 + + }, +
+ 186 + + 195 + + "permissions": { +
+
+ + + + diff.expandLastBottomByLines + + + + + + diff.expandLastBottomComplete + +
+
+
+
+
+
+
+
+ + + src/test/java/com/cloudogu/scm/review/events/ClientTest.java + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + diff.expandComplete + +
+
+ 7 + + 7 + + import org.mockito.Mock; +
+ 8 + + 8 + + import org.mockito.junit.jupiter.MockitoExtension; +
+ 9 + + 9 + + import sonia.scm.security.SessionId; +
+ + 10 + + +
+ 10 + + 11 + + import javax.ws.rs.sse.OutboundSseEvent; +
+ 11 + + 12 + + import javax.ws.rs.sse.SseEventSink; +
+ 12 + + + +
+ 13 + + 13 + + import java.time.Clock; +
+ 14 + + 14 + + import java.time.Instant; +
+ 15 + + 15 + + import java.time.LocalDateTime; +
+ 16 + + 16 + + import java.time.ZoneOffset; +
+ 17 + + 17 + + import java.time.temporal.ChronoField; +
+ 18 + + + import java.time.temporal.ChronoUnit; +
+ 19 + + + import java.time.temporal.TemporalField; +
+ 20 + + 18 + + import java.util.concurrent.CompletableFuture; +
+ 21 + + 19 + + import java.util.concurrent.CompletionStage; +
+ 22 + + + import java.util.concurrent.atomic.AtomicLong; +
+ 23 + + 20 + + import java.util.concurrent.atomic.AtomicReference; +
+ 24 + + 21 + + +
+ 25 + + 22 + + import static java.time.temporal.ChronoUnit.MINUTES; +
+
+ + + + diff.expandByLines + + + + + + diff.expandComplete + +
+
+
+ + + + diff.expandByLines + + + + + + diff.expandComplete + +
+
+ 83 + + 80 + + +
+ 84 + + 81 + + @Test +
+ 85 + + 82 + + @SuppressWarnings("unchecked") +
+ 86 + + + void shouldCloseEventSinkOnFailure() throws InterruptedException { +
+ + 83 + + void shouldCloseEventSinkOnFailure() { +
+ 87 + + 84 + + CompletionStage future = CompletableFuture.supplyAsync(() -> { +
+ 88 + + 85 + + throw new RuntimeException("failed to send message"); +
+ 89 + + 86 + + }); +
+
+ + + + diff.expandComplete + +
+
+
+ + + + diff.expandComplete + +
+
+ 91 + + 88 + + +
+ 92 + + 89 + + client.send(message); +
+ 93 + + 90 + + +
+ 94 + + + Thread.sleep(50L); +
+ 95 + + + +
+ 96 + + + verify(eventSink).close(); +
+ + 91 + + verify(eventSink, timeout(50L)).close(); +
+ 97 + + 92 + + } +
+ 98 + + 93 + + +
+ 99 + + 94 + + @Test +
+
+ + + + diff.expandLastBottomByLines + + + + + + diff.expandLastBottomComplete + +
+
+
+
+
+
+
+
+ + + Main.java + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + 1 + + import java.io.PrintStream; +
+ 1 + + 2 + + import java.util.Arrays; +
+ 2 + + 3 + + +
+ 3 + + 4 + + class Main { +
+ + 5 + + private static final PrintStream OUT = System.out; +
+ + 6 + + +
+ 4 + + 7 + + public static void main(String[] args) { +
+ + 8 + + <<<<<<< HEAD +
+ 5 + + 9 + + System.out.println("Expect nothing more to happen."); +
+ 6 + + 10 + + System.out.println("The command line parameters are:"); +
+ 7 + + 11 + + Arrays.stream(args).map(arg -> "- " + arg).forEach(System.out::println); +
+ + 12 + + ======= +
+ + 13 + + OUT.println("Expect nothing more to happen."); +
+ + 14 + + OUT.println("Parameters:"); +
+ + 15 + + Arrays.stream(args).map(arg -> "- " + arg).forEach(OUT::println); +
+ + 16 + + >>>>>>> feature/use_constant +
+ 8 + + 17 + + } +
+ 9 + + 18 + + } +
+
+ + + + diff.expandLastBottomByLines + + + + + + diff.expandLastBottomComplete + +
+
+
+
+
+
+`; + +exports[`Storyshots Repositories/Diff File Annotation 1`] = ` +
+
+
+
+
+
+ + + src/main/java/com/cloudogu/scm/review/events/EventListener.java + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+

+ Custom File annotation for + src/main/java/com/cloudogu/scm/review/events/EventListener.java +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 1 + + 1 + + package com.cloudogu.scm.review.events; +
+ 2 + + 2 + + +
+ 3 + + + import com.cloudogu.scm.review.comment.service.BasicComment; +
+ 4 + + + import com.cloudogu.scm.review.comment.service.BasicCommentEvent; +
+ 5 + + + import com.cloudogu.scm.review.comment.service.CommentEvent; +
+ 6 + + + import com.cloudogu.scm.review.comment.service.ReplyEvent; +
+ 7 + + 3 + + import com.cloudogu.scm.review.pullrequest.service.BasicPullRequestEvent; +
+ 8 + + 4 + + import com.cloudogu.scm.review.pullrequest.service.PullRequest; +
+ 9 + + + import com.cloudogu.scm.review.pullrequest.service.PullRequestEvent; +
+ 10 + + 5 + + import com.github.legman.Subscribe; +
+ 11 + + + import lombok.Data; +
+ 12 + + 6 + + import org.apache.shiro.SecurityUtils; +
+ 13 + + 7 + + import org.apache.shiro.subject.PrincipalCollection; +
+ 14 + + 8 + + import org.apache.shiro.subject.Subject; +
+ 15 + + 9 + + import sonia.scm.EagerSingleton; +
+ 16 + + + import sonia.scm.HandlerEventType; +
+ 17 + + + import sonia.scm.event.HandlerEvent; +
+ 18 + + 10 + + import sonia.scm.plugin.Extension; +
+ 19 + + 11 + + import sonia.scm.repository.Repository; +
+ 20 + + 12 + + import sonia.scm.security.SessionId; +
+
+
+
+
+
+
+ + + src/main/js/ChangeNotification.tsx + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+

+ Custom File annotation for + src/main/js/ChangeNotification.tsx +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 2 + + 2 + + import { Link } from "@scm-manager/ui-types"; +
+ 3 + + 3 + + import { apiClient, Toast, ToastButtons, ToastButton } from "@scm-manager/ui-components"; +
+ 4 + + 4 + + import { PullRequest } from "./types/PullRequest"; +
+ + 5 + + import { useTranslation } from "react-i18next"; +
+ 5 + + 6 + + +
+ 6 + + 7 + + type HandlerProps = { +
+ 7 + + 8 + + url: string; +
+
+
+ 15 + + 16 + + pullRequest: setEvent +
+ 16 + + 17 + + }); +
+ 17 + + 18 + + }, [url]); +
+ + 19 + + const { t } = useTranslation("plugins"); +
+ 18 + + 20 + + if (event) { +
+ 19 + + 21 + + return ( +
+ 20 + + + <Toast type="warning" title="New Changes"> +
+ 21 + + + <p>The underlying Pull-Request has changed. Press reload to see the changes.</p> +
+ 22 + + + <p>Warning: Non saved modification will be lost.</p> +
+ + 22 + + <Toast type="warning" title={t("scm-review-plugin.changeNotification.title")}> +
+ + 23 + + <p>{t("scm-review-plugin.changeNotification.description")}</p> +
+ + 24 + + <p>{t("scm-review-plugin.changeNotification.modificationWarning")}</p> +
+ 23 + + 25 + + <ToastButtons> +
+ 24 + + + <ToastButton icon="redo" onClick={reload}>Reload</ToastButton> +
+ 25 + + + <ToastButton icon="times" onClick={() => setEvent(undefined)}>Ignore</ToastButton> +
+ + 26 + + <ToastButton icon="redo" onClick={reload}> +
+ + 27 + + {t("scm-review-plugin.changeNotification.buttons.reload")} +
+ + 28 + + </ToastButton> +
+ + 29 + + <ToastButton icon="times" onClick={() => setEvent(undefined)}> +
+ + 30 + + {t("scm-review-plugin.changeNotification.buttons.ignore")} +
+ + 31 + + </ToastButton> +
+ 26 + + 32 + + </ToastButtons> +
+ 27 + + 33 + + </Toast> +
+ 28 + + 34 + + ); +
+
+
+
+
+
+
+ + + src/main/resources/locales/de/plugins.json + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+

+ Custom File annotation for + src/main/resources/locales/de/plugins.json +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 181 + + 181 + + "titleClickable": "Der Kommentar bezieht sich auf eine ältere Version des Source- oder Target-Branches. Klicken Sie hier, um den ursprünglichen Kontext zu sehen." +
+ 182 + + 182 + + } +
+ 183 + + 183 + + } +
+ + 184 + + }, +
+ + 185 + + "changeNotification": { +
+ + 186 + + "title": "Neue Änderungen", +
+ + 187 + + "description": "An diesem Pull Request wurden Änderungen vorgenommen. Laden Sie die Seite neu um diese anzuzeigen.", +
+ + 188 + + "modificationWarning": "Warnung: Nicht gespeicherte Eingaben gehen verloren.", +
+ + 189 + + "buttons": { +
+ + 190 + + "reload": "Neu laden", +
+ + 191 + + "ignore": "Ignorieren" +
+ + 192 + + } +
+ 184 + + 193 + + } +
+ 185 + + 194 + + }, +
+ 186 + + 195 + + "permissions": { +
+
+
+
+
+
+
+ + + src/main/resources/locales/en/plugins.json + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+

+ Custom File annotation for + src/main/resources/locales/en/plugins.json +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 181 + + 181 + + "titleClickable": "The comment is related to an older of the source or target branch. Click here to see the original context." +
+ 182 + + 182 + + } +
+ 183 + + 183 + + } +
+ + 184 + + }, +
+ + 185 + + "changeNotification": { +
+ + 186 + + "title": "New Changes", +
+ + 187 + + "description": "The underlying Pull-Request has changed. Press reload to see the changes.", +
+ + 188 + + "modificationWarning": "Warning: Non saved modification will be lost.", +
+ + 189 + + "buttons": { +
+ + 190 + + "reload": "Reload", +
+ + 191 + + "ignore": "Ignore" +
+ + 192 + + } +
+ 184 + + 193 + + } +
+ 185 + + 194 + + }, +
+ 186 + + 195 + + "permissions": { +
+
+
+
+
+
+
+ + + src/test/java/com/cloudogu/scm/review/events/ClientTest.java + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+

+ Custom File annotation for + src/test/java/com/cloudogu/scm/review/events/ClientTest.java +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 7 + + 7 + + import org.mockito.Mock; +
+ 8 + + 8 + + import org.mockito.junit.jupiter.MockitoExtension; +
+ 9 + + 9 + + import sonia.scm.security.SessionId; +
+ + 10 + + +
+ 10 + + 11 + + import javax.ws.rs.sse.OutboundSseEvent; +
+ 11 + + 12 + + import javax.ws.rs.sse.SseEventSink; +
+ 12 + + + +
+ 13 + + 13 + + import java.time.Clock; +
+ 14 + + 14 + + import java.time.Instant; +
+ 15 + + 15 + + import java.time.LocalDateTime; +
+ 16 + + 16 + + import java.time.ZoneOffset; +
+ 17 + + 17 + + import java.time.temporal.ChronoField; +
+ 18 + + + import java.time.temporal.ChronoUnit; +
+ 19 + + + import java.time.temporal.TemporalField; +
+ 20 + + 18 + + import java.util.concurrent.CompletableFuture; +
+ 21 + + 19 + + import java.util.concurrent.CompletionStage; +
+ 22 + + + import java.util.concurrent.atomic.AtomicLong; +
+ 23 + + 20 + + import java.util.concurrent.atomic.AtomicReference; +
+ 24 + + 21 + + +
+ 25 + + 22 + + import static java.time.temporal.ChronoUnit.MINUTES; +
+
+
+ 83 + + 80 + + +
+ 84 + + 81 + + @Test +
+ 85 + + 82 + + @SuppressWarnings("unchecked") +
+ 86 + + + void shouldCloseEventSinkOnFailure() throws InterruptedException { +
+ + 83 + + void shouldCloseEventSinkOnFailure() { +
+ 87 + + 84 + + CompletionStage future = CompletableFuture.supplyAsync(() -> { +
+ 88 + + 85 + + throw new RuntimeException("failed to send message"); +
+ 89 + + 86 + + }); +
+
+
+ 91 + + 88 + + +
+ 92 + + 89 + + client.send(message); +
+ 93 + + 90 + + +
+ 94 + + + Thread.sleep(50L); +
+ 95 + + + +
+ 96 + + + verify(eventSink).close(); +
+ + 91 + + verify(eventSink, timeout(50L)).close(); +
+ 97 + + 92 + + } +
+ 98 + + 93 + + +
+ 99 + + 94 + + @Test +
+
+
+
+
+
+
+ + + Main.java + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+

+ Custom File annotation for + Main.java +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + 1 + + import java.io.PrintStream; +
+ 1 + + 2 + + import java.util.Arrays; +
+ 2 + + 3 + + +
+ 3 + + 4 + + class Main { +
+ + 5 + + private static final PrintStream OUT = System.out; +
+ + 6 + + +
+ 4 + + 7 + + public static void main(String[] args) { +
+ + 8 + + <<<<<<< HEAD +
+ 5 + + 9 + + System.out.println("Expect nothing more to happen."); +
+ 6 + + 10 + + System.out.println("The command line parameters are:"); +
+ 7 + + 11 + + Arrays.stream(args).map(arg -> "- " + arg).forEach(System.out::println); +
+ + 12 + + ======= +
+ + 13 + + OUT.println("Expect nothing more to happen."); +
+ + 14 + + OUT.println("Parameters:"); +
+ + 15 + + Arrays.stream(args).map(arg -> "- " + arg).forEach(OUT::println); +
+ + 16 + + >>>>>>> feature/use_constant +
+ 8 + + 17 + + } +
+ 9 + + 18 + + } +
+
+
+
+
+`; + +exports[`Storyshots Repositories/Diff File Controls 1`] = ` +
+
+
+
+
+
+ + + src/main/java/com/cloudogu/scm/review/events/EventListener.java + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 1 + + 1 + + package com.cloudogu.scm.review.events; +
+ 2 + + 2 + + +
+ 3 + + + import com.cloudogu.scm.review.comment.service.BasicComment; +
+ 4 + + + import com.cloudogu.scm.review.comment.service.BasicCommentEvent; +
+ 5 + + + import com.cloudogu.scm.review.comment.service.CommentEvent; +
+ 6 + + + import com.cloudogu.scm.review.comment.service.ReplyEvent; +
+ 7 + + 3 + + import com.cloudogu.scm.review.pullrequest.service.BasicPullRequestEvent; +
+ 8 + + 4 + + import com.cloudogu.scm.review.pullrequest.service.PullRequest; +
+ 9 + + + import com.cloudogu.scm.review.pullrequest.service.PullRequestEvent; +
+ 10 + + 5 + + import com.github.legman.Subscribe; +
+ 11 + + + import lombok.Data; +
+ 12 + + 6 + + import org.apache.shiro.SecurityUtils; +
+ 13 + + 7 + + import org.apache.shiro.subject.PrincipalCollection; +
+ 14 + + 8 + + import org.apache.shiro.subject.Subject; +
+ 15 + + 9 + + import sonia.scm.EagerSingleton; +
+ 16 + + + import sonia.scm.HandlerEventType; +
+ 17 + + + import sonia.scm.event.HandlerEvent; +
+ 18 + + 10 + + import sonia.scm.plugin.Extension; +
+ 19 + + 11 + + import sonia.scm.repository.Repository; +
+ 20 + + 12 + + import sonia.scm.security.SessionId; +
+
+
+
+
+
+
+ + + src/main/js/ChangeNotification.tsx + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 2 + + 2 + + import { Link } from "@scm-manager/ui-types"; +
+ 3 + + 3 + + import { apiClient, Toast, ToastButtons, ToastButton } from "@scm-manager/ui-components"; +
+ 4 + + 4 + + import { PullRequest } from "./types/PullRequest"; +
+ + 5 + + import { useTranslation } from "react-i18next"; +
+ 5 + + 6 + + +
+ 6 + + 7 + + type HandlerProps = { +
+ 7 + + 8 + + url: string; +
+
+
+ 15 + + 16 + + pullRequest: setEvent +
+ 16 + + 17 + + }); +
+ 17 + + 18 + + }, [url]); +
+ + 19 + + const { t } = useTranslation("plugins"); +
+ 18 + + 20 + + if (event) { +
+ 19 + + 21 + + return ( +
+ 20 + + + <Toast type="warning" title="New Changes"> +
+ 21 + + + <p>The underlying Pull-Request has changed. Press reload to see the changes.</p> +
+ 22 + + + <p>Warning: Non saved modification will be lost.</p> +
+ + 22 + + <Toast type="warning" title={t("scm-review-plugin.changeNotification.title")}> +
+ + 23 + + <p>{t("scm-review-plugin.changeNotification.description")}</p> +
+ + 24 + + <p>{t("scm-review-plugin.changeNotification.modificationWarning")}</p> +
+ 23 + + 25 + + <ToastButtons> +
+ 24 + + + <ToastButton icon="redo" onClick={reload}>Reload</ToastButton> +
+ 25 + + + <ToastButton icon="times" onClick={() => setEvent(undefined)}>Ignore</ToastButton> +
+ + 26 + + <ToastButton icon="redo" onClick={reload}> +
+ + 27 + + {t("scm-review-plugin.changeNotification.buttons.reload")} +
+ + 28 + + </ToastButton> +
+ + 29 + + <ToastButton icon="times" onClick={() => setEvent(undefined)}> +
+ + 30 + + {t("scm-review-plugin.changeNotification.buttons.ignore")} +
+ + 31 + + </ToastButton> +
+ 26 + + 32 + + </ToastButtons> +
+ 27 + + 33 + + </Toast> +
+ 28 + + 34 + + ); +
+
+
+
+
+
+
+ + + src/main/resources/locales/de/plugins.json + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 181 + + 181 + + "titleClickable": "Der Kommentar bezieht sich auf eine ältere Version des Source- oder Target-Branches. Klicken Sie hier, um den ursprünglichen Kontext zu sehen." +
+ 182 + + 182 + + } +
+ 183 + + 183 + + } +
+ + 184 + + }, +
+ + 185 + + "changeNotification": { +
+ + 186 + + "title": "Neue Änderungen", +
+ + 187 + + "description": "An diesem Pull Request wurden Änderungen vorgenommen. Laden Sie die Seite neu um diese anzuzeigen.", +
+ + 188 + + "modificationWarning": "Warnung: Nicht gespeicherte Eingaben gehen verloren.", +
+ + 189 + + "buttons": { +
+ + 190 + + "reload": "Neu laden", +
+ + 191 + + "ignore": "Ignorieren" +
+ + 192 + + } +
+ 184 + + 193 + + } +
+ 185 + + 194 + + }, +
+ 186 + + 195 + + "permissions": { +
+
+
+
+
+
+
+ + + src/main/resources/locales/en/plugins.json + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 181 + + 181 + + "titleClickable": "The comment is related to an older of the source or target branch. Click here to see the original context." +
+ 182 + + 182 + + } +
+ 183 + + 183 + + } +
+ + 184 + + }, +
+ + 185 + + "changeNotification": { +
+ + 186 + + "title": "New Changes", +
+ + 187 + + "description": "The underlying Pull-Request has changed. Press reload to see the changes.", +
+ + 188 + + "modificationWarning": "Warning: Non saved modification will be lost.", +
+ + 189 + + "buttons": { +
+ + 190 + + "reload": "Reload", +
+ + 191 + + "ignore": "Ignore" +
+ + 192 + + } +
+ 184 + + 193 + + } +
+ 185 + + 194 + + }, +
+ 186 + + 195 + + "permissions": { +
+
+
+
+
+
+
+ + + src/test/java/com/cloudogu/scm/review/events/ClientTest.java + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 7 + + 7 + + import org.mockito.Mock; +
+ 8 + + 8 + + import org.mockito.junit.jupiter.MockitoExtension; +
+ 9 + + 9 + + import sonia.scm.security.SessionId; +
+ + 10 + + +
+ 10 + + 11 + + import javax.ws.rs.sse.OutboundSseEvent; +
+ 11 + + 12 + + import javax.ws.rs.sse.SseEventSink; +
+ 12 + + + +
+ 13 + + 13 + + import java.time.Clock; +
+ 14 + + 14 + + import java.time.Instant; +
+ 15 + + 15 + + import java.time.LocalDateTime; +
+ 16 + + 16 + + import java.time.ZoneOffset; +
+ 17 + + 17 + + import java.time.temporal.ChronoField; +
+ 18 + + + import java.time.temporal.ChronoUnit; +
+ 19 + + + import java.time.temporal.TemporalField; +
+ 20 + + 18 + + import java.util.concurrent.CompletableFuture; +
+ 21 + + 19 + + import java.util.concurrent.CompletionStage; +
+ 22 + + + import java.util.concurrent.atomic.AtomicLong; +
+ 23 + + 20 + + import java.util.concurrent.atomic.AtomicReference; +
+ 24 + + 21 + + +
+ 25 + + 22 + + import static java.time.temporal.ChronoUnit.MINUTES; +
+
+
+ 83 + + 80 + + +
+ 84 + + 81 + + @Test +
+ 85 + + 82 + + @SuppressWarnings("unchecked") +
+ 86 + + + void shouldCloseEventSinkOnFailure() throws InterruptedException { +
+ + 83 + + void shouldCloseEventSinkOnFailure() { +
+ 87 + + 84 + + CompletionStage future = CompletableFuture.supplyAsync(() -> { +
+ 88 + + 85 + + throw new RuntimeException("failed to send message"); +
+ 89 + + 86 + + }); +
+
+
+ 91 + + 88 + + +
+ 92 + + 89 + + client.send(message); +
+ 93 + + 90 + + +
+ 94 + + + Thread.sleep(50L); +
+ 95 + + + +
+ 96 + + + verify(eventSink).close(); +
+ + 91 + + verify(eventSink, timeout(50L)).close(); +
+ 97 + + 92 + + } +
+ 98 + + 93 + + +
+ 99 + + 94 + + @Test +
+
+
+
+
+
+
+ + + Main.java + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + 1 + + import java.io.PrintStream; +
+ 1 + + 2 + + import java.util.Arrays; +
+ 2 + + 3 + + +
+ 3 + + 4 + + class Main { +
+ + 5 + + private static final PrintStream OUT = System.out; +
+ + 6 + + +
+ 4 + + 7 + + public static void main(String[] args) { +
+ + 8 + + <<<<<<< HEAD +
+ 5 + + 9 + + System.out.println("Expect nothing more to happen."); +
+ 6 + + 10 + + System.out.println("The command line parameters are:"); +
+ 7 + + 11 + + Arrays.stream(args).map(arg -> "- " + arg).forEach(System.out::println); +
+ + 12 + + ======= +
+ + 13 + + OUT.println("Expect nothing more to happen."); +
+ + 14 + + OUT.println("Parameters:"); +
+ + 15 + + Arrays.stream(args).map(arg -> "- " + arg).forEach(OUT::println); +
+ + 16 + + >>>>>>> feature/use_constant +
+ 8 + + 17 + + } +
+ 9 + + 18 + + } +
+
+
+
+
+`; + +exports[`Storyshots Repositories/Diff Hunks 1`] = ` +
+
+
+
+
+
+ + + src/main/java/com/cloudogu/scm/review/pullrequest/service/DefaultPullRequestService.java + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 25 + + 25 + + import java.util.Set; +
+ 26 + + 26 + + import java.util.stream.Collectors; +
+ 27 + + 27 + + +
+ + 28 + + import static com.cloudogu.scm.review.pullrequest.service.PullRequestApprovalEvent.ApprovalCause.APPROVAL_REMOVED; +
+ + 29 + + import static com.cloudogu.scm.review.pullrequest.service.PullRequestApprovalEvent.ApprovalCause.APPROVED; +
+ 28 + + 30 + + import static com.cloudogu.scm.review.pullrequest.service.PullRequestStatus.MERGED; +
+ 29 + + 31 + + import static com.cloudogu.scm.review.pullrequest.service.PullRequestStatus.OPEN; +
+ 30 + + 32 + + import static com.cloudogu.scm.review.pullrequest.service.PullRequestStatus.REJECTED; +
+
+
+ 200 + + 202 + + PullRequest pullRequest = getPullRequestFromStore(repository, pullRequestId); +
+ 201 + + 203 + + pullRequest.addApprover(user.getId()); +
+ 202 + + 204 + + getStore(repository).update(pullRequest); +
+ + 205 + + eventBus.post(new PullRequestApprovalEvent(repository, pullRequest, APPROVED)); +
+ 203 + + 206 + + } +
+ 204 + + 207 + + +
+ 205 + + 208 + + @Override +
+
+
+ 211 + + 214 + + approver.stream() +
+ 212 + + 215 + + .filter(recipient -> user.getId().equals(recipient)) +
+ 213 + + 216 + + .findFirst() +
+ 214 + + + .ifPresent(pullRequest::removeApprover); +
+ 215 + + + getStore(repository).update(pullRequest); +
+ + 217 + + .ifPresent( +
+ + 218 + + approval -> { +
+ + 219 + + pullRequest.removeApprover(approval); +
+ + 220 + + getStore(repository).update(pullRequest); +
+ + 221 + + eventBus.post(new PullRequestApprovalEvent(repository, pullRequest, APPROVAL_REMOVED)); +
+ + 222 + + }); +
+ 216 + + 223 + + } +
+ 217 + + 224 + + +
+ 218 + + 225 + + @Override +
+
+
+
+
+`; + +exports[`Storyshots Repositories/Diff Line Annotation 1`] = ` +
+
+
+
+
+
+ + + src/main/java/com/cloudogu/scm/review/events/EventListener.java + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 1 + + 1 + + package com.cloudogu.scm.review.events; +
+ 2 + + 2 + + +
+

+ Line Annotation +

+
+ 3 + + + import com.cloudogu.scm.review.comment.service.BasicComment; +
+ 4 + + + import com.cloudogu.scm.review.comment.service.BasicCommentEvent; +
+ 5 + + + import com.cloudogu.scm.review.comment.service.CommentEvent; +
+ 6 + + + import com.cloudogu.scm.review.comment.service.ReplyEvent; +
+ 7 + + 3 + + import com.cloudogu.scm.review.pullrequest.service.BasicPullRequestEvent; +
+ 8 + + 4 + + import com.cloudogu.scm.review.pullrequest.service.PullRequest; +
+ 9 + + + import com.cloudogu.scm.review.pullrequest.service.PullRequestEvent; +
+ 10 + + 5 + + import com.github.legman.Subscribe; +
+ 11 + + + import lombok.Data; +
+ 12 + + 6 + + import org.apache.shiro.SecurityUtils; +
+ 13 + + 7 + + import org.apache.shiro.subject.PrincipalCollection; +
+ 14 + + 8 + + import org.apache.shiro.subject.Subject; +
+ 15 + + 9 + + import sonia.scm.EagerSingleton; +
+ 16 + + + import sonia.scm.HandlerEventType; +
+ 17 + + + import sonia.scm.event.HandlerEvent; +
+ 18 + + 10 + + import sonia.scm.plugin.Extension; +
+ 19 + + 11 + + import sonia.scm.repository.Repository; +
+ 20 + + 12 + + import sonia.scm.security.SessionId; +
+
+
+
+
+
+
+ + + src/main/js/ChangeNotification.tsx + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 2 + + 2 + + import { Link } from "@scm-manager/ui-types"; +
+

+ Line Annotation +

+
+ 3 + + 3 + + import { apiClient, Toast, ToastButtons, ToastButton } from "@scm-manager/ui-components"; +
+ 4 + + 4 + + import { PullRequest } from "./types/PullRequest"; +
+ + 5 + + import { useTranslation } from "react-i18next"; +
+ 5 + + 6 + + +
+ 6 + + 7 + + type HandlerProps = { +
+ 7 + + 8 + + url: string; +
+
+
+ 15 + + 16 + + pullRequest: setEvent +
+ 16 + + 17 + + }); +
+ 17 + + 18 + + }, [url]); +
+ + 19 + + const { t } = useTranslation("plugins"); +
+ 18 + + 20 + + if (event) { +
+ 19 + + 21 + + return ( +
+ 20 + + + <Toast type="warning" title="New Changes"> +
+ 21 + + + <p>The underlying Pull-Request has changed. Press reload to see the changes.</p> +
+ 22 + + + <p>Warning: Non saved modification will be lost.</p> +
+ + 22 + + <Toast type="warning" title={t("scm-review-plugin.changeNotification.title")}> +
+ + 23 + + <p>{t("scm-review-plugin.changeNotification.description")}</p> +
+ + 24 + + <p>{t("scm-review-plugin.changeNotification.modificationWarning")}</p> +
+ 23 + + 25 + + <ToastButtons> +
+ 24 + + + <ToastButton icon="redo" onClick={reload}>Reload</ToastButton> +
+ 25 + + + <ToastButton icon="times" onClick={() => setEvent(undefined)}>Ignore</ToastButton> +
+ + 26 + + <ToastButton icon="redo" onClick={reload}> +
+ + 27 + + {t("scm-review-plugin.changeNotification.buttons.reload")} +
+ + 28 + + </ToastButton> +
+ + 29 + + <ToastButton icon="times" onClick={() => setEvent(undefined)}> +
+ + 30 + + {t("scm-review-plugin.changeNotification.buttons.ignore")} +
+ + 31 + + </ToastButton> +
+ 26 + + 32 + + </ToastButtons> +
+ 27 + + 33 + + </Toast> +
+ 28 + + 34 + + ); +
+
+
+
+
+
+
+ + + src/main/resources/locales/de/plugins.json + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 181 + + 181 + + "titleClickable": "Der Kommentar bezieht sich auf eine ältere Version des Source- oder Target-Branches. Klicken Sie hier, um den ursprünglichen Kontext zu sehen." +
+ 182 + + 182 + + } +
+ 183 + + 183 + + } +
+ + 184 + + }, +
+ + 185 + + "changeNotification": { +
+ + 186 + + "title": "Neue Änderungen", +
+ + 187 + + "description": "An diesem Pull Request wurden Änderungen vorgenommen. Laden Sie die Seite neu um diese anzuzeigen.", +
+ + 188 + + "modificationWarning": "Warnung: Nicht gespeicherte Eingaben gehen verloren.", +
+ + 189 + + "buttons": { +
+ + 190 + + "reload": "Neu laden", +
+ + 191 + + "ignore": "Ignorieren" +
+ + 192 + + } +
+ 184 + + 193 + + } +
+ 185 + + 194 + + }, +
+ 186 + + 195 + + "permissions": { +
+
+
+
+
+
+
+ + + src/main/resources/locales/en/plugins.json + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 181 + + 181 + + "titleClickable": "The comment is related to an older of the source or target branch. Click here to see the original context." +
+ 182 + + 182 + + } +
+ 183 + + 183 + + } +
+ + 184 + + }, +
+ + 185 + + "changeNotification": { +
+ + 186 + + "title": "New Changes", +
+ + 187 + + "description": "The underlying Pull-Request has changed. Press reload to see the changes.", +
+ + 188 + + "modificationWarning": "Warning: Non saved modification will be lost.", +
+ + 189 + + "buttons": { +
+ + 190 + + "reload": "Reload", +
+ + 191 + + "ignore": "Ignore" +
+ + 192 + + } +
+ 184 + + 193 + + } +
+ 185 + + 194 + + }, +
+ 186 + + 195 + + "permissions": { +
+
+
+
+
+
+
+ + + src/test/java/com/cloudogu/scm/review/events/ClientTest.java + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 7 + + 7 + + import org.mockito.Mock; +
+ 8 + + 8 + + import org.mockito.junit.jupiter.MockitoExtension; +
+ 9 + + 9 + + import sonia.scm.security.SessionId; +
+ + 10 + + +
+ 10 + + 11 + + import javax.ws.rs.sse.OutboundSseEvent; +
+ 11 + + 12 + + import javax.ws.rs.sse.SseEventSink; +
+ 12 + + + +
+ 13 + + 13 + + import java.time.Clock; +
+ 14 + + 14 + + import java.time.Instant; +
+ 15 + + 15 + + import java.time.LocalDateTime; +
+ 16 + + 16 + + import java.time.ZoneOffset; +
+ 17 + + 17 + + import java.time.temporal.ChronoField; +
+ 18 + + + import java.time.temporal.ChronoUnit; +
+ 19 + + + import java.time.temporal.TemporalField; +
+ 20 + + 18 + + import java.util.concurrent.CompletableFuture; +
+ 21 + + 19 + + import java.util.concurrent.CompletionStage; +
+ 22 + + + import java.util.concurrent.atomic.AtomicLong; +
+ 23 + + 20 + + import java.util.concurrent.atomic.AtomicReference; +
+ 24 + + 21 + + +
+ 25 + + 22 + + import static java.time.temporal.ChronoUnit.MINUTES; +
+
+
+ 83 + + 80 + + +
+ 84 + + 81 + + @Test +
+ 85 + + 82 + + @SuppressWarnings("unchecked") +
+ 86 + + + void shouldCloseEventSinkOnFailure() throws InterruptedException { +
+ + 83 + + void shouldCloseEventSinkOnFailure() { +
+ 87 + + 84 + + CompletionStage future = CompletableFuture.supplyAsync(() -> { +
+ 88 + + 85 + + throw new RuntimeException("failed to send message"); +
+ 89 + + 86 + + }); +
+
+
+ 91 + + 88 + + +
+ 92 + + 89 + + client.send(message); +
+ 93 + + 90 + + +
+ 94 + + + Thread.sleep(50L); +
+ 95 + + + +
+ 96 + + + verify(eventSink).close(); +
+ + 91 + + verify(eventSink, timeout(50L)).close(); +
+ 97 + + 92 + + } +
+ 98 + + 93 + + +
+ 99 + + 94 + + @Test +
+
+
+
+
+
+
+ + + Main.java + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + 1 + + import java.io.PrintStream; +
+ 1 + + 2 + + import java.util.Arrays; +
+ 2 + + 3 + + +
+

+ Line Annotation +

+
+ 3 + + 4 + + class Main { +
+ + 5 + + private static final PrintStream OUT = System.out; +
+ + 6 + + +
+ 4 + + 7 + + public static void main(String[] args) { +
+ + 8 + + <<<<<<< HEAD +
+ 5 + + 9 + + System.out.println("Expect nothing more to happen."); +
+ 6 + + 10 + + System.out.println("The command line parameters are:"); +
+ 7 + + 11 + + Arrays.stream(args).map(arg -> "- " + arg).forEach(System.out::println); +
+ + 12 + + ======= +
+ + 13 + + OUT.println("Expect nothing more to happen."); +
+ + 14 + + OUT.println("Parameters:"); +
+ + 15 + + Arrays.stream(args).map(arg -> "- " + arg).forEach(OUT::println); +
+ + 16 + + >>>>>>> feature/use_constant +
+ 8 + + 17 + + } +
+ 9 + + 18 + + } +
+
+
+
+
+`; + +exports[`Storyshots Repositories/Diff OnClick 1`] = ` +
+
+
+
+
+
+ + + src/main/java/com/cloudogu/scm/review/events/EventListener.java + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 1 + + 1 + + package com.cloudogu.scm.review.events; +
+ 2 + + 2 + + +
+ 3 + + + import com.cloudogu.scm.review.comment.service.BasicComment; +
+ 4 + + + import com.cloudogu.scm.review.comment.service.BasicCommentEvent; +
+ 5 + + + import com.cloudogu.scm.review.comment.service.CommentEvent; +
+ 6 + + + import com.cloudogu.scm.review.comment.service.ReplyEvent; +
+ 7 + + 3 + + import com.cloudogu.scm.review.pullrequest.service.BasicPullRequestEvent; +
+ 8 + + 4 + + import com.cloudogu.scm.review.pullrequest.service.PullRequest; +
+ 9 + + + import com.cloudogu.scm.review.pullrequest.service.PullRequestEvent; +
+ 10 + + 5 + + import com.github.legman.Subscribe; +
+ 11 + + + import lombok.Data; +
+ 12 + + 6 + + import org.apache.shiro.SecurityUtils; +
+ 13 + + 7 + + import org.apache.shiro.subject.PrincipalCollection; +
+ 14 + + 8 + + import org.apache.shiro.subject.Subject; +
+ 15 + + 9 + + import sonia.scm.EagerSingleton; +
+ 16 + + + import sonia.scm.HandlerEventType; +
+ 17 + + + import sonia.scm.event.HandlerEvent; +
+ 18 + + 10 + + import sonia.scm.plugin.Extension; +
+ 19 + + 11 + + import sonia.scm.repository.Repository; +
+ 20 + + 12 + + import sonia.scm.security.SessionId; +
+
+
+
+
+
+
+ + + src/main/js/ChangeNotification.tsx + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 2 + + 2 + + import { Link } from "@scm-manager/ui-types"; +
+ 3 + + 3 + + import { apiClient, Toast, ToastButtons, ToastButton } from "@scm-manager/ui-components"; +
+ 4 + + 4 + + import { PullRequest } from "./types/PullRequest"; +
+ + 5 + + import { useTranslation } from "react-i18next"; +
+ 5 + + 6 + + +
+ 6 + + 7 + + type HandlerProps = { +
+ 7 + + 8 + + url: string; +
+
+
+ 15 + + 16 + + pullRequest: setEvent +
+ 16 + + 17 + + }); +
+ 17 + + 18 + + }, [url]); +
+ + 19 + + const { t } = useTranslation("plugins"); +
+ 18 + + 20 + + if (event) { +
+ 19 + + 21 + + return ( +
+ 20 + + + <Toast type="warning" title="New Changes"> +
+ 21 + + + <p>The underlying Pull-Request has changed. Press reload to see the changes.</p> +
+ 22 + + + <p>Warning: Non saved modification will be lost.</p> +
+ + 22 + + <Toast type="warning" title={t("scm-review-plugin.changeNotification.title")}> +
+ + 23 + + <p>{t("scm-review-plugin.changeNotification.description")}</p> +
+ + 24 + + <p>{t("scm-review-plugin.changeNotification.modificationWarning")}</p> +
+ 23 + + 25 + + <ToastButtons> +
+ 24 + + + <ToastButton icon="redo" onClick={reload}>Reload</ToastButton> +
+ 25 + + + <ToastButton icon="times" onClick={() => setEvent(undefined)}>Ignore</ToastButton> +
+ + 26 + + <ToastButton icon="redo" onClick={reload}> +
+ + 27 + + {t("scm-review-plugin.changeNotification.buttons.reload")} +
+ + 28 + + </ToastButton> +
+ + 29 + + <ToastButton icon="times" onClick={() => setEvent(undefined)}> +
+ + 30 + + {t("scm-review-plugin.changeNotification.buttons.ignore")} +
+ + 31 + + </ToastButton> +
+ 26 + + 32 + + </ToastButtons> +
+ 27 + + 33 + + </Toast> +
+ 28 + + 34 + + ); +
+
+
+
+
+
+
+ + + src/main/resources/locales/de/plugins.json + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 181 + + 181 + + "titleClickable": "Der Kommentar bezieht sich auf eine ältere Version des Source- oder Target-Branches. Klicken Sie hier, um den ursprünglichen Kontext zu sehen." +
+ 182 + + 182 + + } +
+ 183 + + 183 + + } +
+ + 184 + + }, +
+ + 185 + + "changeNotification": { +
+ + 186 + + "title": "Neue Änderungen", +
+ + 187 + + "description": "An diesem Pull Request wurden Änderungen vorgenommen. Laden Sie die Seite neu um diese anzuzeigen.", +
+ + 188 + + "modificationWarning": "Warnung: Nicht gespeicherte Eingaben gehen verloren.", +
+ + 189 + + "buttons": { +
+ + 190 + + "reload": "Neu laden", +
+ + 191 + + "ignore": "Ignorieren" +
+ + 192 + + } +
+ 184 + + 193 + + } +
+ 185 + + 194 + + }, +
+ 186 + + 195 + + "permissions": { +
+
+
+
+
+
+
+ + + src/main/resources/locales/en/plugins.json + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 181 + + 181 + + "titleClickable": "The comment is related to an older of the source or target branch. Click here to see the original context." +
+ 182 + + 182 + + } +
+ 183 + + 183 + + } +
+ + 184 + + }, +
+ + 185 + + "changeNotification": { +
+ + 186 + + "title": "New Changes", +
+ + 187 + + "description": "The underlying Pull-Request has changed. Press reload to see the changes.", +
+ + 188 + + "modificationWarning": "Warning: Non saved modification will be lost.", +
+ + 189 + + "buttons": { +
+ + 190 + + "reload": "Reload", +
+ + 191 + + "ignore": "Ignore" +
+ + 192 + + } +
+ 184 + + 193 + + } +
+ 185 + + 194 + + }, +
+ 186 + + 195 + + "permissions": { +
+
+
+
+
+
+
+ + + src/test/java/com/cloudogu/scm/review/events/ClientTest.java + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 7 + + 7 + + import org.mockito.Mock; +
+ 8 + + 8 + + import org.mockito.junit.jupiter.MockitoExtension; +
+ 9 + + 9 + + import sonia.scm.security.SessionId; +
+ + 10 + + +
+ 10 + + 11 + + import javax.ws.rs.sse.OutboundSseEvent; +
+ 11 + + 12 + + import javax.ws.rs.sse.SseEventSink; +
+ 12 + + + +
+ 13 + + 13 + + import java.time.Clock; +
+ 14 + + 14 + + import java.time.Instant; +
+ 15 + + 15 + + import java.time.LocalDateTime; +
+ 16 + + 16 + + import java.time.ZoneOffset; +
+ 17 + + 17 + + import java.time.temporal.ChronoField; +
+ 18 + + + import java.time.temporal.ChronoUnit; +
+ 19 + + + import java.time.temporal.TemporalField; +
+ 20 + + 18 + + import java.util.concurrent.CompletableFuture; +
+ 21 + + 19 + + import java.util.concurrent.CompletionStage; +
+ 22 + + + import java.util.concurrent.atomic.AtomicLong; +
+ 23 + + 20 + + import java.util.concurrent.atomic.AtomicReference; +
+ 24 + + 21 + + +
+ 25 + + 22 + + import static java.time.temporal.ChronoUnit.MINUTES; +
+
+
+ 83 + + 80 + + +
+ 84 + + 81 + + @Test +
+ 85 + + 82 + + @SuppressWarnings("unchecked") +
+ 86 + + + void shouldCloseEventSinkOnFailure() throws InterruptedException { +
+ + 83 + + void shouldCloseEventSinkOnFailure() { +
+ 87 + + 84 + + CompletionStage future = CompletableFuture.supplyAsync(() -> { +
+ 88 + + 85 + + throw new RuntimeException("failed to send message"); +
+ 89 + + 86 + + }); +
+
+
+ 91 + + 88 + + +
+ 92 + + 89 + + client.send(message); +
+ 93 + + 90 + + +
+ 94 + + + Thread.sleep(50L); +
+ 95 + + + +
+ 96 + + + verify(eventSink).close(); +
+ + 91 + + verify(eventSink, timeout(50L)).close(); +
+ 97 + + 92 + + } +
+ 98 + + 93 + + +
+ 99 + + 94 + + @Test +
+
+
+
+
+
+
+ + + Main.java + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + 1 + + import java.io.PrintStream; +
+ 1 + + 2 + + import java.util.Arrays; +
+ 2 + + 3 + + +
+ 3 + + 4 + + class Main { +
+ + 5 + + private static final PrintStream OUT = System.out; +
+ + 6 + + +
+ 4 + + 7 + + public static void main(String[] args) { +
+ + 8 + + <<<<<<< HEAD +
+ 5 + + 9 + + System.out.println("Expect nothing more to happen."); +
+ 6 + + 10 + + System.out.println("The command line parameters are:"); +
+ 7 + + 11 + + Arrays.stream(args).map(arg -> "- " + arg).forEach(System.out::println); +
+ + 12 + + ======= +
+ + 13 + + OUT.println("Expect nothing more to happen."); +
+ + 14 + + OUT.println("Parameters:"); +
+ + 15 + + Arrays.stream(args).map(arg -> "- " + arg).forEach(OUT::println); +
+ + 16 + + >>>>>>> feature/use_constant +
+ 8 + + 17 + + } +
+ 9 + + 18 + + } +
+
+
+
+
+`; + +exports[`Storyshots Repositories/Diff Side-By-Side 1`] = ` +
+
+
+
+
+
+ + + src/main/java/com/cloudogu/scm/review/events/EventListener.java + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 1 + + package com.cloudogu.scm.review.events; + + 1 + + package com.cloudogu.scm.review.events; +
+ 2 + + + + 2 + + +
+ 3 + + import com.cloudogu.scm.review.comment.service.BasicComment; + + +
+ 4 + + import com.cloudogu.scm.review.comment.service.BasicCommentEvent; + + +
+ 5 + + import com.cloudogu.scm.review.comment.service.CommentEvent; + + +
+ 6 + + import com.cloudogu.scm.review.comment.service.ReplyEvent; + + +
+ 7 + + import com.cloudogu.scm.review.pullrequest.service.BasicPullRequestEvent; + + 3 + + import com.cloudogu.scm.review.pullrequest.service.BasicPullRequestEvent; +
+ 8 + + import com.cloudogu.scm.review.pullrequest.service.PullRequest; + + 4 + + import com.cloudogu.scm.review.pullrequest.service.PullRequest; +
+ 9 + + import com.cloudogu.scm.review.pullrequest.service.PullRequestEvent; + + +
+ 10 + + import com.github.legman.Subscribe; + + 5 + + import com.github.legman.Subscribe; +
+ 11 + + import lombok.Data; + + +
+ 12 + + import org.apache.shiro.SecurityUtils; + + 6 + + import org.apache.shiro.SecurityUtils; +
+ 13 + + import org.apache.shiro.subject.PrincipalCollection; + + 7 + + import org.apache.shiro.subject.PrincipalCollection; +
+ 14 + + import org.apache.shiro.subject.Subject; + + 8 + + import org.apache.shiro.subject.Subject; +
+ 15 + + import sonia.scm.EagerSingleton; + + 9 + + import sonia.scm.EagerSingleton; +
+ 16 + + import sonia.scm.HandlerEventType; + + +
+ 17 + + import sonia.scm.event.HandlerEvent; + + +
+ 18 + + import sonia.scm.plugin.Extension; + + 10 + + import sonia.scm.plugin.Extension; +
+ 19 + + import sonia.scm.repository.Repository; + + 11 + + import sonia.scm.repository.Repository; +
+ 20 + + import sonia.scm.security.SessionId; + + 12 + + import sonia.scm.security.SessionId; +
+
+
+
+
+
+
+ + + src/main/js/ChangeNotification.tsx + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 2 + + import { Link } from "@scm-manager/ui-types"; + + 2 + + import { Link } from "@scm-manager/ui-types"; +
+ 3 + + import { apiClient, Toast, ToastButtons, ToastButton } from "@scm-manager/ui-components"; + + 3 + + import { apiClient, Toast, ToastButtons, ToastButton } from "@scm-manager/ui-components"; +
+ 4 + + import { PullRequest } from "./types/PullRequest"; + + 4 + + import { PullRequest } from "./types/PullRequest"; +
+ + + 5 + + import { useTranslation } from "react-i18next"; +
+ 5 + + + + 6 + + +
+ 6 + + type HandlerProps = { + + 7 + + type HandlerProps = { +
+ 7 + + url: string; + + 8 + + url: string; +
+
+
+ 15 + + pullRequest: setEvent + + 16 + + pullRequest: setEvent +
+ 16 + + }); + + 17 + + }); +
+ 17 + + }, [url]); + + 18 + + }, [url]); +
+ + + 19 + + const { t } = useTranslation("plugins"); +
+ 18 + + if (event) { + + 20 + + if (event) { +
+ 19 + + return ( + + 21 + + return ( +
+ 20 + + <Toast type="warning" title="New Changes"> + + +
+ 21 + + <p>The underlying Pull-Request has changed. Press reload to see the changes.</p> + + +
+ 22 + + <p>Warning: Non saved modification will be lost.</p> + + 22 + + <Toast type="warning" title={t("scm-review-plugin.changeNotification.title")}> +
+ + + 23 + + <p>{t("scm-review-plugin.changeNotification.description")}</p> +
+ + + 24 + + <p>{t("scm-review-plugin.changeNotification.modificationWarning")}</p> +
+ 23 + + <ToastButtons> + + 25 + + <ToastButtons> +
+ 24 + + <ToastButton icon="redo" onClick={reload}>Reload</ToastButton> + + +
+ 25 + + <ToastButton icon="times" onClick={() => setEvent(undefined)}>Ignore</ToastButton> + + 26 + + <ToastButton icon="redo" onClick={reload}> +
+ + + 27 + + {t("scm-review-plugin.changeNotification.buttons.reload")} +
+ + + 28 + + </ToastButton> +
+ + + 29 + + <ToastButton icon="times" onClick={() => setEvent(undefined)}> +
+ + + 30 + + {t("scm-review-plugin.changeNotification.buttons.ignore")} +
+ + + 31 + + </ToastButton> +
+ 26 + + </ToastButtons> + + 32 + + </ToastButtons> +
+ 27 + + </Toast> + + 33 + + </Toast> +
+ 28 + + ); + + 34 + + ); +
+
+
+
+
+
+
+ + + src/main/resources/locales/de/plugins.json + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 181 + + "titleClickable": "Der Kommentar bezieht sich auf eine ältere Version des Source- oder Target-Branches. Klicken Sie hier, um den ursprünglichen Kontext zu sehen." + + 181 + + "titleClickable": "Der Kommentar bezieht sich auf eine ältere Version des Source- oder Target-Branches. Klicken Sie hier, um den ursprünglichen Kontext zu sehen." +
+ 182 + + } + + 182 + + } +
+ 183 + + } + + 183 + + } +
+ + + 184 + + }, +
+ + + 185 + + "changeNotification": { +
+ + + 186 + + "title": "Neue Änderungen", +
+ + + 187 + + "description": "An diesem Pull Request wurden Änderungen vorgenommen. Laden Sie die Seite neu um diese anzuzeigen.", +
+ + + 188 + + "modificationWarning": "Warnung: Nicht gespeicherte Eingaben gehen verloren.", +
+ + + 189 + + "buttons": { +
+ + + 190 + + "reload": "Neu laden", +
+ + + 191 + + "ignore": "Ignorieren" +
+ + + 192 + + } +
+ 184 + + } + + 193 + + } +
+ 185 + + }, + + 194 + + }, +
+ 186 + + "permissions": { + + 195 + + "permissions": { +
+
+
+
+
+
+
+ + + src/main/resources/locales/en/plugins.json + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 181 + + "titleClickable": "The comment is related to an older of the source or target branch. Click here to see the original context." + + 181 + + "titleClickable": "The comment is related to an older of the source or target branch. Click here to see the original context." +
+ 182 + + } + + 182 + + } +
+ 183 + + } + + 183 + + } +
+ + + 184 + + }, +
+ + + 185 + + "changeNotification": { +
+ + + 186 + + "title": "New Changes", +
+ + + 187 + + "description": "The underlying Pull-Request has changed. Press reload to see the changes.", +
+ + + 188 + + "modificationWarning": "Warning: Non saved modification will be lost.", +
+ + + 189 + + "buttons": { +
+ + + 190 + + "reload": "Reload", +
+ + + 191 + + "ignore": "Ignore" +
+ + + 192 + + } +
+ 184 + + } + + 193 + + } +
+ 185 + + }, + + 194 + + }, +
+ 186 + + "permissions": { + + 195 + + "permissions": { +
+
+
+
+
+
+
+ + + src/test/java/com/cloudogu/scm/review/events/ClientTest.java + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 7 + + import org.mockito.Mock; + + 7 + + import org.mockito.Mock; +
+ 8 + + import org.mockito.junit.jupiter.MockitoExtension; + + 8 + + import org.mockito.junit.jupiter.MockitoExtension; +
+ 9 + + import sonia.scm.security.SessionId; + + 9 + + import sonia.scm.security.SessionId; +
+ + + 10 + + +
+ 10 + + import javax.ws.rs.sse.OutboundSseEvent; + + 11 + + import javax.ws.rs.sse.OutboundSseEvent; +
+ 11 + + import javax.ws.rs.sse.SseEventSink; + + 12 + + import javax.ws.rs.sse.SseEventSink; +
+ 12 + + + + +
+ 13 + + import java.time.Clock; + + 13 + + import java.time.Clock; +
+ 14 + + import java.time.Instant; + + 14 + + import java.time.Instant; +
+ 15 + + import java.time.LocalDateTime; + + 15 + + import java.time.LocalDateTime; +
+ 16 + + import java.time.ZoneOffset; + + 16 + + import java.time.ZoneOffset; +
+ 17 + + import java.time.temporal.ChronoField; + + 17 + + import java.time.temporal.ChronoField; +
+ 18 + + import java.time.temporal.ChronoUnit; + + +
+ 19 + + import java.time.temporal.TemporalField; + + +
+ 20 + + import java.util.concurrent.CompletableFuture; + + 18 + + import java.util.concurrent.CompletableFuture; +
+ 21 + + import java.util.concurrent.CompletionStage; + + 19 + + import java.util.concurrent.CompletionStage; +
+ 22 + + import java.util.concurrent.atomic.AtomicLong; + + +
+ 23 + + import java.util.concurrent.atomic.AtomicReference; + + 20 + + import java.util.concurrent.atomic.AtomicReference; +
+ 24 + + + + 21 + + +
+ 25 + + import static java.time.temporal.ChronoUnit.MINUTES; + + 22 + + import static java.time.temporal.ChronoUnit.MINUTES; +
+
+
+ 83 + + + + 80 + + +
+ 84 + + @Test + + 81 + + @Test +
+ 85 + + @SuppressWarnings("unchecked") + + 82 + + @SuppressWarnings("unchecked") +
+ 86 + + void shouldCloseEventSinkOnFailure() throws InterruptedException { + + 83 + + void shouldCloseEventSinkOnFailure() { +
+ 87 + + CompletionStage future = CompletableFuture.supplyAsync(() -> { + + 84 + + CompletionStage future = CompletableFuture.supplyAsync(() -> { +
+ 88 + + throw new RuntimeException("failed to send message"); + + 85 + + throw new RuntimeException("failed to send message"); +
+ 89 + + }); + + 86 + + }); +
+
+
+ 91 + + + + 88 + + +
+ 92 + + client.send(message); + + 89 + + client.send(message); +
+ 93 + + + + 90 + + +
+ 94 + + Thread.sleep(50L); + + +
+ 95 + + + + +
+ 96 + + verify(eventSink).close(); + + 91 + + verify(eventSink, timeout(50L)).close(); +
+ 97 + + } + + 92 + + } +
+ 98 + + + + 93 + + +
+ 99 + + @Test + + 94 + + @Test +
+
+
+
+
+
+
+ + + Main.java + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + 1 + + import java.io.PrintStream; +
+ 1 + + import java.util.Arrays; + + 2 + + import java.util.Arrays; +
+ 2 + + + + 3 + + +
+ 3 + + class Main { + + 4 + + class Main { +
+ + + 5 + + private static final PrintStream OUT = System.out; +
+ + + 6 + + +
+ 4 + + public static void main(String[] args) { + + 7 + + public static void main(String[] args) { +
+ + + 8 + + <<<<<<< HEAD +
+ 5 + + System.out.println("Expect nothing more to happen."); + + 9 + + System.out.println("Expect nothing more to happen."); +
+ 6 + + System.out.println("The command line parameters are:"); + + 10 + + System.out.println("The command line parameters are:"); +
+ 7 + + Arrays.stream(args).map(arg -> "- " + arg).forEach(System.out::println); + + 11 + + Arrays.stream(args).map(arg -> "- " + arg).forEach(System.out::println); +
+ + + 12 + + ======= +
+ + + 13 + + OUT.println("Expect nothing more to happen."); +
+ + + 14 + + OUT.println("Parameters:"); +
+ + + 15 + + Arrays.stream(args).map(arg -> "- " + arg).forEach(OUT::println); +
+ + + 16 + + >>>>>>> feature/use_constant +
+ 8 + + } + + 17 + + } +
+ 9 + + } + + 18 + + } +
+
+
+
+
+`; + +exports[`Storyshots Repositories/Diff SyntaxHighlighting (Markdown) 1`] = ` +
+
+
+
+
+
+ + + CHANGELOG.md + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + diff.expandComplete + +
+
+ 5 + + 5 + + The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +
+ 6 + + 6 + + and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +
+ 7 + + 7 + + +
+ 8 + + + ## Unreleased +
+ + 8 + + ## [2.7.1] - 2020-10-14 +
+ 9 + + 9 + + ### Fixed +
+ 10 + + 10 + + - Null Pointer Exception on anonymous migration with deleted repositories ([#1371](https://github.com/scm-manager/scm-manager/pull/1371)) +
+ 11 + + 11 + + - Null Pointer Exception on parsing SVN properties ([#1373](https://github.com/scm-manager/scm-manager/pull/1373)) +
+
+ + + + diff.expandLastBottomByLines + + + + + + diff.expandLastBottomComplete + +
+
+
+
+
+
+`; + +exports[`Storyshots Repositories/Diff SyntaxHighlighting 1`] = ` +
+
+
+
+
+
+ + + src/main/java/com/cloudogu/scm/review/events/EventListener.java + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 1 + + 1 + + package com.cloudogu.scm.review.events; +
+ 2 + + 2 + + +
+ 3 + + + import com.cloudogu.scm.review.comment.service.BasicComment; +
+ 4 + + + import com.cloudogu.scm.review.comment.service.BasicCommentEvent; +
+ 5 + + + import com.cloudogu.scm.review.comment.service.CommentEvent; +
+ 6 + + + import com.cloudogu.scm.review.comment.service.ReplyEvent; +
+ 7 + + 3 + + import com.cloudogu.scm.review.pullrequest.service.BasicPullRequestEvent; +
+ 8 + + 4 + + import com.cloudogu.scm.review.pullrequest.service.PullRequest; +
+ 9 + + + import com.cloudogu.scm.review.pullrequest.service.PullRequestEvent; +
+ 10 + + 5 + + import com.github.legman.Subscribe; +
+ 11 + + + import lombok.Data; +
+ 12 + + 6 + + import org.apache.shiro.SecurityUtils; +
+ 13 + + 7 + + import org.apache.shiro.subject.PrincipalCollection; +
+ 14 + + 8 + + import org.apache.shiro.subject.Subject; +
+ 15 + + 9 + + import sonia.scm.EagerSingleton; +
+ 16 + + + import sonia.scm.HandlerEventType; +
+ 17 + + + import sonia.scm.event.HandlerEvent; +
+ 18 + + 10 + + import sonia.scm.plugin.Extension; +
+ 19 + + 11 + + import sonia.scm.repository.Repository; +
+ 20 + + 12 + + import sonia.scm.security.SessionId; +
+
+
+
+
+
+
+ + + src/main/js/ChangeNotification.tsx + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 2 + + 2 + + import { Link } from "@scm-manager/ui-types"; +
+ 3 + + 3 + + import { apiClient, Toast, ToastButtons, ToastButton } from "@scm-manager/ui-components"; +
+ 4 + + 4 + + import { PullRequest } from "./types/PullRequest"; +
+ + 5 + + import { useTranslation } from "react-i18next"; +
+ 5 + + 6 + + +
+ 6 + + 7 + + type HandlerProps = { +
+ 7 + + 8 + + url: string; +
+
+
+ 15 + + 16 + + pullRequest: setEvent +
+ 16 + + 17 + + }); +
+ 17 + + 18 + + }, [url]); +
+ + 19 + + const { t } = useTranslation("plugins"); +
+ 18 + + 20 + + if (event) { +
+ 19 + + 21 + + return ( +
+ 20 + + + <Toast type="warning" title="New Changes"> +
+ 21 + + + <p>The underlying Pull-Request has changed. Press reload to see the changes.</p> +
+ 22 + + + <p>Warning: Non saved modification will be lost.</p> +
+ + 22 + + <Toast type="warning" title={t("scm-review-plugin.changeNotification.title")}> +
+ + 23 + + <p>{t("scm-review-plugin.changeNotification.description")}</p> +
+ + 24 + + <p>{t("scm-review-plugin.changeNotification.modificationWarning")}</p> +
+ 23 + + 25 + + <ToastButtons> +
+ 24 + + + <ToastButton icon="redo" onClick={reload}>Reload</ToastButton> +
+ 25 + + + <ToastButton icon="times" onClick={() => setEvent(undefined)}>Ignore</ToastButton> +
+ + 26 + + <ToastButton icon="redo" onClick={reload}> +
+ + 27 + + {t("scm-review-plugin.changeNotification.buttons.reload")} +
+ + 28 + + </ToastButton> +
+ + 29 + + <ToastButton icon="times" onClick={() => setEvent(undefined)}> +
+ + 30 + + {t("scm-review-plugin.changeNotification.buttons.ignore")} +
+ + 31 + + </ToastButton> +
+ 26 + + 32 + + </ToastButtons> +
+ 27 + + 33 + + </Toast> +
+ 28 + + 34 + + ); +
+
+
+
+
+
+
+ + + src/main/resources/locales/de/plugins.json + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 181 + + 181 + + "titleClickable": "Der Kommentar bezieht sich auf eine ältere Version des Source- oder Target-Branches. Klicken Sie hier, um den ursprünglichen Kontext zu sehen." +
+ 182 + + 182 + + } +
+ 183 + + 183 + + } +
+ + 184 + + }, +
+ + 185 + + "changeNotification": { +
+ + 186 + + "title": "Neue Änderungen", +
+ + 187 + + "description": "An diesem Pull Request wurden Änderungen vorgenommen. Laden Sie die Seite neu um diese anzuzeigen.", +
+ + 188 + + "modificationWarning": "Warnung: Nicht gespeicherte Eingaben gehen verloren.", +
+ + 189 + + "buttons": { +
+ + 190 + + "reload": "Neu laden", +
+ + 191 + + "ignore": "Ignorieren" +
+ + 192 + + } +
+ 184 + + 193 + + } +
+ 185 + + 194 + + }, +
+ 186 + + 195 + + "permissions": { +
+
+
+
+
+
+
+ + + src/main/resources/locales/en/plugins.json + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 181 + + 181 + + "titleClickable": "The comment is related to an older of the source or target branch. Click here to see the original context." +
+ 182 + + 182 + + } +
+ 183 + + 183 + + } +
+ + 184 + + }, +
+ + 185 + + "changeNotification": { +
+ + 186 + + "title": "New Changes", +
+ + 187 + + "description": "The underlying Pull-Request has changed. Press reload to see the changes.", +
+ + 188 + + "modificationWarning": "Warning: Non saved modification will be lost.", +
+ + 189 + + "buttons": { +
+ + 190 + + "reload": "Reload", +
+ + 191 + + "ignore": "Ignore" +
+ + 192 + + } +
+ 184 + + 193 + + } +
+ 185 + + 194 + + }, +
+ 186 + + 195 + + "permissions": { +
+
+
+
+
+
+
+ + + src/test/java/com/cloudogu/scm/review/events/ClientTest.java + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 7 + + 7 + + import org.mockito.Mock; +
+ 8 + + 8 + + import org.mockito.junit.jupiter.MockitoExtension; +
+ 9 + + 9 + + import sonia.scm.security.SessionId; +
+ + 10 + + +
+ 10 + + 11 + + import javax.ws.rs.sse.OutboundSseEvent; +
+ 11 + + 12 + + import javax.ws.rs.sse.SseEventSink; +
+ 12 + + + +
+ 13 + + 13 + + import java.time.Clock; +
+ 14 + + 14 + + import java.time.Instant; +
+ 15 + + 15 + + import java.time.LocalDateTime; +
+ 16 + + 16 + + import java.time.ZoneOffset; +
+ 17 + + 17 + + import java.time.temporal.ChronoField; +
+ 18 + + + import java.time.temporal.ChronoUnit; +
+ 19 + + + import java.time.temporal.TemporalField; +
+ 20 + + 18 + + import java.util.concurrent.CompletableFuture; +
+ 21 + + 19 + + import java.util.concurrent.CompletionStage; +
+ 22 + + + import java.util.concurrent.atomic.AtomicLong; +
+ 23 + + 20 + + import java.util.concurrent.atomic.AtomicReference; +
+ 24 + + 21 + + +
+ 25 + + 22 + + import static java.time.temporal.ChronoUnit.MINUTES; +
+
+
+ 83 + + 80 + + +
+ 84 + + 81 + + @Test +
+ 85 + + 82 + + @SuppressWarnings("unchecked") +
+ 86 + + + void shouldCloseEventSinkOnFailure() throws InterruptedException { +
+ + 83 + + void shouldCloseEventSinkOnFailure() { +
+ 87 + + 84 + + CompletionStage future = CompletableFuture.supplyAsync(() -> { +
+ 88 + + 85 + + throw new RuntimeException("failed to send message"); +
+ 89 + + 86 + + }); +
+
+
+ 91 + + 88 + + +
+ 92 + + 89 + + client.send(message); +
+ 93 + + 90 + + +
+ 94 + + + Thread.sleep(50L); +
+ 95 + + + +
+ 96 + + + verify(eventSink).close(); +
+ + 91 + + verify(eventSink, timeout(50L)).close(); +
+ 97 + + 92 + + } +
+ 98 + + 93 + + +
+ 99 + + 94 + + @Test +
+
+
+
+
+
+
+ + + Main.java + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + 1 + + import java.io.PrintStream; +
+ 1 + + 2 + + import java.util.Arrays; +
+ 2 + + 3 + + +
+ 3 + + 4 + + class Main { +
+ + 5 + + private static final PrintStream OUT = System.out; +
+ + 6 + + +
+ 4 + + 7 + + public static void main(String[] args) { +
+ + 8 + + <<<<<<< HEAD +
+ 5 + + 9 + + System.out.println("Expect nothing more to happen."); +
+ 6 + + 10 + + System.out.println("The command line parameters are:"); +
+ 7 + + 11 + + Arrays.stream(args).map(arg -> "- " + arg).forEach(System.out::println); +
+ + 12 + + ======= +
+ + 13 + + OUT.println("Expect nothing more to happen."); +
+ + 14 + + OUT.println("Parameters:"); +
+ + 15 + + Arrays.stream(args).map(arg -> "- " + arg).forEach(OUT::println); +
+ + 16 + + >>>>>>> feature/use_constant +
+ 8 + + 17 + + } +
+ 9 + + 18 + + } +
+
+
+
+
+`; + +exports[`Storyshots Repositories/Diff WithLinkToFile 1`] = ` +
+
+
+
+
+
+ + + src/main/java/com/cloudogu/scm/review/events/EventListener.java + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ 1 + + 1 + + package com.cloudogu.scm.review.events; +
+ 2 + + 2 + + +
+ 3 + + + import com.cloudogu.scm.review.comment.service.BasicComment; +
+ 4 + + + import com.cloudogu.scm.review.comment.service.BasicCommentEvent; +
+ 5 + + + import com.cloudogu.scm.review.comment.service.CommentEvent; +
+ 6 + + + import com.cloudogu.scm.review.comment.service.ReplyEvent; +
+ 7 + + 3 + + import com.cloudogu.scm.review.pullrequest.service.BasicPullRequestEvent; +
+ 8 + + 4 + + import com.cloudogu.scm.review.pullrequest.service.PullRequest; +
+ 9 + + + import com.cloudogu.scm.review.pullrequest.service.PullRequestEvent; +
+ 10 + + 5 + + import com.github.legman.Subscribe; +
+ 11 + + + import lombok.Data; +
+ 12 + + 6 + + import org.apache.shiro.SecurityUtils; +
+ 13 + + 7 + + import org.apache.shiro.subject.PrincipalCollection; +
+ 14 + + 8 + + import org.apache.shiro.subject.Subject; +
+ 15 + + 9 + + import sonia.scm.EagerSingleton; +
+ 16 + + + import sonia.scm.HandlerEventType; +
+ 17 + + + import sonia.scm.event.HandlerEvent; +
+ 18 + + 10 + + import sonia.scm.plugin.Extension; +
+ 19 + + 11 + + import sonia.scm.repository.Repository; +
+ 20 + + 12 + + import sonia.scm.security.SessionId; +
+
+ + + + diff.expandLastBottomByLines + + + + + + diff.expandLastBottomComplete + +
+
+
+
+
+
+
+
+ + + src/main/js/ChangeNotification.tsx + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + diff.expandComplete + +
+
+ 2 + + 2 + + import { Link } from "@scm-manager/ui-types"; +
+ 3 + + 3 + + import { apiClient, Toast, ToastButtons, ToastButton } from "@scm-manager/ui-components"; +
+ 4 + + 4 + + import { PullRequest } from "./types/PullRequest"; +
+ + 5 + + import { useTranslation } from "react-i18next"; +
+ 5 + + 6 + + +
+ 6 + + 7 + + type HandlerProps = { +
+ 7 + + 8 + + url: string; +
+
+ + + + diff.expandComplete + +
+
+
+ + + + diff.expandComplete + +
+
+ 15 + + 16 + + pullRequest: setEvent +
+ 16 + + 17 + + }); +
+ 17 + + 18 + + }, [url]); +
+ + 19 + + const { t } = useTranslation("plugins"); +
+ 18 + + 20 + + if (event) { +
+ 19 + + 21 + + return ( +
+ 20 + + + <Toast type="warning" title="New Changes"> +
+ 21 + + + <p>The underlying Pull-Request has changed. Press reload to see the changes.</p> +
+ 22 + + + <p>Warning: Non saved modification will be lost.</p> +
+ + 22 + + <Toast type="warning" title={t("scm-review-plugin.changeNotification.title")}> +
+ + 23 + + <p>{t("scm-review-plugin.changeNotification.description")}</p> +
+ + 24 + + <p>{t("scm-review-plugin.changeNotification.modificationWarning")}</p> +
+ 23 + + 25 + + <ToastButtons> +
+ 24 + + + <ToastButton icon="redo" onClick={reload}>Reload</ToastButton> +
+ 25 + + + <ToastButton icon="times" onClick={() => setEvent(undefined)}>Ignore</ToastButton> +
+ + 26 + + <ToastButton icon="redo" onClick={reload}> +
+ + 27 + + {t("scm-review-plugin.changeNotification.buttons.reload")} +
+ + 28 + + </ToastButton> +
+ + 29 + + <ToastButton icon="times" onClick={() => setEvent(undefined)}> +
+ + 30 + + {t("scm-review-plugin.changeNotification.buttons.ignore")} +
+ + 31 + + </ToastButton> +
+ 26 + + 32 + + </ToastButtons> +
+ 27 + + 33 + + </Toast> +
+ 28 + + 34 + + ); +
+
+ + + + diff.expandLastBottomByLines + + + + + + diff.expandLastBottomComplete + +
+
+
+
+
+
+
+
+ + + src/main/resources/locales/de/plugins.json + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + diff.expandByLines + + + + + + diff.expandComplete + +
+
+ 181 + + 181 + + "titleClickable": "Der Kommentar bezieht sich auf eine ältere Version des Source- oder Target-Branches. Klicken Sie hier, um den ursprünglichen Kontext zu sehen." +
+ 182 + + 182 + + } +
+ 183 + + 183 + + } +
+ + 184 + + }, +
+ + 185 + + "changeNotification": { +
+ + 186 + + "title": "Neue Änderungen", +
+ + 187 + + "description": "An diesem Pull Request wurden Änderungen vorgenommen. Laden Sie die Seite neu um diese anzuzeigen.", +
+ + 188 + + "modificationWarning": "Warnung: Nicht gespeicherte Eingaben gehen verloren.", +
+ + 189 + + "buttons": { +
+ + 190 + + "reload": "Neu laden", +
+ + 191 + + "ignore": "Ignorieren" +
+ + 192 + + } +
+ 184 + + 193 + + } +
+ 185 + + 194 + + }, +
+ 186 + + 195 + + "permissions": { +
+
+ + + + diff.expandLastBottomByLines + + + + + + diff.expandLastBottomComplete + +
+
+
+
+
+
+
+
+ + + src/main/resources/locales/en/plugins.json + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + diff.expandByLines + + + + + + diff.expandComplete + +
+
+ 181 + + 181 + + "titleClickable": "The comment is related to an older of the source or target branch. Click here to see the original context." +
+ 182 + + 182 + + } +
+ 183 + + 183 + + } +
+ + 184 + + }, +
+ + 185 + + "changeNotification": { +
+ + 186 + + "title": "New Changes", +
+ + 187 + + "description": "The underlying Pull-Request has changed. Press reload to see the changes.", +
+ + 188 + + "modificationWarning": "Warning: Non saved modification will be lost.", +
+ + 189 + + "buttons": { +
+ + 190 + + "reload": "Reload", +
+ + 191 + + "ignore": "Ignore" +
+ + 192 + + } +
+ 184 + + 193 + + } +
+ 185 + + 194 + + }, +
+ 186 + + 195 + + "permissions": { +
+
+ + + + diff.expandLastBottomByLines + + + + + + diff.expandLastBottomComplete + +
+
+
+
+
+
+
+
+ + + src/test/java/com/cloudogu/scm/review/events/ClientTest.java + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+ + + + diff.expandComplete + +
+
+ 7 + + 7 + + import org.mockito.Mock; +
+ 8 + + 8 + + import org.mockito.junit.jupiter.MockitoExtension; +
+ 9 + + 9 + + import sonia.scm.security.SessionId; +
+ + 10 + + +
+ 10 + + 11 + + import javax.ws.rs.sse.OutboundSseEvent; +
+ 11 + + 12 + + import javax.ws.rs.sse.SseEventSink; +
+ 12 + + + +
+ 13 + + 13 + + import java.time.Clock; +
+ 14 + + 14 + + import java.time.Instant; +
+ 15 + + 15 + + import java.time.LocalDateTime; +
+ 16 + + 16 + + import java.time.ZoneOffset; +
+ 17 + + 17 + + import java.time.temporal.ChronoField; +
+ 18 + + + import java.time.temporal.ChronoUnit; +
+ 19 + + + import java.time.temporal.TemporalField; +
+ 20 + + 18 + + import java.util.concurrent.CompletableFuture; +
+ 21 + + 19 + + import java.util.concurrent.CompletionStage; +
+ 22 + + + import java.util.concurrent.atomic.AtomicLong; +
+ 23 + + 20 + + import java.util.concurrent.atomic.AtomicReference; +
+ 24 + + 21 + + +
+ 25 + + 22 + + import static java.time.temporal.ChronoUnit.MINUTES; +
+
+ + + + diff.expandByLines + + + + + + diff.expandComplete + +
+
+
+ + + + diff.expandByLines + + + + + + diff.expandComplete + +
+
+ 83 + + 80 + + +
+ 84 + + 81 + + @Test +
+ 85 + + 82 + + @SuppressWarnings("unchecked") +
+ 86 + + + void shouldCloseEventSinkOnFailure() throws InterruptedException { +
+ + 83 + + void shouldCloseEventSinkOnFailure() { +
+ 87 + + 84 + + CompletionStage future = CompletableFuture.supplyAsync(() -> { +
+ 88 + + 85 + + throw new RuntimeException("failed to send message"); +
+ 89 + + 86 + + }); +
+
+ + + + diff.expandComplete + +
+
+
+ + + + diff.expandComplete + +
+
+ 91 + + 88 + + +
+ 92 + + 89 + + client.send(message); +
+ 93 + + 90 + + +
+ 94 + + + Thread.sleep(50L); +
+ 95 + + + +
+ 96 + + + verify(eventSink).close(); +
+ + 91 + + verify(eventSink, timeout(50L)).close(); +
+ 97 + + 92 + + } +
+ 98 + + 93 + + +
+ 99 + + 94 + + @Test +
+
+ + + + diff.expandLastBottomByLines + + + + + + diff.expandLastBottomComplete + +
+
+
+
+
+
+
+
+ + + Main.java + + + modify + +
+
+
+
+ + + +
+
+ + + +
+
+
+
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + 1 + + import java.io.PrintStream; +
+ 1 + + 2 + + import java.util.Arrays; +
+ 2 + + 3 + + +
+ 3 + + 4 + + class Main { +
+ + 5 + + private static final PrintStream OUT = System.out; +
+ + 6 + + +
+ 4 + + 7 + + public static void main(String[] args) { +
+ + 8 + + <<<<<<< HEAD +
+ 5 + + 9 + + System.out.println("Expect nothing more to happen."); +
+ 6 + + 10 + + System.out.println("The command line parameters are:"); +
+ 7 + + 11 + + Arrays.stream(args).map(arg -> "- " + arg).forEach(System.out::println); +
+ + 12 + + ======= +
+ + 13 + + OUT.println("Expect nothing more to happen."); +
+ + 14 + + OUT.println("Parameters:"); +
+ + 15 + + Arrays.stream(args).map(arg -> "- " + arg).forEach(OUT::println); +
+ + 16 + + >>>>>>> feature/use_constant +
+ 8 + + 17 + + } +
+ 9 + + 18 + + } +
+
+ + + + diff.expandLastBottomByLines + + + + + + diff.expandLastBottomComplete + +
+
+
+
+
+
+`; + +exports[`Storyshots Repositories/RepositoryEntry Archived 1`] = `
@@ -74097,7 +73821,7 @@ exports[`Storyshots RepositoryEntry Archived 1`] = `
`; -exports[`Storyshots RepositoryEntry Avatar EP 1`] = ` +exports[`Storyshots Repositories/RepositoryEntry Avatar EP 1`] = `
@@ -74193,7 +73917,7 @@ exports[`Storyshots RepositoryEntry Avatar EP 1`] = `
`; -exports[`Storyshots RepositoryEntry Before Title EP 1`] = ` +exports[`Storyshots Repositories/RepositoryEntry Before Title EP 1`] = `
@@ -74292,7 +74016,7 @@ exports[`Storyshots RepositoryEntry Before Title EP 1`] = `
`; -exports[`Storyshots RepositoryEntry Default 1`] = ` +exports[`Storyshots Repositories/RepositoryEntry Default 1`] = `
@@ -74388,7 +74112,7 @@ exports[`Storyshots RepositoryEntry Default 1`] = `
`; -exports[`Storyshots RepositoryEntry Exporting 1`] = ` +exports[`Storyshots Repositories/RepositoryEntry Exporting 1`] = `
@@ -74495,7 +74219,7 @@ exports[`Storyshots RepositoryEntry Exporting 1`] = `
`; -exports[`Storyshots RepositoryEntry HealthCheck Failure 1`] = ` +exports[`Storyshots Repositories/RepositoryEntry HealthCheck Failure 1`] = `
@@ -74603,7 +74327,7 @@ exports[`Storyshots RepositoryEntry HealthCheck Failure 1`] = `
`; -exports[`Storyshots RepositoryEntry MultiRepositoryTags 1`] = ` +exports[`Storyshots Repositories/RepositoryEntry MultiRepositoryTags 1`] = `
@@ -74720,7 +74444,7 @@ exports[`Storyshots RepositoryEntry MultiRepositoryTags 1`] = `
`; -exports[`Storyshots RepositoryEntry RepositoryFlag EP 1`] = ` +exports[`Storyshots Repositories/RepositoryEntry RepositoryFlag EP 1`] = `
@@ -74828,7 +74552,7 @@ exports[`Storyshots RepositoryEntry RepositoryFlag EP 1`] = `
`; -exports[`Storyshots RepositoryEntry With long texts 1`] = ` +exports[`Storyshots Repositories/RepositoryEntry With long texts 1`] = `
@@ -74924,6 +74648,284 @@ exports[`Storyshots RepositoryEntry With long texts 1`] = `
`; +exports[`Storyshots Secondary Navigation Active when match 1`] = ` +
+
+ +
+
+`; + +exports[`Storyshots Secondary Navigation Default 1`] = ` +
+
+ +
+
+`; + +exports[`Storyshots Secondary Navigation Extension Point 1`] = ` +
+
+ +
+
+`; + +exports[`Storyshots Secondary Navigation Sub Navigation 1`] = ` +
+
+ +
+
+`; + exports[`Storyshots SplitAndReplace Simple replacement 1`] = ` Array [
@@ -75165,7 +75167,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#00a984", + "color": "var(--sh-keyword-color)", } } > @@ -75180,7 +75182,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -75228,7 +75230,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#005f9a", + "color": "var(--sh-selector-color)", } } > @@ -75276,7 +75278,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#005f9a", + "color": "var(--sh-selector-color)", } } > @@ -75324,7 +75326,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -75401,7 +75403,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#00a984", + "color": "var(--sh-keyword-color)", } } > @@ -75416,7 +75418,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#ff3860", + "color": "var(--sh-function-color)", } } > @@ -75426,7 +75428,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -75436,7 +75438,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -75451,7 +75453,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -75499,7 +75501,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -75509,7 +75511,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#ff3860", + "color": "var(--sh-function-color)", } } > @@ -75519,7 +75521,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -75529,7 +75531,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#005f9a", + "color": "var(--sh-selector-color)", } } > @@ -75539,7 +75541,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -75554,7 +75556,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#00a984", + "color": "var(--sh-keyword-color)", } } > @@ -75569,7 +75571,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -75584,7 +75586,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -75599,7 +75601,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -75614,7 +75616,8 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -75629,7 +75632,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -75644,7 +75647,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -75659,7 +75662,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -75707,7 +75710,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -75717,7 +75720,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#ff3860", + "color": "var(--sh-function-color)", } } > @@ -75727,7 +75730,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -75742,7 +75745,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -75757,7 +75760,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#005f9a", + "color": "var(--sh-selector-color)", } } > @@ -75767,7 +75770,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -75815,7 +75818,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -75825,7 +75828,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -75902,7 +75905,8 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -75917,7 +75921,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -75927,7 +75931,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#ff3860", + "color": "var(--sh-function-color)", } } > @@ -75937,7 +75941,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -75952,7 +75956,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -75962,7 +75966,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#ff3860", + "color": "var(--sh-function-color)", } } > @@ -75972,7 +75976,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -75982,7 +75986,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#005f9a", + "color": "var(--sh-selector-color)", } } > @@ -75992,7 +75996,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -76002,7 +76006,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -76050,7 +76054,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -76060,7 +76064,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#ff3860", + "color": "var(--sh-function-color)", } } > @@ -76070,7 +76074,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -76080,7 +76084,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#005f9a", + "color": "var(--sh-selector-color)", } } > @@ -76090,7 +76094,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -76105,7 +76109,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -76115,7 +76119,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#ff3860", + "color": "var(--sh-function-color)", } } > @@ -76125,7 +76129,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -76135,7 +76139,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#005f9a", + "color": "var(--sh-selector-color)", } } > @@ -76145,7 +76149,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -76160,7 +76164,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -76170,7 +76174,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -76247,7 +76251,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -76257,7 +76261,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#ff3860", + "color": "var(--sh-function-color)", } } > @@ -76267,7 +76271,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -76277,7 +76281,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#005f9a", + "color": "var(--sh-selector-color)", } } > @@ -76287,7 +76291,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -76302,7 +76306,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#2c99c7", + "color": "var(--sh-property-color)", } } > @@ -76312,7 +76316,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -76360,7 +76364,7 @@ exports[`Storyshots SyntaxHighlighter Go 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -76421,10 +76425,10 @@ exports[`Storyshots SyntaxHighlighter Java 1`] = ` "MozTabSize": "4", "OTabSize": "4", "WebkitHyphens": "none", - "background": "#ffffff", - "color": "#363636", + "background": "var(--sh-block-background)", + "color": "var(--sh-base-color)", "direction": "ltr", - "fontFamily": "Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace", + "fontFamily": "var(--sh-font-family)", "fontSize": "1rem", "hyphens": "none", "lineHeight": "1.5", @@ -76449,9 +76453,9 @@ exports[`Storyshots SyntaxHighlighter Java 1`] = ` "MozTabSize": "4", "OTabSize": "4", "WebkitHyphens": "none", - "color": "#363636", + "color": "var(--sh-base-color)", "direction": "ltr", - "fontFamily": "Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace", + "fontFamily": "var(--sh-font-family)", "fontSize": "1rem", "hyphens": "none", "lineHeight": "1.5", @@ -76515,10 +76519,10 @@ exports[`Storyshots SyntaxHighlighter Javascript 1`] = ` "MozTabSize": "4", "OTabSize": "4", "WebkitHyphens": "none", - "background": "#ffffff", - "color": "#363636", + "background": "var(--sh-block-background)", + "color": "var(--sh-base-color)", "direction": "ltr", - "fontFamily": "Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace", + "fontFamily": "var(--sh-font-family)", "fontSize": "1rem", "hyphens": "none", "lineHeight": "1.5", @@ -76543,9 +76547,9 @@ exports[`Storyshots SyntaxHighlighter Javascript 1`] = ` "MozTabSize": "4", "OTabSize": "4", "WebkitHyphens": "none", - "color": "#363636", + "color": "var(--sh-base-color)", "direction": "ltr", - "fontFamily": "Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace", + "fontFamily": "var(--sh-font-family)", "fontSize": "1rem", "hyphens": "none", "lineHeight": "1.5", @@ -76588,7 +76592,7 @@ exports[`Storyshots SyntaxHighlighter Javascript 1`] = ` className="token" style={ Object { - "color": "#00a984", + "color": "var(--sh-keyword-color)", } } > @@ -76603,7 +76607,8 @@ exports[`Storyshots SyntaxHighlighter Javascript 1`] = ` className="token" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -76618,7 +76623,7 @@ exports[`Storyshots SyntaxHighlighter Javascript 1`] = ` className="token" style={ Object { - "color": "#ff3860", + "color": "var(--sh-function-color)", } } > @@ -76628,7 +76633,7 @@ exports[`Storyshots SyntaxHighlighter Javascript 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -76638,7 +76643,7 @@ exports[`Storyshots SyntaxHighlighter Javascript 1`] = ` className="token" style={ Object { - "color": "#005f9a", + "color": "var(--sh-selector-color)", } } > @@ -76648,7 +76653,7 @@ exports[`Storyshots SyntaxHighlighter Javascript 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -76658,7 +76663,7 @@ exports[`Storyshots SyntaxHighlighter Javascript 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -76735,7 +76740,7 @@ exports[`Storyshots SyntaxHighlighter Javascript 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -76745,7 +76750,7 @@ exports[`Storyshots SyntaxHighlighter Javascript 1`] = ` className="token method property-access" style={ Object { - "color": "#ff3860", + "color": "var(--sh-function-color)", } } > @@ -76755,7 +76760,7 @@ exports[`Storyshots SyntaxHighlighter Javascript 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -76765,7 +76770,7 @@ exports[`Storyshots SyntaxHighlighter Javascript 1`] = ` className="token" style={ Object { - "color": "#00a984", + "color": "var(--sh-keyword-color)", } } > @@ -76780,7 +76785,7 @@ exports[`Storyshots SyntaxHighlighter Javascript 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -76796,7 +76801,7 @@ exports[`Storyshots SyntaxHighlighter Javascript 1`] = ` className="token parameter" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -76812,7 +76817,7 @@ exports[`Storyshots SyntaxHighlighter Javascript 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -76827,7 +76832,7 @@ exports[`Storyshots SyntaxHighlighter Javascript 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -76875,7 +76880,7 @@ exports[`Storyshots SyntaxHighlighter Javascript 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -76885,7 +76890,7 @@ exports[`Storyshots SyntaxHighlighter Javascript 1`] = ` className="token method property-access" style={ Object { - "color": "#ff3860", + "color": "var(--sh-function-color)", } } > @@ -76895,7 +76900,7 @@ exports[`Storyshots SyntaxHighlighter Javascript 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -76905,7 +76910,7 @@ exports[`Storyshots SyntaxHighlighter Javascript 1`] = ` className="token" style={ Object { - "color": "#2c99c7", + "color": "var(--sh-property-color)", } } > @@ -76915,7 +76920,7 @@ exports[`Storyshots SyntaxHighlighter Javascript 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -76930,7 +76935,7 @@ exports[`Storyshots SyntaxHighlighter Javascript 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -76940,7 +76945,7 @@ exports[`Storyshots SyntaxHighlighter Javascript 1`] = ` className="token" style={ Object { - "color": "#005f9a", + "color": "var(--sh-selector-color)", } } > @@ -76950,7 +76955,8 @@ exports[`Storyshots SyntaxHighlighter Javascript 1`] = ` className="token" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -76965,7 +76971,7 @@ exports[`Storyshots SyntaxHighlighter Javascript 1`] = ` className="token" style={ Object { - "color": "#005f9a", + "color": "var(--sh-selector-color)", } } > @@ -76975,7 +76981,7 @@ exports[`Storyshots SyntaxHighlighter Javascript 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -76985,7 +76991,7 @@ exports[`Storyshots SyntaxHighlighter Javascript 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -76995,7 +77001,7 @@ exports[`Storyshots SyntaxHighlighter Javascript 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -77043,7 +77049,7 @@ exports[`Storyshots SyntaxHighlighter Javascript 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -77053,7 +77059,7 @@ exports[`Storyshots SyntaxHighlighter Javascript 1`] = ` className="token method property-access" style={ Object { - "color": "#ff3860", + "color": "var(--sh-function-color)", } } > @@ -77063,7 +77069,7 @@ exports[`Storyshots SyntaxHighlighter Javascript 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -77073,7 +77079,7 @@ exports[`Storyshots SyntaxHighlighter Javascript 1`] = ` className="token" style={ Object { - "color": "#005f9a", + "color": "var(--sh-selector-color)", } } > @@ -77083,7 +77089,7 @@ exports[`Storyshots SyntaxHighlighter Javascript 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -77093,7 +77099,7 @@ exports[`Storyshots SyntaxHighlighter Javascript 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -77141,7 +77147,7 @@ exports[`Storyshots SyntaxHighlighter Javascript 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -77151,7 +77157,7 @@ exports[`Storyshots SyntaxHighlighter Javascript 1`] = ` className="token method property-access" style={ Object { - "color": "#ff3860", + "color": "var(--sh-function-color)", } } > @@ -77161,7 +77167,7 @@ exports[`Storyshots SyntaxHighlighter Javascript 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -77171,7 +77177,7 @@ exports[`Storyshots SyntaxHighlighter Javascript 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -77181,7 +77187,7 @@ exports[`Storyshots SyntaxHighlighter Javascript 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -77229,7 +77235,7 @@ exports[`Storyshots SyntaxHighlighter Javascript 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -77239,7 +77245,7 @@ exports[`Storyshots SyntaxHighlighter Javascript 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -77249,7 +77255,7 @@ exports[`Storyshots SyntaxHighlighter Javascript 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -77259,7 +77265,7 @@ exports[`Storyshots SyntaxHighlighter Javascript 1`] = ` className="token method property-access" style={ Object { - "color": "#ff3860", + "color": "var(--sh-function-color)", } } > @@ -77269,7 +77275,7 @@ exports[`Storyshots SyntaxHighlighter Javascript 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -77279,7 +77285,7 @@ exports[`Storyshots SyntaxHighlighter Javascript 1`] = ` className="token" style={ Object { - "color": "#2c99c7", + "color": "var(--sh-property-color)", } } > @@ -77289,7 +77295,7 @@ exports[`Storyshots SyntaxHighlighter Javascript 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -77299,7 +77305,7 @@ exports[`Storyshots SyntaxHighlighter Javascript 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -77360,10 +77366,10 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` "MozTabSize": "4", "OTabSize": "4", "WebkitHyphens": "none", - "background": "#ffffff", - "color": "#363636", + "background": "var(--sh-block-background)", + "color": "var(--sh-base-color)", "direction": "ltr", - "fontFamily": "Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace", + "fontFamily": "var(--sh-font-family)", "fontSize": "1rem", "hyphens": "none", "lineHeight": "1.5", @@ -77388,9 +77394,9 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` "MozTabSize": "4", "OTabSize": "4", "WebkitHyphens": "none", - "color": "#363636", + "color": "var(--sh-base-color)", "direction": "ltr", - "fontFamily": "Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace", + "fontFamily": "var(--sh-font-family)", "fontSize": "1rem", "hyphens": "none", "lineHeight": "1.5", @@ -77433,7 +77439,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", "fontWeight": "bold", } } @@ -77444,7 +77450,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#a74eb2", + "color": "var(--sh-variable-color)", "fontWeight": "bold", } } @@ -77522,7 +77528,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token list" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -77537,7 +77543,8 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -77547,7 +77554,8 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token content" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -77557,7 +77565,8 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -77605,7 +77614,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token list" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -77620,7 +77629,8 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -77630,7 +77640,8 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token content" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -77640,7 +77651,8 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -77688,7 +77700,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token list" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -77703,7 +77715,8 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -77713,7 +77726,8 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token content" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -77723,7 +77737,8 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -77771,7 +77786,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token list" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -77786,7 +77801,8 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -77796,7 +77812,8 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token content" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -77806,7 +77823,8 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -77854,7 +77872,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token list" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -77869,7 +77887,8 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -77879,7 +77898,8 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token content" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -77889,7 +77909,8 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -77937,7 +77958,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token list" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -77952,7 +77973,8 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -77962,7 +77984,8 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token content" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -77972,7 +77995,8 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -78020,7 +78044,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token list" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -78035,7 +78059,8 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -78045,7 +78070,8 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token content" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -78055,7 +78081,8 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -78103,7 +78130,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token list" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -78118,7 +78145,8 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -78128,7 +78156,8 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token content" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -78138,7 +78167,8 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -78215,7 +78245,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token hr" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -78292,7 +78322,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", "fontWeight": "bold", } } @@ -78303,7 +78333,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#a74eb2", + "color": "var(--sh-variable-color)", "fontWeight": "bold", } } @@ -78381,7 +78411,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", "fontWeight": "bold", } } @@ -78392,7 +78422,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#a74eb2", + "color": "var(--sh-variable-color)", "fontWeight": "bold", } } @@ -78528,7 +78558,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", "fontWeight": "bold", } } @@ -78539,7 +78569,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#a74eb2", + "color": "var(--sh-variable-color)", "fontWeight": "bold", } } @@ -78675,7 +78705,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", "fontWeight": "bold", } } @@ -78686,7 +78716,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#a74eb2", + "color": "var(--sh-variable-color)", "fontWeight": "bold", } } @@ -78822,7 +78852,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", "fontWeight": "bold", } } @@ -78833,7 +78863,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#a74eb2", + "color": "var(--sh-variable-color)", "fontWeight": "bold", } } @@ -78969,7 +78999,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", "fontWeight": "bold", } } @@ -78980,7 +79010,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#a74eb2", + "color": "var(--sh-variable-color)", "fontWeight": "bold", } } @@ -79116,7 +79146,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", "fontWeight": "bold", } } @@ -79127,7 +79157,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#a74eb2", + "color": "var(--sh-variable-color)", "fontWeight": "bold", } } @@ -79350,7 +79380,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", "fontWeight": "bold", } } @@ -79361,7 +79391,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#a74eb2", + "color": "var(--sh-variable-color)", "fontWeight": "bold", } } @@ -79671,7 +79701,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", "fontWeight": "bold", } } @@ -79682,7 +79712,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#a74eb2", + "color": "var(--sh-variable-color)", "fontWeight": "bold", } } @@ -79818,7 +79848,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token blockquote" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -79953,7 +79983,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token blockquote" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -80088,7 +80118,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token blockquote" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -80281,7 +80311,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", "fontWeight": "bold", } } @@ -80292,7 +80322,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#a74eb2", + "color": "var(--sh-variable-color)", "fontWeight": "bold", } } @@ -80370,7 +80400,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", "fontWeight": "bold", } } @@ -80381,7 +80411,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#a74eb2", + "color": "var(--sh-variable-color)", "fontWeight": "bold", } } @@ -80459,7 +80489,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token list" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -80507,7 +80537,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token list" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -80555,7 +80585,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token list" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -80632,7 +80662,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token list" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -80680,7 +80710,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token list" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -80728,7 +80758,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token list" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -80776,7 +80806,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token list" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -80824,7 +80854,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token list" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -80872,7 +80902,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token list" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -80920,7 +80950,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token list" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -80997,7 +81027,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", "fontWeight": "bold", } } @@ -81008,7 +81038,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#a74eb2", + "color": "var(--sh-variable-color)", "fontWeight": "bold", } } @@ -81086,7 +81116,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token list" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -81134,7 +81164,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token list" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -81182,7 +81212,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token list" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -81230,7 +81260,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token list" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -81278,7 +81308,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token list" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -81326,7 +81356,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token list" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -81374,7 +81404,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token list" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -81509,7 +81539,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", "fontWeight": "bold", } } @@ -81520,7 +81550,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#a74eb2", + "color": "var(--sh-variable-color)", "fontWeight": "bold", } } @@ -81656,7 +81686,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token hr" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -81849,7 +81879,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", "fontWeight": "bold", } } @@ -81860,7 +81890,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#a74eb2", + "color": "var(--sh-variable-color)", "fontWeight": "bold", } } @@ -81996,7 +82026,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token table table-header-row" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -82006,7 +82036,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token table table-header-row table-header" style={ Object { - "color": "#a74eb2", + "color": "var(--sh-variable-color)", "fontWeight": "bold", } } @@ -82017,7 +82047,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token table table-header-row" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -82027,7 +82057,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token table table-header-row table-header" style={ Object { - "color": "#a74eb2", + "color": "var(--sh-variable-color)", "fontWeight": "bold", } } @@ -82038,7 +82068,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token table table-header-row" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -82048,7 +82078,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token table table-header-row table-header" style={ Object { - "color": "#a74eb2", + "color": "var(--sh-variable-color)", "fontWeight": "bold", } } @@ -82059,7 +82089,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token table table-header-row" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -82069,7 +82099,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token table table-header-row table-header" style={ Object { - "color": "#a74eb2", + "color": "var(--sh-variable-color)", "fontWeight": "bold", } } @@ -82080,7 +82110,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token table table-header-row" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -82090,7 +82120,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token table table-header-row table-header" style={ Object { - "color": "#a74eb2", + "color": "var(--sh-variable-color)", "fontWeight": "bold", } } @@ -82101,7 +82131,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token table table-header-row" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -82151,7 +82181,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token table table-line" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -82167,7 +82197,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token table table-line" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -82183,7 +82213,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token table table-line" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -82199,7 +82229,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token table table-line" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -82215,7 +82245,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token table table-line" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -82231,7 +82261,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token table table-line" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -82247,7 +82277,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token table table-line" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -82263,7 +82293,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token table table-line" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -82279,7 +82309,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token table table-line" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -82295,7 +82325,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token table table-line" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -82311,7 +82341,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token table table-line" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -82361,7 +82391,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token table table-data-rows" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -82377,7 +82407,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token table table-data-rows" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -82393,7 +82423,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token table table-data-rows" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -82409,7 +82439,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token table table-data-rows" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -82425,7 +82455,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token table table-data-rows" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -82441,7 +82471,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token table table-data-rows" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -82491,7 +82521,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token table table-data-rows" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -82507,7 +82537,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token table table-data-rows" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -82523,7 +82553,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token table table-data-rows" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -82539,7 +82569,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token table table-data-rows" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -82555,7 +82585,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token table table-data-rows" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -82571,7 +82601,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token table table-data-rows" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -82621,7 +82651,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token table table-data-rows" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -82637,7 +82667,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token table table-data-rows" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -82653,7 +82683,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token table table-data-rows" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -82669,7 +82699,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token table table-data-rows" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -82685,7 +82715,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token table table-data-rows" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -82701,7 +82731,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token table table-data-rows" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -82751,7 +82781,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token table table-data-rows" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -82767,7 +82797,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token table table-data-rows" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -82783,7 +82813,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token table table-data-rows" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -82799,7 +82829,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token table table-data-rows" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -82815,7 +82845,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token table table-data-rows" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -82831,7 +82861,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token table table-data-rows" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -82881,7 +82911,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token table table-data-rows" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -82897,7 +82927,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token table table-data-rows" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -82913,7 +82943,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token table table-data-rows" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -82929,7 +82959,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token table table-data-rows" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -82945,7 +82975,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token table table-data-rows" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -82961,7 +82991,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token table table-data-rows" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -83165,7 +83195,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", "fontWeight": "bold", } } @@ -83176,7 +83206,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#a74eb2", + "color": "var(--sh-variable-color)", "fontWeight": "bold", } } @@ -83254,7 +83284,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", "fontWeight": "bold", } } @@ -83265,7 +83295,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#a74eb2", + "color": "var(--sh-variable-color)", "fontWeight": "bold", } } @@ -83343,7 +83373,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code" style={ Object { - "color": "#00a984", + "color": "var(--sh-keyword-color)", } } > @@ -83358,7 +83388,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code" style={ Object { - "color": "#00a984", + "color": "var(--sh-keyword-color)", } } > @@ -83435,7 +83465,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", "fontWeight": "bold", } } @@ -83446,7 +83476,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#a74eb2", + "color": "var(--sh-variable-color)", "fontWeight": "bold", } } @@ -83582,7 +83612,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -83638,7 +83668,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code code-block language-go" style={ Object { - "color": "#00a984", + "color": "var(--sh-keyword-color)", } } > @@ -83717,7 +83747,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code code-block language-go" style={ Object { - "color": "#00a984", + "color": "var(--sh-keyword-color)", } } > @@ -83733,7 +83763,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code code-block language-go" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -83783,7 +83813,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code code-block language-go" style={ Object { - "color": "#005f9a", + "color": "var(--sh-selector-color)", } } > @@ -83833,7 +83863,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code code-block language-go" style={ Object { - "color": "#005f9a", + "color": "var(--sh-selector-color)", } } > @@ -83883,7 +83913,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code code-block language-go" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -83962,7 +83992,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code code-block language-go" style={ Object { - "color": "#00a984", + "color": "var(--sh-keyword-color)", } } > @@ -83978,7 +84008,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code code-block language-go" style={ Object { - "color": "#ff3860", + "color": "var(--sh-function-color)", } } > @@ -83988,7 +84018,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code code-block language-go" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -84004,7 +84034,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code code-block language-go" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -84020,7 +84050,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code code-block language-go" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -84036,7 +84066,8 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code code-block language-go" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -84052,7 +84083,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code code-block language-go" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -84068,7 +84099,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code code-block language-go" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -84084,7 +84115,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code code-block language-go" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -84134,7 +84165,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code code-block language-go" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -84144,7 +84175,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code code-block language-go" style={ Object { - "color": "#ff3860", + "color": "var(--sh-function-color)", } } > @@ -84154,7 +84185,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code code-block language-go" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -84170,7 +84201,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code code-block language-go" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -84186,7 +84217,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code code-block language-go" style={ Object { - "color": "#005f9a", + "color": "var(--sh-selector-color)", } } > @@ -84196,7 +84227,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code code-block language-go" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -84212,7 +84243,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code code-block language-go" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -84228,7 +84259,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code code-block language-go" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -84244,7 +84275,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code code-block language-go" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -84254,7 +84285,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code code-block language-go" style={ Object { - "color": "#2c99c7", + "color": "var(--sh-property-color)", } } > @@ -84264,7 +84295,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code code-block language-go" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -84274,7 +84305,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code code-block language-go" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -84284,7 +84315,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code code-block language-go" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -84334,7 +84365,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code code-block language-go" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -84413,7 +84444,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code code-block language-go" style={ Object { - "color": "#00a984", + "color": "var(--sh-keyword-color)", } } > @@ -84429,7 +84460,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code code-block language-go" style={ Object { - "color": "#ff3860", + "color": "var(--sh-function-color)", } } > @@ -84439,7 +84470,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code code-block language-go" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -84449,7 +84480,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code code-block language-go" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -84465,7 +84496,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code code-block language-go" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -84515,7 +84546,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code code-block language-go" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -84525,7 +84556,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code code-block language-go" style={ Object { - "color": "#ff3860", + "color": "var(--sh-function-color)", } } > @@ -84535,7 +84566,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code code-block language-go" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -84545,7 +84576,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code code-block language-go" style={ Object { - "color": "#005f9a", + "color": "var(--sh-selector-color)", } } > @@ -84555,7 +84586,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code code-block language-go" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -84571,7 +84602,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code code-block language-go" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -84621,7 +84652,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code code-block language-go" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -84631,7 +84662,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code code-block language-go" style={ Object { - "color": "#ff3860", + "color": "var(--sh-function-color)", } } > @@ -84641,7 +84672,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code code-block language-go" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -84651,7 +84682,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code code-block language-go" style={ Object { - "color": "#005f9a", + "color": "var(--sh-selector-color)", } } > @@ -84661,7 +84692,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code code-block language-go" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -84677,7 +84708,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code code-block language-go" style={ Object { - "color": "#2c99c7", + "color": "var(--sh-property-color)", } } > @@ -84687,7 +84718,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code code-block language-go" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -84737,7 +84768,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code code-block language-go" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -84787,7 +84818,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -84980,7 +85011,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", "fontWeight": "bold", } } @@ -84991,7 +85022,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#a74eb2", + "color": "var(--sh-variable-color)", "fontWeight": "bold", } } @@ -85069,7 +85100,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", "fontWeight": "bold", } } @@ -85090,7 +85121,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", "fontWeight": "bold", } } @@ -85106,7 +85137,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", "fontWeight": "bold", } } @@ -85127,7 +85158,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", "fontWeight": "bold", } } @@ -85143,7 +85174,8 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -85153,7 +85185,8 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token content" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -85163,7 +85196,8 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -85178,7 +85212,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", "fontWeight": "bold", } } @@ -85199,7 +85233,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", "fontWeight": "bold", } } @@ -85277,7 +85311,8 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -85287,7 +85322,8 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token content" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -85297,7 +85333,8 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -85374,7 +85411,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", "fontStyle": "italic", } } @@ -85395,7 +85432,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", "fontStyle": "italic", } } @@ -85411,7 +85448,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token code" style={ Object { - "color": "#00a984", + "color": "var(--sh-keyword-color)", } } > @@ -85426,7 +85463,8 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -85436,7 +85474,8 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token content" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -85446,7 +85485,8 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -85523,7 +85563,8 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -85533,7 +85574,8 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token content" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -85543,7 +85585,8 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -85620,7 +85663,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", "fontStyle": "italic", } } @@ -85641,7 +85684,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token content" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", "fontStyle": "italic", "fontWeight": "bold", } @@ -85664,7 +85707,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token content" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", "fontStyle": "italic", "fontWeight": "bold", } @@ -85686,7 +85729,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", "fontStyle": "italic", } } @@ -85702,7 +85745,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", "fontWeight": "bold", } } @@ -85723,7 +85766,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token content" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", "fontStyle": "italic", "fontWeight": "bold", } @@ -85746,7 +85789,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token content" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", "fontStyle": "italic", "fontWeight": "bold", } @@ -85758,7 +85801,7 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", "fontWeight": "bold", } } @@ -85836,7 +85879,8 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -85846,7 +85890,8 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token content" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -85856,7 +85901,8 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -85933,7 +85979,8 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -85943,7 +85990,8 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token content" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -85953,7 +86001,8 @@ exports[`Storyshots SyntaxHighlighter Markdown 1`] = ` className="token" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -86014,10 +86063,10 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` "MozTabSize": "4", "OTabSize": "4", "WebkitHyphens": "none", - "background": "#ffffff", - "color": "#363636", + "background": "var(--sh-block-background)", + "color": "var(--sh-base-color)", "direction": "ltr", - "fontFamily": "Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace", + "fontFamily": "var(--sh-font-family)", "fontSize": "1rem", "hyphens": "none", "lineHeight": "1.5", @@ -86042,9 +86091,9 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` "MozTabSize": "4", "OTabSize": "4", "WebkitHyphens": "none", - "color": "#363636", + "color": "var(--sh-base-color)", "direction": "ltr", - "fontFamily": "Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace", + "fontFamily": "var(--sh-font-family)", "fontSize": "1rem", "hyphens": "none", "lineHeight": "1.5", @@ -86087,7 +86136,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#00a984", + "color": "var(--sh-keyword-color)", } } > @@ -86102,7 +86151,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#00a984", + "color": "var(--sh-keyword-color)", } } > @@ -86117,7 +86166,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -86194,7 +86243,8 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -86209,7 +86259,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#2c99c7", + "color": "var(--sh-property-color)", } } > @@ -86286,7 +86336,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#00a984", + "color": "var(--sh-keyword-color)", } } > @@ -86307,7 +86357,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -86322,7 +86372,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -86332,7 +86382,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -86409,7 +86459,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#00a984", + "color": "var(--sh-keyword-color)", } } > @@ -86424,7 +86474,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#ff3860", + "color": "var(--sh-function-color)", } } > @@ -86434,7 +86484,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -86449,7 +86499,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -86459,7 +86509,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -86507,7 +86557,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -86522,7 +86572,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -86532,7 +86582,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#2c99c7", + "color": "var(--sh-property-color)", } } > @@ -86542,7 +86592,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -86590,7 +86640,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -86605,7 +86655,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -86615,7 +86665,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#005f9a", + "color": "var(--sh-selector-color)", } } > @@ -86625,7 +86675,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -86635,7 +86685,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#005f9a", + "color": "var(--sh-selector-color)", } } > @@ -86645,7 +86695,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -86693,7 +86743,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -86708,7 +86758,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -86718,7 +86768,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -86766,7 +86816,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -86781,7 +86831,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -86796,7 +86846,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -86806,7 +86856,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#005f9a", + "color": "var(--sh-selector-color)", } } > @@ -86816,7 +86866,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -86864,7 +86914,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#00a984", + "color": "var(--sh-keyword-color)", } } > @@ -86941,7 +86991,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#00a984", + "color": "var(--sh-keyword-color)", } } > @@ -86951,7 +87001,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -86999,7 +87049,8 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -87014,7 +87065,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -87024,7 +87075,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -87034,7 +87085,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#005f9a", + "color": "var(--sh-selector-color)", } } > @@ -87044,7 +87095,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -87059,7 +87110,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -87069,7 +87120,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -87084,7 +87135,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -87132,7 +87183,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#00a984", + "color": "var(--sh-keyword-color)", } } > @@ -87147,7 +87198,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#005f9a", + "color": "var(--sh-selector-color)", } } > @@ -87162,7 +87213,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -87210,7 +87261,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -87225,7 +87276,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -87235,7 +87286,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -87283,7 +87334,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#00a984", + "color": "var(--sh-keyword-color)", } } > @@ -87298,7 +87349,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -87346,7 +87397,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#00a984", + "color": "var(--sh-keyword-color)", } } > @@ -87361,7 +87412,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#005f9a", + "color": "var(--sh-selector-color)", } } > @@ -87409,7 +87460,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -87424,7 +87475,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -87439,7 +87490,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -87449,7 +87500,7 @@ exports[`Storyshots SyntaxHighlighter Python 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -87510,10 +87561,10 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` "MozTabSize": "4", "OTabSize": "4", "WebkitHyphens": "none", - "background": "#ffffff", - "color": "#363636", + "background": "var(--sh-block-background)", + "color": "var(--sh-base-color)", "direction": "ltr", - "fontFamily": "Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace", + "fontFamily": "var(--sh-font-family)", "fontSize": "1rem", "hyphens": "none", "lineHeight": "1.5", @@ -87538,9 +87589,9 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` "MozTabSize": "4", "OTabSize": "4", "WebkitHyphens": "none", - "color": "#363636", + "color": "var(--sh-base-color)", "direction": "ltr", - "fontFamily": "Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace", + "fontFamily": "var(--sh-font-family)", "fontSize": "1rem", "hyphens": "none", "lineHeight": "1.5", @@ -87565,7 +87616,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#00a984", + "color": "var(--sh-keyword-color)", } } > @@ -87586,7 +87637,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -87602,7 +87653,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -87643,7 +87694,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#00a984", + "color": "var(--sh-keyword-color)", } } > @@ -87664,7 +87715,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -87680,7 +87731,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -87696,7 +87747,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -87726,7 +87777,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#00a984", + "color": "var(--sh-keyword-color)", } } > @@ -87747,7 +87798,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -87763,7 +87814,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -87779,7 +87830,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -87809,7 +87860,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#00a984", + "color": "var(--sh-keyword-color)", } } > @@ -87830,7 +87881,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -87846,7 +87897,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -87862,7 +87913,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -87903,7 +87954,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#00a984", + "color": "var(--sh-keyword-color)", } } > @@ -87924,7 +87975,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -87940,7 +87991,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -87956,7 +88007,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -87972,7 +88023,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -87988,7 +88039,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -88018,7 +88069,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#00a984", + "color": "var(--sh-keyword-color)", } } > @@ -88039,7 +88090,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -88055,7 +88106,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -88071,7 +88122,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -88087,7 +88138,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -88103,7 +88154,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -88133,7 +88184,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#00a984", + "color": "var(--sh-keyword-color)", } } > @@ -88154,7 +88205,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -88170,7 +88221,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -88186,7 +88237,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -88202,7 +88253,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -88218,7 +88269,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -88259,7 +88310,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#00a984", + "color": "var(--sh-keyword-color)", } } > @@ -88274,7 +88325,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#00a984", + "color": "var(--sh-keyword-color)", } } > @@ -88300,7 +88351,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -88341,7 +88392,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#00a984", + "color": "var(--sh-keyword-color)", } } > @@ -88356,7 +88407,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#00a984", + "color": "var(--sh-keyword-color)", } } > @@ -88371,7 +88422,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#00a984", + "color": "var(--sh-keyword-color)", } } > @@ -88386,7 +88437,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#ff3860", + "color": "var(--sh-function-color)", } } > @@ -88396,7 +88447,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -88412,7 +88463,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -88422,7 +88473,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -88437,7 +88488,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -88452,7 +88503,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#00a984", + "color": "var(--sh-keyword-color)", } } > @@ -88478,7 +88529,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -88519,7 +88570,8 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -88540,7 +88592,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -88550,7 +88602,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#ff3860", + "color": "var(--sh-function-color)", } } > @@ -88560,7 +88612,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -88570,7 +88622,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#00a984", + "color": "var(--sh-keyword-color)", } } > @@ -88591,7 +88643,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -88601,7 +88653,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#2c99c7", + "color": "var(--sh-property-color)", } } > @@ -88611,7 +88663,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -88621,7 +88673,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -88636,7 +88688,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#2c99c7", + "color": "var(--sh-property-color)", } } > @@ -88646,7 +88698,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -88656,7 +88708,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -88686,7 +88738,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -88696,7 +88748,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#ff3860", + "color": "var(--sh-function-color)", } } > @@ -88706,7 +88758,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -88716,7 +88768,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#005f9a", + "color": "var(--sh-selector-color)", } } > @@ -88726,7 +88778,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -88741,7 +88793,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#00a984", + "color": "var(--sh-keyword-color)", } } > @@ -88762,7 +88814,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -88772,7 +88824,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -88782,7 +88834,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -88792,7 +88844,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -88822,7 +88874,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -88832,7 +88884,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#ff3860", + "color": "var(--sh-function-color)", } } > @@ -88842,7 +88894,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -88852,7 +88904,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#00a984", + "color": "var(--sh-keyword-color)", } } > @@ -88862,7 +88914,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -88872,7 +88924,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -88887,7 +88939,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-comment-color)", } } > @@ -88917,7 +88969,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -88927,7 +88979,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#ff3860", + "color": "var(--sh-function-color)", } } > @@ -88937,7 +88989,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -88947,7 +88999,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -88957,7 +89009,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -88987,7 +89039,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -89028,7 +89080,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#00a984", + "color": "var(--sh-keyword-color)", } } > @@ -89043,7 +89095,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#00a984", + "color": "var(--sh-keyword-color)", } } > @@ -89069,7 +89121,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#00a984", + "color": "var(--sh-keyword-color)", } } > @@ -89095,7 +89147,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -89125,7 +89177,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token annotation" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -89155,7 +89207,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#00a984", + "color": "var(--sh-keyword-color)", } } > @@ -89170,7 +89222,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#00a984", + "color": "var(--sh-keyword-color)", } } > @@ -89185,7 +89237,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#ff3860", + "color": "var(--sh-function-color)", } } > @@ -89195,7 +89247,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -89216,7 +89268,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -89231,7 +89283,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#00a984", + "color": "var(--sh-keyword-color)", } } > @@ -89257,7 +89309,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -89298,7 +89350,8 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -89313,7 +89366,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#005f9a", + "color": "var(--sh-selector-color)", } } > @@ -89323,7 +89376,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -89353,7 +89406,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -89363,7 +89416,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#ff3860", + "color": "var(--sh-function-color)", } } > @@ -89373,7 +89426,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -89383,7 +89436,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#2c99c7", + "color": "var(--sh-property-color)", } } > @@ -89393,7 +89446,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -89408,7 +89461,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -89418,7 +89471,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#ff3860", + "color": "var(--sh-function-color)", } } > @@ -89428,7 +89481,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -89438,7 +89491,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -89448,7 +89501,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -89458,7 +89511,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -89499,7 +89552,8 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#686868", + "background": "var(--sh-operator-bg)", + "color": "var(--sh-operator-color)", } } > @@ -89514,7 +89568,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -89524,7 +89578,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#ff3860", + "color": "var(--sh-function-color)", } } > @@ -89534,7 +89588,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -89544,7 +89598,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -89554,7 +89608,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -89584,7 +89638,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -89594,7 +89648,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#ff3860", + "color": "var(--sh-function-color)", } } > @@ -89604,7 +89658,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -89619,7 +89673,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -89629,7 +89683,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#ff3860", + "color": "var(--sh-function-color)", } } > @@ -89639,7 +89693,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -89649,7 +89703,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -89659,7 +89713,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -89669,7 +89723,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -89699,7 +89753,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -89709,7 +89763,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#ff3860", + "color": "var(--sh-function-color)", } } > @@ -89719,7 +89773,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -89729,7 +89783,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -89739,7 +89793,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -89769,7 +89823,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -89799,7 +89853,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -89840,7 +89894,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = ` className="token" style={ Object { - "color": "#9a9a9a", + "color": "var(--sh-punctuation-color)", } } > @@ -89871,7 +89925,7 @@ exports[`Storyshots SyntaxHighlighter Without line numbers 1`] = `
`; -exports[`Storyshots Table|Table Default 1`] = ` +exports[`Storyshots Table Default 1`] = ` @@ -89956,7 +90010,7 @@ exports[`Storyshots Table|Table Default 1`] = `
`; -exports[`Storyshots Table|Table Empty 1`] = ` +exports[`Storyshots Table Empty 1`] = `
@@ -89964,7 +90018,7 @@ exports[`Storyshots Table|Table Empty 1`] = `
`; -exports[`Storyshots Table|Table Table with Word-Break 1`] = ` +exports[`Storyshots Table Table with Word-Break 1`] = ` @@ -90021,7 +90075,7 @@ exports[`Storyshots Table|Table Table with Word-Break 1`] = `
`; -exports[`Storyshots Table|Table TextColumn 1`] = ` +exports[`Storyshots Table TextColumn 1`] = ` diff --git a/scm-ui/ui-components/src/buttons/index.stories.tsx b/scm-ui/ui-components/src/buttons/index.stories.tsx index 4ce67b030e..b5366ef06b 100644 --- a/scm-ui/ui-components/src/buttons/index.stories.tsx +++ b/scm-ui/ui-components/src/buttons/index.stories.tsx @@ -21,7 +21,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -import React, { ReactNode } from "react"; +import React, { ReactElement, ReactNode } from "react"; import Button from "./Button"; import { storiesOf } from "@storybook/react"; import styled from "styled-components"; @@ -31,7 +31,6 @@ import DeleteButton from "./DeleteButton"; import DownloadButton from "./DownloadButton"; import EditButton from "./EditButton"; import SubmitButton from "./SubmitButton"; -import { ReactElement } from "react"; import { MemoryRouter } from "react-router-dom"; const colors = ["primary", "link", "info", "success", "warning", "danger", "white", "light", "dark", "black", "text"]; @@ -43,7 +42,7 @@ const Spacing = styled.div` const SpacingDecorator = (story: () => ReactNode) => {story()}; const RoutingDecorator = (story: () => ReactNode) => {story()}; -storiesOf("Buttons|Button", module) +storiesOf("Buttons/Button", module) .addDecorator(RoutingDecorator) .add("Colors", () => (
@@ -72,7 +71,7 @@ storiesOf("Buttons|Button", module) )); const buttonStory = (name: string, storyFn: () => ReactElement) => { - return storiesOf("Buttons|" + name, module) + return storiesOf("Buttons/" + name, module) .addDecorator(RoutingDecorator) .addDecorator(SpacingDecorator) .add("Default", storyFn); diff --git a/scm-ui/ui-components/src/forms/AddKeyValueEntryToTableField.stories.tsx b/scm-ui/ui-components/src/forms/AddKeyValueEntryToTableField.stories.tsx index 7b68bb587f..3b8e396491 100644 --- a/scm-ui/ui-components/src/forms/AddKeyValueEntryToTableField.stories.tsx +++ b/scm-ui/ui-components/src/forms/AddKeyValueEntryToTableField.stories.tsx @@ -26,7 +26,7 @@ import { MemoryRouter } from "react-router-dom"; import { storiesOf } from "@storybook/react"; import AddKeyValueEntryToTableField from "./AddKeyValueEntryToTableField"; -storiesOf("Forms|AddKeyValueEntryToTableField", module) +storiesOf("Forms/AddKeyValueEntryToTableField", module) .addDecorator((story) => {story()}) .add("Default", () => (
diff --git a/scm-ui/ui-components/src/forms/Checkbox.stories.tsx b/scm-ui/ui-components/src/forms/Checkbox.stories.tsx index 202f609c3c..f61b374c85 100644 --- a/scm-ui/ui-components/src/forms/Checkbox.stories.tsx +++ b/scm-ui/ui-components/src/forms/Checkbox.stories.tsx @@ -105,7 +105,7 @@ const LegacyEvents: FC = () => { ); }; -storiesOf("Forms|Checkbox", module) +storiesOf("Forms/Checkbox", module) .addDecorator(storyFn => {storyFn()}) .add("Default", () => ( diff --git a/scm-ui/ui-components/src/forms/DropDown.stories.tsx b/scm-ui/ui-components/src/forms/DropDown.stories.tsx index 7e1e3ed995..780b35609f 100644 --- a/scm-ui/ui-components/src/forms/DropDown.stories.tsx +++ b/scm-ui/ui-components/src/forms/DropDown.stories.tsx @@ -25,7 +25,7 @@ import React from "react"; import { storiesOf } from "@storybook/react"; import DropDown from "./DropDown"; -storiesOf("Forms|DropDown", module) +storiesOf("Forms/DropDown", module) .add("Default", () => ( { ); }; -storiesOf("Forms|FileInput", module) +storiesOf("Forms/FileInput", module) .addDecorator((storyFn) => {storyFn()}) .addDecorator((storyFn) => {storyFn()}) .add("Default", () => ); diff --git a/scm-ui/ui-components/src/forms/InputField.stories.tsx b/scm-ui/ui-components/src/forms/InputField.stories.tsx index 62a04eb625..4bbc9bc8f3 100644 --- a/scm-ui/ui-components/src/forms/InputField.stories.tsx +++ b/scm-ui/ui-components/src/forms/InputField.stories.tsx @@ -127,7 +127,7 @@ const LegacyEvents: FC = () => { ); }; -storiesOf("Forms|InputField", module) +storiesOf("Forms/InputField", module) .addDecorator((storyFn) => {storyFn()}) .addDecorator((storyFn) => {storyFn()}) .add("AutoFocus", () => ) diff --git a/scm-ui/ui-components/src/forms/Radio.stories.tsx b/scm-ui/ui-components/src/forms/Radio.stories.tsx index 04b6190c48..4a0027df43 100644 --- a/scm-ui/ui-components/src/forms/Radio.stories.tsx +++ b/scm-ui/ui-components/src/forms/Radio.stories.tsx @@ -112,7 +112,7 @@ const LegacyEvents: FC = () => { ); }; -storiesOf("Forms|Radio", module) +storiesOf("Forms/Radio", module) .addDecorator(storyFn => {storyFn()}) .add("Default", () => ( diff --git a/scm-ui/ui-components/src/forms/Select.stories.tsx b/scm-ui/ui-components/src/forms/Select.stories.tsx index 1a79a00fcb..a4dd4e3a25 100644 --- a/scm-ui/ui-components/src/forms/Select.stories.tsx +++ b/scm-ui/ui-components/src/forms/Select.stories.tsx @@ -198,7 +198,7 @@ const PreselectOption: FC = () => { ); }; -storiesOf("Forms|Select", module) +storiesOf("Forms/Select", module) .addDecorator((storyFn) => {storyFn()}) .add("Add no existing value", () => ) .add("Ref", () => ) diff --git a/scm-ui/ui-components/src/forms/Textarea.stories.tsx b/scm-ui/ui-components/src/forms/Textarea.stories.tsx index e93c0eab60..ae4a6a779f 100644 --- a/scm-ui/ui-components/src/forms/Textarea.stories.tsx +++ b/scm-ui/ui-components/src/forms/Textarea.stories.tsx @@ -170,7 +170,7 @@ const LegacyEvents: FC = () => { ); }; -storiesOf("Forms|Textarea", module) +storiesOf("Forms/Textarea", module) .addDecorator((storyFn) => {storyFn()}) .add("OnChange", () => ) .add("OnSubmit", () => ) diff --git a/scm-ui/ui-components/src/layout/Footer.stories.tsx b/scm-ui/ui-components/src/layout/Footer.stories.tsx index d2b592a46e..d5824ea348 100644 --- a/scm-ui/ui-components/src/layout/Footer.stories.tsx +++ b/scm-ui/ui-components/src/layout/Footer.stories.tsx @@ -64,7 +64,7 @@ const withBinder = (binder: Binder) => { ); }; -storiesOf("Layout|Footer", module) +storiesOf("Footer", module) .addDecorator(story => {story()}) .add("Default", () => { return
; diff --git a/scm-ui/ui-components/src/modals/ConfirmAlert.stories.tsx b/scm-ui/ui-components/src/modals/ConfirmAlert.stories.tsx index 6be1ce43ee..3d17a93c17 100644 --- a/scm-ui/ui-components/src/modals/ConfirmAlert.stories.tsx +++ b/scm-ui/ui-components/src/modals/ConfirmAlert.stories.tsx @@ -44,7 +44,7 @@ const buttons = [ } ]; -storiesOf("Modal|ConfirmAlert", module) +storiesOf("Modal/ConfirmAlert", module) .addDecorator(story => {story()}) .add("Default", () => ) .add("WithButton", () => { diff --git a/scm-ui/ui-components/src/modals/Modal.stories.tsx b/scm-ui/ui-components/src/modals/Modal.stories.tsx index 7a3bc33020..505f71afd4 100644 --- a/scm-ui/ui-components/src/modals/Modal.stories.tsx +++ b/scm-ui/ui-components/src/modals/Modal.stories.tsx @@ -71,7 +71,7 @@ const withFormElementsFooter = ( ); -storiesOf("Modal|Modal", module) +storiesOf("Modal/Modal", module) .addDecorator((story) => {story()}) .add("Default", () => ( diff --git a/scm-ui/ui-components/src/navigation/SecondaryNavigation.stories.tsx b/scm-ui/ui-components/src/navigation/SecondaryNavigation.stories.tsx index 715e566cd2..080789ea41 100644 --- a/scm-ui/ui-components/src/navigation/SecondaryNavigation.stories.tsx +++ b/scm-ui/ui-components/src/navigation/SecondaryNavigation.stories.tsx @@ -52,7 +52,7 @@ const withRoute = (route: string) => { return (story: ReactElement) => {story}; }; -storiesOf("Navigation|Secondary", module) +storiesOf("Secondary Navigation", module) .addDecorator(story => {story()}) .addDecorator(story => ( diff --git a/scm-ui/ui-components/src/repos/Diff.stories.tsx b/scm-ui/ui-components/src/repos/Diff.stories.tsx index d7fdd4da62..78ead798c4 100644 --- a/scm-ui/ui-components/src/repos/Diff.stories.tsx +++ b/scm-ui/ui-components/src/repos/Diff.stories.tsx @@ -85,7 +85,7 @@ const fileControlFactory: (changeset: Changeset) => FileControlFactory = (change return links.map(({ url, label }) => ); }; -storiesOf("Diff", module) +storiesOf("Repositories/Diff", module) .addDecorator(RoutingDecorator) .addDecorator((storyFn) => {storyFn()}) .add("Default", () => ) diff --git a/scm-ui/ui-components/src/repos/RepositoryEntry.stories.tsx b/scm-ui/ui-components/src/repos/RepositoryEntry.stories.tsx index 7fab26efee..6a6af158a9 100644 --- a/scm-ui/ui-components/src/repos/RepositoryEntry.stories.tsx +++ b/scm-ui/ui-components/src/repos/RepositoryEntry.stories.tsx @@ -98,7 +98,7 @@ const archivedExportingRepository = { "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.", }; -storiesOf("RepositoryEntry", module) +storiesOf("Repositories/RepositoryEntry", module) .addDecorator((story) => {story()}) .addDecorator((storyFn) => {storyFn()}) .add("Default", () => { diff --git a/scm-ui/ui-components/src/repos/annotate/Annotate.stories.tsx b/scm-ui/ui-components/src/repos/annotate/Annotate.stories.tsx index e69d4c62f0..31c1fd7071 100644 --- a/scm-ui/ui-components/src/repos/annotate/Annotate.stories.tsx +++ b/scm-ui/ui-components/src/repos/annotate/Annotate.stories.tsx @@ -164,7 +164,7 @@ const Robohash: FC = ({ children }) => { return {children}; }; -storiesOf("Annotate", module) +storiesOf("Repositories/Annotate", module) .addDecorator(storyFn => {storyFn()}) .addDecorator(storyFn => {storyFn()}) .add("Default", () => ( diff --git a/scm-ui/ui-components/src/repos/changesets/Changesets.stories.tsx b/scm-ui/ui-components/src/repos/changesets/Changesets.stories.tsx index 29fb474004..3afa7948b6 100644 --- a/scm-ui/ui-components/src/repos/changesets/Changesets.stories.tsx +++ b/scm-ui/ui-components/src/repos/changesets/Changesets.stories.tsx @@ -71,7 +71,7 @@ function copy(input: T): T { return JSON.parse(JSON.stringify(input)); } -storiesOf("Changesets", module) +storiesOf("Repositories/Changesets", module) .addDecorator(story => {story()}) .addDecorator(storyFn => {storyFn()}) .add("Default", () => ) diff --git a/scm-ui/ui-components/src/syntax-highlighting.module.css b/scm-ui/ui-components/src/syntax-highlighting.module.css index c86c8ec292..ae242831ee 100644 --- a/scm-ui/ui-components/src/syntax-highlighting.module.css +++ b/scm-ui/ui-components/src/syntax-highlighting.module.css @@ -43,10 +43,10 @@ pre[class*="language-"], code[class*="language-"] { - color: #363636; + color: var(--sh-base-color); font-size: 1rem; text-shadow: none; - font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace; + font-family: var(--sh-font-family); direction: ltr; text-align: left; white-space: pre; @@ -67,7 +67,7 @@ code[class*="language-"]::selection, pre[class*="language-"]::-moz-selection, code[class*="language-"]::-moz-selection { text-shadow: none; - background: #7fe3cd; + background: var(--sh-selected-color); } @media print { @@ -83,14 +83,14 @@ pre[class*="language-"] { padding: 1em; margin: .5em 0; overflow: auto; - background: #ffffff; + background: var(--sh-block-background); } :not(pre) > code[class*="language-"] { padding: .1em .3em; border-radius: .3em; - color: #ff3860; - background: #fbe7eb; + color: var(--sh-inline-code-color); + background: var(--sh-inline-code-background); } /********************************************************* @@ -105,11 +105,11 @@ pre[class*="language-"] { .token.prolog, .token.doctype, .token.cdata { - color: #9a9a9a; + color: var(--sh-comment-color); } .token.punctuation { - color: #9a9a9a; + color: var(--sh-punctuation-color); } .token.property, @@ -119,7 +119,7 @@ pre[class*="language-"] { .token.constant, .token.symbol, .token.deleted { - color: #2c99c7; + color: var(--sh-property-color); } .token.selector, @@ -128,7 +128,7 @@ pre[class*="language-"] { .token.char, .token.builtin, .token.inserted { - color: #005f9a; + color: var(--sh-selector-color); } .token.operator, @@ -136,23 +136,24 @@ pre[class*="language-"] { .token.url, .language-css .token.string, .style .token.string { - color: #686868; + color: var(--sh-operator-color); + background: var(--sh-operator-bg); } .token.atrule, .token.attr-value, .token.keyword { - color: #00a984; + color: var(--sh-keyword-color); } .token.function { - color: #ff3860; + color: var(--sh-function-color); } .token.regex, .token.important, .token.variable { - color: #a74eb2; + color: var(--sh-variable-color); } .token.important, @@ -188,8 +189,8 @@ pre[class*="language-"] > code[class*="language-"] { right: 0; padding: inherit 0; margin-top: 1em; - background: #f5f5f5; - box-shadow: inset 5px 0 0 #99d8f3; + background: var(--sh-highlight-background); + box-shadow: inset 5px 0 0 var(--sh-highlight-accent); z-index: 0; pointer-events: none; line-height: inherit; diff --git a/scm-ui/ui-components/src/syntax-highlighting.ts b/scm-ui/ui-components/src/syntax-highlighting.ts index c5efc3f77c..41c3b66d4a 100644 --- a/scm-ui/ui-components/src/syntax-highlighting.ts +++ b/scm-ui/ui-components/src/syntax-highlighting.ts @@ -27,10 +27,10 @@ export default { 'pre[class*="language-"]': { - color: "#363636", + color: "var(--sh-base-color)", fontSize: "1rem", textShadow: "none", - fontFamily: "Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace", + fontFamily: "var(--sh-font-family)", direction: "ltr", textAlign: "left", whiteSpace: "pre", @@ -47,13 +47,13 @@ export default { padding: "1em", margin: ".5em 0", overflow: "auto", - background: "#ffffff" + background: "var(--sh-block-background)", }, 'code[class*="language-"]': { - color: "#363636", + color: "var(--sh-base-color)", fontSize: "1rem", textShadow: "none", - fontFamily: "Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace", + fontFamily: "var(--sh-font-family)", direction: "ltr", textAlign: "left", whiteSpace: "pre", @@ -66,140 +66,145 @@ export default { WebkitHyphens: "none", MozHyphens: "none", msHyphens: "none", - hyphens: "none" + hyphens: "none", }, 'pre[class*="language-"]::selection': { textShadow: "none", - background: "#7fe3cd" + background: "var(--sh-selected-color)", }, 'code[class*="language-"]::selection': { textShadow: "none", - background: "#7fe3cd" + background: "var(--sh-selected-color)", }, 'pre[class*="language-"]::-moz-selection': { textShadow: "none", - background: "#7fe3cd" + background: "var(--sh-selected-color)", }, 'code[class*="language-"]::-moz-selection': { textShadow: "none", - background: "#7fe3cd" + background: "var(--sh-selected-color)", }, ':not(pre) > code[class*="language-"]': { padding: ".1em .3em", borderRadius: ".3em", - color: "#ff3860", - background: "#fbe7eb" + color: "var(--sh-inline-code-color)", + background: "var(--sh-inline-code-background)", }, ".namespace": { - Opacity: ".7" + Opacity: ".7", }, comment: { - color: "#9a9a9a" + color: "var(--sh-comment-color)", }, prolog: { - color: "#9a9a9a" + color: "var(--sh-comment-color)", }, doctype: { - color: "#9a9a9a" + color: "var(--sh-comment-color)", }, cdata: { - color: "#9a9a9a" + color: "var(--sh-comment-color)", }, punctuation: { - color: "#9a9a9a" + color: "var(--sh-punctuation-color)", }, property: { - color: "#2c99c7" + color: "var(--sh-property-color)", }, tag: { - color: "#2c99c7" + color: "var(--sh-property-color)", }, boolean: { - color: "#2c99c7" + color: "var(--sh-property-color)", }, number: { - color: "#2c99c7" + color: "var(--sh-property-color)", }, constant: { - color: "#2c99c7" + color: "var(--sh-property-color)", }, symbol: { - color: "#2c99c7" + color: "var(--sh-property-color)", }, deleted: { - color: "#2c99c7" + color: "var(--sh-property-color)", }, selector: { - color: "#005f9a" + color: "var(--sh-selector-color)", }, "attr-name": { - color: "#005f9a" + color: "var(--sh-selector-color)", }, string: { - color: "#005f9a" + color: "var(--sh-selector-color)", }, char: { - color: "#005f9a" + color: "var(--sh-selector-color)", }, builtin: { - color: "#005f9a" + color: "var(--sh-selector-color)", }, inserted: { - color: "#005f9a" + color: "var(--sh-selector-color)", }, operator: { - color: "#686868" + color: "var(--sh-operator-color)", + background: "var(--sh-operator-bg)", }, entity: { - color: "#686868", - cursor: "help" + color: "var(--sh-operator-color)", + background: "var(--sh-operator-bg)", + cursor: "help", }, url: { - color: "#686868" + color: "var(--sh-operator-color)", + background: "var(--sh-operator-bg)", }, ".language-css .token.string": { - color: "#686868" + color: "var(--sh-operator-color)", + background: "var(--sh-operator-bg)", }, ".style .token.string": { - color: "#686868" + color: "var(--sh-operator-color)", + background: "var(--sh-operator-bg)", }, atrule: { - color: "#00a984" + color: "var(--sh-keyword-color)", }, "attr-value": { - color: "#00a984" + color: "var(--sh-keyword-color)", }, keyword: { - color: "#00a984" + color: "var(--sh-keyword-color)", }, function: { - color: "#ff3860" + color: "var(--sh-function-color)", }, regex: { - color: "#a74eb2" + color: "var(--sh-variable-color)", }, important: { - color: "#a74eb2", - fontWeight: "bold" + color: "var(--sh-variable-color)", + fontWeight: "bold", }, variable: { - color: "#a74eb2" + color: "var(--sh-variable-color)", }, bold: { - fontWeight: "bold" + fontWeight: "bold", }, title: { - fontWeight: "bold" + fontWeight: "bold", }, italic: { - fontStyle: "italic" + fontStyle: "italic", }, "pre[data-line]": { - position: "relative" + position: "relative", }, 'pre[class*="language-"] > code[class*="language-"]': { position: "relative", - zIndex: "1" + zIndex: "1", }, ".line-highlight": { position: "absolute", @@ -207,11 +212,11 @@ export default { right: "0", padding: "inherit 0", marginTop: "1em", - background: "#f5f5f5", - boxShadow: "inset 5px 0 0 #99d8f3", + background: "var(--sh-highlight-background)", + boxShadow: "inset 5px 0 0 var(--sh-highlight-accent)", zIndex: "0", pointerEvents: "none", lineHeight: "inherit", - whiteSpace: "pre" - } + whiteSpace: "pre", + }, }; diff --git a/scm-ui/ui-components/src/table/Table.stories.tsx b/scm-ui/ui-components/src/table/Table.stories.tsx index 66c62e9c8a..be100c5a20 100644 --- a/scm-ui/ui-components/src/table/Table.stories.tsx +++ b/scm-ui/ui-components/src/table/Table.stories.tsx @@ -38,7 +38,7 @@ const StyledTable = styled(Table)` } `; -storiesOf("Table|Table", module) +storiesOf("Table", module) .add("Default", () => (
path.parse(filename)) + .filter((p) => p.ext === ".scss") + .reduce((entries, current) => ({ ...entries, [current.name]: path.join(themedir, current.base) }), {}); + console.log(`build ${mode} bundles`); module.exports = [ @@ -163,7 +171,7 @@ module.exports = [ { mode, context: root, - entry: "./ui-styles/src/scm.scss", + entry: themes, module: { rules: [ { @@ -184,7 +192,7 @@ module.exports = [ }, plugins: [ new MiniCssExtractPlugin({ - filename: "ui-styles.css", + filename: "ui-theme-[name].css", ignoreOrder: false }) ], @@ -193,7 +201,7 @@ module.exports = [ }, output: { path: path.join(root, "build", "webapp", "assets"), - filename: "ui-styles.bundle.js" + filename: "ui-theme-[name].bundle.js" } }, { diff --git a/scm-ui/ui-styles/package.json b/scm-ui/ui-styles/package.json index 439a476f15..c4e02b857d 100644 --- a/scm-ui/ui-styles/package.json +++ b/scm-ui/ui-styles/package.json @@ -19,8 +19,10 @@ "@scm-manager/eslint-config": "^2.12.0", "@scm-manager/prettier-config": "^2.10.1", "css-loader": "^3.2.0", + "html-webpack-plugin": "4", "prettier": "^2.1.2", - "sass": "^1.26.3", + "raw-loader": "^4.0.2", + "sass": "^1.43.2", "sass-loader": "^8.0.0", "style-loader": "^1.0.0", "webpack": "^4.41.5", diff --git a/scm-ui/ui-styles/public/_index.html b/scm-ui/ui-styles/public/_index.html new file mode 100644 index 0000000000..52a6252c00 --- /dev/null +++ b/scm-ui/ui-styles/public/_index.html @@ -0,0 +1,84 @@ + + + + + + SCM-Manager Styleguide + + + + + + + + +
+

SCM-Manager Styleguide

+

Choose your Theme

+
+ <% _.each(htmlWebpackPlugin.options.themes, function(theme){ %> + + <%= theme %> + + <% }); %> +
+
+ + + diff --git a/scm-ui/ui-styles/public/_styleguide.html b/scm-ui/ui-styles/public/_styleguide.html new file mode 100644 index 0000000000..2f9d144823 --- /dev/null +++ b/scm-ui/ui-styles/public/_styleguide.html @@ -0,0 +1,2498 @@ + +
+
+
+ Important:
+ This overview is focused on visual, not structural or functional aspects. It may contain class names not yet + integrated in SCM-Manager and can only display the present state. There may be changes to some elements in the + near future. +
+ +
+
+
+
+

Colors

+
+
Overview for all main colors with examples for lighter nuances.
+
    +
  • Colors with 75%-25% opacity will only be used for elements like graphs (where there is a need for extra + color + shades) and relevant interaction states (like disabled buttons). +
  • +
  • As soon as there is a use case where the separation of the colors for "info" and "link" seems necessary, it + will be possible to change the current color assignment. +
  • +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Class Color (100%) Color (75%) Color (50%) Color (25%)
.has-background-dark
+ .has-background-dark-75
+ .has-background-dark-50
+ .has-background-dark-25
  +   +   +   +
.has-background-info
+ .has-background-info-75
+ .has-background-info-50
+ .has-background-info-25
  +   +   +   +
.has-background-link
+ .has-background-link-75
+ .has-background-link-50
+ .has-background-link-25
  +   +   +   +
.has-background-primary
+ .has-background-primary-75
+ .has-background-primary-50
+ .has-background-primary-25
  +   +   +   +
.has-background-success
+ .has-background-success-75
+ .has-background-success-50
+ .has-background-success-25
  +   +   +   +
.has-background-warning
+ .has-background-warning-75
+ .has-background-warning-50
+ .has-background-warning-25
  +   +   +   +
.has-background-danger
+ .has-background-danger-75
+ .has-background-danger-50
+ .has-background-danger-25
  +   +   +   +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Class Text
.has-text-dark
Beispieltext
.has-text-info
Beispieltext
.has-text-link
Beispieltext
.has-text-primary
Beispieltext
.has-text-success
Beispieltext
.has-text-warning Attention: Has color #FFB600 because of readability issues with the original color #ffdd57. + Beispieltext
.has-text-danger
Beispieltext
+
+ +
+
+

Layout

+
+
+

Hero & Main Navigation (Tab-based)

+
May contain mobile hamburger menu in the future?
+
+
+
+
+
+
+
+
SCM-Manager
+
+
+
+
+ +
+
+
+
+
+

Secondary Navigation

+
+
+
+
+
    +
  • Plugins are always listed after "Information", "Branches", "Tags" and "Code".
  • +
  • "Settings" is always located at the bottom.
  • +
  • The order of the navigation elements should be consistent for all subpages.
  • +
  • Each entry should have an icon. Subnavigation entries have no icons.
  • +
+
+
+
+ +
+
+ +
+
+ +
+
+

Typography

+
+

Headlines

+
Subheadlines should only be used if there is reasonable content for them.
+
+
+

Users

+

Create, read, update and delete users

+
+
+
+
+

Icons

+
The following icons have a global significance and should only be used in connection + with certain functions. +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
IconNameMeaning
+ + + + + + code-branchBranches
+ + + + + + tagsTags
+ + + + + + exchange-altCommits, Convert type
+ + + + + + codeCode, Sources
+ + + + + + code-branch fa-rotate-180Pull Requests
+ + + + + + cogSettings
+ + + + + + starFavorite repository
+ + + + + + book-readerReadme
+ + + + + + info-circleInformation
+ + + + + + trashDelete
+ + + + + + timesDelete, Remove, Disapprove
+ + + + + + plusAdd, Subscribe
+ + + + + + keySignature
+ + + + + + tagSingle Tag
+ + + + + + circle-notchNo status available
+ + + + + + homeHome, Internal user
+ + + + + + linkCopy permalink
+ + + + + + uploadUpload
+ + + + + + downloadDownload, Install
+ + + + + + folderFolder
+ + + + + + folderSubrepository, submodule, externals
+ + + + + + fileFile
+ + + + + + user-clockAnnotate
+ + + + + + historyHistory
+ + + + + + search-plusOpen in Fullscreen
+ + + + + + editEdit
+ + + + + + eye-slashCollapse
+ + + + + + eyeCollapse
+ + + + + + columnsSide-by-side view
+ + + + + + align-leftCombined view
+ + + + + + sort-alpha-downSort alphabetically
+ + + + + + sort-alpha-down-altSort alphabetically reverse
+ + + + + + sort-amount-down-altSort descending
+ + + + + + sort-amount-downSort ascending
+ + + + + + userUser, One reviewer
+ + + + + + user-friendsTwo reviewers
+ + + + + + usersMore reviewers
+ + + + + + exclamation-triangleProblem detected, e.g. target branch deleted, conflicts
+ + + + + + minusUnsubscribe
+ + + + + + checkApprove
+ + + + + + clockOutdated
+ + + + + + boltSystem
+ + + + + + replyReply
+ + + + + + tasksTask
+ + + + + + comment-dotsComment
+ + + + + + check-circleMark as done, Status successful
+ + + + + + question-circleHelp text
+ + + + + + times-circleStatus failed
+ + + + + + arrow-circle-upUpload
+ + + + + + arrow-circle-downDownload
+ + + + + + archiveArchive
+ + + + + + globe-americasExternal group
+ + + + + + puzzle-piecePlugins
+ + + + + + sync-altUpdate
+
+
+
+
+
+

Buttons

+
+
+

Standard Buttons

+
Standard Buttons are using the full base colors.
+
+
+
+
+ +
+
+
+
+
+

Disabled Buttons

+
Disabled buttons are using 25% of the base colors.
+
+
+
+
+ +
+
+
+
+
+

Hovered Buttons

+
The hover color of each button is 10% darker than the base color.
+
+
+
+
+ +
+
+
+
+
+

Active Buttons

+
The active color of each button is 20% darker than the base color.
+
+
+
+
+
+ +
+
+
+
+
+
+

Loading Buttons

+
While an asynchronous process is active, a appropriate button may contain a loading + spinner. The running process should be indicate by a short message e.g. "Exporting". A tooltip should also be + given. +
+
+
+
+
+
+ +
+
+
+
+
+
+

Outlined Buttons

+
Should be used for secondary actions.
+
+
+
+
+
+ +
+
+
+
+
+
+

Icon Buttons

+
Alternative to the normal button with minimum space requirements. Should always get a + tooltip. +
+
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+
+
+

Button Groups and Addons

+
+
    +
  • If buttons are part of the same functional group they can be displayed as "addon buttons".
  • +
  • Avoid buttons sticking together without being addon buttons.
  • +
  • If you don't want buttons to be addons, please place enough space between them.
  • +
  • In cases where just the first button is visible and others might be added later in the process, or buttons + aren't part of the same functional group, "grouped buttons" can be used. +
  • +
  • If the contents of buttons have a direct connection (like "Commits" and "Sources") they should be placed + next + to each other. +
  • +
  • The function with the higher priority should be positioned on the right.
  • +
+
+

Button Addon

+
+

+ +

+

+ +

+
+
+

Button Group

+
+
+ +
+
+ +
+
+ +
+
+ + + +
+
+ + + +
+
+ + + +
+
+
+
+

Pagination

+

Disabled Pagination

+
Disabled navigation buttons are either grey or light blue.
+ +
+

Active Pagination

+
Active navigation buttons are either white or blue (100% tone of info/link color).
+ The buttons containing the page numbers should have the same width, even when reaching triple digits. For this a + width of 80px is necessary. +
+ +
+
+

Create

+
"Create" buttons at the top of pages should always be positioned on the right side. +
+ Create buttons at the end of a page should be full-width and complemented with a border. +
+
+ +
+
+ +
+
+
+

Submit

+
A submit button should be used when submitting an form or action, usually combined with + a refresh. + When a primary action like a "submit" button for a form is used, it should be placed on the bottom right of the + page. +
+
+
+
+
+
+

+ +

+

+ +

+
+
+
+
+
+
+

Special

+
+ Icons are added before the text to mark these buttons as special elements. +
+
    +
  • Use of the AddButton only when adding elements directly visually
  • +
  • The trash icon does not appear within a delete button
  • +
+
+
+
+
+
+
+

+ +

+

+ +

+

+ +

+
+
+
+
+
+
+

Button Texts

+
+ Button texts are treated like headings. Button lettering should always be precise. + Example: Use "Create User" instead of "Create" for button lettering. +
+
+
+
+
+
+

+ +

+

+ +

+

+ +

+
+
+
+
+
+
+
+
+
+

Tables

+
+
+

Standard Tables

+
Titles inside the tables should be in bold letters.
+ + + + + + + + + + + + + + + + + + + + + + + +
NameG1
DescriptionAwesome
Typexml
Creation Date5 days ago
Last Modified15 minutes ago
+
+
+

Card Tables

+
Special tables can be used for lists of groups, users, tags etc. +
+
    +
  • In general, use icons instead of buttons within the .card-table.
  • +
  • Use icons and a darker background in a specific action column.
  • +
  • Colors at the left side could display roles, for example green = active user, yellow = not active.
  • +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
UsernameDisplay NameE-Mail
+ _anonymousSCM Anonymousscm-anonymous@scm-manager.org
dhuchthausen + Daniel Huchthausendaniel.huchthausen@cloudogu.com
fscholdei + Florian Scholdeiflorian.scholdei@cloudogu.com
+ + + + + + + + + + + + + + + + +
Active Branches
+ feature/file_delete + + Last commit + + + + + + + + +
+ test/edit_binary + + Last commit + + + + + + + + +
+
+
+
+
+
+
+

Form Controls

+
+
+

Forms

+
+ A form contains a set of related input fields. +
+
    +
  • Fields should always have a label.
  • +
  • If possible, forms should be divided into two columns to get a better grasp of the content.
  • +
  • Similar content should appear next to each other.
  • +
  • It is recommended to divide unrelated content with horizontal lines.
  • +
+
+
+
+
+
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+
+
+
+
+ +
+ +
+
+
+
+
+ +
+ +
+
+
+
+
+
+
+ +
+ +
+
+
+
+
+
+
+

Input

+
+ +
+ +
+
+
+
+

Textarea

+
+ +
+ +
+
+
+
+

Dropdown

+
Select elements should always contain placeholder texts, also for preselected options. +
+
+ +
+ +
+
+
+
+ +
+
+
+
+
+ +
+
+
+
+
+
+
+

Checkbox

+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+

Radio Buttons

+
Radio buttons should have enough space between them and the labels.
+

Add New Permission

+
+
+
+ + +
+
+
+
+
+

File Upload

+ +
+ +
+
+
+

Inline Member Field

+
+
+ Reviewers: +
+
+
+ Emil Boyce + +
+
+
+
+ Jawad Mack + +
+
+
+
+

+ + + + +

+
+
+
+
+
+
+

Miscellaneous Elements

+
+
+

Boxes

+
Border around boxes should set the focus on an area that is not simply a + notification. +
+
    +
  • Borders can either be created by .box or a separate border in conjunction with a + border-radius of 5px. +
  • +
  • The main colors with 25-75% opacity should be used.
  • +
+
+
+
+
+ Community Support Icon +
+
+
+

Community Support

+

Contact the SCM-Manager support team for questions about SCM-Manager, to report bugs or to request + features through the official channels.

+ Contact + Our Team +
+
+
+
+
+
+
+

+ Delete Branch +
Deleted branches cannot be restored. +

+
+
+ +
+
+
+
+
+

Breadcrumb

+
The breadcrumb is used for a path-depth view for sources.
+
+
+ + + +
+ +
+
+
+
+

Card Column

+
+
+ + + + +
+
+
+
+

Date

+
Dates are preferably shown relatively and by hovering with an absolute date.
+

+ +

+

+ +

+

+ +

+

+ +

+
+
+

Group Member List

+ +
+
+

Loading

+
+ Loading ... +

loading plugin information

+
+
+
+

Notifications

+
Notification are using the full base colors.
+
+
+
+ + Primary/Success
+ Primar lorem ipsum dolor sit amet, consectetur + adipiscing elit lorem ipsum dolor. Pellentesque risus mi, tempus quis placerat ut, porta nec nulla. + Vestibulum + rhoncus ac ex sit amet fringilla. Nullam gravida purus diam, et dictum felis venenatis efficitur. +
+
+
+
+ + Info/Link
+ Primar lorem ipsum dolor sit amet, consectetur + adipiscing elit lorem ipsum dolor. Pellentesque risus mi, tempus quis placerat ut, porta nec nulla. + Vestibulum + rhoncus ac ex sit amet fringilla. Nullam gravida purus diam, et dictum felis venenatis efficitur. +
+
+
+
+ + Success
+ Primar lorem ipsum dolor sit amet, consectetur + adipiscing elit lorem ipsum dolor. Pellentesque risus mi, tempus quis placerat ut, porta nec nulla. + Vestibulum + rhoncus ac ex sit amet fringilla. Nullam gravida purus diam, et dictum felis venenatis efficitur. +
+
+
+
+
+
+ + Warning
+ Primar lorem ipsum dolor sit amet, consectetur + adipiscing elit lorem ipsum dolor. Pellentesque risus mi, tempus quis placerat ut, porta nec nulla. + Vestibulum + rhoncus ac ex sit amet fringilla. Nullam gravida purus diam, et dictum felis venenatis efficitur. +
+
+
+
+ + Danger
+ Primar lorem ipsum dolor sit amet, consectetur + adipiscing elit lorem ipsum dolor. Pellentesque risus mi, tempus quis placerat ut, porta nec nulla. + Vestibulum + rhoncus ac ex sit amet fringilla. Nullam gravida purus diam, et dictum felis venenatis efficitur. +
+
+
+
+
+

Tags

+
Tags can use background in all full base colors.
+   tip OPEN Warning +
+
+

Tooltips

+
Tooltips add context to the element and should follow rules for UX writing. +
+
    +
  • Use tooltips instead of titles for buttons.
  • +
  • Do not set an HTML title if a tooltip is also defined.
  • +
  • The font-weight of tooltips should be normal.
  • +
+
+
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+ + + + + +
+
+
+ + + + + + + + + +
+
+
+

Popover

+
Popover can be used similar to the tooltips.
+
+
+

Signatures

+
+
+
+ +
Status: verified
+
Key Owner: fscholdei
+
Contacts:
+
- Florian Scholdei <florian.scholdei@cloudogu.com>
+
+
+
+
+

Modals

+
A modal is intended to be used when it blocks the rest of the interaction with + the application or puts a focus on a part of the UI. +
+
    +
  • Even if the content of the modals differs, they all should use the same basic + class .modal-card to ensure a constant layout. +
  • +
  • Buttons inside the modals should use the standard button formats.
  • +
  • If a modal footer contains two action buttons, the critical one should be on the left. In addition, they should differ in color.
  • +
  • Modals without actions do not require a footer.
  • +
  • Normal modals have a gray header. Otherwise the main colors with 25-75% opacity should be used.
  • +
+
+ +
+ +
+
+

Toasts

+
+

New Changes

+

The underlying Pull-Request has changed. Press reload to see the changes.

+

Warning: Non saved modification will be lost.

+
+ + +
+
+
+
+
+
+
+

Examples of Use

+
+
+

Display of Users (e.g. Changesets)

+
Use tags and different font-weights to visually structure information.
+
+
+
+ Sebastian Sdorra +
+
+
+

added system property to disable extraction of core + plugins

+

+ Changeset + 41cc612 + was committed + +

+

+ Committed + 41cc612 + +

+
+

+ Authored by + Sebastian + Sdorra +

+
+
+
+
+
+

Complex Screens (e.g. Pull Requests)

+
+ Screens with a big bunch of information should be carefully structured to help the user with orientation. +
    +
  • Make sure areas with different functionalities are clearly separated (use horizontal lines, boxes and/or + bigger gaps between them). +
  • +
  • Buttons with different actions should have different colors.
  • +
  • The "reject pull request" and "Merge pull request" buttons are good examples for a meaningful usage of + addon + buttons. +
  • +
  • Information belonging together should be placed next to each other (for example the user who did the last + edit and the date of the last edit). +
  • +
  • Make sure important states like "open" are properly marked. For example, with tags.
  • +
+
+
+
+
+
+
+

#1497 Migrate + integration tests to bdd + 0 / 1 tasks done +

+
+
+
+
+ +
+
+
+
+
+
+
feature/bdd   develop +
+
+
OPEN
+
+
+
Migrates the existing e2e tests towards a cucumber bdd-style and utilizes the integration-test-runner package.
+
+
+ +
+
+
+
+ Author: +
+
+
Emil Boyce
  + +
+
+
+
+ Reviewers: +
+
+
    +
  • Jawad Mack
  • +
+
+
+
+
+
+
+
+ +
+
+
+
+

+ +

+
+
+

+ +

+
+
+
+
+
+ +
+
+
+ +
+
+
+
+ +
+
+
+
+ +
+
+
+
+
+
+ +
+
+
+
+ + +
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+
+
diff --git a/scm-ui/ui-styles/public/_theme.html b/scm-ui/ui-styles/public/_theme.html new file mode 100644 index 0000000000..b3eef94d24 --- /dev/null +++ b/scm-ui/ui-styles/public/_theme.html @@ -0,0 +1,45 @@ + + + + + SCM-Manager Styleguide + + + + + + + + +
+

Styleguide SCM-Manager 2

+

Theme <%= htmlWebpackPlugin.options.theme %>

+
+ <%= require('raw-loader!./_styleguide.html').default %> + + + diff --git a/scm-ui/ui-styles/public/index.html b/scm-ui/ui-styles/public/index.html deleted file mode 100644 index c662d3e76b..0000000000 --- a/scm-ui/ui-styles/public/index.html +++ /dev/null @@ -1,2789 +0,0 @@ - - - - - SCM-Manager Styleguide - - - - - - - - - -
-
-

Styleguide SCM-Manager 2

-
- Important:
- This overview is focused on visual, not structural or functional aspects. It may contain class names not yet - integrated in SCM-Manager and can only display the present state. There may be changes to some elements in the - near future. -
- -
-
-
-
-

Colors

-
-
Overview for all main colors with examples for lighter nuances.
-
    -
  • Colors with 75%-25% opacity will only be used for elements like graphs (where there is a need for extra - color - shades) and relevant interaction states (like disabled buttons). -
  • -
  • As soon as there is a use case where the separation of the colors for "info" and "link" seems necessary, it - will be possible to change the current color assignment. -
  • -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Class Color (100%) Color (75%) Color (50%) Color (25%)
.has-background-dark
- .has-background-dark-75
- .has-background-dark-50
- .has-background-dark-25
 
-
- #363636 -
 
-
- #686868 -
 
-
- #9a9a9a -
 
-
- #cdcdcd -
.has-background-info
- .has-background-info-75
- .has-background-info-50
- .has-background-info-25
 
-
- #33b2e8 -
 
-
- #66c5ee -
 
-
- #99d8f3 -
 
-
- #ccecf9 -
.has-background-link
- .has-background-link-75
- .has-background-link-50
- .has-background-link-25
 
-
- #33b2e8 -
 
-
- #66c5ee -
 
-
- #99d8f3 -
 
-
- #ccecf9 -
.has-background-primary
- .has-background-primary-75
- .has-background-primary-50
- .has-background-primary-25
 
-
- #00d1df -
 
-
- #40dde7 -
 
-
- #7fe8ef -
 
-
- #bff3f7 -
.has-background-success
- .has-background-success-75
- .has-background-success-50
- .has-background-success-25
 
-
- #00c79b -
 
-
- #40d5b4 -
 
-
- #7fe3cd -
 
-
- #bff1e6 -
.has-background-warning
- .has-background-warning-75
- .has-background-warning-50
- .has-background-warning-25
 
-
- #ffdd57 -
 
-
- #ffe681 -
 
-
- #ffeeab -
 
-
- #fff6d5 -
.has-background-danger
- .has-background-danger-75
- .has-background-danger-50
- .has-background-danger-25
 
-
- #ff3860 -
 
-
- #ff6a88 -
 
-
- #ff9baf -
 
-
- #ffcdd7 -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Class Color (100%) Color (75%) Color (50%) Color (25%)
.has-background-dark
- .has-background-dark-75
- .has-background-dark-50
- .has-background-dark-25
 
-
- #f2f2f2 -
 
-
- #cccccc -
 
-
- #a6a6a6 -
 
-
- #7f7f7f -
.has-background-info
- .has-background-info-75
- .has-background-info-50
- .has-background-info-25
 
-
- #33b2e8 -
 
-
- #66c5ee -
 
-
- #99d8f3 -
 
-
- #ccecf9 -
.has-background-link
- .has-background-link-75
- .has-background-link-50
- .has-background-link-25
 
-
- #33b2e8 -
 
-
- #66c5ee -
 
-
- #99d8f3 -
 
-
- #ccecf9 -
.has-background-primary
- .has-background-primary-75
- .has-background-primary-50
- .has-background-primary-25
 
-
- #00d1df -
 
-
- #40dde7 -
 
-
- #7fe8ef -
 
-
- #bff3f7 -
.has-background-success
- .has-background-success-75
- .has-background-success-50
- .has-background-success-25
 
-
- #00c79b -
 
-
- #40d5b4 -
 
-
- #7fe3cd -
 
-
- #bff1e6 -
.has-background-warning
- .has-background-warning-75
- .has-background-warning-50
- .has-background-warning-25
 
-
- #ffdd57 -
 
-
- #ffe681 -
 
-
- #ffeeab -
 
-
- #fff6d5 -
.has-background-danger-high-contrast
- .has-background-danger-high-contrast-75
- .has-background-danger-high-contrast-50
- .has-background-danger-high-contrast-25
 
-
- #e63453 -
 
-
- #ec677e -
 
-
- #f39aa9 -
 
-
- #f9ccd4 -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Class Text
.has-text-dark
Beispieltext
.has-text-info
Beispieltext
.has-text-link
Beispieltext
.has-text-primary
Beispieltext
.has-text-success
Beispieltext
.has-text-warning Attention: Has color #FFB600 because of readability issues with the original color #ffdd57. - Beispieltext
.has-text-danger
Beispieltext
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Class Text
.has-text-high-contrast-light-gray
Beispieltext
.has-text-info
Beispieltext
.has-text-link
Beispieltext
.has-text-primary
Beispieltext
.has-text-success
Beispieltext
.has-text-high-contrast-warning - Beispieltext
.has-text-high-contrast-dangerAttention: Danger-text is lighter shade #f39aa9
Beispieltext
-
-
-
-
-

Layout

-
-
-

Hero & Main Navigation (Tab-based)

-
May contain mobile hamburger menu in the future?
-
-
-
-
-
-
-
-
SCM-Manager
-
-
-
-
- -
-
-
-
-
-

Secondary Navigation

-
-
-
-
-
    -
  • Plugins are always listed after "Information", "Branches", "Tags" and "Code".
  • -
  • "Settings" is always located at the bottom.
  • -
  • The order of the navigation elements should be consistent for all subpages.
  • -
  • Each entry should have an icon. Subnavigation entries have no icons.
  • -
-
-
-
- -
-
- -
-
- -
-
-

Typography

-
-

Headlines

-
Subheadlines should only be used if there is reasonable content for them.
-
-
-

Users

-

Create, read, update and delete users

-
-
-
-
-

Icons

-
The following icons have a global significance and should only be used in connection - with certain functions. -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
IconNameMeaning
- - - - - - code-branchBranches
- - - - - - tagsTags
- - - - - - exchange-altCommits, Convert type
- - - - - - codeCode, Sources
- - - - - - code-branch fa-rotate-180Pull Requests
- - - - - - cogSettings
- - - - - - starFavorite repository
- - - - - - book-readerReadme
- - - - - - info-circleInformation
- - - - - - trashDelete
- - - - - - timesDelete, Remove, Disapprove
- - - - - - plusAdd, Subscribe
- - - - - - keySignature
- - - - - - tagSingle Tag
- - - - - - circle-notchNo status available
- - - - - - homeHome, Internal user
- - - - - - linkCopy permalink
- - - - - - uploadUpload
- - - - - - downloadDownload, Install
- - - - - - folderFolder
- - - - - - folderSubrepository, submodule, externals
- - - - - - fileFile
- - - - - - user-clockAnnotate
- - - - - - historyHistory
- - - - - - search-plusOpen in Fullscreen
- - - - - - editEdit
- - - - - - eye-slashCollapse
- - - - - - eyeCollapse
- - - - - - columnsSide-by-side view
- - - - - - align-leftCombined view
- - - - - - sort-alpha-downSort alphabetically
- - - - - - sort-alpha-down-altSort alphabetically reverse
- - - - - - sort-amount-down-altSort descending
- - - - - - sort-amount-downSort ascending
- - - - - - userUser, One reviewer
- - - - - - user-friendsTwo reviewers
- - - - - - usersMore reviewers
- - - - - - exclamation-triangleProblem detected, e.g. target branch deleted, conflicts
- - - - - - minusUnsubscribe
- - - - - - checkApprove
- - - - - - clockOutdated
- - - - - - boltSystem
- - - - - - replyReply
- - - - - - tasksTask
- - - - - - comment-dotsComment
- - - - - - check-circleMark as done, Status successful
- - - - - - question-circleHelp text
- - - - - - times-circleStatus failed
- - - - - - arrow-circle-upUpload
- - - - - - arrow-circle-downDownload
- - - - - - archiveArchive
- - - - - - globe-americasExternal group
- - - - - - puzzle-piecePlugins
- - - - - - sync-altUpdate
-
-
-
-
-
-

Buttons

-
-
-

Standard Buttons

-
Standard Buttons are using the full base colors.
-
-
-
-
- -
-
-
-
-
-

Disabled Buttons

-
Disabled buttons are using 25% of the base colors.
-
-
-
-
- -
-
-
-
-
-

Hovered Buttons

-
The hover color of each button is 10% darker than the base color.
-
-
-
-
- -
-
-
-
-
-

Active Buttons

-
The active color of each button is 20% darker than the base color.
-
-
-
-
-
- -
-
-
-
-
-
-

Loading Buttons

-
While an asynchronous process is active, a appropriate button may contain a loading - spinner. The running process should be indicate by a short message e.g. "Exporting". A tooltip should also be - given. -
-
-
-
-
-
- -
-
-
-
-
-
-

Outlined Buttons

-
Should be used for secondary actions.
-
-
-
-
-
- -
-
-
-
-
-
-

Icon Buttons

-
Alternative to the normal button with minimum space requirements. Should always get a - tooltip. -
-
-
- - - - - -
-
- - - - - -
-
- - - - - -
-
- - - - - -
-
-
-
-

Button Groups and Addons

-
-
    -
  • If buttons are part of the same functional group they can be displayed as "addon buttons".
  • -
  • Avoid buttons sticking together without being addon buttons.
  • -
  • If you don't want buttons to be addons, please place enough space between them.
  • -
  • In cases where just the first button is visible and others might be added later in the process, or buttons - aren't part of the same functional group, "grouped buttons" can be used. -
  • -
  • If the contents of buttons have a direct connection (like "Commits" and "Sources") they should be placed - next - to each other. -
  • -
  • The function with the higher priority should be positioned on the right.
  • -
-
-

Button Addon

-
-

- -

-

- -

-
-
-

Button Group

-
-
- -
-
- -
-
- -
-
- - - -
-
- - - -
-
- - - -
-
-
-
-

Pagination

-

Disabled Pagination

-
Disabled navigation buttons are either grey or light blue.
- -
-

Active Pagination

-
Active navigation buttons are either white or blue (100% tone of info/link color).
- The buttons containing the page numbers should have the same width, even when reaching triple digits. For this a - width of 80px is necessary. -
- -
-
-

Create

-
"Create" buttons at the top of pages should always be positioned on the right side. -
- Create buttons at the end of a page should be full-width and complemented with a border. -
-
- -
-
- -
-
-
-

Submit

-
A submit button should be used when submitting an form or action, usually combined with - a refresh. - When a primary action like a "submit" button for a form is used, it should be placed on the bottom right of the - page. -
-
-
-
-
-
-

- -

-

- -

-
-
-
-
-
-
-

Special

-
- Icons are added before the text to mark these buttons as special elements. -
-
    -
  • Use of the AddButton only when adding elements directly visually
  • -
  • The trash icon does not appear within a delete button
  • -
-
-
-
-
-
-
-

- -

-

- -

-

- -

-
-
-
-
-
-
-

Button Texts

-
- Button texts are treated like headings. Button lettering should always be precise. - Example: Use "Create User" instead of "Create" for button lettering. -
-
-
-
-
-
-

- -

-

- -

-

- -

-
-
-
-
-
-
-
-
-
-

Tables

-
-
-

Standard Tables

-
Titles inside the tables should be in bold letters.
- - - - - - - - - - - - - - - - - - - - - - - -
NameG1
DescriptionAwesome
Typexml
Creation Date5 days ago
Last Modified15 minutes ago
-
-
-

Card Tables

-
Special tables can be used for lists of groups, users, tags etc. -
-
    -
  • In general, use icons instead of buttons within the .card-table.
  • -
  • Use icons and a darker background in a specific action column.
  • -
  • Colors at the left side could display roles, for example green = active user, yellow = not active.
  • -
-
-
- - - - - - - - - - - - - - - - - - - - - - - - - -
UsernameDisplay NameE-Mail
- _anonymousSCM Anonymousscm-anonymous@scm-manager.org
dhuchthausen - Daniel Huchthausendaniel.huchthausen@cloudogu.com
fscholdei - Florian Scholdeiflorian.scholdei@cloudogu.com
- - - - - - - - - - - - - - - - -
Active Branches
- feature/file_delete - - Last commit - - - - - - - - -
- test/edit_binary - - Last commit - - - - - - - - -
-
-
-
-
-
-
-

Form Controls

-
-
-

Forms

-
- A form contains a set of related input fields. -
-
    -
  • Fields should always have a label.
  • -
  • If possible, forms should be divided into two columns to get a better grasp of the content.
  • -
  • Similar content should appear next to each other.
  • -
  • It is recommended to divide unrelated content with horizontal lines.
  • -
-
-
-
-
-
- -
- -
-
-
-
-
- -
- -
-
-
-
-
-
-
- -
- -
-
-
-
-
- -
- -
-
-
-
-
-
-
- -
- -
-
-
-
-
-
-
-

Input

-
- -
- -
-
-
-
-

Textarea

-
- -
- -
-
-
-
-

Dropdown

-
Select elements should always contain placeholder texts, also for preselected options. -
-
- -
- -
-
-
-
- -
-
-
-
-
- -
-
-
-
-
-
-
-

Checkbox

-
-
- -
-
-
-
- -
-
-
-
- -
-
-
-
-

Radio Buttons

-
Radio buttons should have enough space between them and the labels.
-

Add New Permission

-
-
-
- - -
-
-
-
-
-

File Upload

- -
- -
-
-
-

Inline Member Field

-
-
- Reviewers: -
-
-
- Emil Boyce - -
-
-
-
- Jawad Mack - -
-
-
-
-

- - - - -

-
-
-
-
-
-
-

Miscellaneous Elements

-
-
-

Boxes

-
Border around boxes should set the focus on an area that is not simply a - notification. -
-
    -
  • Borders can either be created by .box or a separate border in conjunction with a - border-radius of 5px. -
  • -
  • The main colors with 25-75% opacity should be used.
  • -
-
-
-
-
- Community Support Icon -
-
-
-

Community Support

-

Contact the SCM-Manager support team for questions about SCM-Manager, to report bugs or to request - features through the official channels.

- Contact - Our Team -
-
-
-
-
-
-
-

- Delete Branch -
Deleted branches cannot be restored. -

-
-
- -
-
-
-
-
-

Breadcrumb

-
The breadcrumb is used for a path-depth view for sources.
-
-
- - - -
- -
-
-
-
-

Card Column

-
-
- - - - -
-
-
-
-

Date

-
Dates are preferably shown relatively and by hovering with an absolute date.
-

- -

-

- -

-

- -

-

- -

-
-
-

Group Member List

- -
-
-

Loading

-
- Loading ... -

loading plugin information

-
-
-
-

Notifications

-
Notification are using the full base colors.
-
-
-
- - Primary/Success
- Primar lorem ipsum dolor sit amet, consectetur - adipiscing elit lorem ipsum dolor. Pellentesque risus mi, tempus quis placerat ut, porta nec nulla. - Vestibulum - rhoncus ac ex sit amet fringilla. Nullam gravida purus diam, et dictum felis venenatis efficitur. -
-
-
-
- - Info/Link
- Primar lorem ipsum dolor sit amet, consectetur - adipiscing elit lorem ipsum dolor. Pellentesque risus mi, tempus quis placerat ut, porta nec nulla. - Vestibulum - rhoncus ac ex sit amet fringilla. Nullam gravida purus diam, et dictum felis venenatis efficitur. -
-
-
-
- - Success
- Primar lorem ipsum dolor sit amet, consectetur - adipiscing elit lorem ipsum dolor. Pellentesque risus mi, tempus quis placerat ut, porta nec nulla. - Vestibulum - rhoncus ac ex sit amet fringilla. Nullam gravida purus diam, et dictum felis venenatis efficitur. -
-
-
-
-
-
- - Warning
- Primar lorem ipsum dolor sit amet, consectetur - adipiscing elit lorem ipsum dolor. Pellentesque risus mi, tempus quis placerat ut, porta nec nulla. - Vestibulum - rhoncus ac ex sit amet fringilla. Nullam gravida purus diam, et dictum felis venenatis efficitur. -
-
-
- -
-
-
-
-

Tags

-
Tags can use background in all full base colors.
-   tip OPEN Warning -
-
-

Tooltips

-
Tooltips add context to the element and should follow rules for UX writing. -
-
    -
  • Use tooltips instead of titles for buttons.
  • -
  • Do not set an HTML title if a tooltip is also defined.
  • -
  • The font-weight of tooltips should be normal.
  • -
-
-
-
- - - - - -
-
- - - - - -
-
- - - - - -
-
- - - - - -
-
-
- - - - - - - - - -
-
-
-

Popover

-
Popover can be used similar to the tooltips.
-
-
-

Signatures

-
-
-
- -
Status: verified
-
Key Owner: fscholdei
-
Contacts:
-
- Florian Scholdei <florian.scholdei@cloudogu.com>
-
-
-
-
-

Modals

-
A modal is intended to be used when it blocks the rest of the interaction with - the application or puts a focus on a part of the UI. -
-
    -
  • Even if the content of the modals differs, they all should use the same basic - class .modal-card to ensure a constant layout. -
  • -
  • Buttons inside the modals should use the standard button formats.
  • -
  • If a modal footer contains two action buttons, the critical one should be on the left. In addition, they should differ in color.
  • -
  • Modals without actions do not require a footer.
  • -
  • Normal modals have a gray header. Otherwise the main colors with 25-75% opacity should be used.
  • -
-
- -
- -
-
-

Toasts

-
-

New Changes

-

The underlying Pull-Request has changed. Press reload to see the changes.

-

Warning: Non saved modification will be lost.

-
- - -
-
-
-
-
-
-
-

Examples of Use

-
-
-

Display of Users (e.g. Changesets)

-
Use tags and different font-weights to visually structure information.
-
-
-
- Sebastian Sdorra -
-
-
-

added system property to disable extraction of core - plugins

-

- Changeset - 41cc612 - was committed - -

-

- Committed - 41cc612 - -

-
-

- Authored by - Sebastian - Sdorra -

-
-
-
-
-
-

Complex Screens (e.g. Pull Requests)

-
- Screens with a big bunch of information should be carefully structured to help the user with orientation. -
    -
  • Make sure areas with different functionalities are clearly separated (use horizontal lines, boxes and/or - bigger gaps between them). -
  • -
  • Buttons with different actions should have different colors.
  • -
  • The "reject pull request" and "Merge pull request" buttons are good examples for a meaningful usage of - addon - buttons. -
  • -
  • Information belonging together should be placed next to each other (for example the user who did the last - edit and the date of the last edit). -
  • -
  • Make sure important states like "open" are properly marked. For example, with tags.
  • -
-
-
-
-
-
-
-

#1497 Migrate - integration tests to bdd - 0 / 1 tasks done -

-
-
-
-
- -
-
-
-
-
-
-
feature/bdd   develop -
-
-
OPEN
-
-
-
Migrates the existing e2e tests towards a cucumber bdd-style and utilizes the integration-test-runner package.
-
-
- -
-
-
-
- Author: -
-
-
Emil Boyce
  - -
-
-
-
- Reviewers: -
-
-
    -
  • Jawad Mack
  • -
-
-
-
-
-
-
-
- -
-
-
-
-

- -

-
-
-

- -

-
-
-
-
-
- -
-
-
- -
-
-
-
- -
-
-
-
- -
-
-
-
-
-
- -
-
-
-
- - -
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
- - - - - diff --git a/scm-ui/ui-styles/public/js/polyfills.js b/scm-ui/ui-styles/public/js/polyfills.js deleted file mode 100644 index a402e8ba6d..0000000000 --- a/scm-ui/ui-styles/public/js/polyfills.js +++ /dev/null @@ -1,558 +0,0 @@ -/* - * MIT License - * - * Copyright (c) 2020-present Cloudogu GmbH and Contributors - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ -!function(){function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var c="function"==typeof require&&require;if(!u&&c)return c(o,!0);if(i)return i(o,!0);var a=new Error("Cannot find module '"+o+"'");throw a.code="MODULE_NOT_FOUND",a}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(n){var r=t[o][1][n];return s(r||n)},f,f.exports,e,t,n,r)}return n[o].exports}for(var i="function"==typeof require&&require,o=0;o2?arguments[2]:void 0,s=Math.min((void 0===f?u:i(f,u))-a,u-c),l=1;for(a0;)a in r?r[c]=r[a]:delete r[c],c+=l,a+=l;return r}},{110:110,114:114,115:115}],17:[function(t,n,r){"use strict";var e=t(115),i=t(110),o=t(114);n.exports=function fill(t){for(var n=e(this),r=o(n.length),u=arguments.length,c=i(u>1?arguments[1]:void 0,r),a=u>2?arguments[2]:void 0,f=void 0===a?r:i(a,r);f>c;)n[c++]=t;return n}},{110:110,114:114,115:115}],18:[function(t,n,r){var e=t(113),i=t(114),o=t(110);n.exports=function(t){return function(n,r,u){var c,a=e(n),f=i(a.length),s=o(u,f);if(t&&r!=r){for(;f>s;)if((c=a[s++])!=c)return!0}else for(;f>s;s++)if((t||s in a)&&a[s]===r)return t||s||0;return!t&&-1}}},{110:110,113:113,114:114}],19:[function(t,n,r){var e=t(31),i=t(52),o=t(115),u=t(114),c=t(22);n.exports=function(t,n){var r=1==t,a=2==t,f=3==t,s=4==t,l=6==t,h=5==t||l,p=n||c;return function(n,c,v){for(var y,d,g=o(n),m=i(g),x=e(c,v,3),b=u(m.length),w=0,S=r?p(n,b):a?p(n,0):void 0;b>w;w++)if((h||w in m)&&(y=m[w],d=x(y,w,g),t))if(r)S[w]=d;else if(d)switch(t){case 3:return!0;case 5:return y;case 6:return w;case 2:S.push(y)}else if(s)return!1;return l?-1:f||s?s:S}}},{114:114,115:115,22:22,31:31,52:52}],20:[function(t,n,r){var e=t(11),i=t(115),o=t(52),u=t(114);n.exports=function(t,n,r,c,a){e(n);var f=i(t),s=o(f),l=u(f.length),h=a?l-1:0,p=a?-1:1;if(r<2)for(;;){if(h in s){c=s[h],h+=p;break}if(h+=p,a?h<0:l<=h)throw TypeError("Reduce of empty array with no initial value")}for(;a?h>=0:l>h;h+=p)h in s&&(c=n(c,s[h],h,f));return c}},{11:11,114:114,115:115,52:52}],21:[function(t,n,r){var e=t(56),i=t(54),o=t(125)("species");n.exports=function(t){var n;return i(t)&&(n=t.constructor,"function"!=typeof n||n!==Array&&!i(n.prototype)||(n=void 0),e(n)&&null===(n=n[o])&&(n=void 0)),void 0===n?Array:n}},{125:125,54:54,56:56}],22:[function(t,n,r){var e=t(21);n.exports=function(t,n){return new(e(t))(n)}},{21:21}],23:[function(t,n,r){"use strict";var e=t(11),i=t(56),o=t(51),u=[].slice,c={},a=function(t,n,r){if(!(n in c)){for(var e=[],i=0;i1?arguments[1]:void 0,3);r=r?r.n:this._f;)for(e(r.v,r.k,this);r&&r.r;)r=r.p},has:function has(t){return!!d(v(this,n),t)}}),h&&e(s.prototype,"size",{get:function(){return v(this,n)[y]}}),s},def:function(t,n,r){var e,i,o=d(t,n);return o?o.v=r:(t._l=o={i:i=p(n,!0),k:n,v:r,p:e=t._l,n:void 0,r:!1},t._f||(t._f=o),e&&(e.n=o),t[y]++,"F"!==i&&(t._i[i]=o)),t},getEntry:d,setStrong:function(t,n,r){f(t,n,function(t,r){this._t=v(t,n),this._k=r,this._l=void 0},function(){for(var t=this,n=t._k,r=t._l;r&&r.r;)r=r.p;return t._t&&(t._l=r=r?r.n:t._t._f)?"keys"==n?s(0,r.k):"values"==n?s(0,r.v):s(0,[r.k,r.v]):(t._t=void 0,s(1))},r?"entries":"values",!r,!0),l(n)}}},{122:122,14:14,31:31,35:35,44:44,60:60,62:62,69:69,73:73,74:74,92:92,96:96}],27:[function(t,n,r){"use strict";var e=t(92),i=t(69).getWeak,o=t(15),u=t(56),c=t(14),a=t(44),f=t(19),s=t(46),l=t(122),h=f(5),p=f(6),v=0,y=function(t){return t._l||(t._l=new d)},d=function(){this.a=[]},g=function(t,n){return h(t.a,function(t){return t[0]===n})};d.prototype={get:function(t){var n=g(this,t);if(n)return n[1]},has:function(t){return!!g(this,t)},set:function(t,n){var r=g(this,t);r?r[1]=n:this.a.push([t,n])},delete:function(t){var n=p(this.a,function(n){return n[0]===t});return~n&&this.a.splice(n,1),!!~n}},n.exports={getConstructor:function(t,n,r,o){var f=t(function(t,e){c(t,f,n,"_i"),t._t=n,t._i=v++,t._l=void 0,void 0!=e&&a(e,r,t[o],t)});return e(f.prototype,{delete:function(t){if(!u(t))return!1;var r=i(t);return!0===r?y(l(this,n)).delete(t):r&&s(r,this._i)&&delete r[this._i]},has:function has(t){if(!u(t))return!1;var r=i(t);return!0===r?y(l(this,n)).has(t):r&&s(r,this._i)}}),f},def:function(t,n,r){var e=i(o(n),!0);return!0===e?y(t).set(n,r):e[t._i]=r,t},ufstore:y}},{122:122,14:14,15:15,19:19,44:44,46:46,56:56,69:69,92:92}],28:[function(t,n,r){"use strict";var e=t(45),i=t(39),o=t(93),u=t(92),c=t(69),a=t(44),f=t(14),s=t(56),l=t(41),h=t(61),p=t(97),v=t(50);n.exports=function(t,n,r,y,d,g){var m=e[t],x=m,b=d?"set":"add",w=x&&x.prototype,S={},_=function(t){var n=w[t];o(w,t,"delete"==t?function(t){return!(g&&!s(t))&&n.call(this,0===t?0:t)}:"has"==t?function has(t){return!(g&&!s(t))&&n.call(this,0===t?0:t)}:"get"==t?function get(t){return g&&!s(t)?void 0:n.call(this,0===t?0:t)}:"add"==t?function add(t){return n.call(this,0===t?0:t),this}:function set(t,r){return n.call(this,0===t?0:t,r),this})};if("function"==typeof x&&(g||w.forEach&&!l(function(){(new x).entries().next()}))){var E=new x,F=E[b](g?{}:-0,1)!=E,O=l(function(){E.has(1)}),P=h(function(t){new x(t)}),I=!g&&l(function(){for(var t=new x,n=5;n--;)t[b](n,n);return!t.has(-0)});P||(x=n(function(n,r){f(n,x,t);var e=v(new m,n,x);return void 0!=r&&a(r,d,e[b],e),e}),x.prototype=w,w.constructor=x),(O||I)&&(_("delete"),_("has"),d&&_("get")),(I||F)&&_(b),g&&w.clear&&delete w.clear}else x=y.getConstructor(n,t,d,b),u(x.prototype,r),c.NEED=!0;return p(x,t),S[t]=x,i(i.G+i.W+i.F*(x!=m),S),g||y.setStrong(x,t,d),x}},{14:14,39:39,41:41,44:44,45:45,50:50,56:56,61:61,69:69,92:92,93:93,97:97}],29:[function(t,n,r){var e=n.exports={version:"2.5.7"};"number"==typeof __e&&(__e=e)},{}],30:[function(t,n,r){"use strict";var e=t(74),i=t(91);n.exports=function(t,n,r){n in t?e.f(t,n,i(0,r)):t[n]=r}},{74:74,91:91}],31:[function(t,n,r){var e=t(11);n.exports=function(t,n,r){if(e(t),void 0===n)return t;switch(r){case 1:return function(r){return t.call(n,r)};case 2:return function(r,e){return t.call(n,r,e)};case 3:return function(r,e,i){return t.call(n,r,e,i)}}return function(){return t.apply(n,arguments)}}},{11:11}],32:[function(t,n,r){"use strict";var e=t(41),i=Date.prototype.getTime,o=Date.prototype.toISOString,u=function(t){return t>9?t:"0"+t};n.exports=e(function(){return"0385-07-25T07:06:39.999Z"!=o.call(new Date(-5e13-1))})||!e(function(){o.call(new Date(NaN))})?function toISOString(){if(!isFinite(i.call(this)))throw RangeError("Invalid time value");var t=this,n=t.getUTCFullYear(),r=t.getUTCMilliseconds(),e=n<0?"-":n>9999?"+":"";return e+("00000"+Math.abs(n)).slice(e?-6:-4)+"-"+u(t.getUTCMonth()+1)+"-"+u(t.getUTCDate())+"T"+u(t.getUTCHours())+":"+u(t.getUTCMinutes())+":"+u(t.getUTCSeconds())+"."+(r>99?r:"0"+u(r))+"Z"}:o},{41:41}],33:[function(t,n,r){"use strict";var e=t(15),i=t(116);n.exports=function(t){if("string"!==t&&"number"!==t&&"default"!==t)throw TypeError("Incorrect hint");return i(e(this),"number"!=t)}},{116:116,15:15}],34:[function(t,n,r){n.exports=function(t){if(void 0==t)throw TypeError("Can't call method on "+t);return t}},{}],35:[function(t,n,r){n.exports=!t(41)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},{41:41}],36:[function(t,n,r){var e=t(56),i=t(45).document,o=e(i)&&e(i.createElement);n.exports=function(t){return o?i.createElement(t):{}}},{45:45,56:56}],37:[function(t,n,r){n.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},{}],38:[function(t,n,r){var e=t(82),i=t(79),o=t(83);n.exports=function(t){var n=e(t),r=i.f;if(r)for(var u,c=r(t),a=o.f,f=0;c.length>f;)a.call(t,u=c[f++])&&n.push(u);return n}},{79:79,82:82,83:83}],39:[function(t,n,r){var e=t(45),i=t(29),o=t(47),u=t(93),c=t(31),a=function(t,n,r){var f,s,l,h,p=t&a.F,v=t&a.G,y=t&a.S,d=t&a.P,g=t&a.B,m=v?e:y?e[n]||(e[n]={}):(e[n]||{}).prototype,x=v?i:i[n]||(i[n]={}),b=x.prototype||(x.prototype={});v&&(r=n);for(f in r)s=!p&&m&&void 0!==m[f],l=(s?m:r)[f],h=g&&s?c(l,e):d&&"function"==typeof l?c(Function.call,l):l,m&&u(m,f,l,t&a.U),x[f]!=l&&o(x,f,h),d&&b[f]!=l&&(b[f]=l)};e.core=i,a.F=1,a.G=2,a.S=4,a.P=8,a.B=16,a.W=32,a.U=64,a.R=128,n.exports=a},{29:29,31:31,45:45,47:47,93:93}],40:[function(t,n,r){var e=t(125)("match");n.exports=function(t){var n=/./;try{"/./"[t](n)}catch(r){try{return n[e]=!1,!"/./"[t](n)}catch(t){}}return!0}},{125:125}],41:[function(t,n,r){n.exports=function(t){try{return!!t()}catch(t){return!0}}},{}],42:[function(t,n,r){"use strict";var e=t(47),i=t(93),o=t(41),u=t(34),c=t(125);n.exports=function(t,n,r){var a=c(t),f=r(u,a,""[t]),s=f[0],l=f[1];o(function(){var n={};return n[a]=function(){return 7},7!=""[t](n)})&&(i(String.prototype,t,s),e(RegExp.prototype,a,2==n?function(t,n){return l.call(t,this,n)}:function(t){return l.call(t,this)}))}},{125:125,34:34,41:41,47:47,93:93}],43:[function(t,n,r){"use strict";var e=t(15);n.exports=function(){var t=e(this),n="";return t.global&&(n+="g"),t.ignoreCase&&(n+="i"),t.multiline&&(n+="m"),t.unicode&&(n+="u"),t.sticky&&(n+="y"),n}},{15:15}],44:[function(t,n,r){var e=t(31),i=t(58),o=t(53),u=t(15),c=t(114),a=t(126),f={},s={},r=n.exports=function(t,n,r,l,h){var p,v,y,d,g=h?function(){return t}:a(t),m=e(r,l,n?2:1),x=0;if("function"!=typeof g)throw TypeError(t+" is not iterable!");if(o(g)){for(p=c(t.length);p>x;x++)if((d=n?m(u(v=t[x])[0],v[1]):m(t[x]))===f||d===s)return d}else for(y=g.call(t);!(v=y.next()).done;)if((d=i(y,m,v.value,n))===f||d===s)return d};r.BREAK=f,r.RETURN=s},{114:114,126:126,15:15,31:31,53:53,58:58}],45:[function(t,n,r){var e=n.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=e)},{}],46:[function(t,n,r){var e={}.hasOwnProperty;n.exports=function(t,n){return e.call(t,n)}},{}],47:[function(t,n,r){var e=t(74),i=t(91);n.exports=t(35)?function(t,n,r){return e.f(t,n,i(1,r))}:function(t,n,r){return t[n]=r,t}},{35:35,74:74,91:91}],48:[function(t,n,r){var e=t(45).document;n.exports=e&&e.documentElement},{45:45}],49:[function(t,n,r){n.exports=!t(35)&&!t(41)(function(){return 7!=Object.defineProperty(t(36)("div"),"a",{get:function(){return 7}}).a})},{35:35,36:36,41:41}],50:[function(t,n,r){var e=t(56),i=t(95).set;n.exports=function(t,n,r){var o,u=n.constructor;return u!==r&&"function"==typeof u&&(o=u.prototype)!==r.prototype&&e(o)&&i&&i(t,o),t}},{56:56,95:95}],51:[function(t,n,r){n.exports=function(t,n,r){var e=void 0===r;switch(n.length){case 0:return e?t():t.call(r);case 1:return e?t(n[0]):t.call(r,n[0]);case 2:return e?t(n[0],n[1]):t.call(r,n[0],n[1]);case 3:return e?t(n[0],n[1],n[2]):t.call(r,n[0],n[1],n[2]);case 4:return e?t(n[0],n[1],n[2],n[3]):t.call(r,n[0],n[1],n[2],n[3])}return t.apply(r,n)}},{}],52:[function(t,n,r){var e=t(25);n.exports=Object("z").propertyIsEnumerable(0)?Object:function(t){return"String"==e(t)?t.split(""):Object(t)}},{25:25}],53:[function(t,n,r){var e=t(63),i=t(125)("iterator"),o=Array.prototype;n.exports=function(t){return void 0!==t&&(e.Array===t||o[i]===t)}},{125:125,63:63}],54:[function(t,n,r){var e=t(25);n.exports=Array.isArray||function isArray(t){return"Array"==e(t)}},{25:25}],55:[function(t,n,r){var e=t(56),i=Math.floor;n.exports=function isInteger(t){return!e(t)&&isFinite(t)&&i(t)===t}},{56:56}],56:[function(t,n,r){n.exports=function(t){return"object"==typeof t?null!==t:"function"==typeof t}},{}],57:[function(t,n,r){var e=t(56),i=t(25),o=t(125)("match");n.exports=function(t){var n;return e(t)&&(void 0!==(n=t[o])?!!n:"RegExp"==i(t))}},{125:125,25:25,56:56}],58:[function(t,n,r){var e=t(15);n.exports=function(t,n,r,i){try{return i?n(e(r)[0],r[1]):n(r)}catch(n){var o=t.return;throw void 0!==o&&e(o.call(t)),n}}},{15:15}],59:[function(t,n,r){"use strict";var e=t(73),i=t(91),o=t(97),u={};t(47)(u,t(125)("iterator"),function(){return this}),n.exports=function(t,n,r){t.prototype=e(u,{next:i(1,r)}),o(t,n+" Iterator")}},{125:125,47:47,73:73,91:91,97:97}],60:[function(t,n,r){"use strict";var e=t(64),i=t(39),o=t(93),u=t(47),c=t(63),a=t(59),f=t(97),s=t(80),l=t(125)("iterator"),h=!([].keys&&"next"in[].keys()),p=function(){return this};n.exports=function(t,n,r,v,y,d,g){a(r,n,v);var m,x,b,w=function(t){if(!h&&t in F)return F[t];switch(t){case"keys":return function keys(){return new r(this,t)};case"values":return function values(){return new r(this,t)}}return function entries(){return new r(this,t)}},S=n+" Iterator",_="values"==y,E=!1,F=t.prototype,O=F[l]||F["@@iterator"]||y&&F[y],P=O||w(y),I=y?_?w("entries"):P:void 0,A="Array"==n?F.entries||O:O;if(A&&(b=s(A.call(new t)))!==Object.prototype&&b.next&&(f(b,S,!0),e||"function"==typeof b[l]||u(b,l,p)),_&&O&&"values"!==O.name&&(E=!0,P=function values(){return O.call(this)}),e&&!g||!h&&!E&&F[l]||u(F,l,P),c[n]=P,c[S]=p,y)if(m={values:_?P:w("values"),keys:d?P:w("keys"),entries:I},g)for(x in m)x in F||o(F,x,m[x]);else i(i.P+i.F*(h||E),n,m);return m}},{125:125,39:39,47:47,59:59,63:63,64:64,80:80,93:93,97:97}],61:[function(t,n,r){var e=t(125)("iterator"),i=!1;try{var o=[7][e]();o.return=function(){i=!0},Array.from(o,function(){throw 2})}catch(t){}n.exports=function(t,n){if(!n&&!i)return!1;var r=!1;try{var o=[7],u=o[e]();u.next=function(){return{done:r=!0}},o[e]=function(){return u},t(o)}catch(t){}return r}},{125:125}],62:[function(t,n,r){n.exports=function(t,n){return{value:n,done:!!t}}},{}],63:[function(t,n,r){n.exports={}},{}],64:[function(t,n,r){n.exports=!1},{}],65:[function(t,n,r){var e=Math.expm1;n.exports=!e||e(10)>22025.465794806718||e(10)<22025.465794806718||-2e-17!=e(-2e-17)?function expm1(t){return 0==(t=+t)?t:t>-1e-6&&t<1e-6?t+t*t/2:Math.exp(t)-1}:e},{}],66:[function(t,n,r){var e=t(68),i=Math.pow,o=i(2,-52),u=i(2,-23),c=i(2,127)*(2-u),a=i(2,-126),f=function(t){return t+1/o-1/o};n.exports=Math.fround||function fround(t){var n,r,i=Math.abs(t),s=e(t);return ic||r!=r?s*(1/0):s*r)}},{68:68}],67:[function(t,n,r){n.exports=Math.log1p||function log1p(t){return(t=+t)>-1e-8&&t<1e-8?t-t*t/2:Math.log(1+t)}},{}],68:[function(t,n,r){n.exports=Math.sign||function sign(t){return 0==(t=+t)||t!=t?t:t<0?-1:1}},{}],69:[function(t,n,r){var e=t(120)("meta"),i=t(56),o=t(46),u=t(74).f,c=0,a=Object.isExtensible||function(){return!0},f=!t(41)(function(){return a(Object.preventExtensions({}))}),s=function(t){u(t,e,{value:{i:"O"+ ++c,w:{}}})},l=function(t,n){if(!i(t))return"symbol"==typeof t?t:("string"==typeof t?"S":"P")+t;if(!o(t,e)){if(!a(t))return"F";if(!n)return"E";s(t)}return t[e].i},h=function(t,n){if(!o(t,e)){if(!a(t))return!0;if(!n)return!1;s(t)}return t[e].w},p=function(t){return f&&v.NEED&&a(t)&&!o(t,e)&&s(t),t},v=n.exports={KEY:e,NEED:!1,fastKey:l,getWeak:h,onFreeze:p}},{120:120,41:41,46:46,56:56,74:74}],70:[function(t,n,r){var e=t(45),i=t(109).set,o=e.MutationObserver||e.WebKitMutationObserver,u=e.process,c=e.Promise,a="process"==t(25)(u);n.exports=function(){var t,n,r,f=function(){var e,i;for(a&&(e=u.domain)&&e.exit();t;){i=t.fn,t=t.next;try{i()}catch(e){throw t?r():n=void 0,e}}n=void 0,e&&e.enter()};if(a)r=function(){u.nextTick(f)};else if(!o||e.navigator&&e.navigator.standalone)if(c&&c.resolve){var s=c.resolve(void 0);r=function(){s.then(f)}}else r=function(){i.call(e,f)};else{var l=!0,h=document.createTextNode("");new o(f).observe(h,{characterData:!0}),r=function(){h.data=l=!l}}return function(e){var i={fn:e,next:void 0};n&&(n.next=i),t||(t=i,r()),n=i}}},{109:109,25:25,45:45}],71:[function(t,n,r){"use strict";function PromiseCapability(t){var n,r;this.promise=new t(function(t,e){if(void 0!==n||void 0!==r)throw TypeError("Bad Promise constructor");n=t,r=e}),this.resolve=e(n),this.reject=e(r)}var e=t(11);n.exports.f=function(t){return new PromiseCapability(t)}},{11:11}],72:[function(t,n,r){"use strict";var e=t(82),i=t(79),o=t(83),u=t(115),c=t(52),a=Object.assign;n.exports=!a||t(41)(function(){var t={},n={},r=Symbol(),e="abcdefghijklmnopqrst";return t[r]=7,e.split("").forEach(function(t){n[t]=t}),7!=a({},t)[r]||Object.keys(a({},n)).join("")!=e})?function assign(t,n){for(var r=u(t),a=arguments.length,f=1,s=i.f,l=o.f;a>f;)for(var h,p=c(arguments[f++]),v=s?e(p).concat(s(p)):e(p),y=v.length,d=0;y>d;)l.call(p,h=v[d++])&&(r[h]=p[h]);return r}:a},{115:115,41:41,52:52,79:79,82:82,83:83}],73:[function(t,n,r){var e=t(15),i=t(75),o=t(37),u=t(98)("IE_PROTO"),c=function(){},a=function(){var n,r=t(36)("iframe"),e=o.length;for(r.style.display="none",t(48).appendChild(r),r.src="javascript:",n=r.contentWindow.document,n.open(),n.write(" @@ -36,16 +44,6 @@
-