update prettier config and run on all files

This commit is contained in:
Przemek Więch 2025-02-06 00:11:24 +01:00
parent 187557bd2f
commit 84a0149e0e
31 changed files with 153 additions and 128 deletions

View File

@ -1,7 +0,0 @@
{
"singleQuote": true,
"bracketSpacing": false,
"arrowParens": "always",
"trailingComma": "all",
"endOfLine": "crlf"
}

24
package-lock.json generated
View File

@ -75,6 +75,7 @@
"jest": "^29.7.0", "jest": "^29.7.0",
"jsdom": "^26.0.0", "jsdom": "^26.0.0",
"prettier": "^3.4.2", "prettier": "^3.4.2",
"prettier-plugin-organize-imports": "^4.1.0",
"run-script-os": "^1.1.6", "run-script-os": "^1.1.6",
"start-server-and-test": "^2.0.9", "start-server-and-test": "^2.0.9",
"ts-jest": "^29.2.5", "ts-jest": "^29.2.5",
@ -10065,6 +10066,22 @@
"url": "https://github.com/prettier/prettier?sponsor=1" "url": "https://github.com/prettier/prettier?sponsor=1"
} }
}, },
"node_modules/prettier-plugin-organize-imports": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/prettier-plugin-organize-imports/-/prettier-plugin-organize-imports-4.1.0.tgz",
"integrity": "sha512-5aWRdCgv645xaa58X8lOxzZoiHAldAPChljr/MT0crXVOWTZ+Svl4hIWlz+niYSlO6ikE5UXkN1JrRvIP2ut0A==",
"dev": true,
"peerDependencies": {
"prettier": ">=2.0",
"typescript": ">=2.9",
"vue-tsc": "^2.1.0"
},
"peerDependenciesMeta": {
"vue-tsc": {
"optional": true
}
}
},
"node_modules/pretty-bytes": { "node_modules/pretty-bytes": {
"version": "5.6.0", "version": "5.6.0",
"resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz",
@ -20051,6 +20068,13 @@
"integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==", "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==",
"dev": true "dev": true
}, },
"prettier-plugin-organize-imports": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/prettier-plugin-organize-imports/-/prettier-plugin-organize-imports-4.1.0.tgz",
"integrity": "sha512-5aWRdCgv645xaa58X8lOxzZoiHAldAPChljr/MT0crXVOWTZ+Svl4hIWlz+niYSlO6ikE5UXkN1JrRvIP2ut0A==",
"dev": true,
"requires": {}
},
"pretty-bytes": { "pretty-bytes": {
"version": "5.6.0", "version": "5.6.0",
"resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz",

View File

@ -70,6 +70,7 @@
"jest": "^29.7.0", "jest": "^29.7.0",
"jsdom": "^26.0.0", "jsdom": "^26.0.0",
"prettier": "^3.4.2", "prettier": "^3.4.2",
"prettier-plugin-organize-imports": "^4.1.0",
"run-script-os": "^1.1.6", "run-script-os": "^1.1.6",
"start-server-and-test": "^2.0.9", "start-server-and-test": "^2.0.9",
"ts-jest": "^29.2.5", "ts-jest": "^29.2.5",
@ -87,7 +88,7 @@
"build:default": "GENERATE_SOURCEMAP=false VITE_CHANGELOG=`cat CHANGELOG.md` VITE_GIT_SHA=`git rev-parse --short HEAD` VITE_GIT_TIME=`git log -1 --format=%ci` tsc && vite build", "build:default": "GENERATE_SOURCEMAP=false VITE_CHANGELOG=`cat CHANGELOG.md` VITE_GIT_SHA=`git rev-parse --short HEAD` VITE_GIT_TIME=`git log -1 --format=%ci` tsc && vite build",
"build:windows": "set \"GENERATE_SOURCEMAP=false\" && tsc && vite build", "build:windows": "set \"GENERATE_SOURCEMAP=false\" && tsc && vite build",
"test": "jest", "test": "jest",
"prettier": "prettier --write src/**/*.{ts,tsx,json} --end-of-line lf && prettier --write src/*.{ts,tsx,json} --end-of-line lf", "prettier": "prettier --write src/**/*.{ts,tsx,json} && prettier --write src/*.{ts,tsx,json}",
"predeploy": "npm run build", "predeploy": "npm run build",
"deploy": "gh-pages -d dist", "deploy": "gh-pages -d dist",
"predeploy-wikitree": "npm run build", "predeploy-wikitree": "npm run build",

8
prettier.config.mjs Normal file
View File

@ -0,0 +1,8 @@
const config = {
bracketSpacing: false,
endOfLine: 'lf',
singleQuote: true,
plugins: ['prettier-plugin-organize-imports'],
};
export default config;

View File

@ -1,22 +1,11 @@
import * as H from 'history'; import * as H from 'history';
import queryString from 'query-string'; import queryString from 'query-string';
import {analyticsEvent} from './util/analytics';
import {Changelog} from './changelog';
import {DataSourceEnum, SourceSelection} from './datasource/data_source';
import {Details} from './details/details';
import {EmbeddedDataSource, EmbeddedSourceSpec} from './datasource/embedded';
import {FormattedMessage, useIntl} from 'react-intl';
import {getI18nMessage} from './util/error_i18n';
import {IndiInfo} from 'topola';
import {Intro} from './intro';
import {Loader, Message, Portal, Tab} from 'semantic-ui-react';
import {Media} from './util/media';
import {Navigate, Route, Routes} from 'react-router';
import {TopBar} from './menu/top_bar';
import {TopolaData} from './util/gedcom_util';
import {useEffect, useState} from 'react'; import {useEffect, useState} from 'react';
import {useNavigate, useLocation} from 'react-router'; import {FormattedMessage, useIntl} from 'react-intl';
import {idToIndiMap} from './util/gedcom_util'; import {Navigate, Route, Routes, useLocation, useNavigate} from 'react-router';
import {Loader, Message, Portal, Tab} from 'semantic-ui-react';
import {IndiInfo} from 'topola';
import {Changelog} from './changelog';
import { import {
Chart, Chart,
ChartType, ChartType,
@ -34,12 +23,14 @@ import {
Ids, Ids,
Sex, Sex,
} from './config'; } from './config';
import {DataSourceEnum, SourceSelection} from './datasource/data_source';
import {EmbeddedDataSource, EmbeddedSourceSpec} from './datasource/embedded';
import { import {
GedcomUrlDataSource,
getSelection, getSelection,
UploadedDataSource,
UploadSourceSpec, UploadSourceSpec,
UrlSourceSpec, UrlSourceSpec,
GedcomUrlDataSource,
UploadedDataSource,
} from './datasource/load_data'; } from './datasource/load_data';
import { import {
loadWikiTree, loadWikiTree,
@ -47,7 +38,14 @@ import {
WikiTreeDataSource, WikiTreeDataSource,
WikiTreeSourceSpec, WikiTreeSourceSpec,
} from './datasource/wikitree'; } from './datasource/wikitree';
import {Details} from './details/details';
import {DonatsoChart} from './donatso-chart'; import {DonatsoChart} from './donatso-chart';
import {Intro} from './intro';
import {TopBar} from './menu/top_bar';
import {analyticsEvent} from './util/analytics';
import {getI18nMessage} from './util/error_i18n';
import {idToIndiMap, TopolaData} from './util/gedcom_util';
import {Media} from './util/media';
/** /**
* Load GEDCOM URL from VITE_STATIC_URL environment variable. * Load GEDCOM URL from VITE_STATIC_URL environment variable.

View File

@ -1,10 +1,10 @@
import {useEffect, useState} from 'react';
import {FormattedMessage} from 'react-intl';
import rehypeStringify from 'rehype-stringify'; import rehypeStringify from 'rehype-stringify';
import remarkParse from 'remark-parse'; import remarkParse from 'remark-parse';
import remarkRehype from 'remark-rehype'; import remarkRehype from 'remark-rehype';
import {Button, Header, Modal} from 'semantic-ui-react'; import {Button, Header, Modal} from 'semantic-ui-react';
import {unified} from 'unified'; import {unified} from 'unified';
import {useEffect, useState} from 'react';
import {FormattedMessage} from 'react-intl';
const LAST_SEEN_VERSION_KEY = 'last_seen_version'; const LAST_SEEN_VERSION_KEY = 'last_seen_version';

View File

@ -1,11 +1,6 @@
import {ChartColors, Ids, Sex} from './config';
import {interpolateNumber} from 'd3-interpolate';
import {IntlShape, useIntl} from 'react-intl';
import {max, min} from 'd3-array'; import {max, min} from 'd3-array';
import {Media} from './util/media'; import {interpolateNumber} from 'd3-interpolate';
import {saveAs} from 'file-saver';
import {select, Selection} from 'd3-selection'; import {select, Selection} from 'd3-selection';
import {useEffect, useRef} from 'react';
import 'd3-transition'; import 'd3-transition';
import { import {
D3ZoomEvent, D3ZoomEvent,
@ -14,18 +9,23 @@ import {
ZoomedElementBaseType, ZoomedElementBaseType,
zoomTransform, zoomTransform,
} from 'd3-zoom'; } from 'd3-zoom';
import {saveAs} from 'file-saver';
import {useEffect, useRef} from 'react';
import {IntlShape, useIntl} from 'react-intl';
import { import {
JsonGedcomData,
ChartHandle, ChartHandle,
IndiInfo, CircleRenderer,
createChart, createChart,
DetailedRenderer, DetailedRenderer,
HourglassChart,
RelativesChart,
FancyChart, FancyChart,
CircleRenderer, HourglassChart,
IndiInfo,
JsonGedcomData,
RelativesChart,
ChartColors as TopolaChartColors, ChartColors as TopolaChartColors,
} from 'topola'; } from 'topola';
import {ChartColors, Ids, Sex} from './config';
import {Media} from './util/media';
import {usePrevious} from './util/previous-hook'; import {usePrevious} from './util/previous-hook';
/** How much to zoom when using the +/- buttons. */ /** How much to zoom when using the +/- buttons. */

View File

@ -1,6 +1,6 @@
import {Item, Checkbox, Form, Header} from 'semantic-ui-react';
import {FormattedMessage} from 'react-intl';
import {ParsedQuery} from 'query-string'; import {ParsedQuery} from 'query-string';
import {FormattedMessage} from 'react-intl';
import {Checkbox, Form, Header, Item} from 'semantic-ui-react';
export enum ChartColors { export enum ChartColors {
NO_COLOR, NO_COLOR,
@ -99,7 +99,10 @@ export function ConfigPanel(props: {
value="none" value="none"
checked={props.config.color === ChartColors.NO_COLOR} checked={props.config.color === ChartColors.NO_COLOR}
onClick={() => onClick={() =>
props.onChange({...props.config, color: ChartColors.NO_COLOR}) props.onChange({
...props.config,
color: ChartColors.NO_COLOR,
})
} }
/> />
</Form.Field> </Form.Field>

View File

@ -1,6 +1,6 @@
import {analyticsEvent} from '../util/analytics'; import {analyticsEvent} from '../util/analytics';
import {DataSource, DataSourceEnum, SourceSelection} from './data_source';
import {getSoftware, TopolaData} from '../util/gedcom_util'; import {getSoftware, TopolaData} from '../util/gedcom_util';
import {DataSource, DataSourceEnum, SourceSelection} from './data_source';
import {loadGedcom} from './load_data'; import {loadGedcom} from './load_data';
/** /**

View File

@ -1,7 +1,7 @@
import {expect, describe, it} from '@jest/globals'; import {describe, expect, it} from '@jest/globals';
import {loadFile} from './load_data';
import {readFileSync} from 'fs';
import {Blob} from 'buffer'; import {Blob} from 'buffer';
import {readFileSync} from 'fs';
import {loadFile} from './load_data';
describe('loadFile', () => { describe('loadFile', () => {
global.URL.createObjectURL = jest.fn(); global.URL.createObjectURL = jest.fn();

View File

@ -1,10 +1,10 @@
import {Buffer} from 'buffer';
import {strFromU8, unzip, Unzipped} from 'fflate';
import {IndiInfo, JsonGedcomData} from 'topola';
import {analyticsEvent} from '../util/analytics'; import {analyticsEvent} from '../util/analytics';
import {TopolaError} from '../util/error';
import {convertGedcom, getSoftware, TopolaData} from '../util/gedcom_util'; import {convertGedcom, getSoftware, TopolaData} from '../util/gedcom_util';
import {DataSource, DataSourceEnum, SourceSelection} from './data_source'; import {DataSource, DataSourceEnum, SourceSelection} from './data_source';
import {IndiInfo, JsonGedcomData} from 'topola';
import {TopolaError} from '../util/error';
import {strFromU8, unzip, Unzipped} from 'fflate';
import {Buffer} from 'buffer';
/** /**
* Returns a valid IndiInfo object, either with the given indi and generation * Returns a valid IndiInfo object, either with the given indi and generation

View File

@ -1,5 +1,5 @@
import {analyticsEvent} from '../util/analytics'; import {GedcomEntry} from 'parse-gedcom';
import {DataSource, DataSourceEnum, SourceSelection} from './data_source'; import {IntlShape} from 'react-intl';
import { import {
Date, Date,
DateOrRange, DateOrRange,
@ -9,19 +9,19 @@ import {
JsonImage, JsonImage,
JsonIndi, JsonIndi,
} from 'topola'; } from 'topola';
import {GedcomData, normalizeGedcom, TopolaData} from '../util/gedcom_util';
import {GedcomEntry} from 'parse-gedcom';
import {IntlShape} from 'react-intl';
import {TopolaError} from '../util/error';
import {isValidDateOrRange} from '../util/date_util';
import {StringUtils} from 'turbocommons-ts'; import {StringUtils} from 'turbocommons-ts';
import { import {
getAncestors as getAncestorsApi,
getRelatives as getRelativesApi,
clientLogin, clientLogin,
getAncestors as getAncestorsApi,
getLoggedInUserName, getLoggedInUserName,
getRelatives as getRelativesApi,
Person, Person,
} from 'wikitree-js'; } from 'wikitree-js';
import {analyticsEvent} from '../util/analytics';
import {isValidDateOrRange} from '../util/date_util';
import {TopolaError} from '../util/error';
import {GedcomData, normalizeGedcom, TopolaData} from '../util/gedcom_util';
import {DataSource, DataSourceEnum, SourceSelection} from './data_source';
const WIKITREE_APP_ID = 'topola-viewer'; const WIKITREE_APP_ID = 'topola-viewer';

View File

@ -1,4 +1,7 @@
import flatMap from 'array.prototype.flatmap'; import flatMap from 'array.prototype.flatmap';
import {GedcomEntry} from 'parse-gedcom';
import {FormattedMessage} from 'react-intl';
import {Header, Item} from 'semantic-ui-react';
import { import {
dereference, dereference,
GedcomData, GedcomData,
@ -7,11 +10,8 @@ import {
getImageFileEntry, getImageFileEntry,
} from '../util/gedcom_util'; } from '../util/gedcom_util';
import {Events} from './events'; import {Events} from './events';
import {GedcomEntry} from 'parse-gedcom';
import {MultilineText} from './multiline-text'; import {MultilineText} from './multiline-text';
import {TranslatedTag} from './translated-tag'; import {TranslatedTag} from './translated-tag';
import {Header, Item} from 'semantic-ui-react';
import {FormattedMessage} from 'react-intl';
import {WrappedImage} from './wrapped-image'; import {WrappedImage} from './wrapped-image';
const EXCLUDED_TAGS = [ const EXCLUDED_TAGS = [

View File

@ -1,4 +1,7 @@
import * as React from 'react';
import {useState} from 'react';
import {FormattedMessage, IntlShape, useIntl} from 'react-intl'; import {FormattedMessage, IntlShape, useIntl} from 'react-intl';
import Linkify from 'react-linkify';
import { import {
Icon, Icon,
Item, Item,
@ -8,13 +11,10 @@ import {
Popup, Popup,
Tab, Tab,
} from 'semantic-ui-react'; } from 'semantic-ui-react';
import {useState} from 'react';
import {WrappedImage} from './wrapped-image';
import * as React from 'react';
import {MultilineText} from './multiline-text';
import {DateOrRange} from 'topola'; import {DateOrRange} from 'topola';
import {formatDateOrRange} from '../util/date_util'; import {formatDateOrRange} from '../util/date_util';
import Linkify from 'react-linkify'; import {MultilineText} from './multiline-text';
import {WrappedImage} from './wrapped-image';
export interface Image { export interface Image {
url: string; url: string;

View File

@ -1,23 +1,23 @@
import queryString from 'query-string';
import flatMap from 'array.prototype.flatmap'; import flatMap from 'array.prototype.flatmap';
import {GedcomEntry} from 'parse-gedcom';
import queryString from 'query-string';
import {FormattedMessage, IntlShape, useIntl} from 'react-intl';
import {Link, useLocation} from 'react-router';
import {Header, Item} from 'semantic-ui-react';
import {DateOrRange, getDate} from 'topola';
import {calcAge} from '../util/age_util'; import {calcAge} from '../util/age_util';
import {compareDates, formatDateOrRange} from '../util/date_util'; import {compareDates, formatDateOrRange} from '../util/date_util';
import {DateOrRange, getDate} from 'topola';
import { import {
dereference, dereference,
GedcomData, GedcomData,
getData, getData,
getImageFileEntry,
getFileName, getFileName,
getImageFileEntry,
getName, getName,
pointerToId,
} from '../util/gedcom_util'; } from '../util/gedcom_util';
import {GedcomEntry} from 'parse-gedcom';
import {FormattedMessage, IntlShape, useIntl} from 'react-intl';
import {Link, useLocation} from 'react-router';
import {pointerToId} from '../util/gedcom_util';
import {TranslatedTag} from './translated-tag';
import {Header, Item} from 'semantic-ui-react';
import {EventExtras, Image, Source} from './event-extras'; import {EventExtras, Image, Source} from './event-extras';
import {TranslatedTag} from './translated-tag';
function PersonLink(props: {person: GedcomEntry}) { function PersonLink(props: {person: GedcomEntry}) {
const location = useLocation(); const location = useLocation();

View File

@ -1,3 +1,5 @@
import {SyntheticEvent, useState} from 'react';
import {FormattedMessage} from 'react-intl';
import { import {
Container, Container,
Icon, Icon,
@ -7,8 +9,6 @@ import {
Modal, Modal,
Placeholder, Placeholder,
} from 'semantic-ui-react'; } from 'semantic-ui-react';
import {SyntheticEvent, useState} from 'react';
import {FormattedMessage} from 'react-intl';
interface Props { interface Props {
url: string; url: string;

View File

@ -2,7 +2,6 @@ import f3 from 'family-chart';
import {useEffect, useRef} from 'react'; import {useEffect, useRef} from 'react';
import {IntlShape, useIntl} from 'react-intl'; import {IntlShape, useIntl} from 'react-intl';
import {IndiInfo, JsonFam, JsonGedcomData} from 'topola'; import {IndiInfo, JsonFam, JsonGedcomData} from 'topola';
import {formatDateOrRange} from './util/date_util'; import {formatDateOrRange} from './util/date_util';
import {usePrevious} from './util/previous-hook'; import {usePrevious} from './util/previous-hook';

View File

@ -1,19 +1,18 @@
import * as React from 'react'; import 'canvas-toBlob';
import {detect} from 'detect-browser';
import {createRoot} from 'react-dom/client'; import {createRoot} from 'react-dom/client';
import {IntlProvider} from 'react-intl';
import {HashRouter as Router} from 'react-router';
import 'semantic-ui-css/semantic.min.css';
import {App} from './app';
import './index.css';
import messages_cs from './translations/cs.json'; import messages_cs from './translations/cs.json';
import messages_de from './translations/de.json'; import messages_de from './translations/de.json';
import messages_fr from './translations/fr.json'; import messages_fr from './translations/fr.json';
import messages_it from './translations/it.json'; import messages_it from './translations/it.json';
import messages_pl from './translations/pl.json'; import messages_pl from './translations/pl.json';
import messages_ru from './translations/ru.json'; import messages_ru from './translations/ru.json';
import {App} from './app';
import {detect} from 'detect-browser';
import {HashRouter as Router, Route} from 'react-router';
import {IntlProvider} from 'react-intl';
import {MediaContextProvider, mediaStyles} from './util/media'; import {MediaContextProvider, mediaStyles} from './util/media';
import './index.css';
import 'semantic-ui-css/semantic.min.css';
import 'canvas-toBlob';
const messages: {[language: string]: {[message_id: string]: string}} = { const messages: {[language: string]: {[message_id: string]: string}} = {
cs: messages_cs, cs: messages_cs,

View File

@ -1,11 +1,11 @@
import queryString from 'query-string'; import queryString from 'query-string';
import {useEffect, useState} from 'react'; import {useEffect, useState} from 'react';
import logo from './topola.jpg';
import {Card, Grid, Image} from 'semantic-ui-react';
import {FormattedMessage} from 'react-intl'; import {FormattedMessage} from 'react-intl';
import {Link} from 'react-router'; import {Link} from 'react-router';
import {Media} from './util/media'; import {Card, Grid, Image} from 'semantic-ui-react';
import {getChangelog, updateSeenVersion} from './changelog'; import {getChangelog, updateSeenVersion} from './changelog';
import logo from './topola.jpg';
import {Media} from './util/media';
/** Link that loads a view. */ /** Link that loads a view. */
function ViewLink(props: {params: {[key: string]: string}; text: string}) { function ViewLink(props: {params: {[key: string]: string}; text: string}) {

View File

@ -1,8 +1,8 @@
import { import {
Menu,
Dropdown, Dropdown,
MenuItemProps,
DropdownItemProps, DropdownItemProps,
Menu,
MenuItemProps,
} from 'semantic-ui-react'; } from 'semantic-ui-react';
export enum MenuType { export enum MenuType {

View File

@ -1,12 +1,11 @@
import debounce from 'debounce'; import debounce from 'debounce';
import {analyticsEvent} from '../util/analytics';
import {buildSearchIndex, SearchIndex, SearchResult} from './search_index';
import {formatDateOrRange} from '../util/date_util';
import {IndiInfo, JsonGedcomData} from 'topola';
import {JsonIndi} from 'topola';
import {Search, SearchResultProps} from 'semantic-ui-react';
import {useEffect, useRef, useState} from 'react'; import {useEffect, useRef, useState} from 'react';
import {useIntl} from 'react-intl'; import {useIntl} from 'react-intl';
import {Search, SearchResultProps} from 'semantic-ui-react';
import {IndiInfo, JsonGedcomData, JsonIndi} from 'topola';
import {analyticsEvent} from '../util/analytics';
import {formatDateOrRange} from '../util/date_util';
import {buildSearchIndex, SearchIndex, SearchResult} from './search_index';
function getNameLine(result: SearchResult) { function getNameLine(result: SearchResult) {
const name = [result.indi.firstName, result.indi.lastName].join(' ').trim(); const name = [result.indi.firstName, result.indi.lastName].join(' ').trim();

View File

@ -1,13 +1,12 @@
import lunr, {PipelineFunction} from 'lunr';
import naturalSort from 'javascript-natural-sort'; import naturalSort from 'javascript-natural-sort';
import {idToFamMap, idToIndiMap} from '../util/gedcom_util'; import lunr, {PipelineFunction} from 'lunr';
import {JsonFam, JsonGedcomData, JsonIndi} from 'topola';
import lunrStemmer from 'lunr-languages/lunr.stemmer.support';
import lunrDe from 'lunr-languages/lunr.de'; import lunrDe from 'lunr-languages/lunr.de';
import lunrFr from 'lunr-languages/lunr.fr'; import lunrFr from 'lunr-languages/lunr.fr';
import lunrIt from 'lunr-languages/lunr.it'; import lunrIt from 'lunr-languages/lunr.it';
import lunrRu from 'lunr-languages/lunr.ru'; import lunrRu from 'lunr-languages/lunr.ru';
import lunrStemmer from 'lunr-languages/lunr.stemmer.support';
import {JsonFam, JsonGedcomData, JsonIndi} from 'topola';
import {idToFamMap, idToIndiMap} from '../util/gedcom_util';
lunrStemmer(lunr); lunrStemmer(lunr);
lunrDe(lunr); lunrDe(lunr);
@ -151,7 +150,10 @@ class LunrSearchIndex implements SearchIndex {
return results return results
.sort(compare) .sort(compare)
.slice(0, MAX_RESULTS) .slice(0, MAX_RESULTS)
.map((result) => ({id: result.ref, indi: this.indiMap.get(result.ref)!})); .map((result) => ({
id: result.ref,
indi: this.indiMap.get(result.ref)!,
}));
} }
} }

View File

@ -1,14 +1,13 @@
import queryString from 'query-string'; import queryString from 'query-string';
import {Dropdown, Icon, Menu} from 'semantic-ui-react';
import {FormattedMessage} from 'react-intl'; import {FormattedMessage} from 'react-intl';
import {Link, useLocation, useNavigate} from 'react-router';
import {Dropdown, Icon, Menu} from 'semantic-ui-react';
import {IndiInfo, JsonGedcomData} from 'topola'; import {IndiInfo, JsonGedcomData} from 'topola';
import {Link} from 'react-router';
import {Media} from '../util/media'; import {Media} from '../util/media';
import {MenuType} from './menu_item'; import {MenuType} from './menu_item';
import {SearchBar} from './search'; import {SearchBar} from './search';
import {UploadMenu} from './upload_menu'; import {UploadMenu} from './upload_menu';
import {UrlMenu} from './url_menu'; import {UrlMenu} from './url_menu';
import {useNavigate, useLocation} from 'react-router';
import {WikiTreeLoginMenu, WikiTreeMenu} from './wikitree_menu'; import {WikiTreeLoginMenu, WikiTreeMenu} from './wikitree_menu';
enum ScreenSize { enum ScreenSize {

View File

@ -1,12 +1,12 @@
import queryString from 'query-string';
import md5 from 'md5'; import md5 from 'md5';
import {analyticsEvent} from '../util/analytics'; import queryString from 'query-string';
import {Dropdown, Icon, Menu} from 'semantic-ui-react';
import {FormattedMessage} from 'react-intl';
import {MenuType} from './menu_item';
import {SyntheticEvent} from 'react'; import {SyntheticEvent} from 'react';
import {useNavigate, useLocation} from 'react-router'; import {FormattedMessage} from 'react-intl';
import {useLocation, useNavigate} from 'react-router';
import {Dropdown, Icon, Menu} from 'semantic-ui-react';
import {loadFile} from '../datasource/load_data'; import {loadFile} from '../datasource/load_data';
import {analyticsEvent} from '../util/analytics';
import {MenuType} from './menu_item';
function isImageFileName(fileName: string) { function isImageFileName(fileName: string) {
const lower = fileName.toLowerCase(); const lower = fileName.toLowerCase();

View File

@ -1,10 +1,10 @@
import queryString from 'query-string'; import queryString from 'query-string';
import {analyticsEvent} from '../util/analytics';
import {Button, Form, Header, Icon, Input, Modal} from 'semantic-ui-react';
import {FormattedMessage} from 'react-intl';
import {MenuItem, MenuType} from './menu_item';
import {useEffect, useRef, useState} from 'react'; import {useEffect, useRef, useState} from 'react';
import {FormattedMessage} from 'react-intl';
import {useNavigate} from 'react-router'; import {useNavigate} from 'react-router';
import {Button, Form, Header, Icon, Input, Modal} from 'semantic-ui-react';
import {analyticsEvent} from '../util/analytics';
import {MenuItem, MenuType} from './menu_item';
interface Props { interface Props {
menuType: MenuType; menuType: MenuType;

View File

@ -1,12 +1,12 @@
import queryString from 'query-string'; import queryString from 'query-string';
import wikitreeLogo from './wikitree.png';
import {analyticsEvent} from '../util/analytics';
import {Button, Form, Header, Input, Modal} from 'semantic-ui-react';
import {FormattedMessage, useIntl} from 'react-intl';
import {MenuItem, MenuType} from './menu_item';
import {useEffect, useRef, useState} from 'react'; import {useEffect, useRef, useState} from 'react';
import {useNavigate, useLocation} from 'react-router'; import {FormattedMessage, useIntl} from 'react-intl';
import {useLocation, useNavigate} from 'react-router';
import {Button, Form, Header, Input, Modal} from 'semantic-ui-react';
import {getLoggedInUserName, navigateToLoginPage} from 'wikitree-js'; import {getLoggedInUserName, navigateToLoginPage} from 'wikitree-js';
import {analyticsEvent} from '../util/analytics';
import {MenuItem, MenuType} from './menu_item';
import wikitreeLogo from './wikitree.png';
interface Props { interface Props {
menuType: MenuType; menuType: MenuType;

View File

@ -1,4 +1,4 @@
import {expect, describe, it} from '@jest/globals'; import {describe, expect, it} from '@jest/globals';
import {createIntl} from 'react-intl'; import {createIntl} from 'react-intl';
import {calcAge} from './age_util'; import {calcAge} from './age_util';

View File

@ -1,6 +1,6 @@
import {Date as TopolaDate} from 'topola/dist/data';
import {IntlShape} from 'react-intl'; import {IntlShape} from 'react-intl';
import {DateOrRange, getDate} from 'topola'; import {DateOrRange, getDate} from 'topola';
import {Date as TopolaDate} from 'topola/dist/data';
import { import {
areDateRangesOverlapped, areDateRangesOverlapped,
compareDates, compareDates,

View File

@ -1,5 +1,5 @@
import {Date as TopolaDate, DateOrRange, DateRange, getDate} from 'topola';
import {IntlShape} from 'react-intl'; import {IntlShape} from 'react-intl';
import {DateOrRange, DateRange, getDate, Date as TopolaDate} from 'topola';
const DATE_QUALIFIERS = new Map([ const DATE_QUALIFIERS = new Map([
['abt', 'about'], ['abt', 'about'],

View File

@ -1,4 +1,4 @@
import {expect, describe, it} from '@jest/globals'; import {describe, expect, it} from '@jest/globals';
import {getName, normalizeGedcom} from './gedcom_util'; import {getName, normalizeGedcom} from './gedcom_util';
describe('normalizeGedcom()', () => { describe('normalizeGedcom()', () => {

View File

@ -1,5 +1,4 @@
import {GedcomEntry, parse as parseGedcom} from 'parse-gedcom'; import {GedcomEntry, parse as parseGedcom} from 'parse-gedcom';
import {TopolaError} from './error';
import { import {
gedcomEntriesToJson, gedcomEntriesToJson,
JsonFam, JsonFam,
@ -8,6 +7,7 @@ import {
JsonIndi, JsonIndi,
} from 'topola'; } from 'topola';
import {compareDates} from './date_util'; import {compareDates} from './date_util';
import {TopolaError} from './error';
export interface GedcomData { export interface GedcomData {
/** The HEAD entry. */ /** The HEAD entry. */