mirror of
https://github.com/immich-app/immich.git
synced 2025-01-28 06:32:44 +01:00
Removing privacy information + adding required Flutter version information
This commit is contained in:
parent
18a4346d2b
commit
da63439fd2
13 changed files with 304 additions and 1 deletions
docs
12
docs/docs/FAQ/FAQ.md
Normal file
12
docs/docs/FAQ/FAQ.md
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
# FAQ General
|
||||||
|
|
||||||
|
import TOCI from '@site/src/components/TOC';
|
||||||
|
|
||||||
|
|
||||||
|
<TOCI/>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
37
docs/docs/FAQ/index.js
Normal file
37
docs/docs/FAQ/index.js
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
import {toc as Toc_Albums ,metadata as Metadata_Albums} from './Albums-FAQ.md';
|
||||||
|
import {toc as Toc_Assets ,metadata as Metadata_Assets} from './Assets-FAQ.md';
|
||||||
|
import {toc as Toc_Docker ,metadata as Metadata_Docker} from './Docker-FAQ.md';
|
||||||
|
import {toc as Toc_External ,metadata as Metadata_External} from './External-Library-FAQ.md';
|
||||||
|
import {toc as Toc_Machine ,metadata as Metadata_Machine} from './Machine-Learning-FAQ.md';
|
||||||
|
import {toc as Toc_Mobile ,metadata as Metadata_Mobile} from './Mobile-App-FAQ.md';
|
||||||
|
import {toc as Toc_Performance ,metadata as Metadata_Performance} from './Performance-FAQ.md';
|
||||||
|
import {toc as Toc_User ,metadata as Metadata_User} from './User-FAQ.md';
|
||||||
|
const combined = {
|
||||||
|
Albums: { toc: Toc_Albums, metadata: Metadata_Albums },
|
||||||
|
Assets: { toc: Toc_Assets, metadata: Metadata_Assets },
|
||||||
|
Docker: { toc: Toc_Docker, metadata: Metadata_Docker },
|
||||||
|
External: { toc: Toc_External, metadata: Metadata_External },
|
||||||
|
Machine: { toc: Toc_Machine, metadata: Metadata_Machine },
|
||||||
|
Mobile: { toc: Toc_Mobile, metadata: Metadata_Mobile },
|
||||||
|
Performance: { toc: Toc_Performance, metadata: Metadata_Performance },
|
||||||
|
User: { toc: Toc_User, metadata: Metadata_User },
|
||||||
|
};
|
||||||
|
|
||||||
|
// Convert the object to an array
|
||||||
|
const combinedArray = Object.keys(combined).map(key => ({
|
||||||
|
key,
|
||||||
|
toc: combined[key].toc,
|
||||||
|
metadata: combined[key].metadata
|
||||||
|
}));
|
||||||
|
|
||||||
|
// Sort the array based on sidebar_position
|
||||||
|
combinedArray.sort((a, b) => a.metadata.frontMatter.sidebar_position - b.metadata.frontMatter.sidebar_position);
|
||||||
|
|
||||||
|
// Convert the array back to an object
|
||||||
|
export const sortedCombined = {};
|
||||||
|
combinedArray.forEach(item => {
|
||||||
|
sortedCombined[item.key] = {
|
||||||
|
toc: item.toc,
|
||||||
|
metadata: item.metadata
|
||||||
|
};
|
||||||
|
});
|
52
docs/docs/auto-index.js
Normal file
52
docs/docs/auto-index.js
Normal file
|
@ -0,0 +1,52 @@
|
||||||
|
const fs = require('fs');
|
||||||
|
const path = require('path');
|
||||||
|
|
||||||
|
// Specify the directory
|
||||||
|
const dirPath = path.join(__dirname, '/FAQ');
|
||||||
|
|
||||||
|
// Read the directory
|
||||||
|
fs.readdir(dirPath, (err, files) => {
|
||||||
|
if (err) {
|
||||||
|
console.error('Could not list the directory.', err);
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Filter .md files
|
||||||
|
const mdFiles = files.filter(file => path.extname(file) === '.md' && file !== "FAQ.md");
|
||||||
|
|
||||||
|
// Generate import statements
|
||||||
|
const importStatements = mdFiles.map((file,i) => {
|
||||||
|
const componentName = path.basename(file, '.md').split("-")[0];
|
||||||
|
return `import {toc as Toc_${componentName} ,metadata as Metadata_${componentName}} from './${file}';`;
|
||||||
|
});
|
||||||
|
|
||||||
|
// Combine toc and metadata under one key for each file
|
||||||
|
const combinedStatements = mdFiles.map((file,i) => {
|
||||||
|
const componentName = path.basename(file, '.md').split("-")[0];
|
||||||
|
return `${componentName}: { toc: Toc_${componentName}, metadata: Metadata_${componentName} },`;
|
||||||
|
});
|
||||||
|
|
||||||
|
// Write to index.js
|
||||||
|
fs.writeFile(path.join(dirPath, 'index.js'), [...importStatements, 'const combined = {', ...combinedStatements, '};' ,`
|
||||||
|
// Convert the object to an array
|
||||||
|
const combinedArray = Object.keys(combined).map(key => ({
|
||||||
|
key,
|
||||||
|
toc: combined[key].toc,
|
||||||
|
metadata: combined[key].metadata
|
||||||
|
}));
|
||||||
|
|
||||||
|
// Sort the array based on sidebar_position
|
||||||
|
combinedArray.sort((a, b) => a.metadata.frontMatter.sidebar_position - b.metadata.frontMatter.sidebar_position);
|
||||||
|
|
||||||
|
// Convert the array back to an object
|
||||||
|
export const sortedCombined = {};
|
||||||
|
combinedArray.forEach(item => {
|
||||||
|
sortedCombined[item.key] = {
|
||||||
|
toc: item.toc,
|
||||||
|
metadata: item.metadata
|
||||||
|
};
|
||||||
|
});`].join('\n'), (err) => {
|
||||||
|
if (err) throw err;
|
||||||
|
console.log('Index file has been saved!');
|
||||||
|
});
|
||||||
|
});
|
|
@ -14,7 +14,8 @@
|
||||||
"serve": "docusaurus serve",
|
"serve": "docusaurus serve",
|
||||||
"write-translations": "docusaurus write-translations",
|
"write-translations": "docusaurus write-translations",
|
||||||
"write-heading-ids": "docusaurus write-heading-ids",
|
"write-heading-ids": "docusaurus write-heading-ids",
|
||||||
"check": "tsc"
|
"check": "tsc",
|
||||||
|
"index" : "node docs/auto-index.js"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@docusaurus/core": "^2.4.3",
|
"@docusaurus/core": "^2.4.3",
|
||||||
|
|
17
docs/src/components/TOC.js
Normal file
17
docs/src/components/TOC.js
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
import React from 'react';
|
||||||
|
import TOC from './TOCInline';
|
||||||
|
import { sortedCombined as FAQComponents } from '../../docs/FAQ/index';
|
||||||
|
|
||||||
|
const TOCI = () => {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
{/* For each [key, value] pair in FAQComponents... */}
|
||||||
|
{Object.values(FAQComponents).map(({ toc, metadata }) => {
|
||||||
|
/* ...render a TOC component with toc and metadata as props */
|
||||||
|
return <TOC key={metadata.id} toc={toc} metadata={metadata} />
|
||||||
|
})}
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default TOCI;
|
21
docs/src/components/TOCInline.js
Normal file
21
docs/src/components/TOCInline.js
Normal file
|
@ -0,0 +1,21 @@
|
||||||
|
|
||||||
|
import React from 'react';
|
||||||
|
import TOCInline from './TOCInline/index';
|
||||||
|
const TOC = ({metadata , toc}) => {
|
||||||
|
return (
|
||||||
|
<div>
|
||||||
|
<div className="col col--12">
|
||||||
|
<h1>{metadata.title}</h1>
|
||||||
|
<TOCInline toc={toc} metadata={metadata}/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|
||||||
|
export default TOC;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
9
docs/src/components/TOCInline/index.d.ts
vendored
Normal file
9
docs/src/components/TOCInline/index.d.ts
vendored
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
/**
|
||||||
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*/
|
||||||
|
/// <reference types="react" />
|
||||||
|
import type { Props } from '@theme/TOCInline';
|
||||||
|
export default function TOCInline({ toc, minHeadingLevel, maxHeadingLevel,metadata }: Props): JSX.Element;
|
23
docs/src/components/TOCInline/index.js
Normal file
23
docs/src/components/TOCInline/index.js
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
/**
|
||||||
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*/
|
||||||
|
import React from 'react';
|
||||||
|
import TOCItems from '../TOCItems/index';
|
||||||
|
import styles from './styles.module.css';
|
||||||
|
export default function TOCInline({toc, minHeadingLevel, maxHeadingLevel ,metadata}) {
|
||||||
|
return (
|
||||||
|
<div className={styles.tableOfContentsInline}>
|
||||||
|
<TOCItems
|
||||||
|
toc={toc}
|
||||||
|
minHeadingLevel={minHeadingLevel}
|
||||||
|
maxHeadingLevel={maxHeadingLevel}
|
||||||
|
className="table-of-contents"
|
||||||
|
linkClassName={null}
|
||||||
|
metadata={metadata}
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
12
docs/src/components/TOCInline/styles.module.css
Normal file
12
docs/src/components/TOCInline/styles.module.css
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
/**
|
||||||
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*/
|
||||||
|
|
||||||
|
.tableOfContentsInline ul {
|
||||||
|
list-style-type: disc;
|
||||||
|
font-size: initial;
|
||||||
|
padding-top: 0;
|
||||||
|
}
|
11
docs/src/components/TOCItems/Tree.d.ts
vendored
Normal file
11
docs/src/components/TOCItems/Tree.d.ts
vendored
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
/**
|
||||||
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*/
|
||||||
|
import React from 'react';
|
||||||
|
import type { Props } from '@theme/TOCItems/Tree';
|
||||||
|
declare function TOCItemTree({ toc, className, linkClassName, isChild,metadata }: Props): JSX.Element | null;
|
||||||
|
declare const _default: React.MemoExoticComponent<typeof TOCItemTree>;
|
||||||
|
export default _default;
|
44
docs/src/components/TOCItems/Tree.js
Normal file
44
docs/src/components/TOCItems/Tree.js
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
/**
|
||||||
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*/
|
||||||
|
import React from 'react';
|
||||||
|
import Link from '@docusaurus/Link';
|
||||||
|
|
||||||
|
// Recursive component rendering the toc tree
|
||||||
|
function TOCItemTree({ toc, className, linkClassName, isChild, metadata }) {
|
||||||
|
if (!toc.length) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return (
|
||||||
|
<ul className={isChild ? undefined : className}>
|
||||||
|
{toc.map((heading) => (
|
||||||
|
<li key={heading.id}>
|
||||||
|
<Link
|
||||||
|
className={linkClassName ?? undefined} key={heading.id}
|
||||||
|
href={`${metadata?.permalink}#${heading.id}`}
|
||||||
|
to={`${metadata?.permalink}#${heading.id}`}
|
||||||
|
>
|
||||||
|
{/* eslint-disable-next-line jsx-a11y/control-has-associated-label */}
|
||||||
|
<span
|
||||||
|
// Developer provided the HTML, so assume it's safe.
|
||||||
|
// eslint-disable-next-line react/no-danger
|
||||||
|
dangerouslySetInnerHTML={{ __html: heading.value }}
|
||||||
|
></span>
|
||||||
|
</Link>
|
||||||
|
<TOCItemTree
|
||||||
|
isChild
|
||||||
|
toc={heading.children}
|
||||||
|
className={className}
|
||||||
|
linkClassName={linkClassName}
|
||||||
|
metadata={metadata}
|
||||||
|
/>
|
||||||
|
</li>
|
||||||
|
))}
|
||||||
|
</ul>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
// Memo only the tree root is enough
|
||||||
|
export default React.memo(TOCItemTree);
|
9
docs/src/components/TOCItems/index.d.ts
vendored
Normal file
9
docs/src/components/TOCItems/index.d.ts
vendored
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
/**
|
||||||
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*/
|
||||||
|
/// <reference types="react" />
|
||||||
|
import type { Props } from '@theme/TOCItems';
|
||||||
|
export default function TOCItems({ toc, className, linkClassName, linkActiveClassName, minHeadingLevel: minHeadingLevelOption, maxHeadingLevel: maxHeadingLevelOption,metadata: metadata, ...props }: Props): JSX.Element | null;
|
55
docs/src/components/TOCItems/index.js
Normal file
55
docs/src/components/TOCItems/index.js
Normal file
|
@ -0,0 +1,55 @@
|
||||||
|
/**
|
||||||
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
||||||
|
*
|
||||||
|
* This source code is licensed under the MIT license found in the
|
||||||
|
* LICENSE file in the root directory of this source tree.
|
||||||
|
*/
|
||||||
|
import React, {useMemo} from 'react';
|
||||||
|
import {useThemeConfig} from '@docusaurus/theme-common';
|
||||||
|
import {
|
||||||
|
useTOCHighlight,
|
||||||
|
useFilteredAndTreeifiedTOC,
|
||||||
|
} from '@docusaurus/theme-common/internal';
|
||||||
|
import TOCItemTree from '../TOCItems/Tree';
|
||||||
|
export default function TOCItems({
|
||||||
|
toc,
|
||||||
|
className = 'table-of-contents table-of-contents__left-border',
|
||||||
|
linkClassName = 'table-of-contents__link',
|
||||||
|
linkActiveClassName = undefined,
|
||||||
|
minHeadingLevel: minHeadingLevelOption,
|
||||||
|
maxHeadingLevel: maxHeadingLevelOption,
|
||||||
|
metadata:metadata,
|
||||||
|
...props
|
||||||
|
}) {
|
||||||
|
const themeConfig = useThemeConfig();
|
||||||
|
const minHeadingLevel =
|
||||||
|
minHeadingLevelOption ?? themeConfig.tableOfContents.minHeadingLevel;
|
||||||
|
const maxHeadingLevel =
|
||||||
|
maxHeadingLevelOption ?? themeConfig.tableOfContents.maxHeadingLevel;
|
||||||
|
const tocTree = useFilteredAndTreeifiedTOC({
|
||||||
|
toc,
|
||||||
|
minHeadingLevel,
|
||||||
|
maxHeadingLevel,
|
||||||
|
});
|
||||||
|
const tocHighlightConfig = useMemo(() => {
|
||||||
|
if (linkClassName && linkActiveClassName) {
|
||||||
|
return {
|
||||||
|
linkClassName,
|
||||||
|
linkActiveClassName,
|
||||||
|
minHeadingLevel,
|
||||||
|
maxHeadingLevel,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
return undefined;
|
||||||
|
}, [linkClassName, linkActiveClassName, minHeadingLevel, maxHeadingLevel]);
|
||||||
|
useTOCHighlight(tocHighlightConfig);
|
||||||
|
return (
|
||||||
|
<TOCItemTree
|
||||||
|
toc={tocTree}
|
||||||
|
className={className}
|
||||||
|
linkClassName={linkClassName}
|
||||||
|
metadata={metadata}
|
||||||
|
{...props}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
}
|
Loading…
Reference in a new issue