mirror of
https://github.com/PeWu/topola-viewer.git
synced 2025-12-23 18:50:04 +00:00
update prettier config and run on all files
This commit is contained in:
parent
187557bd2f
commit
84a0149e0e
@ -1,7 +0,0 @@
|
||||
{
|
||||
"singleQuote": true,
|
||||
"bracketSpacing": false,
|
||||
"arrowParens": "always",
|
||||
"trailingComma": "all",
|
||||
"endOfLine": "crlf"
|
||||
}
|
||||
24
package-lock.json
generated
24
package-lock.json
generated
@ -75,6 +75,7 @@
|
||||
"jest": "^29.7.0",
|
||||
"jsdom": "^26.0.0",
|
||||
"prettier": "^3.4.2",
|
||||
"prettier-plugin-organize-imports": "^4.1.0",
|
||||
"run-script-os": "^1.1.6",
|
||||
"start-server-and-test": "^2.0.9",
|
||||
"ts-jest": "^29.2.5",
|
||||
@ -10065,6 +10066,22 @@
|
||||
"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": {
|
||||
"version": "5.6.0",
|
||||
"resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz",
|
||||
@ -20051,6 +20068,13 @@
|
||||
"integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==",
|
||||
"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": {
|
||||
"version": "5.6.0",
|
||||
"resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz",
|
||||
|
||||
@ -70,6 +70,7 @@
|
||||
"jest": "^29.7.0",
|
||||
"jsdom": "^26.0.0",
|
||||
"prettier": "^3.4.2",
|
||||
"prettier-plugin-organize-imports": "^4.1.0",
|
||||
"run-script-os": "^1.1.6",
|
||||
"start-server-and-test": "^2.0.9",
|
||||
"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:windows": "set \"GENERATE_SOURCEMAP=false\" && tsc && vite build",
|
||||
"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",
|
||||
"deploy": "gh-pages -d dist",
|
||||
"predeploy-wikitree": "npm run build",
|
||||
|
||||
8
prettier.config.mjs
Normal file
8
prettier.config.mjs
Normal file
@ -0,0 +1,8 @@
|
||||
const config = {
|
||||
bracketSpacing: false,
|
||||
endOfLine: 'lf',
|
||||
singleQuote: true,
|
||||
plugins: ['prettier-plugin-organize-imports'],
|
||||
};
|
||||
|
||||
export default config;
|
||||
34
src/app.tsx
34
src/app.tsx
@ -1,22 +1,11 @@
|
||||
import * as H from 'history';
|
||||
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 {useNavigate, useLocation} from 'react-router';
|
||||
import {idToIndiMap} from './util/gedcom_util';
|
||||
import {FormattedMessage, useIntl} from 'react-intl';
|
||||
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 {
|
||||
Chart,
|
||||
ChartType,
|
||||
@ -34,12 +23,14 @@ import {
|
||||
Ids,
|
||||
Sex,
|
||||
} from './config';
|
||||
import {DataSourceEnum, SourceSelection} from './datasource/data_source';
|
||||
import {EmbeddedDataSource, EmbeddedSourceSpec} from './datasource/embedded';
|
||||
import {
|
||||
GedcomUrlDataSource,
|
||||
getSelection,
|
||||
UploadedDataSource,
|
||||
UploadSourceSpec,
|
||||
UrlSourceSpec,
|
||||
GedcomUrlDataSource,
|
||||
UploadedDataSource,
|
||||
} from './datasource/load_data';
|
||||
import {
|
||||
loadWikiTree,
|
||||
@ -47,7 +38,14 @@ import {
|
||||
WikiTreeDataSource,
|
||||
WikiTreeSourceSpec,
|
||||
} from './datasource/wikitree';
|
||||
import {Details} from './details/details';
|
||||
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.
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
import {useEffect, useState} from 'react';
|
||||
import {FormattedMessage} from 'react-intl';
|
||||
import rehypeStringify from 'rehype-stringify';
|
||||
import remarkParse from 'remark-parse';
|
||||
import remarkRehype from 'remark-rehype';
|
||||
import {Button, Header, Modal} from 'semantic-ui-react';
|
||||
import {unified} from 'unified';
|
||||
import {useEffect, useState} from 'react';
|
||||
import {FormattedMessage} from 'react-intl';
|
||||
|
||||
const LAST_SEEN_VERSION_KEY = 'last_seen_version';
|
||||
|
||||
|
||||
@ -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 {Media} from './util/media';
|
||||
import {saveAs} from 'file-saver';
|
||||
import {interpolateNumber} from 'd3-interpolate';
|
||||
import {select, Selection} from 'd3-selection';
|
||||
import {useEffect, useRef} from 'react';
|
||||
import 'd3-transition';
|
||||
import {
|
||||
D3ZoomEvent,
|
||||
@ -14,18 +9,23 @@ import {
|
||||
ZoomedElementBaseType,
|
||||
zoomTransform,
|
||||
} from 'd3-zoom';
|
||||
import {saveAs} from 'file-saver';
|
||||
import {useEffect, useRef} from 'react';
|
||||
import {IntlShape, useIntl} from 'react-intl';
|
||||
import {
|
||||
JsonGedcomData,
|
||||
ChartHandle,
|
||||
IndiInfo,
|
||||
CircleRenderer,
|
||||
createChart,
|
||||
DetailedRenderer,
|
||||
HourglassChart,
|
||||
RelativesChart,
|
||||
FancyChart,
|
||||
CircleRenderer,
|
||||
HourglassChart,
|
||||
IndiInfo,
|
||||
JsonGedcomData,
|
||||
RelativesChart,
|
||||
ChartColors as TopolaChartColors,
|
||||
} from 'topola';
|
||||
import {ChartColors, Ids, Sex} from './config';
|
||||
import {Media} from './util/media';
|
||||
import {usePrevious} from './util/previous-hook';
|
||||
|
||||
/** How much to zoom when using the +/- buttons. */
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import {Item, Checkbox, Form, Header} from 'semantic-ui-react';
|
||||
import {FormattedMessage} from 'react-intl';
|
||||
import {ParsedQuery} from 'query-string';
|
||||
import {FormattedMessage} from 'react-intl';
|
||||
import {Checkbox, Form, Header, Item} from 'semantic-ui-react';
|
||||
|
||||
export enum ChartColors {
|
||||
NO_COLOR,
|
||||
@ -99,7 +99,10 @@ export function ConfigPanel(props: {
|
||||
value="none"
|
||||
checked={props.config.color === ChartColors.NO_COLOR}
|
||||
onClick={() =>
|
||||
props.onChange({...props.config, color: ChartColors.NO_COLOR})
|
||||
props.onChange({
|
||||
...props.config,
|
||||
color: ChartColors.NO_COLOR,
|
||||
})
|
||||
}
|
||||
/>
|
||||
</Form.Field>
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import {analyticsEvent} from '../util/analytics';
|
||||
import {DataSource, DataSourceEnum, SourceSelection} from './data_source';
|
||||
import {getSoftware, TopolaData} from '../util/gedcom_util';
|
||||
import {DataSource, DataSourceEnum, SourceSelection} from './data_source';
|
||||
import {loadGedcom} from './load_data';
|
||||
|
||||
/**
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
import {expect, describe, it} from '@jest/globals';
|
||||
import {loadFile} from './load_data';
|
||||
import {readFileSync} from 'fs';
|
||||
import {describe, expect, it} from '@jest/globals';
|
||||
import {Blob} from 'buffer';
|
||||
import {readFileSync} from 'fs';
|
||||
import {loadFile} from './load_data';
|
||||
|
||||
describe('loadFile', () => {
|
||||
global.URL.createObjectURL = jest.fn();
|
||||
|
||||
@ -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 {TopolaError} from '../util/error';
|
||||
import {convertGedcom, getSoftware, TopolaData} from '../util/gedcom_util';
|
||||
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
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import {analyticsEvent} from '../util/analytics';
|
||||
import {DataSource, DataSourceEnum, SourceSelection} from './data_source';
|
||||
import {GedcomEntry} from 'parse-gedcom';
|
||||
import {IntlShape} from 'react-intl';
|
||||
import {
|
||||
Date,
|
||||
DateOrRange,
|
||||
@ -9,19 +9,19 @@ import {
|
||||
JsonImage,
|
||||
JsonIndi,
|
||||
} 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 {
|
||||
getAncestors as getAncestorsApi,
|
||||
getRelatives as getRelativesApi,
|
||||
clientLogin,
|
||||
getAncestors as getAncestorsApi,
|
||||
getLoggedInUserName,
|
||||
getRelatives as getRelativesApi,
|
||||
Person,
|
||||
} 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';
|
||||
|
||||
|
||||
@ -1,4 +1,7 @@
|
||||
import flatMap from 'array.prototype.flatmap';
|
||||
import {GedcomEntry} from 'parse-gedcom';
|
||||
import {FormattedMessage} from 'react-intl';
|
||||
import {Header, Item} from 'semantic-ui-react';
|
||||
import {
|
||||
dereference,
|
||||
GedcomData,
|
||||
@ -7,11 +10,8 @@ import {
|
||||
getImageFileEntry,
|
||||
} from '../util/gedcom_util';
|
||||
import {Events} from './events';
|
||||
import {GedcomEntry} from 'parse-gedcom';
|
||||
import {MultilineText} from './multiline-text';
|
||||
import {TranslatedTag} from './translated-tag';
|
||||
import {Header, Item} from 'semantic-ui-react';
|
||||
import {FormattedMessage} from 'react-intl';
|
||||
import {WrappedImage} from './wrapped-image';
|
||||
|
||||
const EXCLUDED_TAGS = [
|
||||
|
||||
@ -1,4 +1,7 @@
|
||||
import * as React from 'react';
|
||||
import {useState} from 'react';
|
||||
import {FormattedMessage, IntlShape, useIntl} from 'react-intl';
|
||||
import Linkify from 'react-linkify';
|
||||
import {
|
||||
Icon,
|
||||
Item,
|
||||
@ -8,13 +11,10 @@ import {
|
||||
Popup,
|
||||
Tab,
|
||||
} 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 {formatDateOrRange} from '../util/date_util';
|
||||
import Linkify from 'react-linkify';
|
||||
import {MultilineText} from './multiline-text';
|
||||
import {WrappedImage} from './wrapped-image';
|
||||
|
||||
export interface Image {
|
||||
url: string;
|
||||
|
||||
@ -1,23 +1,23 @@
|
||||
import queryString from 'query-string';
|
||||
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 {compareDates, formatDateOrRange} from '../util/date_util';
|
||||
import {DateOrRange, getDate} from 'topola';
|
||||
import {
|
||||
dereference,
|
||||
GedcomData,
|
||||
getData,
|
||||
getImageFileEntry,
|
||||
getFileName,
|
||||
getImageFileEntry,
|
||||
getName,
|
||||
pointerToId,
|
||||
} 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 {TranslatedTag} from './translated-tag';
|
||||
|
||||
function PersonLink(props: {person: GedcomEntry}) {
|
||||
const location = useLocation();
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
import {SyntheticEvent, useState} from 'react';
|
||||
import {FormattedMessage} from 'react-intl';
|
||||
import {
|
||||
Container,
|
||||
Icon,
|
||||
@ -7,8 +9,6 @@ import {
|
||||
Modal,
|
||||
Placeholder,
|
||||
} from 'semantic-ui-react';
|
||||
import {SyntheticEvent, useState} from 'react';
|
||||
import {FormattedMessage} from 'react-intl';
|
||||
|
||||
interface Props {
|
||||
url: string;
|
||||
|
||||
@ -2,7 +2,6 @@ import f3 from 'family-chart';
|
||||
import {useEffect, useRef} from 'react';
|
||||
import {IntlShape, useIntl} from 'react-intl';
|
||||
import {IndiInfo, JsonFam, JsonGedcomData} from 'topola';
|
||||
|
||||
import {formatDateOrRange} from './util/date_util';
|
||||
import {usePrevious} from './util/previous-hook';
|
||||
|
||||
|
||||
@ -1,19 +1,18 @@
|
||||
import * as React from 'react';
|
||||
import 'canvas-toBlob';
|
||||
import {detect} from 'detect-browser';
|
||||
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_de from './translations/de.json';
|
||||
import messages_fr from './translations/fr.json';
|
||||
import messages_it from './translations/it.json';
|
||||
import messages_pl from './translations/pl.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 './index.css';
|
||||
import 'semantic-ui-css/semantic.min.css';
|
||||
import 'canvas-toBlob';
|
||||
|
||||
const messages: {[language: string]: {[message_id: string]: string}} = {
|
||||
cs: messages_cs,
|
||||
|
||||
@ -1,11 +1,11 @@
|
||||
import queryString from 'query-string';
|
||||
import {useEffect, useState} from 'react';
|
||||
import logo from './topola.jpg';
|
||||
import {Card, Grid, Image} from 'semantic-ui-react';
|
||||
import {FormattedMessage} from 'react-intl';
|
||||
import {Link} from 'react-router';
|
||||
import {Media} from './util/media';
|
||||
import {Card, Grid, Image} from 'semantic-ui-react';
|
||||
import {getChangelog, updateSeenVersion} from './changelog';
|
||||
import logo from './topola.jpg';
|
||||
import {Media} from './util/media';
|
||||
|
||||
/** Link that loads a view. */
|
||||
function ViewLink(props: {params: {[key: string]: string}; text: string}) {
|
||||
|
||||
@ -1,8 +1,8 @@
|
||||
import {
|
||||
Menu,
|
||||
Dropdown,
|
||||
MenuItemProps,
|
||||
DropdownItemProps,
|
||||
Menu,
|
||||
MenuItemProps,
|
||||
} from 'semantic-ui-react';
|
||||
|
||||
export enum MenuType {
|
||||
|
||||
@ -1,12 +1,11 @@
|
||||
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 {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) {
|
||||
const name = [result.indi.firstName, result.indi.lastName].join(' ').trim();
|
||||
|
||||
@ -1,13 +1,12 @@
|
||||
import lunr, {PipelineFunction} from 'lunr';
|
||||
import naturalSort from 'javascript-natural-sort';
|
||||
import {idToFamMap, idToIndiMap} from '../util/gedcom_util';
|
||||
import {JsonFam, JsonGedcomData, JsonIndi} from 'topola';
|
||||
|
||||
import lunrStemmer from 'lunr-languages/lunr.stemmer.support';
|
||||
import lunr, {PipelineFunction} from 'lunr';
|
||||
import lunrDe from 'lunr-languages/lunr.de';
|
||||
import lunrFr from 'lunr-languages/lunr.fr';
|
||||
import lunrIt from 'lunr-languages/lunr.it';
|
||||
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);
|
||||
lunrDe(lunr);
|
||||
@ -151,7 +150,10 @@ class LunrSearchIndex implements SearchIndex {
|
||||
return results
|
||||
.sort(compare)
|
||||
.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)!,
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -1,14 +1,13 @@
|
||||
import queryString from 'query-string';
|
||||
import {Dropdown, Icon, Menu} from 'semantic-ui-react';
|
||||
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 {Link} from 'react-router';
|
||||
import {Media} from '../util/media';
|
||||
import {MenuType} from './menu_item';
|
||||
import {SearchBar} from './search';
|
||||
import {UploadMenu} from './upload_menu';
|
||||
import {UrlMenu} from './url_menu';
|
||||
import {useNavigate, useLocation} from 'react-router';
|
||||
import {WikiTreeLoginMenu, WikiTreeMenu} from './wikitree_menu';
|
||||
|
||||
enum ScreenSize {
|
||||
|
||||
@ -1,12 +1,12 @@
|
||||
import queryString from 'query-string';
|
||||
import md5 from 'md5';
|
||||
import {analyticsEvent} from '../util/analytics';
|
||||
import {Dropdown, Icon, Menu} from 'semantic-ui-react';
|
||||
import {FormattedMessage} from 'react-intl';
|
||||
import {MenuType} from './menu_item';
|
||||
import queryString from 'query-string';
|
||||
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 {analyticsEvent} from '../util/analytics';
|
||||
import {MenuType} from './menu_item';
|
||||
|
||||
function isImageFileName(fileName: string) {
|
||||
const lower = fileName.toLowerCase();
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
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 {FormattedMessage} from 'react-intl';
|
||||
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 {
|
||||
menuType: MenuType;
|
||||
|
||||
@ -1,12 +1,12 @@
|
||||
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 {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 {analyticsEvent} from '../util/analytics';
|
||||
import {MenuItem, MenuType} from './menu_item';
|
||||
import wikitreeLogo from './wikitree.png';
|
||||
|
||||
interface Props {
|
||||
menuType: MenuType;
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import {expect, describe, it} from '@jest/globals';
|
||||
import {describe, expect, it} from '@jest/globals';
|
||||
import {createIntl} from 'react-intl';
|
||||
import {calcAge} from './age_util';
|
||||
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
import {Date as TopolaDate} from 'topola/dist/data';
|
||||
import {IntlShape} from 'react-intl';
|
||||
import {DateOrRange, getDate} from 'topola';
|
||||
import {Date as TopolaDate} from 'topola/dist/data';
|
||||
import {
|
||||
areDateRangesOverlapped,
|
||||
compareDates,
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
import {Date as TopolaDate, DateOrRange, DateRange, getDate} from 'topola';
|
||||
import {IntlShape} from 'react-intl';
|
||||
import {DateOrRange, DateRange, getDate, Date as TopolaDate} from 'topola';
|
||||
|
||||
const DATE_QUALIFIERS = new Map([
|
||||
['abt', 'about'],
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
import {expect, describe, it} from '@jest/globals';
|
||||
import {describe, expect, it} from '@jest/globals';
|
||||
import {getName, normalizeGedcom} from './gedcom_util';
|
||||
|
||||
describe('normalizeGedcom()', () => {
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
import {GedcomEntry, parse as parseGedcom} from 'parse-gedcom';
|
||||
import {TopolaError} from './error';
|
||||
import {
|
||||
gedcomEntriesToJson,
|
||||
JsonFam,
|
||||
@ -8,6 +7,7 @@ import {
|
||||
JsonIndi,
|
||||
} from 'topola';
|
||||
import {compareDates} from './date_util';
|
||||
import {TopolaError} from './error';
|
||||
|
||||
export interface GedcomData {
|
||||
/** The HEAD entry. */
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user