mirror of
https://github.com/stashapp/stash.git
synced 2025-12-06 08:26:00 +01:00
Update dependencies (again) (#3442)
* Update dependencies * Upgrade rollup * Remove all index.ts reexport files
This commit is contained in:
parent
a1851b3713
commit
bd747317d4
202 changed files with 1297 additions and 1406 deletions
|
|
@ -1,9 +1,7 @@
|
||||||
{
|
{
|
||||||
"plugins": ["stylelint-order"],
|
"plugins": ["stylelint-order"],
|
||||||
"extends": "stylelint-config-prettier",
|
|
||||||
"customSyntax": "postcss-scss",
|
"customSyntax": "postcss-scss",
|
||||||
"rules": {
|
"rules": {
|
||||||
"indentation": null,
|
|
||||||
"at-rule-empty-line-before": [
|
"at-rule-empty-line-before": [
|
||||||
"always",
|
"always",
|
||||||
{
|
{
|
||||||
|
|
@ -13,14 +11,7 @@
|
||||||
],
|
],
|
||||||
"at-rule-no-vendor-prefix": true,
|
"at-rule-no-vendor-prefix": true,
|
||||||
"selector-no-vendor-prefix": true,
|
"selector-no-vendor-prefix": true,
|
||||||
"block-closing-brace-newline-after": "always",
|
|
||||||
"block-closing-brace-newline-before": "always-multi-line",
|
|
||||||
"block-closing-brace-space-before": "always-single-line",
|
|
||||||
"block-no-empty": true,
|
"block-no-empty": true,
|
||||||
"block-opening-brace-newline-after": "always-multi-line",
|
|
||||||
"block-opening-brace-space-after": "always-single-line",
|
|
||||||
"block-opening-brace-space-before": "always",
|
|
||||||
"color-hex-case": "lower",
|
|
||||||
"color-hex-length": "short",
|
"color-hex-length": "short",
|
||||||
"color-no-invalid-hex": true,
|
"color-no-invalid-hex": true,
|
||||||
"comment-empty-line-before": [
|
"comment-empty-line-before": [
|
||||||
|
|
@ -31,43 +22,18 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"comment-whitespace-inside": "always",
|
"comment-whitespace-inside": "always",
|
||||||
"declaration-bang-space-after": "never",
|
|
||||||
"declaration-bang-space-before": "always",
|
|
||||||
"declaration-block-no-shorthand-property-overrides": true,
|
"declaration-block-no-shorthand-property-overrides": true,
|
||||||
"declaration-block-semicolon-newline-after": "always-multi-line",
|
|
||||||
"declaration-block-semicolon-space-after": "always-single-line",
|
|
||||||
"declaration-block-semicolon-space-before": "never",
|
|
||||||
"declaration-block-single-line-max-declarations": 1,
|
"declaration-block-single-line-max-declarations": 1,
|
||||||
"declaration-block-trailing-semicolon": "always",
|
|
||||||
"declaration-colon-space-after": "always-single-line",
|
|
||||||
"declaration-colon-space-before": "never",
|
|
||||||
"declaration-no-important": true,
|
"declaration-no-important": true,
|
||||||
"font-family-name-quotes": "always-where-recommended",
|
"font-family-name-quotes": "always-where-recommended",
|
||||||
"function-calc-no-unspaced-operator": true,
|
"function-calc-no-unspaced-operator": true,
|
||||||
"function-comma-newline-after": "always-multi-line",
|
|
||||||
"function-comma-space-after": "always-single-line",
|
|
||||||
"function-comma-space-before": "never",
|
|
||||||
"function-linear-gradient-no-nonstandard-direction": true,
|
"function-linear-gradient-no-nonstandard-direction": true,
|
||||||
"function-parentheses-newline-inside": "always-multi-line",
|
|
||||||
"function-parentheses-space-inside": "never-single-line",
|
|
||||||
"function-url-quotes": "always",
|
"function-url-quotes": "always",
|
||||||
"function-whitespace-after": "always",
|
|
||||||
"length-zero-no-unit": true,
|
"length-zero-no-unit": true,
|
||||||
"max-empty-lines": 1,
|
|
||||||
"max-nesting-depth": 4,
|
"max-nesting-depth": 4,
|
||||||
"media-feature-colon-space-after": "always",
|
|
||||||
"media-feature-colon-space-before": "never",
|
|
||||||
"media-feature-range-operator-space-after": "always",
|
|
||||||
"media-feature-range-operator-space-before": "always",
|
|
||||||
"media-query-list-comma-newline-after": "always-multi-line",
|
|
||||||
"media-query-list-comma-space-after": "always-single-line",
|
|
||||||
"media-query-list-comma-space-before": "never",
|
|
||||||
"media-feature-parentheses-space-inside": "never",
|
|
||||||
"no-descending-specificity": null,
|
"no-descending-specificity": null,
|
||||||
"no-invalid-double-slash-comments": true,
|
"no-invalid-double-slash-comments": true,
|
||||||
"no-missing-end-of-source-newline": true,
|
|
||||||
"number-max-precision": 3,
|
"number-max-precision": 3,
|
||||||
"number-no-trailing-zeros": true,
|
|
||||||
"order/order": ["custom-properties", "declarations"],
|
"order/order": ["custom-properties", "declarations"],
|
||||||
"order/properties-alphabetical-order": true,
|
"order/properties-alphabetical-order": true,
|
||||||
"rule-empty-line-before": [
|
"rule-empty-line-before": [
|
||||||
|
|
@ -80,17 +46,10 @@
|
||||||
"selector-max-id": 1,
|
"selector-max-id": 1,
|
||||||
"selector-max-type": 2,
|
"selector-max-type": 2,
|
||||||
"selector-class-pattern": "^(\\.*[A-Z]*[a-z]+)+(-[a-z0-9]+)*$",
|
"selector-class-pattern": "^(\\.*[A-Z]*[a-z]+)+(-[a-z0-9]+)*$",
|
||||||
"selector-combinator-space-after": "always",
|
|
||||||
"selector-combinator-space-before": "always",
|
|
||||||
"selector-list-comma-newline-after": "always",
|
|
||||||
"selector-list-comma-space-before": "never",
|
|
||||||
"selector-max-universal": 0,
|
"selector-max-universal": 0,
|
||||||
"selector-type-case": "lower",
|
"selector-type-case": "lower",
|
||||||
"selector-pseudo-element-colon-notation": "double",
|
"selector-pseudo-element-colon-notation": "double",
|
||||||
"string-no-newline": true,
|
"string-no-newline": true,
|
||||||
"string-quotes": "double",
|
"time-min-milliseconds": 100
|
||||||
"time-min-milliseconds": 100,
|
|
||||||
"value-list-comma-space-after": "always-single-line",
|
|
||||||
"value-list-comma-space-before": "never"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -22,18 +22,18 @@
|
||||||
],
|
],
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@ant-design/react-slick": "^1.0.0",
|
"@ant-design/react-slick": "^1.0.0",
|
||||||
"@apollo/client": "^3.7.4",
|
"@apollo/client": "^3.7.8",
|
||||||
"@formatjs/intl-getcanonicallocales": "^2.0.5",
|
"@formatjs/intl-getcanonicallocales": "^2.0.5",
|
||||||
"@formatjs/intl-locale": "^3.0.11",
|
"@formatjs/intl-locale": "^3.0.11",
|
||||||
"@formatjs/intl-numberformat": "^8.3.3",
|
"@formatjs/intl-numberformat": "^8.3.3",
|
||||||
"@formatjs/intl-pluralrules": "^5.1.8",
|
"@formatjs/intl-pluralrules": "^5.1.8",
|
||||||
"@fortawesome/fontawesome-svg-core": "^6.2.1",
|
"@fortawesome/fontawesome-svg-core": "^6.3.0",
|
||||||
"@fortawesome/free-brands-svg-icons": "^6.2.1",
|
"@fortawesome/free-brands-svg-icons": "^6.3.0",
|
||||||
"@fortawesome/free-regular-svg-icons": "^6.2.1",
|
"@fortawesome/free-regular-svg-icons": "^6.3.0",
|
||||||
"@fortawesome/free-solid-svg-icons": "^6.2.1",
|
"@fortawesome/free-solid-svg-icons": "^6.3.0",
|
||||||
"@fortawesome/react-fontawesome": "^0.2.0",
|
"@fortawesome/react-fontawesome": "^0.2.0",
|
||||||
"apollo-upload-client": "^17.0.0",
|
"apollo-upload-client": "^17.0.0",
|
||||||
"axios": "^1.2.5",
|
"axios": "^1.3.3",
|
||||||
"base64-blob": "^1.4.1",
|
"base64-blob": "^1.4.1",
|
||||||
"bootstrap": "^4.6.2",
|
"bootstrap": "^4.6.2",
|
||||||
"classnames": "^2.3.2",
|
"classnames": "^2.3.2",
|
||||||
|
|
@ -42,7 +42,7 @@
|
||||||
"formik": "^2.2.9",
|
"formik": "^2.2.9",
|
||||||
"graphql": "^16.6.0",
|
"graphql": "^16.6.0",
|
||||||
"graphql-tag": "^2.12.6",
|
"graphql-tag": "^2.12.6",
|
||||||
"graphql-ws": "^5.11.2",
|
"graphql-ws": "^5.11.3",
|
||||||
"i18n-iso-countries": "^7.5.0",
|
"i18n-iso-countries": "^7.5.0",
|
||||||
"intersection-observer": "^0.12.2",
|
"intersection-observer": "^0.12.2",
|
||||||
"localforage": "^1.10.0",
|
"localforage": "^1.10.0",
|
||||||
|
|
@ -54,12 +54,12 @@
|
||||||
"react-bootstrap": "^1.6.6",
|
"react-bootstrap": "^1.6.6",
|
||||||
"react-dom": "^17.0.2",
|
"react-dom": "^17.0.2",
|
||||||
"react-helmet": "^6.1.0",
|
"react-helmet": "^6.1.0",
|
||||||
"react-intl": "^6.2.6",
|
"react-intl": "^6.2.8",
|
||||||
"react-markdown": "^8.0.5",
|
"react-markdown": "^8.0.5",
|
||||||
"react-router-bootstrap": "^0.25.0",
|
"react-router-bootstrap": "^0.25.0",
|
||||||
"react-router-dom": "^5.3.4",
|
"react-router-dom": "^5.3.4",
|
||||||
"react-router-hash-link": "^2.4.3",
|
"react-router-hash-link": "^2.4.3",
|
||||||
"react-select": "^5.6.1",
|
"react-select": "^5.7.0",
|
||||||
"remark-gfm": "^3.0.1",
|
"remark-gfm": "^3.0.1",
|
||||||
"resize-observer-polyfill": "^1.5.1",
|
"resize-observer-polyfill": "^1.5.1",
|
||||||
"slick-carousel": "^1.8.1",
|
"slick-carousel": "^1.8.1",
|
||||||
|
|
@ -70,49 +70,48 @@
|
||||||
"videojs-mobile-ui": "^0.8.0",
|
"videojs-mobile-ui": "^0.8.0",
|
||||||
"videojs-seek-buttons": "^3.0.1",
|
"videojs-seek-buttons": "^3.0.1",
|
||||||
"videojs-vtt.js": "^0.15.4",
|
"videojs-vtt.js": "^0.15.4",
|
||||||
"yup": "^0.32.11"
|
"yup": "^1.0.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "^7.20.5",
|
"@babel/core": "^7.20.12",
|
||||||
"@graphql-codegen/cli": "^2.16.4",
|
"@graphql-codegen/cli": "^3.0.0",
|
||||||
"@graphql-codegen/time": "^3.2.3",
|
"@graphql-codegen/time": "^4.0.0",
|
||||||
"@graphql-codegen/typescript": "^2.8.7",
|
"@graphql-codegen/typescript": "^3.0.0",
|
||||||
"@graphql-codegen/typescript-operations": "^2.5.12",
|
"@graphql-codegen/typescript-operations": "^3.0.0",
|
||||||
"@graphql-codegen/typescript-react-apollo": "^3.3.7",
|
"@graphql-codegen/typescript-react-apollo": "^3.3.7",
|
||||||
"@types/apollo-upload-client": "^17.0.2",
|
"@types/apollo-upload-client": "^17.0.2",
|
||||||
"@types/lodash-es": "^4.17.6",
|
"@types/lodash-es": "^4.17.6",
|
||||||
"@types/mousetrap": "^1.6.11",
|
"@types/mousetrap": "^1.6.11",
|
||||||
"@types/node": "^14.18.36",
|
"@types/node": "^18.13.0",
|
||||||
"@types/react": "^17.0.53",
|
"@types/react": "^17.0.53",
|
||||||
"@types/react-dom": "^17.0.18",
|
"@types/react-dom": "^17.0.19",
|
||||||
"@types/react-helmet": "^6.1.6",
|
"@types/react-helmet": "^6.1.6",
|
||||||
"@types/react-router-bootstrap": "^0.24.5",
|
"@types/react-router-bootstrap": "^0.24.5",
|
||||||
"@types/react-router-hash-link": "^2.4.5",
|
"@types/react-router-hash-link": "^2.4.5",
|
||||||
"@types/video.js": "^7.3.50",
|
"@types/video.js": "^7.3.51",
|
||||||
"@types/videojs-mobile-ui": "^0.5.0",
|
"@types/videojs-mobile-ui": "^0.5.0",
|
||||||
"@types/videojs-seek-buttons": "^2.1.0",
|
"@types/videojs-seek-buttons": "^2.1.0",
|
||||||
"@typescript-eslint/eslint-plugin": "^5.49.0",
|
"@typescript-eslint/eslint-plugin": "^5.52.0",
|
||||||
"@typescript-eslint/parser": "^5.49.0",
|
"@typescript-eslint/parser": "^5.52.0",
|
||||||
"@vitejs/plugin-react": "^3.0.1",
|
"@vitejs/plugin-react": "^3.1.0",
|
||||||
"eslint": "^8.32.0",
|
"eslint": "^8.34.0",
|
||||||
"eslint-config-airbnb": "^19.0.4",
|
"eslint-config-airbnb": "^19.0.4",
|
||||||
"eslint-config-airbnb-typescript": "^17.0.0",
|
"eslint-config-airbnb-typescript": "^17.0.0",
|
||||||
"eslint-config-prettier": "^8.6.0",
|
"eslint-config-prettier": "^8.6.0",
|
||||||
"eslint-plugin-import": "^2.27.5",
|
"eslint-plugin-import": "^2.27.5",
|
||||||
"eslint-plugin-jsx-a11y": "^6.7.1",
|
"eslint-plugin-jsx-a11y": "^6.7.1",
|
||||||
"eslint-plugin-react": "^7.32.1",
|
"eslint-plugin-react": "^7.32.2",
|
||||||
"eslint-plugin-react-hooks": "^4.6.0",
|
"eslint-plugin-react-hooks": "^4.6.0",
|
||||||
"extract-react-intl-messages": "^4.1.1",
|
"extract-react-intl-messages": "^4.1.1",
|
||||||
"postcss": "^8.4.21",
|
"postcss": "^8.4.21",
|
||||||
"postcss-scss": "^4.0.6",
|
"postcss-scss": "^4.0.6",
|
||||||
"prettier": "^2.8.3",
|
"prettier": "^2.8.4",
|
||||||
"sass": "^1.57.1",
|
"sass": "^1.58.1",
|
||||||
"stylelint": "^14.16.1",
|
"stylelint": "^15.1.0",
|
||||||
"stylelint-config-prettier": "^9.0.4",
|
"stylelint-order": "^6.0.2",
|
||||||
"stylelint-order": "^6.0.1",
|
|
||||||
"ts-node": "^10.9.1",
|
"ts-node": "^10.9.1",
|
||||||
"typescript": "~4.8.4",
|
"typescript": "~4.8.4",
|
||||||
"vite": "^4.0.4",
|
"vite": "^4.1.1",
|
||||||
"vite-plugin-compression": "^0.5.1",
|
"vite-plugin-compression": "^0.5.1",
|
||||||
"vite-tsconfig-paths": "^4.0.5"
|
"vite-tsconfig-paths": "^4.0.5"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ import { Helmet } from "react-helmet";
|
||||||
import cloneDeep from "lodash-es/cloneDeep";
|
import cloneDeep from "lodash-es/cloneDeep";
|
||||||
import mergeWith from "lodash-es/mergeWith";
|
import mergeWith from "lodash-es/mergeWith";
|
||||||
import { ToastProvider } from "src/hooks/Toast";
|
import { ToastProvider } from "src/hooks/Toast";
|
||||||
import LightboxProvider from "src/hooks/Lightbox/context";
|
import { LightboxProvider } from "src/hooks/Lightbox/context";
|
||||||
import { initPolyfills } from "src/polyfills";
|
import { initPolyfills } from "src/polyfills";
|
||||||
|
|
||||||
import locales, { registerCountry } from "src/locales";
|
import locales, { registerCountry } from "src/locales";
|
||||||
|
|
@ -14,14 +14,15 @@ import {
|
||||||
useConfigureUI,
|
useConfigureUI,
|
||||||
useSystemStatus,
|
useSystemStatus,
|
||||||
} from "src/core/StashService";
|
} from "src/core/StashService";
|
||||||
import { flattenMessages } from "src/utils";
|
import flattenMessages from "./utils/flattenMessages";
|
||||||
import Mousetrap from "mousetrap";
|
import Mousetrap from "mousetrap";
|
||||||
import MousetrapPause from "mousetrap-pause";
|
import MousetrapPause from "mousetrap-pause";
|
||||||
import { ErrorBoundary } from "./components/ErrorBoundary";
|
import { ErrorBoundary } from "./components/ErrorBoundary";
|
||||||
import { MainNavbar } from "./components/MainNavbar";
|
import { MainNavbar } from "./components/MainNavbar";
|
||||||
import { PageNotFound } from "./components/PageNotFound";
|
import { PageNotFound } from "./components/PageNotFound";
|
||||||
import * as GQL from "./core/generated-graphql";
|
import * as GQL from "./core/generated-graphql";
|
||||||
import { LoadingIndicator, TITLE_SUFFIX } from "./components/Shared";
|
import { TITLE_SUFFIX } from "./components/Shared/constants";
|
||||||
|
import { LoadingIndicator } from "./components/Shared/LoadingIndicator";
|
||||||
|
|
||||||
import { ConfigurationProvider } from "./hooks/Config";
|
import { ConfigurationProvider } from "./hooks/Config";
|
||||||
import { ManualProvider } from "./components/Help/context";
|
import { ManualProvider } from "./components/Help/context";
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { useChangelogStorage } from "src/hooks";
|
import { useChangelogStorage } from "src/hooks/LocalForage";
|
||||||
import Version from "./Version";
|
import Version from "./Version";
|
||||||
import V010 from "src/docs/en/Changelog/v010.md";
|
import V010 from "src/docs/en/Changelog/v010.md";
|
||||||
import V011 from "src/docs/en/Changelog/v011.md";
|
import V011 from "src/docs/en/Changelog/v011.md";
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ import { faAngleDown, faAngleUp } from "@fortawesome/free-solid-svg-icons";
|
||||||
import React, { useState } from "react";
|
import React, { useState } from "react";
|
||||||
import { Button, Card, Collapse } from "react-bootstrap";
|
import { Button, Card, Collapse } from "react-bootstrap";
|
||||||
import { FormattedDate, FormattedMessage } from "react-intl";
|
import { FormattedDate, FormattedMessage } from "react-intl";
|
||||||
import { Icon } from "src/components/Shared";
|
import { Icon } from "src/components/Shared/Icon";
|
||||||
|
|
||||||
interface IVersionProps {
|
interface IVersionProps {
|
||||||
version: string;
|
version: string;
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,14 @@
|
||||||
import React, { useState, useEffect, useMemo } from "react";
|
import React, { useState, useEffect, useMemo } from "react";
|
||||||
import { Form, Button } from "react-bootstrap";
|
import { Form, Button } from "react-bootstrap";
|
||||||
import { mutateMetadataGenerate } from "src/core/StashService";
|
import { mutateMetadataGenerate } from "src/core/StashService";
|
||||||
import { Modal, Icon } from "src/components/Shared";
|
import { ModalComponent } from "../Shared/Modal";
|
||||||
import { useToast } from "src/hooks";
|
import { Icon } from "src/components/Shared/Icon";
|
||||||
|
import { useToast } from "src/hooks/Toast";
|
||||||
import * as GQL from "src/core/generated-graphql";
|
import * as GQL from "src/core/generated-graphql";
|
||||||
import { FormattedMessage, useIntl } from "react-intl";
|
import { FormattedMessage, useIntl } from "react-intl";
|
||||||
import { ConfigurationContext } from "src/hooks/Config";
|
import { ConfigurationContext } from "src/hooks/Config";
|
||||||
import { Manual } from "../Help/Manual";
|
import { Manual } from "../Help/Manual";
|
||||||
import { withoutTypename } from "src/utils";
|
import { withoutTypename } from "src/utils/data";
|
||||||
import { GenerateOptions } from "../Settings/Tasks/GenerateOptions";
|
import { GenerateOptions } from "../Settings/Tasks/GenerateOptions";
|
||||||
import { SettingSection } from "../Settings/SettingSection";
|
import { SettingSection } from "../Settings/SettingSection";
|
||||||
import { faCogs, faQuestionCircle } from "@fortawesome/free-solid-svg-icons";
|
import { faCogs, faQuestionCircle } from "@fortawesome/free-solid-svg-icons";
|
||||||
|
|
@ -169,7 +170,7 @@ export const GenerateDialog: React.FC<ISceneGenerateDialog> = ({
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Modal
|
<ModalComponent
|
||||||
show
|
show
|
||||||
modalProps={{ animation, size: "lg" }}
|
modalProps={{ animation, size: "lg" }}
|
||||||
icon={faCogs}
|
icon={faCogs}
|
||||||
|
|
@ -203,7 +204,7 @@ export const GenerateDialog: React.FC<ISceneGenerateDialog> = ({
|
||||||
/>
|
/>
|
||||||
</SettingSection>
|
</SettingSection>
|
||||||
</Form>
|
</Form>
|
||||||
</Modal>
|
</ModalComponent>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
import React, { useState, useEffect, useCallback } from "react";
|
import React, { useState, useEffect, useCallback } from "react";
|
||||||
import { Form, Button, Table } from "react-bootstrap";
|
import { Form, Button, Table } from "react-bootstrap";
|
||||||
import { Icon } from "src/components/Shared";
|
import { Icon } from "src/components/Shared/Icon";
|
||||||
import * as GQL from "src/core/generated-graphql";
|
import * as GQL from "src/core/generated-graphql";
|
||||||
import { FormattedMessage, useIntl } from "react-intl";
|
import { FormattedMessage, useIntl } from "react-intl";
|
||||||
import {
|
import {
|
||||||
|
|
|
||||||
|
|
@ -6,11 +6,13 @@ import {
|
||||||
useConfigureDefaults,
|
useConfigureDefaults,
|
||||||
useListSceneScrapers,
|
useListSceneScrapers,
|
||||||
} from "src/core/StashService";
|
} from "src/core/StashService";
|
||||||
import { Icon, Modal, OperationButton } from "src/components/Shared";
|
import { Icon } from "src/components/Shared/Icon";
|
||||||
import { useToast } from "src/hooks";
|
import { ModalComponent } from "src/components/Shared/Modal";
|
||||||
|
import { OperationButton } from "src/components/Shared/OperationButton";
|
||||||
|
import { useToast } from "src/hooks/Toast";
|
||||||
import * as GQL from "src/core/generated-graphql";
|
import * as GQL from "src/core/generated-graphql";
|
||||||
import { FormattedMessage, useIntl } from "react-intl";
|
import { FormattedMessage, useIntl } from "react-intl";
|
||||||
import { withoutTypename } from "src/utils";
|
import { withoutTypename } from "src/utils/data";
|
||||||
import {
|
import {
|
||||||
SCRAPER_PREFIX,
|
SCRAPER_PREFIX,
|
||||||
STASH_BOX_PREFIX,
|
STASH_BOX_PREFIX,
|
||||||
|
|
@ -403,7 +405,7 @@ export const IdentifyDialog: React.FC<IIdentifyDialogProps> = ({
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Modal
|
<ModalComponent
|
||||||
modalProps={{ animation, size: "lg" }}
|
modalProps={{ animation, size: "lg" }}
|
||||||
show
|
show
|
||||||
icon={faCogs}
|
icon={faCogs}
|
||||||
|
|
@ -451,7 +453,7 @@ export const IdentifyDialog: React.FC<IIdentifyDialogProps> = ({
|
||||||
setEditingField={(v) => setEditingField(v)}
|
setEditingField={(v) => setEditingField(v)}
|
||||||
/>
|
/>
|
||||||
</Form>
|
</Form>
|
||||||
</Modal>
|
</ModalComponent>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
import React, { useState, useEffect } from "react";
|
import React, { useState, useEffect } from "react";
|
||||||
import { Form, Button, ListGroup } from "react-bootstrap";
|
import { Form, Button, ListGroup } from "react-bootstrap";
|
||||||
import { Modal, Icon } from "src/components/Shared";
|
import { ModalComponent } from "src/components/Shared/Modal";
|
||||||
|
import { Icon } from "src/components/Shared/Icon";
|
||||||
import { FormattedMessage, useIntl } from "react-intl";
|
import { FormattedMessage, useIntl } from "react-intl";
|
||||||
import * as GQL from "src/core/generated-graphql";
|
import * as GQL from "src/core/generated-graphql";
|
||||||
import { IScraperSource } from "./constants";
|
import { IScraperSource } from "./constants";
|
||||||
|
|
@ -53,7 +54,7 @@ export const SourcesEditor: React.FC<ISourceEditor> = ({
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Modal
|
<ModalComponent
|
||||||
dialogClassName="identify-source-editor"
|
dialogClassName="identify-source-editor"
|
||||||
modalProps={{ animation: false, size: "lg" }}
|
modalProps={{ animation: false, size: "lg" }}
|
||||||
show
|
show
|
||||||
|
|
@ -107,7 +108,7 @@ export const SourcesEditor: React.FC<ISourceEditor> = ({
|
||||||
defaultOptions={defaultOptions}
|
defaultOptions={defaultOptions}
|
||||||
/>
|
/>
|
||||||
</Form>
|
</Form>
|
||||||
</Modal>
|
</ModalComponent>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { Form } from "react-bootstrap";
|
import { Form } from "react-bootstrap";
|
||||||
import { Modal } from "src/components/Shared";
|
import { ModalComponent } from "../Shared/Modal";
|
||||||
import { faCogs } from "@fortawesome/free-solid-svg-icons";
|
import { faCogs } from "@fortawesome/free-solid-svg-icons";
|
||||||
import { useIntl } from "react-intl";
|
import { useIntl } from "react-intl";
|
||||||
import { MarkdownPage } from "../Shared/MarkdownPage";
|
import { MarkdownPage } from "../Shared/MarkdownPage";
|
||||||
|
|
@ -17,7 +17,7 @@ export const ReleaseNotesDialog: React.FC<IReleaseNotesDialog> = ({
|
||||||
const intl = useIntl();
|
const intl = useIntl();
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Modal
|
<ModalComponent
|
||||||
show
|
show
|
||||||
icon={faCogs}
|
icon={faCogs}
|
||||||
header={intl.formatMessage({ id: "release_notes" })}
|
header={intl.formatMessage({ id: "release_notes" })}
|
||||||
|
|
@ -31,7 +31,7 @@ export const ReleaseNotesDialog: React.FC<IReleaseNotesDialog> = ({
|
||||||
<MarkdownPage page={n} key={i} />
|
<MarkdownPage page={n} key={i} />
|
||||||
))}
|
))}
|
||||||
</Form>
|
</Form>
|
||||||
</Modal>
|
</ModalComponent>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,8 @@ import React, { useState } from "react";
|
||||||
import { useMutation, DocumentNode } from "@apollo/client";
|
import { useMutation, DocumentNode } from "@apollo/client";
|
||||||
import { Button, Form } from "react-bootstrap";
|
import { Button, Form } from "react-bootstrap";
|
||||||
import * as GQL from "src/core/generated-graphql";
|
import * as GQL from "src/core/generated-graphql";
|
||||||
import { Modal } from "src/components/Shared";
|
import { ModalComponent } from "src/components/Shared/Modal";
|
||||||
import { getStashboxBase } from "src/utils";
|
import { getStashboxBase } from "src/utils/stashbox";
|
||||||
import { FormattedMessage, useIntl } from "react-intl";
|
import { FormattedMessage, useIntl } from "react-intl";
|
||||||
import { faPaperPlane } from "@fortawesome/free-solid-svg-icons";
|
import { faPaperPlane } from "@fortawesome/free-solid-svg-icons";
|
||||||
|
|
||||||
|
|
@ -78,7 +78,7 @@ export const SubmitStashBoxDraft: React.FC<IProps> = ({
|
||||||
undefined;
|
undefined;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Modal
|
<ModalComponent
|
||||||
icon={faPaperPlane}
|
icon={faPaperPlane}
|
||||||
header={intl.formatMessage({ id: "actions.submit_stash_box" })}
|
header={intl.formatMessage({ id: "actions.submit_stash_box" })}
|
||||||
isRunning={loading}
|
isRunning={loading}
|
||||||
|
|
@ -153,7 +153,7 @@ export const SubmitStashBoxDraft: React.FC<IProps> = ({
|
||||||
<div>{error.message}</div>
|
<div>{error.message}</div>
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
</Modal>
|
</ModalComponent>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
import React, { useState } from "react";
|
import React, { useState } from "react";
|
||||||
import { FormattedMessage, useIntl } from "react-intl";
|
import { FormattedMessage, useIntl } from "react-intl";
|
||||||
import { useConfigureUI } from "src/core/StashService";
|
import { useConfigureUI } from "src/core/StashService";
|
||||||
import { LoadingIndicator } from "src/components/Shared";
|
import { LoadingIndicator } from "../Shared/LoadingIndicator";
|
||||||
import { Button } from "react-bootstrap";
|
import { Button } from "react-bootstrap";
|
||||||
import { FrontPageConfig } from "./FrontPageConfig";
|
import { FrontPageConfig } from "./FrontPageConfig";
|
||||||
import { useToast } from "src/hooks";
|
import { useToast } from "src/hooks/Toast";
|
||||||
import { Control } from "./Control";
|
import { Control } from "./Control";
|
||||||
import { ConfigurationContext } from "src/hooks/Config";
|
import { ConfigurationContext } from "src/hooks/Config";
|
||||||
import {
|
import {
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
import React, { useEffect, useMemo, useState } from "react";
|
import React, { useEffect, useMemo, useState } from "react";
|
||||||
import { FormattedMessage, IntlShape, useIntl } from "react-intl";
|
import { FormattedMessage, IntlShape, useIntl } from "react-intl";
|
||||||
import { useFindSavedFilters } from "src/core/StashService";
|
import { useFindSavedFilters } from "src/core/StashService";
|
||||||
import { LoadingIndicator } from "src/components/Shared";
|
import { LoadingIndicator } from "../Shared/LoadingIndicator";
|
||||||
import { Button, Form, Modal } from "react-bootstrap";
|
import { Button, Form, Modal } from "react-bootstrap";
|
||||||
import {
|
import {
|
||||||
FilterMode,
|
FilterMode,
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,8 @@ import React, { useState } from "react";
|
||||||
import { Form } from "react-bootstrap";
|
import { Form } from "react-bootstrap";
|
||||||
import { useGalleryDestroy } from "src/core/StashService";
|
import { useGalleryDestroy } from "src/core/StashService";
|
||||||
import * as GQL from "src/core/generated-graphql";
|
import * as GQL from "src/core/generated-graphql";
|
||||||
import { Modal } from "src/components/Shared";
|
import { ModalComponent } from "../Shared/Modal";
|
||||||
import { useToast } from "src/hooks";
|
import { useToast } from "src/hooks/Toast";
|
||||||
import { ConfigurationContext } from "src/hooks/Config";
|
import { ConfigurationContext } from "src/hooks/Config";
|
||||||
import { FormattedMessage, useIntl } from "react-intl";
|
import { FormattedMessage, useIntl } from "react-intl";
|
||||||
import { faTrashAlt } from "@fortawesome/free-solid-svg-icons";
|
import { faTrashAlt } from "@fortawesome/free-solid-svg-icons";
|
||||||
|
|
@ -119,7 +119,7 @@ export const DeleteGalleriesDialog: React.FC<IDeleteGalleryDialogProps> = (
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Modal
|
<ModalComponent
|
||||||
show
|
show
|
||||||
icon={faTrashAlt}
|
icon={faTrashAlt}
|
||||||
header={header}
|
header={header}
|
||||||
|
|
@ -155,6 +155,6 @@ export const DeleteGalleriesDialog: React.FC<IDeleteGalleryDialogProps> = (
|
||||||
onChange={() => setDeleteGenerated(!deleteGenerated)}
|
onChange={() => setDeleteGenerated(!deleteGenerated)}
|
||||||
/>
|
/>
|
||||||
</Form>
|
</Form>
|
||||||
</Modal>
|
</ModalComponent>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -4,10 +4,11 @@ import { FormattedMessage, useIntl } from "react-intl";
|
||||||
import isEqual from "lodash-es/isEqual";
|
import isEqual from "lodash-es/isEqual";
|
||||||
import { useBulkGalleryUpdate } from "src/core/StashService";
|
import { useBulkGalleryUpdate } from "src/core/StashService";
|
||||||
import * as GQL from "src/core/generated-graphql";
|
import * as GQL from "src/core/generated-graphql";
|
||||||
import { StudioSelect, Modal } from "src/components/Shared";
|
import { StudioSelect } from "../Shared/Select";
|
||||||
import { useToast } from "src/hooks";
|
import { ModalComponent } from "../Shared/Modal";
|
||||||
import { FormUtils } from "src/utils";
|
import { useToast } from "src/hooks/Toast";
|
||||||
import MultiSet from "../Shared/MultiSet";
|
import FormUtils from "src/utils/form";
|
||||||
|
import { MultiSet } from "../Shared/MultiSet";
|
||||||
import { RatingSystem } from "../Shared/Rating/RatingSystem";
|
import { RatingSystem } from "../Shared/Rating/RatingSystem";
|
||||||
import {
|
import {
|
||||||
getAggregateInputIDs,
|
getAggregateInputIDs,
|
||||||
|
|
@ -226,7 +227,7 @@ export const EditGalleriesDialog: React.FC<IListOperationProps> = (
|
||||||
|
|
||||||
function render() {
|
function render() {
|
||||||
return (
|
return (
|
||||||
<Modal
|
<ModalComponent
|
||||||
show
|
show
|
||||||
icon={faPencilAlt}
|
icon={faPencilAlt}
|
||||||
header={intl.formatMessage(
|
header={intl.formatMessage(
|
||||||
|
|
@ -300,7 +301,7 @@ export const EditGalleriesDialog: React.FC<IListOperationProps> = (
|
||||||
/>
|
/>
|
||||||
</Form.Group>
|
</Form.Group>
|
||||||
</Form>
|
</Form>
|
||||||
</Modal>
|
</ModalComponent>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ import React from "react";
|
||||||
import { Route, Switch } from "react-router-dom";
|
import { Route, Switch } from "react-router-dom";
|
||||||
import { useIntl } from "react-intl";
|
import { useIntl } from "react-intl";
|
||||||
import { Helmet } from "react-helmet";
|
import { Helmet } from "react-helmet";
|
||||||
import { TITLE_SUFFIX } from "src/components/Shared";
|
import { TITLE_SUFFIX } from "../Shared/constants";
|
||||||
import { PersistanceLevel } from "src/hooks/ListHook";
|
import { PersistanceLevel } from "src/hooks/ListHook";
|
||||||
import Gallery from "./GalleryDetails/Gallery";
|
import Gallery from "./GalleryDetails/Gallery";
|
||||||
import GalleryCreate from "./GalleryDetails/GalleryCreate";
|
import GalleryCreate from "./GalleryDetails/GalleryCreate";
|
||||||
|
|
|
||||||
|
|
@ -2,17 +2,15 @@ import { Button, ButtonGroup } from "react-bootstrap";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { Link } from "react-router-dom";
|
import { Link } from "react-router-dom";
|
||||||
import * as GQL from "src/core/generated-graphql";
|
import * as GQL from "src/core/generated-graphql";
|
||||||
import {
|
import { GridCard } from "../Shared/GridCard";
|
||||||
GridCard,
|
import { HoverPopover } from "../Shared/HoverPopover";
|
||||||
HoverPopover,
|
import { Icon } from "../Shared/Icon";
|
||||||
Icon,
|
import { TagLink } from "../Shared/TagLink";
|
||||||
TagLink,
|
import { TruncatedText } from "../Shared/TruncatedText";
|
||||||
TruncatedText,
|
|
||||||
} from "src/components/Shared";
|
|
||||||
import { PopoverCountButton } from "src/components/Shared/PopoverCountButton";
|
|
||||||
import { NavUtils } from "src/utils";
|
|
||||||
import { ConfigurationContext } from "src/hooks/Config";
|
|
||||||
import { PerformerPopoverButton } from "../Shared/PerformerPopoverButton";
|
import { PerformerPopoverButton } from "../Shared/PerformerPopoverButton";
|
||||||
|
import { PopoverCountButton } from "../Shared/PopoverCountButton";
|
||||||
|
import NavUtils from "src/utils/navigation";
|
||||||
|
import { ConfigurationContext } from "src/hooks/Config";
|
||||||
import { RatingBanner } from "../Shared/RatingBanner";
|
import { RatingBanner } from "../Shared/RatingBanner";
|
||||||
import { faBox, faPlayCircle, faTag } from "@fortawesome/free-solid-svg-icons";
|
import { faBox, faPlayCircle, faTag } from "@fortawesome/free-solid-svg-icons";
|
||||||
import { galleryTitle } from "src/core/galleries";
|
import { galleryTitle } from "src/core/galleries";
|
||||||
|
|
|
||||||
|
|
@ -9,14 +9,12 @@ import {
|
||||||
useFindGallery,
|
useFindGallery,
|
||||||
useGalleryUpdate,
|
useGalleryUpdate,
|
||||||
} from "src/core/StashService";
|
} from "src/core/StashService";
|
||||||
import {
|
import { ErrorMessage } from "src/components/Shared/ErrorMessage";
|
||||||
ErrorMessage,
|
import { LoadingIndicator } from "src/components/Shared/LoadingIndicator";
|
||||||
LoadingIndicator,
|
import { Icon } from "src/components/Shared/Icon";
|
||||||
Icon,
|
import { Counter } from "src/components/Shared/Counter";
|
||||||
Counter,
|
|
||||||
} from "src/components/Shared";
|
|
||||||
import Mousetrap from "mousetrap";
|
import Mousetrap from "mousetrap";
|
||||||
import { useToast } from "src/hooks";
|
import { useToast } from "src/hooks/Toast";
|
||||||
import { OrganizedButton } from "src/components/Scenes/SceneDetails/OrganizedButton";
|
import { OrganizedButton } from "src/components/Scenes/SceneDetails/OrganizedButton";
|
||||||
import { GalleryEditPanel } from "./GalleryEditPanel";
|
import { GalleryEditPanel } from "./GalleryEditPanel";
|
||||||
import { GalleryDetailPanel } from "./GalleryDetailPanel";
|
import { GalleryDetailPanel } from "./GalleryDetailPanel";
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ import { ListFilterModel } from "src/models/list-filter/filter";
|
||||||
import { ImageList } from "src/components/Images/ImageList";
|
import { ImageList } from "src/components/Images/ImageList";
|
||||||
import { showWhenSelected } from "src/hooks/ListHook";
|
import { showWhenSelected } from "src/hooks/ListHook";
|
||||||
import { mutateAddGalleryImages } from "src/core/StashService";
|
import { mutateAddGalleryImages } from "src/core/StashService";
|
||||||
import { useToast } from "src/hooks";
|
import { useToast } from "src/hooks/Toast";
|
||||||
import { useIntl } from "react-intl";
|
import { useIntl } from "react-intl";
|
||||||
import { faPlus } from "@fortawesome/free-solid-svg-icons";
|
import { faPlus } from "@fortawesome/free-solid-svg-icons";
|
||||||
import { galleryTitle } from "src/core/galleries";
|
import { galleryTitle } from "src/core/galleries";
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,9 @@ import React from "react";
|
||||||
import { Link } from "react-router-dom";
|
import { Link } from "react-router-dom";
|
||||||
import { FormattedDate, FormattedMessage, useIntl } from "react-intl";
|
import { FormattedDate, FormattedMessage, useIntl } from "react-intl";
|
||||||
import * as GQL from "src/core/generated-graphql";
|
import * as GQL from "src/core/generated-graphql";
|
||||||
import { TextUtils } from "src/utils";
|
import TextUtils from "src/utils/text";
|
||||||
import { TagLink, TruncatedText } from "src/components/Shared";
|
import { TagLink } from "src/components/Shared/TagLink";
|
||||||
|
import { TruncatedText } from "src/components/Shared/TruncatedText";
|
||||||
import { PerformerCard } from "src/components/Performers/PerformerCard";
|
import { PerformerCard } from "src/components/Performers/PerformerCard";
|
||||||
import { RatingSystem } from "src/components/Shared/Rating/RatingSystem";
|
import { RatingSystem } from "src/components/Shared/Rating/RatingSystem";
|
||||||
import { sortPerformers } from "src/core/performers";
|
import { sortPerformers } from "src/core/performers";
|
||||||
|
|
|
||||||
|
|
@ -25,13 +25,13 @@ import {
|
||||||
TagSelect,
|
TagSelect,
|
||||||
SceneSelect,
|
SceneSelect,
|
||||||
StudioSelect,
|
StudioSelect,
|
||||||
Icon,
|
} from "src/components/Shared/Select";
|
||||||
LoadingIndicator,
|
import { Icon } from "src/components/Shared/Icon";
|
||||||
URLField,
|
import { LoadingIndicator } from "src/components/Shared/LoadingIndicator";
|
||||||
} from "src/components/Shared";
|
import { URLField } from "src/components/Shared/URLField";
|
||||||
import { useToast } from "src/hooks";
|
import { useToast } from "src/hooks/Toast";
|
||||||
import { useFormik } from "formik";
|
import { useFormik } from "formik";
|
||||||
import { FormUtils } from "src/utils";
|
import FormUtils from "src/utils/form";
|
||||||
import { RatingSystem } from "src/components/Shared/Rating/RatingSystem";
|
import { RatingSystem } from "src/components/Shared/Rating/RatingSystem";
|
||||||
import { GalleryScrapeDialog } from "./GalleryScrapeDialog";
|
import { GalleryScrapeDialog } from "./GalleryScrapeDialog";
|
||||||
import { faSyncAlt } from "@fortawesome/free-solid-svg-icons";
|
import { faSyncAlt } from "@fortawesome/free-solid-svg-icons";
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,12 @@
|
||||||
import React, { useMemo, useState } from "react";
|
import React, { useMemo, useState } from "react";
|
||||||
import { Accordion, Button, Card } from "react-bootstrap";
|
import { Accordion, Button, Card } from "react-bootstrap";
|
||||||
import { FormattedMessage, FormattedTime } from "react-intl";
|
import { FormattedMessage, FormattedTime } from "react-intl";
|
||||||
import { TruncatedText } from "src/components/Shared";
|
import { TruncatedText } from "src/components/Shared/TruncatedText";
|
||||||
import DeleteFilesDialog from "src/components/Shared/DeleteFilesDialog";
|
import { DeleteFilesDialog } from "src/components/Shared/DeleteFilesDialog";
|
||||||
import * as GQL from "src/core/generated-graphql";
|
import * as GQL from "src/core/generated-graphql";
|
||||||
import { mutateGallerySetPrimaryFile } from "src/core/StashService";
|
import { mutateGallerySetPrimaryFile } from "src/core/StashService";
|
||||||
import { useToast } from "src/hooks";
|
import { useToast } from "src/hooks/Toast";
|
||||||
import { TextUtils } from "src/utils";
|
import TextUtils from "src/utils/text";
|
||||||
import { TextField, URLField } from "src/utils/field";
|
import { TextField, URLField } from "src/utils/field";
|
||||||
|
|
||||||
interface IFileInfoPanelProps {
|
interface IFileInfoPanelProps {
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ import { ListFilterModel } from "src/models/list-filter/filter";
|
||||||
import { ImageList } from "src/components/Images/ImageList";
|
import { ImageList } from "src/components/Images/ImageList";
|
||||||
import { mutateRemoveGalleryImages } from "src/core/StashService";
|
import { mutateRemoveGalleryImages } from "src/core/StashService";
|
||||||
import { showWhenSelected, PersistanceLevel } from "src/hooks/ListHook";
|
import { showWhenSelected, PersistanceLevel } from "src/hooks/ListHook";
|
||||||
import { useToast } from "src/hooks";
|
import { useToast } from "src/hooks/Toast";
|
||||||
import { useIntl } from "react-intl";
|
import { useIntl } from "react-intl";
|
||||||
import { faMinus } from "@fortawesome/free-solid-svg-icons";
|
import { faMinus } from "@fortawesome/free-solid-svg-icons";
|
||||||
import { galleryTitle } from "src/core/galleries";
|
import { galleryTitle } from "src/core/galleries";
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,11 @@
|
||||||
import React, { useState } from "react";
|
import React, { useState } from "react";
|
||||||
import { FormattedMessage, useIntl } from "react-intl";
|
import { FormattedMessage, useIntl } from "react-intl";
|
||||||
import { StudioSelect, PerformerSelect } from "src/components/Shared";
|
import {
|
||||||
|
StudioSelect,
|
||||||
|
PerformerSelect,
|
||||||
|
TagSelect,
|
||||||
|
} from "src/components/Shared/Select";
|
||||||
import * as GQL from "src/core/generated-graphql";
|
import * as GQL from "src/core/generated-graphql";
|
||||||
import { TagSelect } from "src/components/Shared/Select";
|
|
||||||
import {
|
import {
|
||||||
ScrapeDialog,
|
ScrapeDialog,
|
||||||
ScrapeDialogRow,
|
ScrapeDialogRow,
|
||||||
|
|
@ -17,7 +20,7 @@ import {
|
||||||
useTagCreate,
|
useTagCreate,
|
||||||
makePerformerCreateInput,
|
makePerformerCreateInput,
|
||||||
} from "src/core/StashService";
|
} from "src/core/StashService";
|
||||||
import { useToast } from "src/hooks";
|
import { useToast } from "src/hooks/Toast";
|
||||||
|
|
||||||
function renderScrapedStudio(
|
function renderScrapedStudio(
|
||||||
result: ScrapeResult<string>,
|
result: ScrapeResult<string>,
|
||||||
|
|
|
||||||
|
|
@ -8,8 +8,11 @@ import {
|
||||||
FindGalleriesQueryResult,
|
FindGalleriesQueryResult,
|
||||||
SlimGalleryDataFragment,
|
SlimGalleryDataFragment,
|
||||||
} from "src/core/generated-graphql";
|
} from "src/core/generated-graphql";
|
||||||
import { useGalleriesList } from "src/hooks";
|
import {
|
||||||
import { showWhenSelected, PersistanceLevel } from "src/hooks/ListHook";
|
showWhenSelected,
|
||||||
|
PersistanceLevel,
|
||||||
|
useGalleriesList,
|
||||||
|
} from "src/hooks/ListHook";
|
||||||
import { ListFilterModel } from "src/models/list-filter/filter";
|
import { ListFilterModel } from "src/models/list-filter/filter";
|
||||||
import { DisplayMode } from "src/models/list-filter/types";
|
import { DisplayMode } from "src/models/list-filter/types";
|
||||||
import { queryFindGalleries } from "src/core/StashService";
|
import { queryFindGalleries } from "src/core/StashService";
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
import React, { useMemo } from "react";
|
import React, { useMemo } from "react";
|
||||||
import { useLightbox } from "src/hooks";
|
import { useLightbox } from "src/hooks/Lightbox/hooks";
|
||||||
import { LoadingIndicator } from "src/components/Shared";
|
import { LoadingIndicator } from "src/components/Shared/LoadingIndicator";
|
||||||
import "flexbin/flexbin.css";
|
import "flexbin/flexbin.css";
|
||||||
import {
|
import {
|
||||||
CriterionModifier,
|
CriterionModifier,
|
||||||
|
|
|
||||||
|
|
@ -2,9 +2,9 @@ import React from "react";
|
||||||
import { useIntl } from "react-intl";
|
import { useIntl } from "react-intl";
|
||||||
import { Link } from "react-router-dom";
|
import { Link } from "react-router-dom";
|
||||||
import * as GQL from "src/core/generated-graphql";
|
import * as GQL from "src/core/generated-graphql";
|
||||||
import { TruncatedText } from "src/components/Shared";
|
import { TruncatedText } from "src/components/Shared/TruncatedText";
|
||||||
import { TextUtils } from "src/utils";
|
import TextUtils from "src/utils/text";
|
||||||
import { useGalleryLightbox } from "src/hooks";
|
import { useGalleryLightbox } from "src/hooks/Lightbox/hooks";
|
||||||
import { galleryTitle } from "src/core/galleries";
|
import { galleryTitle } from "src/core/galleries";
|
||||||
import { RatingSystem } from "../Shared/Rating/RatingSystem";
|
import { RatingSystem } from "../Shared/Rating/RatingSystem";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,8 @@ import React, { useState } from "react";
|
||||||
import { Form } from "react-bootstrap";
|
import { Form } from "react-bootstrap";
|
||||||
import { useImagesDestroy } from "src/core/StashService";
|
import { useImagesDestroy } from "src/core/StashService";
|
||||||
import * as GQL from "src/core/generated-graphql";
|
import * as GQL from "src/core/generated-graphql";
|
||||||
import { Modal } from "src/components/Shared";
|
import { ModalComponent } from "src/components/Shared/Modal";
|
||||||
import { useToast } from "src/hooks";
|
import { useToast } from "src/hooks/Toast";
|
||||||
import { ConfigurationContext } from "src/hooks/Config";
|
import { ConfigurationContext } from "src/hooks/Config";
|
||||||
import { FormattedMessage, useIntl } from "react-intl";
|
import { FormattedMessage, useIntl } from "react-intl";
|
||||||
import { faTrashAlt } from "@fortawesome/free-solid-svg-icons";
|
import { faTrashAlt } from "@fortawesome/free-solid-svg-icons";
|
||||||
|
|
@ -112,7 +112,7 @@ export const DeleteImagesDialog: React.FC<IDeleteImageDialogProps> = (
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Modal
|
<ModalComponent
|
||||||
show
|
show
|
||||||
icon={faTrashAlt}
|
icon={faTrashAlt}
|
||||||
header={header}
|
header={header}
|
||||||
|
|
@ -146,6 +146,6 @@ export const DeleteImagesDialog: React.FC<IDeleteImageDialogProps> = (
|
||||||
onChange={() => setDeleteGenerated(!deleteGenerated)}
|
onChange={() => setDeleteGenerated(!deleteGenerated)}
|
||||||
/>
|
/>
|
||||||
</Form>
|
</Form>
|
||||||
</Modal>
|
</ModalComponent>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -4,10 +4,11 @@ import { FormattedMessage, useIntl } from "react-intl";
|
||||||
import isEqual from "lodash-es/isEqual";
|
import isEqual from "lodash-es/isEqual";
|
||||||
import { useBulkImageUpdate } from "src/core/StashService";
|
import { useBulkImageUpdate } from "src/core/StashService";
|
||||||
import * as GQL from "src/core/generated-graphql";
|
import * as GQL from "src/core/generated-graphql";
|
||||||
import { StudioSelect, Modal } from "src/components/Shared";
|
import { StudioSelect } from "src/components/Shared/Select";
|
||||||
import { useToast } from "src/hooks";
|
import { ModalComponent } from "src/components/Shared/Modal";
|
||||||
import { FormUtils } from "src/utils";
|
import { useToast } from "src/hooks/Toast";
|
||||||
import MultiSet from "../Shared/MultiSet";
|
import FormUtils from "src/utils/form";
|
||||||
|
import { MultiSet } from "../Shared/MultiSet";
|
||||||
import { RatingSystem } from "../Shared/Rating/RatingSystem";
|
import { RatingSystem } from "../Shared/Rating/RatingSystem";
|
||||||
import {
|
import {
|
||||||
getAggregateInputIDs,
|
getAggregateInputIDs,
|
||||||
|
|
@ -216,7 +217,7 @@ export const EditImagesDialog: React.FC<IListOperationProps> = (
|
||||||
|
|
||||||
function render() {
|
function render() {
|
||||||
return (
|
return (
|
||||||
<Modal
|
<ModalComponent
|
||||||
show
|
show
|
||||||
icon={faPencilAlt}
|
icon={faPencilAlt}
|
||||||
header={intl.formatMessage(
|
header={intl.formatMessage(
|
||||||
|
|
@ -290,7 +291,7 @@ export const EditImagesDialog: React.FC<IListOperationProps> = (
|
||||||
/>
|
/>
|
||||||
</Form.Group>
|
</Form.Group>
|
||||||
</Form>
|
</Form>
|
||||||
</Modal>
|
</ModalComponent>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,10 +2,13 @@ import React, { MouseEvent, useMemo } from "react";
|
||||||
import { Button, ButtonGroup } from "react-bootstrap";
|
import { Button, ButtonGroup } from "react-bootstrap";
|
||||||
import cx from "classnames";
|
import cx from "classnames";
|
||||||
import * as GQL from "src/core/generated-graphql";
|
import * as GQL from "src/core/generated-graphql";
|
||||||
import { Icon, TagLink, HoverPopover, SweatDrops } from "src/components/Shared";
|
import { Icon } from "src/components/Shared/Icon";
|
||||||
import { PerformerPopoverButton } from "../Shared/PerformerPopoverButton";
|
import { TagLink } from "src/components/Shared/TagLink";
|
||||||
import { GridCard } from "../Shared/GridCard";
|
import { HoverPopover } from "src/components/Shared/HoverPopover";
|
||||||
import { RatingBanner } from "../Shared/RatingBanner";
|
import { SweatDrops } from "src/components/Shared/SweatDrops";
|
||||||
|
import { PerformerPopoverButton } from "src/components/Shared/PerformerPopoverButton";
|
||||||
|
import { GridCard } from "src/components/Shared/GridCard";
|
||||||
|
import { RatingBanner } from "src/components/Shared/RatingBanner";
|
||||||
import {
|
import {
|
||||||
faBox,
|
faBox,
|
||||||
faImages,
|
faImages,
|
||||||
|
|
|
||||||
|
|
@ -11,13 +11,11 @@ import {
|
||||||
useImageUpdate,
|
useImageUpdate,
|
||||||
mutateMetadataScan,
|
mutateMetadataScan,
|
||||||
} from "src/core/StashService";
|
} from "src/core/StashService";
|
||||||
import {
|
import { ErrorMessage } from "src/components/Shared/ErrorMessage";
|
||||||
ErrorMessage,
|
import { LoadingIndicator } from "src/components/Shared/LoadingIndicator";
|
||||||
LoadingIndicator,
|
import { Icon } from "src/components/Shared/Icon";
|
||||||
Icon,
|
import { Counter } from "src/components/Shared/Counter";
|
||||||
Counter,
|
import { useToast } from "src/hooks/Toast";
|
||||||
} from "src/components/Shared";
|
|
||||||
import { useToast } from "src/hooks";
|
|
||||||
import * as Mousetrap from "mousetrap";
|
import * as Mousetrap from "mousetrap";
|
||||||
import { OCounterButton } from "src/components/Scenes/SceneDetails/OCounterButton";
|
import { OCounterButton } from "src/components/Scenes/SceneDetails/OCounterButton";
|
||||||
import { OrganizedButton } from "src/components/Scenes/SceneDetails/OrganizedButton";
|
import { OrganizedButton } from "src/components/Scenes/SceneDetails/OrganizedButton";
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,9 @@
|
||||||
import React, { useMemo } from "react";
|
import React, { useMemo } from "react";
|
||||||
import { Link } from "react-router-dom";
|
import { Link } from "react-router-dom";
|
||||||
import * as GQL from "src/core/generated-graphql";
|
import * as GQL from "src/core/generated-graphql";
|
||||||
import { TextUtils } from "src/utils";
|
import TextUtils from "src/utils/text";
|
||||||
import { TagLink, TruncatedText } from "src/components/Shared";
|
import { TagLink } from "src/components/Shared/TagLink";
|
||||||
|
import { TruncatedText } from "src/components/Shared/TruncatedText";
|
||||||
import { PerformerCard } from "src/components/Performers/PerformerCard";
|
import { PerformerCard } from "src/components/Performers/PerformerCard";
|
||||||
import { RatingSystem } from "src/components/Shared/Rating/RatingSystem";
|
import { RatingSystem } from "src/components/Shared/Rating/RatingSystem";
|
||||||
import { sortPerformers } from "src/core/performers";
|
import { sortPerformers } from "src/core/performers";
|
||||||
|
|
|
||||||
|
|
@ -9,11 +9,11 @@ import {
|
||||||
PerformerSelect,
|
PerformerSelect,
|
||||||
TagSelect,
|
TagSelect,
|
||||||
StudioSelect,
|
StudioSelect,
|
||||||
LoadingIndicator,
|
} from "src/components/Shared/Select";
|
||||||
URLField,
|
import { LoadingIndicator } from "src/components/Shared/LoadingIndicator";
|
||||||
} from "src/components/Shared";
|
import { URLField } from "src/components/Shared/URLField";
|
||||||
import { useToast } from "src/hooks";
|
import { useToast } from "src/hooks/Toast";
|
||||||
import { FormUtils } from "src/utils";
|
import FormUtils from "src/utils/form";
|
||||||
import { useFormik } from "formik";
|
import { useFormik } from "formik";
|
||||||
import { Prompt } from "react-router-dom";
|
import { Prompt } from "react-router-dom";
|
||||||
import { RatingSystem } from "src/components/Shared/Rating/RatingSystem";
|
import { RatingSystem } from "src/components/Shared/Rating/RatingSystem";
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,12 @@
|
||||||
import React, { useState } from "react";
|
import React, { useState } from "react";
|
||||||
import { Accordion, Button, Card } from "react-bootstrap";
|
import { Accordion, Button, Card } from "react-bootstrap";
|
||||||
import { FormattedMessage, FormattedNumber, FormattedTime } from "react-intl";
|
import { FormattedMessage, FormattedNumber, FormattedTime } from "react-intl";
|
||||||
import { TruncatedText } from "src/components/Shared";
|
import { TruncatedText } from "src/components/Shared/TruncatedText";
|
||||||
import DeleteFilesDialog from "src/components/Shared/DeleteFilesDialog";
|
import { DeleteFilesDialog } from "src/components/Shared/DeleteFilesDialog";
|
||||||
import * as GQL from "src/core/generated-graphql";
|
import * as GQL from "src/core/generated-graphql";
|
||||||
import { mutateImageSetPrimaryFile } from "src/core/StashService";
|
import { mutateImageSetPrimaryFile } from "src/core/StashService";
|
||||||
import { useToast } from "src/hooks";
|
import { useToast } from "src/hooks/Toast";
|
||||||
import { TextUtils } from "src/utils";
|
import TextUtils from "src/utils/text";
|
||||||
import { TextField, URLField } from "src/utils/field";
|
import { TextField, URLField } from "src/utils/field";
|
||||||
|
|
||||||
interface IFileInfoPanelProps {
|
interface IFileInfoPanelProps {
|
||||||
|
|
|
||||||
|
|
@ -9,13 +9,14 @@ import {
|
||||||
} from "src/core/generated-graphql";
|
} from "src/core/generated-graphql";
|
||||||
import * as GQL from "src/core/generated-graphql";
|
import * as GQL from "src/core/generated-graphql";
|
||||||
import { queryFindImages } from "src/core/StashService";
|
import { queryFindImages } from "src/core/StashService";
|
||||||
import { useImagesList, useLightbox } from "src/hooks";
|
import { useLightbox } from "src/hooks/Lightbox/hooks";
|
||||||
import { ListFilterModel } from "src/models/list-filter/filter";
|
import { ListFilterModel } from "src/models/list-filter/filter";
|
||||||
import { DisplayMode } from "src/models/list-filter/types";
|
import { DisplayMode } from "src/models/list-filter/types";
|
||||||
import {
|
import {
|
||||||
IListHookOperation,
|
IListHookOperation,
|
||||||
showWhenSelected,
|
showWhenSelected,
|
||||||
PersistanceLevel,
|
PersistanceLevel,
|
||||||
|
useImagesList,
|
||||||
} from "src/hooks/ListHook";
|
} from "src/hooks/ListHook";
|
||||||
|
|
||||||
import { ImageCard } from "./ImageCard";
|
import { ImageCard } from "./ImageCard";
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ import React from "react";
|
||||||
import { Route, Switch } from "react-router-dom";
|
import { Route, Switch } from "react-router-dom";
|
||||||
import { useIntl } from "react-intl";
|
import { useIntl } from "react-intl";
|
||||||
import { Helmet } from "react-helmet";
|
import { Helmet } from "react-helmet";
|
||||||
import { TITLE_SUFFIX } from "src/components/Shared";
|
import { TITLE_SUFFIX } from "../Shared/constants";
|
||||||
import { PersistanceLevel } from "src/hooks/ListHook";
|
import { PersistanceLevel } from "src/hooks/ListHook";
|
||||||
import { Image } from "./ImageDetails/Image";
|
import { Image } from "./ImageDetails/Image";
|
||||||
import { ImageList } from "./ImageList";
|
import { ImageList } from "./ImageList";
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ import { InputFilter } from "./Filters/InputFilter";
|
||||||
import { DateFilter } from "./Filters/DateFilter";
|
import { DateFilter } from "./Filters/DateFilter";
|
||||||
import { TimestampFilter } from "./Filters/TimestampFilter";
|
import { TimestampFilter } from "./Filters/TimestampFilter";
|
||||||
import { CountryCriterion } from "src/models/list-filter/criteria/country";
|
import { CountryCriterion } from "src/models/list-filter/criteria/country";
|
||||||
import { CountrySelect } from "../Shared";
|
import { CountrySelect } from "../Shared/CountrySelect";
|
||||||
import { StashIDCriterion } from "src/models/list-filter/criteria/stash-ids";
|
import { StashIDCriterion } from "src/models/list-filter/criteria/stash-ids";
|
||||||
import { StashIDFilter } from "./Filters/StashIDFilter";
|
import { StashIDFilter } from "./Filters/StashIDFilter";
|
||||||
import { ConfigurationContext } from "src/hooks/Config";
|
import { ConfigurationContext } from "src/hooks/Config";
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,7 @@ import {
|
||||||
CriterionValue,
|
CriterionValue,
|
||||||
} from "src/models/list-filter/criteria/criterion";
|
} from "src/models/list-filter/criteria/criterion";
|
||||||
import { useIntl } from "react-intl";
|
import { useIntl } from "react-intl";
|
||||||
import { Icon } from "../Shared";
|
import { Icon } from "../Shared/Icon";
|
||||||
import { faTimes } from "@fortawesome/free-solid-svg-icons";
|
import { faTimes } from "@fortawesome/free-solid-svg-icons";
|
||||||
|
|
||||||
interface IFilterTagsProps {
|
interface IFilterTagsProps {
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { Form } from "react-bootstrap";
|
import { Form } from "react-bootstrap";
|
||||||
import { useIntl } from "react-intl";
|
import { useIntl } from "react-intl";
|
||||||
import { CriterionModifier } from "../../../core/generated-graphql";
|
import { CriterionModifier } from "src/core/generated-graphql";
|
||||||
import { DurationInput } from "../../Shared";
|
import { DurationInput } from "src/components/Shared/DurationInput";
|
||||||
import { INumberValue } from "../../../models/list-filter/types";
|
import { INumberValue } from "src/models/list-filter/types";
|
||||||
import { Criterion } from "../../../models/list-filter/criteria/criterion";
|
import { Criterion } from "src/models/list-filter/criteria/criterion";
|
||||||
|
|
||||||
interface IDurationFilterProps {
|
interface IDurationFilterProps {
|
||||||
criterion: Criterion<INumberValue>;
|
criterion: Criterion<INumberValue>;
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { Form } from "react-bootstrap";
|
import { Form } from "react-bootstrap";
|
||||||
import { defineMessages, MessageDescriptor, useIntl } from "react-intl";
|
import { defineMessages, MessageDescriptor, useIntl } from "react-intl";
|
||||||
import { FilterSelect, ValidTypes } from "../../Shared";
|
import { FilterSelect, ValidTypes } from "src/components/Shared/Select";
|
||||||
import { Criterion } from "../../../models/list-filter/criteria/criterion";
|
import { Criterion } from "src/models/list-filter/criteria/criterion";
|
||||||
import { IHierarchicalLabelValue } from "../../../models/list-filter/types";
|
import { IHierarchicalLabelValue } from "src/models/list-filter/types";
|
||||||
|
|
||||||
interface IHierarchicalLabelValueFilterProps {
|
interface IHierarchicalLabelValueFilterProps {
|
||||||
criterion: Criterion<IHierarchicalLabelValue>;
|
criterion: Criterion<IHierarchicalLabelValue>;
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { Form } from "react-bootstrap";
|
import { Form } from "react-bootstrap";
|
||||||
import { FilterSelect, ValidTypes } from "../../Shared";
|
import { FilterSelect, ValidTypes } from "src/components/Shared/Select";
|
||||||
import { Criterion } from "../../../models/list-filter/criteria/criterion";
|
import { Criterion } from "src/models/list-filter/criteria/criterion";
|
||||||
import { ILabeledId } from "../../../models/list-filter/types";
|
import { ILabeledId } from "src/models/list-filter/types";
|
||||||
|
|
||||||
interface ILabeledIdFilterProps {
|
interface ILabeledIdFilterProps {
|
||||||
criterion: Criterion<ILabeledId[]>;
|
criterion: Criterion<ILabeledId[]>;
|
||||||
|
|
|
||||||
|
|
@ -17,9 +17,9 @@ import {
|
||||||
Overlay,
|
Overlay,
|
||||||
} from "react-bootstrap";
|
} from "react-bootstrap";
|
||||||
|
|
||||||
import { Icon } from "src/components/Shared";
|
import { Icon } from "../Shared/Icon";
|
||||||
import { ListFilterModel } from "src/models/list-filter/filter";
|
import { ListFilterModel } from "src/models/list-filter/filter";
|
||||||
import { useFocus } from "src/utils";
|
import useFocus from "src/utils/focus";
|
||||||
import { ListFilterOptions } from "src/models/list-filter/filter-options";
|
import { ListFilterOptions } from "src/models/list-filter/filter-options";
|
||||||
import { FormattedMessage, useIntl } from "react-intl";
|
import { FormattedMessage, useIntl } from "react-intl";
|
||||||
import { PersistanceLevel } from "src/hooks/ListHook";
|
import { PersistanceLevel } from "src/hooks/ListHook";
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ import {
|
||||||
import Mousetrap from "mousetrap";
|
import Mousetrap from "mousetrap";
|
||||||
import { FormattedMessage, useIntl } from "react-intl";
|
import { FormattedMessage, useIntl } from "react-intl";
|
||||||
import { IconDefinition } from "@fortawesome/fontawesome-svg-core";
|
import { IconDefinition } from "@fortawesome/fontawesome-svg-core";
|
||||||
import { Icon } from "../Shared";
|
import { Icon } from "../Shared/Icon";
|
||||||
import {
|
import {
|
||||||
faEllipsisH,
|
faEllipsisH,
|
||||||
faPencilAlt,
|
faPencilAlt,
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ import {
|
||||||
} from "react-bootstrap";
|
} from "react-bootstrap";
|
||||||
import { DisplayMode } from "src/models/list-filter/types";
|
import { DisplayMode } from "src/models/list-filter/types";
|
||||||
import { useIntl } from "react-intl";
|
import { useIntl } from "react-intl";
|
||||||
import { Icon } from "../Shared";
|
import { Icon } from "../Shared/Icon";
|
||||||
import {
|
import {
|
||||||
faList,
|
faList,
|
||||||
faSquare,
|
faSquare,
|
||||||
|
|
|
||||||
|
|
@ -15,13 +15,13 @@ import {
|
||||||
useSaveFilter,
|
useSaveFilter,
|
||||||
useSetDefaultFilter,
|
useSetDefaultFilter,
|
||||||
} from "src/core/StashService";
|
} from "src/core/StashService";
|
||||||
import { useToast } from "src/hooks";
|
import { useToast } from "src/hooks/Toast";
|
||||||
import { ListFilterModel } from "src/models/list-filter/filter";
|
import { ListFilterModel } from "src/models/list-filter/filter";
|
||||||
import { SavedFilterDataFragment } from "src/core/generated-graphql";
|
import { SavedFilterDataFragment } from "src/core/generated-graphql";
|
||||||
import { LoadingIndicator } from "src/components/Shared";
|
import { LoadingIndicator } from "../Shared/LoadingIndicator";
|
||||||
import { PersistanceLevel } from "src/hooks/ListHook";
|
import { PersistanceLevel } from "src/hooks/ListHook";
|
||||||
import { FormattedMessage, useIntl } from "react-intl";
|
import { FormattedMessage, useIntl } from "react-intl";
|
||||||
import { Icon } from "../Shared";
|
import { Icon } from "../Shared/Icon";
|
||||||
import { faSave, faTimes } from "@fortawesome/free-solid-svg-icons";
|
import { faSave, faTimes } from "@fortawesome/free-solid-svg-icons";
|
||||||
|
|
||||||
interface ISavedFilterListProps {
|
interface ISavedFilterListProps {
|
||||||
|
|
|
||||||
|
|
@ -11,8 +11,8 @@ import { LinkContainer } from "react-router-bootstrap";
|
||||||
import { Link, NavLink, useLocation, useHistory } from "react-router-dom";
|
import { Link, NavLink, useLocation, useHistory } from "react-router-dom";
|
||||||
import Mousetrap from "mousetrap";
|
import Mousetrap from "mousetrap";
|
||||||
|
|
||||||
import { SessionUtils } from "src/utils";
|
import SessionUtils from "src/utils/session";
|
||||||
import Icon from "src/components/Shared/Icon";
|
import { Icon } from "src/components/Shared/Icon";
|
||||||
import { ConfigurationContext } from "src/hooks/Config";
|
import { ConfigurationContext } from "src/hooks/Config";
|
||||||
import { ManualStateContext } from "./Help/context";
|
import { ManualStateContext } from "./Help/context";
|
||||||
import { SettingsButton } from "./SettingsButton";
|
import { SettingsButton } from "./SettingsButton";
|
||||||
|
|
|
||||||
|
|
@ -3,9 +3,10 @@ import { Form, Col, Row } from "react-bootstrap";
|
||||||
import { FormattedMessage, useIntl } from "react-intl";
|
import { FormattedMessage, useIntl } from "react-intl";
|
||||||
import { useBulkMovieUpdate } from "src/core/StashService";
|
import { useBulkMovieUpdate } from "src/core/StashService";
|
||||||
import * as GQL from "src/core/generated-graphql";
|
import * as GQL from "src/core/generated-graphql";
|
||||||
import { Modal, StudioSelect } from "src/components/Shared";
|
import { ModalComponent } from "../Shared/Modal";
|
||||||
import { useToast } from "src/hooks";
|
import { StudioSelect } from "../Shared/Select";
|
||||||
import { FormUtils } from "src/utils";
|
import { useToast } from "src/hooks/Toast";
|
||||||
|
import FormUtils from "src/utils/form";
|
||||||
import { RatingSystem } from "../Shared/Rating/RatingSystem";
|
import { RatingSystem } from "../Shared/Rating/RatingSystem";
|
||||||
import {
|
import {
|
||||||
getAggregateInputValue,
|
getAggregateInputValue,
|
||||||
|
|
@ -100,7 +101,7 @@ export const EditMoviesDialog: React.FC<IListOperationProps> = (
|
||||||
|
|
||||||
function render() {
|
function render() {
|
||||||
return (
|
return (
|
||||||
<Modal
|
<ModalComponent
|
||||||
show
|
show
|
||||||
icon={faPencilAlt}
|
icon={faPencilAlt}
|
||||||
header={intl.formatMessage(
|
header={intl.formatMessage(
|
||||||
|
|
@ -158,7 +159,7 @@ export const EditMoviesDialog: React.FC<IListOperationProps> = (
|
||||||
/>
|
/>
|
||||||
</Form.Group>
|
</Form.Group>
|
||||||
</Form>
|
</Form>
|
||||||
</Modal>
|
</ModalComponent>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,11 @@
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { Button, ButtonGroup } from "react-bootstrap";
|
import { Button, ButtonGroup } from "react-bootstrap";
|
||||||
import * as GQL from "src/core/generated-graphql";
|
import * as GQL from "src/core/generated-graphql";
|
||||||
import {
|
import { GridCard } from "../Shared/GridCard";
|
||||||
GridCard,
|
import { HoverPopover } from "../Shared/HoverPopover";
|
||||||
HoverPopover,
|
import { Icon } from "../Shared/Icon";
|
||||||
Icon,
|
import { TagLink } from "../Shared/TagLink";
|
||||||
TagLink,
|
import { TruncatedText } from "../Shared/TruncatedText";
|
||||||
TruncatedText,
|
|
||||||
} from "src/components/Shared";
|
|
||||||
import { FormattedMessage } from "react-intl";
|
import { FormattedMessage } from "react-intl";
|
||||||
import { RatingBanner } from "../Shared/RatingBanner";
|
import { RatingBanner } from "../Shared/RatingBanner";
|
||||||
import { faPlayCircle } from "@fortawesome/free-solid-svg-icons";
|
import { faPlayCircle } from "@fortawesome/free-solid-svg-icons";
|
||||||
|
|
|
||||||
|
|
@ -9,13 +9,11 @@ import {
|
||||||
useMovieDestroy,
|
useMovieDestroy,
|
||||||
} from "src/core/StashService";
|
} from "src/core/StashService";
|
||||||
import { useParams, useHistory } from "react-router-dom";
|
import { useParams, useHistory } from "react-router-dom";
|
||||||
import {
|
import { DetailsEditNavbar } from "src/components/Shared/DetailsEditNavbar";
|
||||||
DetailsEditNavbar,
|
import { ErrorMessage } from "src/components/Shared/ErrorMessage";
|
||||||
ErrorMessage,
|
import { LoadingIndicator } from "src/components/Shared/LoadingIndicator";
|
||||||
LoadingIndicator,
|
import { ModalComponent } from "src/components/Shared/Modal";
|
||||||
Modal,
|
import { useToast } from "src/hooks/Toast";
|
||||||
} from "src/components/Shared";
|
|
||||||
import { useToast } from "src/hooks";
|
|
||||||
import { MovieScenesPanel } from "./MovieScenesPanel";
|
import { MovieScenesPanel } from "./MovieScenesPanel";
|
||||||
import { MovieDetailsPanel } from "./MovieDetailsPanel";
|
import { MovieDetailsPanel } from "./MovieDetailsPanel";
|
||||||
import { MovieEditPanel } from "./MovieEditPanel";
|
import { MovieEditPanel } from "./MovieEditPanel";
|
||||||
|
|
@ -111,7 +109,7 @@ const MoviePage: React.FC<IProps> = ({ movie }) => {
|
||||||
|
|
||||||
function renderDeleteAlert() {
|
function renderDeleteAlert() {
|
||||||
return (
|
return (
|
||||||
<Modal
|
<ModalComponent
|
||||||
show={isDeleteAlertOpen}
|
show={isDeleteAlertOpen}
|
||||||
icon={faTrashAlt}
|
icon={faTrashAlt}
|
||||||
accept={{
|
accept={{
|
||||||
|
|
@ -131,7 +129,7 @@ const MoviePage: React.FC<IProps> = ({ movie }) => {
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
</p>
|
</p>
|
||||||
</Modal>
|
</ModalComponent>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,8 +2,8 @@ import React, { useMemo, useState } from "react";
|
||||||
import * as GQL from "src/core/generated-graphql";
|
import * as GQL from "src/core/generated-graphql";
|
||||||
import { useMovieCreate } from "src/core/StashService";
|
import { useMovieCreate } from "src/core/StashService";
|
||||||
import { useHistory, useLocation } from "react-router-dom";
|
import { useHistory, useLocation } from "react-router-dom";
|
||||||
import { LoadingIndicator } from "src/components/Shared";
|
import { LoadingIndicator } from "src/components/Shared/LoadingIndicator";
|
||||||
import { useToast } from "src/hooks";
|
import { useToast } from "src/hooks/Toast";
|
||||||
import { MovieEditPanel } from "./MovieEditPanel";
|
import { MovieEditPanel } from "./MovieEditPanel";
|
||||||
|
|
||||||
const MovieCreate: React.FC = () => {
|
const MovieCreate: React.FC = () => {
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,8 @@
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { useIntl } from "react-intl";
|
import { useIntl } from "react-intl";
|
||||||
import * as GQL from "src/core/generated-graphql";
|
import * as GQL from "src/core/generated-graphql";
|
||||||
import { DurationUtils, TextUtils } from "src/utils";
|
import DurationUtils from "src/utils/duration";
|
||||||
|
import TextUtils from "src/utils/text";
|
||||||
import { RatingSystem } from "src/components/Shared/Rating/RatingSystem";
|
import { RatingSystem } from "src/components/Shared/Rating/RatingSystem";
|
||||||
import { TextField, URLField } from "src/utils/field";
|
import { TextField, URLField } from "src/utils/field";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,16 +7,16 @@ import {
|
||||||
queryScrapeMovieURL,
|
queryScrapeMovieURL,
|
||||||
useListMovieScrapers,
|
useListMovieScrapers,
|
||||||
} from "src/core/StashService";
|
} from "src/core/StashService";
|
||||||
import {
|
import { LoadingIndicator } from "src/components/Shared/LoadingIndicator";
|
||||||
LoadingIndicator,
|
import { StudioSelect } from "src/components/Shared/Select";
|
||||||
StudioSelect,
|
import { DetailsEditNavbar } from "src/components/Shared/DetailsEditNavbar";
|
||||||
DetailsEditNavbar,
|
import { DurationInput } from "src/components/Shared/DurationInput";
|
||||||
DurationInput,
|
import { URLField } from "src/components/Shared/URLField";
|
||||||
URLField,
|
import { useToast } from "src/hooks/Toast";
|
||||||
} from "src/components/Shared";
|
|
||||||
import { useToast } from "src/hooks";
|
|
||||||
import { Modal as BSModal, Form, Button, Col, Row } from "react-bootstrap";
|
import { Modal as BSModal, Form, Button, Col, Row } from "react-bootstrap";
|
||||||
import { DurationUtils, FormUtils, ImageUtils } from "src/utils";
|
import DurationUtils from "src/utils/duration";
|
||||||
|
import FormUtils from "src/utils/form";
|
||||||
|
import ImageUtils from "src/utils/image";
|
||||||
import { RatingSystem } from "src/components/Shared/Rating/RatingSystem";
|
import { RatingSystem } from "src/components/Shared/Rating/RatingSystem";
|
||||||
import { useFormik } from "formik";
|
import { useFormik } from "formik";
|
||||||
import { Prompt } from "react-router-dom";
|
import { Prompt } from "react-router-dom";
|
||||||
|
|
|
||||||
|
|
@ -9,10 +9,10 @@ import {
|
||||||
ScrapeDialogRow,
|
ScrapeDialogRow,
|
||||||
ScrapedTextAreaRow,
|
ScrapedTextAreaRow,
|
||||||
} from "src/components/Shared/ScrapeDialog";
|
} from "src/components/Shared/ScrapeDialog";
|
||||||
import { StudioSelect } from "src/components/Shared";
|
import { StudioSelect } from "src/components/Shared/Select";
|
||||||
import { DurationUtils } from "src/utils";
|
import DurationUtils from "src/utils/duration";
|
||||||
import { useStudioCreate } from "src/core/StashService";
|
import { useStudioCreate } from "src/core/StashService";
|
||||||
import { useToast } from "src/hooks";
|
import { useToast } from "src/hooks/Toast";
|
||||||
|
|
||||||
function renderScrapedStudio(
|
function renderScrapedStudio(
|
||||||
result: ScrapeResult<string>,
|
result: ScrapeResult<string>,
|
||||||
|
|
|
||||||
|
|
@ -16,7 +16,8 @@ import {
|
||||||
useMoviesList,
|
useMoviesList,
|
||||||
PersistanceLevel,
|
PersistanceLevel,
|
||||||
} from "src/hooks/ListHook";
|
} from "src/hooks/ListHook";
|
||||||
import { ExportDialog, DeleteEntityDialog } from "src/components/Shared";
|
import { ExportDialog } from "../Shared/ExportDialog";
|
||||||
|
import { DeleteEntityDialog } from "../Shared/DeleteEntityDialog";
|
||||||
import { MovieCard } from "./MovieCard";
|
import { MovieCard } from "./MovieCard";
|
||||||
import { EditMoviesDialog } from "./EditMoviesDialog";
|
import { EditMoviesDialog } from "./EditMoviesDialog";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ import React from "react";
|
||||||
import { Route, Switch } from "react-router-dom";
|
import { Route, Switch } from "react-router-dom";
|
||||||
import { useIntl } from "react-intl";
|
import { useIntl } from "react-intl";
|
||||||
import { Helmet } from "react-helmet";
|
import { Helmet } from "react-helmet";
|
||||||
import { TITLE_SUFFIX } from "src/components/Shared";
|
import { TITLE_SUFFIX } from "src/components/Shared/constants";
|
||||||
import Movie from "./MovieDetails/Movie";
|
import Movie from "./MovieDetails/Movie";
|
||||||
import MovieCreate from "./MovieDetails/MovieCreate";
|
import MovieCreate from "./MovieDetails/MovieCreate";
|
||||||
import { MovieList } from "./MovieList";
|
import { MovieList } from "./MovieList";
|
||||||
|
|
|
||||||
|
|
@ -3,9 +3,9 @@ import { Col, Form, Row } from "react-bootstrap";
|
||||||
import { FormattedMessage, useIntl } from "react-intl";
|
import { FormattedMessage, useIntl } from "react-intl";
|
||||||
import { useBulkPerformerUpdate } from "src/core/StashService";
|
import { useBulkPerformerUpdate } from "src/core/StashService";
|
||||||
import * as GQL from "src/core/generated-graphql";
|
import * as GQL from "src/core/generated-graphql";
|
||||||
import { Modal } from "src/components/Shared";
|
import { ModalComponent } from "../Shared/Modal";
|
||||||
import { useToast } from "src/hooks";
|
import { useToast } from "src/hooks/Toast";
|
||||||
import MultiSet from "../Shared/MultiSet";
|
import { MultiSet } from "../Shared/MultiSet";
|
||||||
import { RatingSystem } from "../Shared/Rating/RatingSystem";
|
import { RatingSystem } from "../Shared/Rating/RatingSystem";
|
||||||
import {
|
import {
|
||||||
getAggregateInputValue,
|
getAggregateInputValue,
|
||||||
|
|
@ -20,7 +20,7 @@ import {
|
||||||
import { IndeterminateCheckbox } from "../Shared/IndeterminateCheckbox";
|
import { IndeterminateCheckbox } from "../Shared/IndeterminateCheckbox";
|
||||||
import { BulkUpdateTextInput } from "../Shared/BulkUpdateTextInput";
|
import { BulkUpdateTextInput } from "../Shared/BulkUpdateTextInput";
|
||||||
import { faPencilAlt } from "@fortawesome/free-solid-svg-icons";
|
import { faPencilAlt } from "@fortawesome/free-solid-svg-icons";
|
||||||
import { FormUtils } from "../../utils";
|
import FormUtils from "src/utils/form";
|
||||||
|
|
||||||
interface IListOperationProps {
|
interface IListOperationProps {
|
||||||
selected: GQL.SlimPerformerDataFragment[];
|
selected: GQL.SlimPerformerDataFragment[];
|
||||||
|
|
@ -181,7 +181,7 @@ export const EditPerformersDialog: React.FC<IListOperationProps> = (
|
||||||
|
|
||||||
function render() {
|
function render() {
|
||||||
return (
|
return (
|
||||||
<Modal
|
<ModalComponent
|
||||||
show
|
show
|
||||||
icon={faPencilAlt}
|
icon={faPencilAlt}
|
||||||
header={intl.formatMessage(
|
header={intl.formatMessage(
|
||||||
|
|
@ -317,7 +317,7 @@ export const EditPerformersDialog: React.FC<IListOperationProps> = (
|
||||||
/>
|
/>
|
||||||
</Form.Group>
|
</Form.Group>
|
||||||
</Form>
|
</Form>
|
||||||
</Modal>
|
</ModalComponent>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,14 +2,13 @@ import React from "react";
|
||||||
import { Link } from "react-router-dom";
|
import { Link } from "react-router-dom";
|
||||||
import { useIntl } from "react-intl";
|
import { useIntl } from "react-intl";
|
||||||
import * as GQL from "src/core/generated-graphql";
|
import * as GQL from "src/core/generated-graphql";
|
||||||
import { NavUtils, TextUtils } from "src/utils";
|
import NavUtils from "src/utils/navigation";
|
||||||
import {
|
import TextUtils from "src/utils/text";
|
||||||
GridCard,
|
import { GridCard } from "../Shared/GridCard";
|
||||||
CountryFlag,
|
import { CountryFlag } from "../Shared/CountryFlag";
|
||||||
HoverPopover,
|
import { HoverPopover } from "../Shared/HoverPopover";
|
||||||
Icon,
|
import { Icon } from "../Shared/Icon";
|
||||||
TagLink,
|
import { TagLink } from "../Shared/TagLink";
|
||||||
} from "src/components/Shared";
|
|
||||||
import { Button, ButtonGroup } from "react-bootstrap";
|
import { Button, ButtonGroup } from "react-bootstrap";
|
||||||
import {
|
import {
|
||||||
Criterion,
|
Criterion,
|
||||||
|
|
|
||||||
|
|
@ -12,17 +12,16 @@ import {
|
||||||
usePerformerDestroy,
|
usePerformerDestroy,
|
||||||
mutateMetadataAutoTag,
|
mutateMetadataAutoTag,
|
||||||
} from "src/core/StashService";
|
} from "src/core/StashService";
|
||||||
import {
|
import { Counter } from "src/components/Shared/Counter";
|
||||||
Counter,
|
import { CountryFlag } from "src/components/Shared/CountryFlag";
|
||||||
CountryFlag,
|
import { DetailsEditNavbar } from "src/components/Shared/DetailsEditNavbar";
|
||||||
DetailsEditNavbar,
|
import { ErrorMessage } from "src/components/Shared/ErrorMessage";
|
||||||
ErrorMessage,
|
import { Icon } from "src/components/Shared/Icon";
|
||||||
Icon,
|
import { LoadingIndicator } from "src/components/Shared/LoadingIndicator";
|
||||||
LoadingIndicator,
|
import { useLightbox } from "src/hooks/Lightbox/hooks";
|
||||||
} from "src/components/Shared";
|
import { useToast } from "src/hooks/Toast";
|
||||||
import { useLightbox, useToast } from "src/hooks";
|
|
||||||
import { ConfigurationContext } from "src/hooks/Config";
|
import { ConfigurationContext } from "src/hooks/Config";
|
||||||
import { TextUtils } from "src/utils";
|
import TextUtils from "src/utils/text";
|
||||||
import { RatingSystem } from "src/components/Shared/Rating/RatingSystem";
|
import { RatingSystem } from "src/components/Shared/Rating/RatingSystem";
|
||||||
import { PerformerDetailsPanel } from "./PerformerDetailsPanel";
|
import { PerformerDetailsPanel } from "./PerformerDetailsPanel";
|
||||||
import { PerformerScenesPanel } from "./PerformerScenesPanel";
|
import { PerformerScenesPanel } from "./PerformerScenesPanel";
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
import React, { useMemo, useState } from "react";
|
import React, { useMemo, useState } from "react";
|
||||||
import { FormattedMessage, useIntl } from "react-intl";
|
import { FormattedMessage, useIntl } from "react-intl";
|
||||||
import { LoadingIndicator } from "src/components/Shared";
|
import { LoadingIndicator } from "src/components/Shared/LoadingIndicator";
|
||||||
import { PerformerEditPanel } from "./PerformerEditPanel";
|
import { PerformerEditPanel } from "./PerformerEditPanel";
|
||||||
import { useLocation } from "react-router-dom";
|
import { useLocation } from "react-router-dom";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,10 @@
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { FormattedMessage, useIntl } from "react-intl";
|
import { FormattedMessage, useIntl } from "react-intl";
|
||||||
import { TagLink } from "src/components/Shared";
|
import { TagLink } from "src/components/Shared/TagLink";
|
||||||
import * as GQL from "src/core/generated-graphql";
|
import * as GQL from "src/core/generated-graphql";
|
||||||
import { TextUtils, getStashboxBase, getCountryByISO } from "src/utils";
|
import TextUtils from "src/utils/text";
|
||||||
|
import { getStashboxBase } from "src/utils/stashbox";
|
||||||
|
import { getCountryByISO } from "src/utils/country";
|
||||||
import { TextField, URLField } from "src/utils/field";
|
import { TextField, URLField } from "src/utils/field";
|
||||||
import { cmToImperial, kgToLbs } from "src/utils/units";
|
import { cmToImperial, kgToLbs } from "src/utils/units";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,17 +13,17 @@ import {
|
||||||
useTagCreate,
|
useTagCreate,
|
||||||
queryScrapePerformerURL,
|
queryScrapePerformerURL,
|
||||||
} from "src/core/StashService";
|
} from "src/core/StashService";
|
||||||
import {
|
import { Icon } from "src/components/Shared/Icon";
|
||||||
Icon,
|
import { ImageInput } from "src/components/Shared/ImageInput";
|
||||||
ImageInput,
|
import { LoadingIndicator } from "src/components/Shared/LoadingIndicator";
|
||||||
LoadingIndicator,
|
import { CollapseButton } from "src/components/Shared/CollapseButton";
|
||||||
CollapseButton,
|
import { TagSelect } from "src/components/Shared/Select";
|
||||||
TagSelect,
|
import { CountrySelect } from "src/components/Shared/CountrySelect";
|
||||||
URLField,
|
import { URLField } from "src/components/Shared/URLField";
|
||||||
CountrySelect,
|
import ImageUtils from "src/utils/image";
|
||||||
} from "src/components/Shared";
|
import { getStashIDs } from "src/utils/stashIds";
|
||||||
import { ImageUtils, getStashIDs } from "src/utils";
|
import { stashboxDisplayName } from "src/utils/stashbox";
|
||||||
import { useToast } from "src/hooks";
|
import { useToast } from "src/hooks/Toast";
|
||||||
import { Prompt, useHistory } from "react-router-dom";
|
import { Prompt, useHistory } from "react-router-dom";
|
||||||
import { useFormik } from "formik";
|
import { useFormik } from "formik";
|
||||||
import {
|
import {
|
||||||
|
|
@ -32,7 +32,6 @@ import {
|
||||||
stringToGender,
|
stringToGender,
|
||||||
} from "src/utils/gender";
|
} from "src/utils/gender";
|
||||||
import { ConfigurationContext } from "src/hooks/Config";
|
import { ConfigurationContext } from "src/hooks/Config";
|
||||||
import { stashboxDisplayName } from "src/utils/stashbox";
|
|
||||||
import { PerformerScrapeDialog } from "./PerformerScrapeDialog";
|
import { PerformerScrapeDialog } from "./PerformerScrapeDialog";
|
||||||
import PerformerScrapeModal from "./PerformerScrapeModal";
|
import PerformerScrapeModal from "./PerformerScrapeModal";
|
||||||
import PerformerStashBoxModal, { IStashBox } from "./PerformerStashBoxModal";
|
import PerformerStashBoxModal, { IStashBox } from "./PerformerStashBoxModal";
|
||||||
|
|
@ -68,7 +67,7 @@ export const PerformerEditPanel: React.FC<IPerformerDetails> = ({
|
||||||
|
|
||||||
const isNew = performer.id === undefined;
|
const isNew = performer.id === undefined;
|
||||||
|
|
||||||
// Editing state
|
// Editing stat
|
||||||
const [scraper, setScraper] = useState<GQL.Scraper | IStashBox>();
|
const [scraper, setScraper] = useState<GQL.Scraper | IStashBox>();
|
||||||
const [newTags, setNewTags] = useState<GQL.ScrapedTag[]>();
|
const [newTags, setNewTags] = useState<GQL.ScrapedTag[]>();
|
||||||
const [isScraperModalOpen, setIsScraperModalOpen] = useState<boolean>(false);
|
const [isScraperModalOpen, setIsScraperModalOpen] = useState<boolean>(false);
|
||||||
|
|
|
||||||
|
|
@ -12,8 +12,8 @@ import {
|
||||||
} from "src/components/Shared/ScrapeDialog";
|
} from "src/components/Shared/ScrapeDialog";
|
||||||
import { useTagCreate } from "src/core/StashService";
|
import { useTagCreate } from "src/core/StashService";
|
||||||
import { Form } from "react-bootstrap";
|
import { Form } from "react-bootstrap";
|
||||||
import { TagSelect } from "src/components/Shared";
|
import { TagSelect } from "src/components/Shared/Select";
|
||||||
import { useToast } from "src/hooks";
|
import { useToast } from "src/hooks/Toast";
|
||||||
import clone from "lodash-es/clone";
|
import clone from "lodash-es/clone";
|
||||||
import {
|
import {
|
||||||
genderStrings,
|
genderStrings,
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,8 @@ import { Button, Form } from "react-bootstrap";
|
||||||
import { useIntl } from "react-intl";
|
import { useIntl } from "react-intl";
|
||||||
|
|
||||||
import * as GQL from "src/core/generated-graphql";
|
import * as GQL from "src/core/generated-graphql";
|
||||||
import { Modal, LoadingIndicator } from "src/components/Shared";
|
import { ModalComponent } from "src/components/Shared/Modal";
|
||||||
|
import { LoadingIndicator } from "src/components/Shared/LoadingIndicator";
|
||||||
import { useScrapePerformerList } from "src/core/StashService";
|
import { useScrapePerformerList } from "src/core/StashService";
|
||||||
|
|
||||||
const CLASSNAME = "PerformerScrapeModal";
|
const CLASSNAME = "PerformerScrapeModal";
|
||||||
|
|
@ -39,7 +40,7 @@ const PerformerScrapeModal: React.FC<IProps> = ({
|
||||||
useEffect(() => inputRef.current?.focus(), []);
|
useEffect(() => inputRef.current?.focus(), []);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Modal
|
<ModalComponent
|
||||||
show
|
show
|
||||||
onHide={onHide}
|
onHide={onHide}
|
||||||
header={`Scrape performer from ${scraper.name}`}
|
header={`Scrape performer from ${scraper.name}`}
|
||||||
|
|
@ -77,7 +78,7 @@ const PerformerScrapeModal: React.FC<IProps> = ({
|
||||||
</ul>
|
</ul>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
</Modal>
|
</ModalComponent>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,8 @@ import { Button, Form } from "react-bootstrap";
|
||||||
import { useIntl } from "react-intl";
|
import { useIntl } from "react-intl";
|
||||||
|
|
||||||
import * as GQL from "src/core/generated-graphql";
|
import * as GQL from "src/core/generated-graphql";
|
||||||
import { Modal, LoadingIndicator } from "src/components/Shared";
|
import { ModalComponent } from "src/components/Shared/Modal";
|
||||||
|
import { LoadingIndicator } from "src/components/Shared/LoadingIndicator";
|
||||||
import { stashboxDisplayName } from "src/utils/stashbox";
|
import { stashboxDisplayName } from "src/utils/stashbox";
|
||||||
|
|
||||||
const CLASSNAME = "PerformerScrapeModal";
|
const CLASSNAME = "PerformerScrapeModal";
|
||||||
|
|
@ -50,7 +51,7 @@ const PerformerStashBoxModal: React.FC<IProps> = ({
|
||||||
useEffect(() => inputRef.current?.focus(), []);
|
useEffect(() => inputRef.current?.focus(), []);
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Modal
|
<ModalComponent
|
||||||
show
|
show
|
||||||
onHide={onHide}
|
onHide={onHide}
|
||||||
header={`Scrape performer from ${stashboxDisplayName(
|
header={`Scrape performer from ${stashboxDisplayName(
|
||||||
|
|
@ -90,7 +91,7 @@ const PerformerStashBoxModal: React.FC<IProps> = ({
|
||||||
query !== "" && <h5 className="text-center">No results found.</h5>
|
query !== "" && <h5 className="text-center">No results found.</h5>
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
</Modal>
|
</ModalComponent>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,12 +11,16 @@ import {
|
||||||
queryFindPerformers,
|
queryFindPerformers,
|
||||||
usePerformersDestroy,
|
usePerformersDestroy,
|
||||||
} from "src/core/StashService";
|
} from "src/core/StashService";
|
||||||
import { usePerformersList } from "src/hooks";
|
import {
|
||||||
import { showWhenSelected, PersistanceLevel } from "src/hooks/ListHook";
|
showWhenSelected,
|
||||||
|
PersistanceLevel,
|
||||||
|
usePerformersList,
|
||||||
|
} from "src/hooks/ListHook";
|
||||||
import { ListFilterModel } from "src/models/list-filter/filter";
|
import { ListFilterModel } from "src/models/list-filter/filter";
|
||||||
import { DisplayMode } from "src/models/list-filter/types";
|
import { DisplayMode } from "src/models/list-filter/types";
|
||||||
import { PerformerTagger } from "src/components/Tagger";
|
import { PerformerTagger } from "../Tagger/performers/PerformerTagger";
|
||||||
import { ExportDialog, DeleteEntityDialog } from "src/components/Shared";
|
import { ExportDialog } from "../Shared/ExportDialog";
|
||||||
|
import { DeleteEntityDialog } from "../Shared/DeleteEntityDialog";
|
||||||
import { IPerformerCardExtraCriteria, PerformerCard } from "./PerformerCard";
|
import { IPerformerCardExtraCriteria, PerformerCard } from "./PerformerCard";
|
||||||
import { PerformerListTable } from "./PerformerListTable";
|
import { PerformerListTable } from "./PerformerListTable";
|
||||||
import { EditPerformersDialog } from "./EditPerformersDialog";
|
import { EditPerformersDialog } from "./EditPerformersDialog";
|
||||||
|
|
|
||||||
|
|
@ -5,8 +5,8 @@ import { useIntl } from "react-intl";
|
||||||
import { Button, Table } from "react-bootstrap";
|
import { Button, Table } from "react-bootstrap";
|
||||||
import { Link } from "react-router-dom";
|
import { Link } from "react-router-dom";
|
||||||
import * as GQL from "src/core/generated-graphql";
|
import * as GQL from "src/core/generated-graphql";
|
||||||
import { Icon } from "src/components/Shared";
|
import { Icon } from "../Shared/Icon";
|
||||||
import { NavUtils } from "src/utils";
|
import NavUtils from "src/utils/navigation";
|
||||||
import { faHeart } from "@fortawesome/free-solid-svg-icons";
|
import { faHeart } from "@fortawesome/free-solid-svg-icons";
|
||||||
import { cmToImperial } from "src/utils/units";
|
import { cmToImperial } from "src/utils/units";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ import React from "react";
|
||||||
import { Route, Switch } from "react-router-dom";
|
import { Route, Switch } from "react-router-dom";
|
||||||
import { useIntl } from "react-intl";
|
import { useIntl } from "react-intl";
|
||||||
import { Helmet } from "react-helmet";
|
import { Helmet } from "react-helmet";
|
||||||
import { TITLE_SUFFIX } from "src/components/Shared";
|
import { TITLE_SUFFIX } from "src/components/Shared/constants";
|
||||||
import { PersistanceLevel } from "src/hooks/ListHook";
|
import { PersistanceLevel } from "src/hooks/ListHook";
|
||||||
import Performer from "./PerformerDetails/Performer";
|
import Performer from "./PerformerDetails/Performer";
|
||||||
import PerformerCreate from "./PerformerDetails/PerformerCreate";
|
import PerformerCreate from "./PerformerDetails/PerformerCreate";
|
||||||
|
|
|
||||||
|
|
@ -14,16 +14,14 @@ import { Link, useHistory } from "react-router-dom";
|
||||||
import { FormattedMessage, FormattedNumber, useIntl } from "react-intl";
|
import { FormattedMessage, FormattedNumber, useIntl } from "react-intl";
|
||||||
|
|
||||||
import * as GQL from "src/core/generated-graphql";
|
import * as GQL from "src/core/generated-graphql";
|
||||||
import {
|
import { LoadingIndicator } from "../Shared/LoadingIndicator";
|
||||||
LoadingIndicator,
|
import { ErrorMessage } from "../Shared/ErrorMessage";
|
||||||
ErrorMessage,
|
import { HoverPopover } from "../Shared/HoverPopover";
|
||||||
HoverPopover,
|
import { Icon } from "../Shared/Icon";
|
||||||
Icon,
|
import { TagLink } from "../Shared/TagLink";
|
||||||
TagLink,
|
import { SweatDrops } from "../Shared/SweatDrops";
|
||||||
SweatDrops,
|
|
||||||
} from "src/components/Shared";
|
|
||||||
import { Pagination } from "src/components/List/Pagination";
|
import { Pagination } from "src/components/List/Pagination";
|
||||||
import { TextUtils } from "src/utils";
|
import TextUtils from "src/utils/text";
|
||||||
import { DeleteScenesDialog } from "src/components/Scenes/DeleteScenesDialog";
|
import { DeleteScenesDialog } from "src/components/Scenes/DeleteScenesDialog";
|
||||||
import { EditScenesDialog } from "../Scenes/EditScenesDialog";
|
import { EditScenesDialog } from "../Scenes/EditScenesDialog";
|
||||||
import { PerformerPopoverButton } from "../Shared/PerformerPopoverButton";
|
import { PerformerPopoverButton } from "../Shared/PerformerPopoverButton";
|
||||||
|
|
|
||||||
|
|
@ -9,8 +9,8 @@ import {
|
||||||
useScenesUpdate,
|
useScenesUpdate,
|
||||||
} from "src/core/StashService";
|
} from "src/core/StashService";
|
||||||
import * as GQL from "src/core/generated-graphql";
|
import * as GQL from "src/core/generated-graphql";
|
||||||
import { LoadingIndicator } from "src/components/Shared";
|
import { LoadingIndicator } from "src/components/Shared/LoadingIndicator";
|
||||||
import { useToast } from "src/hooks";
|
import { useToast } from "src/hooks/Toast";
|
||||||
import { Pagination } from "src/components/List/Pagination";
|
import { Pagination } from "src/components/List/Pagination";
|
||||||
import { IParserInput, ParserInput } from "./ParserInput";
|
import { IParserInput, ParserInput } from "./ParserInput";
|
||||||
import { ParserField } from "./ParserField";
|
import { ParserField } from "./ParserField";
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ import {
|
||||||
PerformerSelect,
|
PerformerSelect,
|
||||||
TagSelect,
|
TagSelect,
|
||||||
StudioSelect,
|
StudioSelect,
|
||||||
} from "src/components/Shared";
|
} from "src/components/Shared/Select";
|
||||||
import cx from "classnames";
|
import cx from "classnames";
|
||||||
import { objectTitle } from "src/core/files";
|
import { objectTitle } from "src/core/files";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ import {
|
||||||
import React, { useState } from "react";
|
import React, { useState } from "react";
|
||||||
import { Button, Collapse } from "react-bootstrap";
|
import { Button, Collapse } from "react-bootstrap";
|
||||||
import { useIntl } from "react-intl";
|
import { useIntl } from "react-intl";
|
||||||
import { Icon } from "src/components/Shared";
|
import { Icon } from "src/components/Shared/Icon";
|
||||||
|
|
||||||
interface IShowFieldsProps {
|
interface IShowFieldsProps {
|
||||||
fields: Map<string, boolean>;
|
fields: Map<string, boolean>;
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ import React, {
|
||||||
import { Button } from "react-bootstrap";
|
import { Button } from "react-bootstrap";
|
||||||
import axios from "axios";
|
import axios from "axios";
|
||||||
import * as GQL from "src/core/generated-graphql";
|
import * as GQL from "src/core/generated-graphql";
|
||||||
import { TextUtils } from "src/utils";
|
import TextUtils from "src/utils/text";
|
||||||
import { WebVTT } from "videojs-vtt.js";
|
import { WebVTT } from "videojs-vtt.js";
|
||||||
|
|
||||||
interface IScenePlayerScrubberProps {
|
interface IScenePlayerScrubberProps {
|
||||||
|
|
|
||||||
|
|
@ -1 +0,0 @@
|
||||||
export * from "./ScenePlayer";
|
|
||||||
|
|
@ -2,8 +2,8 @@ import React, { useState } from "react";
|
||||||
import { Form } from "react-bootstrap";
|
import { Form } from "react-bootstrap";
|
||||||
import { useScenesDestroy } from "src/core/StashService";
|
import { useScenesDestroy } from "src/core/StashService";
|
||||||
import * as GQL from "src/core/generated-graphql";
|
import * as GQL from "src/core/generated-graphql";
|
||||||
import { Modal } from "src/components/Shared";
|
import { ModalComponent } from "src/components/Shared/Modal";
|
||||||
import { useToast } from "src/hooks";
|
import { useToast } from "src/hooks/Toast";
|
||||||
import { ConfigurationContext } from "src/hooks/Config";
|
import { ConfigurationContext } from "src/hooks/Config";
|
||||||
import { FormattedMessage, useIntl } from "react-intl";
|
import { FormattedMessage, useIntl } from "react-intl";
|
||||||
import { faTrashAlt } from "@fortawesome/free-solid-svg-icons";
|
import { faTrashAlt } from "@fortawesome/free-solid-svg-icons";
|
||||||
|
|
@ -126,7 +126,7 @@ export const DeleteScenesDialog: React.FC<IDeleteSceneDialogProps> = (
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Modal
|
<ModalComponent
|
||||||
show
|
show
|
||||||
icon={faTrashAlt}
|
icon={faTrashAlt}
|
||||||
header={header}
|
header={header}
|
||||||
|
|
@ -162,7 +162,7 @@ export const DeleteScenesDialog: React.FC<IDeleteSceneDialogProps> = (
|
||||||
onChange={() => setDeleteGenerated(!deleteGenerated)}
|
onChange={() => setDeleteGenerated(!deleteGenerated)}
|
||||||
/>
|
/>
|
||||||
</Form>
|
</Form>
|
||||||
</Modal>
|
</ModalComponent>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,10 +4,11 @@ import { FormattedMessage, useIntl } from "react-intl";
|
||||||
import isEqual from "lodash-es/isEqual";
|
import isEqual from "lodash-es/isEqual";
|
||||||
import { useBulkSceneUpdate } from "src/core/StashService";
|
import { useBulkSceneUpdate } from "src/core/StashService";
|
||||||
import * as GQL from "src/core/generated-graphql";
|
import * as GQL from "src/core/generated-graphql";
|
||||||
import { StudioSelect, Modal } from "src/components/Shared";
|
import { StudioSelect } from "../Shared/Select";
|
||||||
import { useToast } from "src/hooks";
|
import { ModalComponent } from "../Shared/Modal";
|
||||||
import { FormUtils } from "src/utils";
|
import { MultiSet } from "../Shared/MultiSet";
|
||||||
import MultiSet from "../Shared/MultiSet";
|
import { useToast } from "src/hooks/Toast";
|
||||||
|
import FormUtils from "src/utils/form";
|
||||||
import { RatingSystem } from "../Shared/Rating/RatingSystem";
|
import { RatingSystem } from "../Shared/Rating/RatingSystem";
|
||||||
import {
|
import {
|
||||||
getAggregateInputIDs,
|
getAggregateInputIDs,
|
||||||
|
|
@ -241,7 +242,7 @@ export const EditScenesDialog: React.FC<IListOperationProps> = (
|
||||||
|
|
||||||
function render() {
|
function render() {
|
||||||
return (
|
return (
|
||||||
<Modal
|
<ModalComponent
|
||||||
show
|
show
|
||||||
icon={faPencilAlt}
|
icon={faPencilAlt}
|
||||||
header={intl.formatMessage(
|
header={intl.formatMessage(
|
||||||
|
|
@ -322,7 +323,7 @@ export const EditScenesDialog: React.FC<IListOperationProps> = (
|
||||||
/>
|
/>
|
||||||
</Form.Group>
|
</Form.Group>
|
||||||
</Form>
|
</Form>
|
||||||
</Modal>
|
</ModalComponent>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,14 +3,13 @@ import { Button, ButtonGroup } from "react-bootstrap";
|
||||||
import { Link } from "react-router-dom";
|
import { Link } from "react-router-dom";
|
||||||
import cx from "classnames";
|
import cx from "classnames";
|
||||||
import * as GQL from "src/core/generated-graphql";
|
import * as GQL from "src/core/generated-graphql";
|
||||||
import {
|
import { Icon } from "../Shared/Icon";
|
||||||
Icon,
|
import { TagLink } from "../Shared/TagLink";
|
||||||
TagLink,
|
import { HoverPopover } from "../Shared/HoverPopover";
|
||||||
HoverPopover,
|
import { SweatDrops } from "../Shared/SweatDrops";
|
||||||
SweatDrops,
|
import { TruncatedText } from "../Shared/TruncatedText";
|
||||||
TruncatedText,
|
import NavUtils from "src/utils/navigation";
|
||||||
} from "src/components/Shared";
|
import TextUtils from "src/utils/text";
|
||||||
import { NavUtils, TextUtils } from "src/utils";
|
|
||||||
import { SceneQueue } from "src/models/sceneQueue";
|
import { SceneQueue } from "src/models/sceneQueue";
|
||||||
import { ConfigurationContext } from "src/hooks/Config";
|
import { ConfigurationContext } from "src/hooks/Config";
|
||||||
import { PerformerPopoverButton } from "../Shared/PerformerPopoverButton";
|
import { PerformerPopoverButton } from "../Shared/PerformerPopoverButton";
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ import { faExternalLinkAlt } from "@fortawesome/free-solid-svg-icons";
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { Button } from "react-bootstrap";
|
import { Button } from "react-bootstrap";
|
||||||
import { useIntl } from "react-intl";
|
import { useIntl } from "react-intl";
|
||||||
import Icon from "src/components/Shared/Icon";
|
import { Icon } from "src/components/Shared/Icon";
|
||||||
import { objectTitle } from "src/core/files";
|
import { objectTitle } from "src/core/files";
|
||||||
import { SceneDataFragment } from "src/core/generated-graphql";
|
import { SceneDataFragment } from "src/core/generated-graphql";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,9 @@ import { faBan, faMinus } from "@fortawesome/free-solid-svg-icons";
|
||||||
import React, { useState } from "react";
|
import React, { useState } from "react";
|
||||||
import { Button, ButtonGroup, Dropdown, DropdownButton } from "react-bootstrap";
|
import { Button, ButtonGroup, Dropdown, DropdownButton } from "react-bootstrap";
|
||||||
import { useIntl } from "react-intl";
|
import { useIntl } from "react-intl";
|
||||||
import { Icon, LoadingIndicator, SweatDrops } from "src/components/Shared";
|
import { Icon } from "src/components/Shared/Icon";
|
||||||
|
import { LoadingIndicator } from "src/components/Shared/LoadingIndicator";
|
||||||
|
import { SweatDrops } from "src/components/Shared/SweatDrops";
|
||||||
|
|
||||||
export interface IOCounterButtonProps {
|
export interface IOCounterButtonProps {
|
||||||
value: number;
|
value: number;
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import cx from "classnames";
|
import cx from "classnames";
|
||||||
import { Button, Spinner } from "react-bootstrap";
|
import { Button, Spinner } from "react-bootstrap";
|
||||||
import Icon from "src/components/Shared/Icon";
|
import { Icon } from "src/components/Shared/Icon";
|
||||||
import { defineMessages, useIntl } from "react-intl";
|
import { defineMessages, useIntl } from "react-intl";
|
||||||
import { faBox } from "@fortawesome/free-solid-svg-icons";
|
import { faBox } from "@fortawesome/free-solid-svg-icons";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ import React, { useEffect, useState } from "react";
|
||||||
import { Link } from "react-router-dom";
|
import { Link } from "react-router-dom";
|
||||||
import cx from "classnames";
|
import cx from "classnames";
|
||||||
import { Button, Form, Spinner } from "react-bootstrap";
|
import { Button, Form, Spinner } from "react-bootstrap";
|
||||||
import Icon from "src/components/Shared/Icon";
|
import { Icon } from "src/components/Shared/Icon";
|
||||||
import { useIntl } from "react-intl";
|
import { useIntl } from "react-intl";
|
||||||
import {
|
import {
|
||||||
faChevronDown,
|
faChevronDown,
|
||||||
|
|
|
||||||
|
|
@ -23,13 +23,11 @@ import {
|
||||||
queryFindScenesByID,
|
queryFindScenesByID,
|
||||||
} from "src/core/StashService";
|
} from "src/core/StashService";
|
||||||
|
|
||||||
import {
|
import { ErrorMessage } from "src/components/Shared/ErrorMessage";
|
||||||
ErrorMessage,
|
import { LoadingIndicator } from "src/components/Shared/LoadingIndicator";
|
||||||
LoadingIndicator,
|
import { Icon } from "src/components/Shared/Icon";
|
||||||
Icon,
|
import { Counter } from "src/components/Shared/Counter";
|
||||||
Counter,
|
import { useToast } from "src/hooks/Toast";
|
||||||
} from "src/components/Shared";
|
|
||||||
import { useToast } from "src/hooks";
|
|
||||||
import SceneQueue, { QueuedScene } from "src/models/sceneQueue";
|
import SceneQueue, { QueuedScene } from "src/models/sceneQueue";
|
||||||
import { ListFilterModel } from "src/models/list-filter/filter";
|
import { ListFilterModel } from "src/models/list-filter/filter";
|
||||||
import Mousetrap from "mousetrap";
|
import Mousetrap from "mousetrap";
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,8 @@ import { FormattedMessage, useIntl } from "react-intl";
|
||||||
import { useLocation } from "react-router-dom";
|
import { useLocation } from "react-router-dom";
|
||||||
import { SceneEditPanel } from "./SceneEditPanel";
|
import { SceneEditPanel } from "./SceneEditPanel";
|
||||||
import { useFindScene } from "src/core/StashService";
|
import { useFindScene } from "src/core/StashService";
|
||||||
import { ImageUtils } from "src/utils";
|
import ImageUtils from "src/utils/image";
|
||||||
import { LoadingIndicator } from "src/components/Shared";
|
import { LoadingIndicator } from "src/components/Shared/LoadingIndicator";
|
||||||
|
|
||||||
const SceneCreate: React.FC = () => {
|
const SceneCreate: React.FC = () => {
|
||||||
const intl = useIntl();
|
const intl = useIntl();
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@ import { FormattedDate, FormattedMessage, useIntl } from "react-intl";
|
||||||
import * as GQL from "src/core/generated-graphql";
|
import * as GQL from "src/core/generated-graphql";
|
||||||
import TextUtils from "src/utils/text";
|
import TextUtils from "src/utils/text";
|
||||||
import { TagLink } from "src/components/Shared/TagLink";
|
import { TagLink } from "src/components/Shared/TagLink";
|
||||||
import TruncatedText from "src/components/Shared/TruncatedText";
|
import { TruncatedText } from "src/components/Shared/TruncatedText";
|
||||||
import { PerformerCard } from "src/components/Performers/PerformerCard";
|
import { PerformerCard } from "src/components/Performers/PerformerCard";
|
||||||
import { sortPerformers } from "src/core/performers";
|
import { sortPerformers } from "src/core/performers";
|
||||||
import { RatingSystem } from "src/components/Shared/Rating/RatingSystem";
|
import { RatingSystem } from "src/components/Shared/Rating/RatingSystem";
|
||||||
|
|
|
||||||
|
|
@ -26,14 +26,16 @@ import {
|
||||||
TagSelect,
|
TagSelect,
|
||||||
StudioSelect,
|
StudioSelect,
|
||||||
GallerySelect,
|
GallerySelect,
|
||||||
Icon,
|
MovieSelect,
|
||||||
LoadingIndicator,
|
} from "src/components/Shared/Select";
|
||||||
ImageInput,
|
import { Icon } from "src/components/Shared/Icon";
|
||||||
URLField,
|
import { LoadingIndicator } from "src/components/Shared/LoadingIndicator";
|
||||||
} from "src/components/Shared";
|
import { ImageInput } from "src/components/Shared/ImageInput";
|
||||||
import useToast from "src/hooks/Toast";
|
import { URLField } from "src/components/Shared/URLField";
|
||||||
import { ImageUtils, FormUtils, getStashIDs } from "src/utils";
|
import { useToast } from "src/hooks/Toast";
|
||||||
import { MovieSelect } from "src/components/Shared/Select";
|
import ImageUtils from "src/utils/image";
|
||||||
|
import FormUtils from "src/utils/form";
|
||||||
|
import { getStashIDs } from "src/utils/stashIds";
|
||||||
import { useFormik } from "formik";
|
import { useFormik } from "formik";
|
||||||
import { Prompt, useHistory } from "react-router-dom";
|
import { Prompt, useHistory } from "react-router-dom";
|
||||||
import { ConfigurationContext } from "src/hooks/Config";
|
import { ConfigurationContext } from "src/hooks/Config";
|
||||||
|
|
|
||||||
|
|
@ -7,13 +7,15 @@ import {
|
||||||
useIntl,
|
useIntl,
|
||||||
} from "react-intl";
|
} from "react-intl";
|
||||||
import { useHistory } from "react-router-dom";
|
import { useHistory } from "react-router-dom";
|
||||||
import { TruncatedText } from "src/components/Shared";
|
import { TruncatedText } from "src/components/Shared/TruncatedText";
|
||||||
import DeleteFilesDialog from "src/components/Shared/DeleteFilesDialog";
|
import { DeleteFilesDialog } from "src/components/Shared/DeleteFilesDialog";
|
||||||
import ReassignFilesDialog from "src/components/Shared/ReassignFilesDialog";
|
import { ReassignFilesDialog } from "src/components/Shared/ReassignFilesDialog";
|
||||||
import * as GQL from "src/core/generated-graphql";
|
import * as GQL from "src/core/generated-graphql";
|
||||||
import { mutateSceneSetPrimaryFile } from "src/core/StashService";
|
import { mutateSceneSetPrimaryFile } from "src/core/StashService";
|
||||||
import { useToast } from "src/hooks";
|
import { useToast } from "src/hooks/Toast";
|
||||||
import { NavUtils, TextUtils, getStashboxBase } from "src/utils";
|
import NavUtils from "src/utils/navigation";
|
||||||
|
import TextUtils from "src/utils/text";
|
||||||
|
import { getStashboxBase } from "src/utils/stashbox";
|
||||||
import { TextField, URLField } from "src/utils/field";
|
import { TextField, URLField } from "src/utils/field";
|
||||||
|
|
||||||
interface IFileInfoPanelProps {
|
interface IFileInfoPanelProps {
|
||||||
|
|
|
||||||
|
|
@ -8,13 +8,10 @@ import {
|
||||||
useSceneMarkerUpdate,
|
useSceneMarkerUpdate,
|
||||||
useSceneMarkerDestroy,
|
useSceneMarkerDestroy,
|
||||||
} from "src/core/StashService";
|
} from "src/core/StashService";
|
||||||
import {
|
import { DurationInput } from "src/components/Shared/DurationInput";
|
||||||
DurationInput,
|
import { TagSelect, MarkerTitleSuggest } from "src/components/Shared/Select";
|
||||||
TagSelect,
|
|
||||||
MarkerTitleSuggest,
|
|
||||||
} from "src/components/Shared";
|
|
||||||
import { getPlayerPosition } from "src/components/ScenePlayer/util";
|
import { getPlayerPosition } from "src/components/ScenePlayer/util";
|
||||||
import useToast from "src/hooks/Toast";
|
import { useToast } from "src/hooks/Toast";
|
||||||
|
|
||||||
interface IFormFields {
|
interface IFormFields {
|
||||||
title: string;
|
title: string;
|
||||||
|
|
|
||||||
|
|
@ -3,14 +3,12 @@ import { Badge, Button, Col, Form, InputGroup, Row } from "react-bootstrap";
|
||||||
import { FormattedMessage, useIntl } from "react-intl";
|
import { FormattedMessage, useIntl } from "react-intl";
|
||||||
|
|
||||||
import * as GQL from "src/core/generated-graphql";
|
import * as GQL from "src/core/generated-graphql";
|
||||||
import {
|
import { ModalComponent } from "src/components/Shared/Modal";
|
||||||
Modal,
|
import { LoadingIndicator } from "src/components/Shared/LoadingIndicator";
|
||||||
LoadingIndicator,
|
import { TruncatedText } from "src/components/Shared/TruncatedText";
|
||||||
TruncatedText,
|
import { Icon } from "src/components/Shared/Icon";
|
||||||
Icon,
|
|
||||||
} from "src/components/Shared";
|
|
||||||
import { queryScrapeSceneQuery } from "src/core/StashService";
|
import { queryScrapeSceneQuery } from "src/core/StashService";
|
||||||
import useToast from "src/hooks/Toast";
|
import { useToast } from "src/hooks/Toast";
|
||||||
import { faSearch } from "@fortawesome/free-solid-svg-icons";
|
import { faSearch } from "@fortawesome/free-solid-svg-icons";
|
||||||
|
|
||||||
interface ISceneSearchResultDetailsProps {
|
interface ISceneSearchResultDetailsProps {
|
||||||
|
|
@ -187,7 +185,7 @@ export const SceneQueryModal: React.FC<IProps> = ({
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Modal
|
<ModalComponent
|
||||||
show
|
show
|
||||||
onHide={onHide}
|
onHide={onHide}
|
||||||
modalProps={{ size: "lg", dialogClassName: "scrape-query-dialog" }}
|
modalProps={{ size: "lg", dialogClassName: "scrape-query-dialog" }}
|
||||||
|
|
@ -233,7 +231,7 @@ export const SceneQueryModal: React.FC<IProps> = ({
|
||||||
renderResults()
|
renderResults()
|
||||||
)}
|
)}
|
||||||
</div>
|
</div>
|
||||||
</Modal>
|
</ModalComponent>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,11 @@
|
||||||
import React, { useMemo, useState } from "react";
|
import React, { useMemo, useState } from "react";
|
||||||
import { StudioSelect, PerformerSelect } from "src/components/Shared";
|
|
||||||
import * as GQL from "src/core/generated-graphql";
|
import * as GQL from "src/core/generated-graphql";
|
||||||
import { MovieSelect, TagSelect } from "src/components/Shared/Select";
|
import {
|
||||||
|
MovieSelect,
|
||||||
|
TagSelect,
|
||||||
|
StudioSelect,
|
||||||
|
PerformerSelect,
|
||||||
|
} from "src/components/Shared/Select";
|
||||||
import {
|
import {
|
||||||
ScrapeDialog,
|
ScrapeDialog,
|
||||||
ScrapeDialogRow,
|
ScrapeDialogRow,
|
||||||
|
|
@ -19,7 +23,7 @@ import {
|
||||||
useTagCreate,
|
useTagCreate,
|
||||||
makePerformerCreateInput,
|
makePerformerCreateInput,
|
||||||
} from "src/core/StashService";
|
} from "src/core/StashService";
|
||||||
import useToast from "src/hooks/Toast";
|
import { useToast } from "src/hooks/Toast";
|
||||||
import DurationUtils from "src/utils/duration";
|
import DurationUtils from "src/utils/duration";
|
||||||
import { useIntl } from "react-intl";
|
import { useIntl } from "react-intl";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
import React, { useState } from "react";
|
import React, { useState } from "react";
|
||||||
import { FormattedMessage, useIntl } from "react-intl";
|
import { FormattedMessage, useIntl } from "react-intl";
|
||||||
import { Button, Form } from "react-bootstrap";
|
import { Button, Form } from "react-bootstrap";
|
||||||
import TruncatedText from "src/components/Shared/TruncatedText";
|
import { TruncatedText } from "src/components/Shared/TruncatedText";
|
||||||
import { VIDEO_PLAYER_ID } from "src/components/ScenePlayer/util";
|
import { VIDEO_PLAYER_ID } from "src/components/ScenePlayer/util";
|
||||||
import * as GQL from "src/core/generated-graphql";
|
import * as GQL from "src/core/generated-graphql";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,11 +8,14 @@ import {
|
||||||
SlimSceneDataFragment,
|
SlimSceneDataFragment,
|
||||||
} from "src/core/generated-graphql";
|
} from "src/core/generated-graphql";
|
||||||
import { queryFindScenes } from "src/core/StashService";
|
import { queryFindScenes } from "src/core/StashService";
|
||||||
import { useScenesList } from "src/hooks";
|
|
||||||
import { ListFilterModel } from "src/models/list-filter/filter";
|
import { ListFilterModel } from "src/models/list-filter/filter";
|
||||||
import { DisplayMode } from "src/models/list-filter/types";
|
import { DisplayMode } from "src/models/list-filter/types";
|
||||||
import { showWhenSelected, PersistanceLevel } from "src/hooks/ListHook";
|
import {
|
||||||
import Tagger from "src/components/Tagger";
|
showWhenSelected,
|
||||||
|
PersistanceLevel,
|
||||||
|
useScenesList,
|
||||||
|
} from "src/hooks/ListHook";
|
||||||
|
import { Tagger } from "../Tagger/scenes/SceneTagger";
|
||||||
import { IPlaySceneOptions, SceneQueue } from "src/models/sceneQueue";
|
import { IPlaySceneOptions, SceneQueue } from "src/models/sceneQueue";
|
||||||
import { WallPanel } from "../Wall/WallPanel";
|
import { WallPanel } from "../Wall/WallPanel";
|
||||||
import { SceneListTable } from "./SceneListTable";
|
import { SceneListTable } from "./SceneListTable";
|
||||||
|
|
|
||||||
|
|
@ -4,8 +4,9 @@ import React from "react";
|
||||||
import { Table, Button, Form } from "react-bootstrap";
|
import { Table, Button, Form } from "react-bootstrap";
|
||||||
import { Link } from "react-router-dom";
|
import { Link } from "react-router-dom";
|
||||||
import * as GQL from "src/core/generated-graphql";
|
import * as GQL from "src/core/generated-graphql";
|
||||||
import { NavUtils, TextUtils } from "src/utils";
|
import NavUtils from "src/utils/navigation";
|
||||||
import { Icon } from "src/components/Shared";
|
import TextUtils from "src/utils/text";
|
||||||
|
import { Icon } from "src/components/Shared/Icon";
|
||||||
import { FormattedMessage } from "react-intl";
|
import { FormattedMessage } from "react-intl";
|
||||||
import { objectTitle } from "src/core/files";
|
import { objectTitle } from "src/core/files";
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3,13 +3,12 @@ import React from "react";
|
||||||
import { useHistory } from "react-router-dom";
|
import { useHistory } from "react-router-dom";
|
||||||
import { useIntl } from "react-intl";
|
import { useIntl } from "react-intl";
|
||||||
import { Helmet } from "react-helmet";
|
import { Helmet } from "react-helmet";
|
||||||
import { TITLE_SUFFIX } from "src/components/Shared";
|
import { TITLE_SUFFIX } from "src/components/Shared/constants";
|
||||||
import Mousetrap from "mousetrap";
|
import Mousetrap from "mousetrap";
|
||||||
import { FindSceneMarkersQueryResult } from "src/core/generated-graphql";
|
import { FindSceneMarkersQueryResult } from "src/core/generated-graphql";
|
||||||
import { queryFindSceneMarkers } from "src/core/StashService";
|
import { queryFindSceneMarkers } from "src/core/StashService";
|
||||||
import { NavUtils } from "src/utils";
|
import NavUtils from "src/utils/navigation";
|
||||||
import { useSceneMarkersList } from "src/hooks";
|
import { PersistanceLevel, useSceneMarkersList } from "src/hooks/ListHook";
|
||||||
import { PersistanceLevel } from "src/hooks/ListHook";
|
|
||||||
import { ListFilterModel } from "src/models/list-filter/filter";
|
import { ListFilterModel } from "src/models/list-filter/filter";
|
||||||
import { DisplayMode } from "src/models/list-filter/types";
|
import { DisplayMode } from "src/models/list-filter/types";
|
||||||
import { WallPanel } from "../Wall/WallPanel";
|
import { WallPanel } from "../Wall/WallPanel";
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,15 @@
|
||||||
import { Form, Col, Row, Button, FormControl } from "react-bootstrap";
|
import { Form, Col, Row, Button, FormControl, Modal } from "react-bootstrap";
|
||||||
import React, { useCallback, useEffect, useMemo, useState } from "react";
|
import React, { useCallback, useEffect, useMemo, useState } from "react";
|
||||||
import * as GQL from "src/core/generated-graphql";
|
import * as GQL from "src/core/generated-graphql";
|
||||||
import {
|
import { Icon } from "../Shared/Icon";
|
||||||
GallerySelect,
|
import { LoadingIndicator } from "../Shared/LoadingIndicator";
|
||||||
Icon,
|
import { StringListSelect, GallerySelect, SceneSelect } from "../Shared/Select";
|
||||||
LoadingIndicator,
|
import FormUtils from "src/utils/form";
|
||||||
Modal,
|
import ImageUtils from "src/utils/image";
|
||||||
SceneSelect,
|
import TextUtils from "src/utils/text";
|
||||||
StringListSelect,
|
|
||||||
} from "src/components/Shared";
|
|
||||||
import { FormUtils, ImageUtils, TextUtils } from "src/utils";
|
|
||||||
import { mutateSceneMerge, queryFindScenesByID } from "src/core/StashService";
|
import { mutateSceneMerge, queryFindScenesByID } from "src/core/StashService";
|
||||||
import { FormattedMessage, useIntl } from "react-intl";
|
import { FormattedMessage, useIntl } from "react-intl";
|
||||||
import { useToast } from "src/hooks";
|
import { useToast } from "src/hooks/Toast";
|
||||||
import { faExchangeAlt, faSignInAlt } from "@fortawesome/free-solid-svg-icons";
|
import { faExchangeAlt, faSignInAlt } from "@fortawesome/free-solid-svg-icons";
|
||||||
import {
|
import {
|
||||||
hasScrapedValues,
|
hasScrapedValues,
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ import React, { lazy } from "react";
|
||||||
import { Route, Switch } from "react-router-dom";
|
import { Route, Switch } from "react-router-dom";
|
||||||
import { useIntl } from "react-intl";
|
import { useIntl } from "react-intl";
|
||||||
import { Helmet } from "react-helmet";
|
import { Helmet } from "react-helmet";
|
||||||
import { TITLE_SUFFIX } from "src/components/Shared";
|
import { TITLE_SUFFIX } from "src/components/Shared/constants";
|
||||||
import { PersistanceLevel } from "src/hooks/ListHook";
|
import { PersistanceLevel } from "src/hooks/ListHook";
|
||||||
|
|
||||||
const SceneList = lazy(() => import("./SceneList"));
|
const SceneList = lazy(() => import("./SceneList"));
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@ import { faChevronDown, faChevronUp } from "@fortawesome/free-solid-svg-icons";
|
||||||
import React, { PropsWithChildren, useState } from "react";
|
import React, { PropsWithChildren, useState } from "react";
|
||||||
import { Button, Collapse, Form, Modal, ModalProps } from "react-bootstrap";
|
import { Button, Collapse, Form, Modal, ModalProps } from "react-bootstrap";
|
||||||
import { FormattedMessage, useIntl } from "react-intl";
|
import { FormattedMessage, useIntl } from "react-intl";
|
||||||
import { Icon } from "../Shared";
|
import { Icon } from "../Shared/Icon";
|
||||||
import { StringListInput } from "../Shared/StringListInput";
|
import { StringListInput } from "../Shared/StringListInput";
|
||||||
|
|
||||||
interface ISetting {
|
interface ISetting {
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,7 @@ import { Tab, Nav, Row, Col } from "react-bootstrap";
|
||||||
import { useHistory, useLocation } from "react-router-dom";
|
import { useHistory, useLocation } from "react-router-dom";
|
||||||
import { FormattedMessage, useIntl } from "react-intl";
|
import { FormattedMessage, useIntl } from "react-intl";
|
||||||
import { Helmet } from "react-helmet";
|
import { Helmet } from "react-helmet";
|
||||||
import { TITLE_SUFFIX } from "src/components/Shared";
|
import { TITLE_SUFFIX } from "src/components/Shared/constants";
|
||||||
import { SettingsAboutPanel } from "./SettingsAboutPanel";
|
import { SettingsAboutPanel } from "./SettingsAboutPanel";
|
||||||
import { SettingsConfigurationPanel } from "./SettingsSystemPanel";
|
import { SettingsConfigurationPanel } from "./SettingsSystemPanel";
|
||||||
import { SettingsInterfacePanel } from "./SettingsInterfacePanel/SettingsInterfacePanel";
|
import { SettingsInterfacePanel } from "./SettingsInterfacePanel/SettingsInterfacePanel";
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,9 @@
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { Button, Form } from "react-bootstrap";
|
import { Button, Form } from "react-bootstrap";
|
||||||
import { FormattedMessage, useIntl } from "react-intl";
|
import { FormattedMessage, useIntl } from "react-intl";
|
||||||
import {
|
import { DurationInput } from "src/components/Shared/DurationInput";
|
||||||
DurationInput,
|
import { PercentInput } from "src/components/Shared/PercentInput";
|
||||||
PercentInput,
|
import { LoadingIndicator } from "src/components/Shared/LoadingIndicator";
|
||||||
LoadingIndicator,
|
|
||||||
} from "src/components/Shared";
|
|
||||||
import { CheckboxGroup } from "./CheckboxGroup";
|
import { CheckboxGroup } from "./CheckboxGroup";
|
||||||
import { SettingSection } from "../SettingSection";
|
import { SettingSection } from "../SettingSection";
|
||||||
import {
|
import {
|
||||||
|
|
@ -16,13 +14,13 @@ import {
|
||||||
StringSetting,
|
StringSetting,
|
||||||
} from "../Inputs";
|
} from "../Inputs";
|
||||||
import { SettingStateContext } from "../context";
|
import { SettingStateContext } from "../context";
|
||||||
import { DurationUtils } from "src/utils";
|
import DurationUtils from "src/utils/duration";
|
||||||
import * as GQL from "src/core/generated-graphql";
|
import * as GQL from "src/core/generated-graphql";
|
||||||
import {
|
import {
|
||||||
imageLightboxDisplayModeIntlMap,
|
imageLightboxDisplayModeIntlMap,
|
||||||
imageLightboxScrollModeIntlMap,
|
imageLightboxScrollModeIntlMap,
|
||||||
} from "src/core/enums";
|
} from "src/core/enums";
|
||||||
import { useInterfaceLocalForage } from "src/hooks";
|
import { useInterfaceLocalForage } from "src/hooks/LocalForage";
|
||||||
import {
|
import {
|
||||||
ConnectionState,
|
ConnectionState,
|
||||||
connectionStateLabel,
|
connectionStateLabel,
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { Icon, LoadingIndicator } from "src/components/Shared";
|
import { Icon } from "../Shared/Icon";
|
||||||
|
import { LoadingIndicator } from "../Shared/LoadingIndicator";
|
||||||
import { StashSetting } from "./StashConfiguration";
|
import { StashSetting } from "./StashConfiguration";
|
||||||
import { SettingSection } from "./SettingSection";
|
import { SettingSection } from "./SettingSection";
|
||||||
import { BooleanSetting, StringListSetting, StringSetting } from "./Inputs";
|
import { BooleanSetting, StringListSetting, StringSetting } from "./Inputs";
|
||||||
|
|
|
||||||
|
|
@ -3,9 +3,11 @@ import { Button } from "react-bootstrap";
|
||||||
import { FormattedMessage, useIntl } from "react-intl";
|
import { FormattedMessage, useIntl } from "react-intl";
|
||||||
import * as GQL from "src/core/generated-graphql";
|
import * as GQL from "src/core/generated-graphql";
|
||||||
import { mutateReloadPlugins, usePlugins } from "src/core/StashService";
|
import { mutateReloadPlugins, usePlugins } from "src/core/StashService";
|
||||||
import { useToast } from "src/hooks";
|
import { useToast } from "src/hooks/Toast";
|
||||||
import { TextUtils } from "src/utils";
|
import TextUtils from "src/utils/text";
|
||||||
import { CollapseButton, Icon, LoadingIndicator } from "src/components/Shared";
|
import { CollapseButton } from "../Shared/CollapseButton";
|
||||||
|
import { Icon } from "../Shared/Icon";
|
||||||
|
import { LoadingIndicator } from "../Shared/LoadingIndicator";
|
||||||
import { SettingSection } from "./SettingSection";
|
import { SettingSection } from "./SettingSection";
|
||||||
import { Setting, SettingGroup } from "./Inputs";
|
import { Setting, SettingGroup } from "./Inputs";
|
||||||
import { faLink, faSyncAlt } from "@fortawesome/free-solid-svg-icons";
|
import { faLink, faSyncAlt } from "@fortawesome/free-solid-svg-icons";
|
||||||
|
|
|
||||||
|
|
@ -8,9 +8,11 @@ import {
|
||||||
useListSceneScrapers,
|
useListSceneScrapers,
|
||||||
useListGalleryScrapers,
|
useListGalleryScrapers,
|
||||||
} from "src/core/StashService";
|
} from "src/core/StashService";
|
||||||
import { useToast } from "src/hooks";
|
import { useToast } from "src/hooks/Toast";
|
||||||
import { TextUtils } from "src/utils";
|
import TextUtils from "src/utils/text";
|
||||||
import { CollapseButton, Icon, LoadingIndicator } from "src/components/Shared";
|
import { CollapseButton } from "../Shared/CollapseButton";
|
||||||
|
import { Icon } from "../Shared/Icon";
|
||||||
|
import { LoadingIndicator } from "../Shared/LoadingIndicator";
|
||||||
import { ScrapeType } from "src/core/generated-graphql";
|
import { ScrapeType } from "src/core/generated-graphql";
|
||||||
import { SettingSection } from "./SettingSection";
|
import { SettingSection } from "./SettingSection";
|
||||||
import { BooleanSetting, StringListSetting, StringSetting } from "./Inputs";
|
import { BooleanSetting, StringListSetting, StringSetting } from "./Inputs";
|
||||||
|
|
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue