refactor: move shared utilities to lib/shared/ sub-packages
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -3,7 +3,7 @@ import { paraglideMiddleware } from '$lib/paraglide/server';
|
|||||||
import { sequence } from '@sveltejs/kit/hooks';
|
import { sequence } from '@sveltejs/kit/hooks';
|
||||||
import { env } from 'process';
|
import { env } from 'process';
|
||||||
import { cookieName, cookieMaxAge } from '$lib/paraglide/runtime';
|
import { cookieName, cookieMaxAge } from '$lib/paraglide/runtime';
|
||||||
import { detectLocale } from '$lib/server/locale';
|
import { detectLocale } from '$lib/shared/server/locale';
|
||||||
|
|
||||||
const PUBLIC_PATHS = ['/login', '/logout', '/forgot-password', '/reset-password', '/register'];
|
const PUBLIC_PATHS = ['/login', '/logout', '/forgot-password', '/reset-password', '/register'];
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import * as m from '$lib/paraglide/messages.js';
|
import * as m from '$lib/paraglide/messages.js';
|
||||||
import { relativeTime } from '$lib/utils/time';
|
import { relativeTime } from '$lib/shared/utils/time';
|
||||||
import type { NotificationItem } from '$lib/notification/notifications.svelte';
|
import type { NotificationItem } from '$lib/notification/notifications.svelte';
|
||||||
import { buildCommentHref } from '$lib/utils/commentDeepLink';
|
import { buildCommentHref } from '$lib/shared/discussion/commentDeepLink';
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
unread: NotificationItem[];
|
unread: NotificationItem[];
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import * as m from '$lib/paraglide/messages.js';
|
import * as m from '$lib/paraglide/messages.js';
|
||||||
import { relativeTime } from '$lib/utils/time';
|
import { relativeTime } from '$lib/shared/utils/time';
|
||||||
import { buildCommentHref } from '$lib/utils/commentDeepLink';
|
import { buildCommentHref } from '$lib/shared/discussion/commentDeepLink';
|
||||||
import type { components } from '$lib/generated/api';
|
import type { components } from '$lib/generated/api';
|
||||||
|
|
||||||
type ActivityFeedItemDTO = components['schemas']['ActivityFeedItemDTO'];
|
type ActivityFeedItemDTO = components['schemas']['ActivityFeedItemDTO'];
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import * as m from '$lib/paraglide/messages.js';
|
import * as m from '$lib/paraglide/messages.js';
|
||||||
import { bucketByDay, type DayBucket } from '$lib/utils/date-buckets';
|
import { bucketByDay, type DayBucket } from '$lib/shared/utils/date-buckets';
|
||||||
import type { components } from '$lib/generated/api';
|
import type { components } from '$lib/generated/api';
|
||||||
import ChronikRow from './ChronikRow.svelte';
|
import ChronikRow from './ChronikRow.svelte';
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { m } from '$lib/paraglide/messages.js';
|
import { m } from '$lib/paraglide/messages.js';
|
||||||
import type { FlatMessage } from '$lib/types';
|
import type { FlatMessage } from '$lib/types';
|
||||||
import { extractQuote } from '$lib/utils/comment';
|
import { extractQuote } from '$lib/shared/discussion/comment';
|
||||||
import { getInitials } from '$lib/utils/personFormat';
|
import { getInitials } from '$lib/person/personFormat';
|
||||||
import { relativeTime } from '$lib/utils/time';
|
import { relativeTime } from '$lib/shared/utils/time';
|
||||||
import { renderBody } from '$lib/utils/mention';
|
import { renderBody } from '$lib/shared/discussion/mention';
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
message: FlatMessage;
|
message: FlatMessage;
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { onMount, untrack } from 'svelte';
|
import { onMount, untrack } from 'svelte';
|
||||||
import { m } from '$lib/paraglide/messages.js';
|
import { m } from '$lib/paraglide/messages.js';
|
||||||
import type { Comment, FlatMessage } from '$lib/types';
|
import type { Comment, FlatMessage, MentionDTO } from '$lib/types';
|
||||||
import MentionEditor from '$lib/components/MentionEditor.svelte';
|
import MentionEditor from '$lib/components/MentionEditor.svelte';
|
||||||
import CommentMessage from '$lib/components/CommentMessage.svelte';
|
import CommentMessage from '$lib/components/CommentMessage.svelte';
|
||||||
import { extractContent } from '$lib/utils/mention';
|
import { extractContent } from '$lib/shared/discussion/mention';
|
||||||
type Props = {
|
type Props = {
|
||||||
documentId: string;
|
documentId: string;
|
||||||
annotationId?: string | null;
|
annotationId?: string | null;
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { getConfirmService } from '$lib/services/confirm.svelte.js';
|
import { getConfirmService } from '$lib/shared/services/confirm.svelte.js';
|
||||||
import { m } from '$lib/paraglide/messages.js';
|
import { m } from '$lib/paraglide/messages.js';
|
||||||
|
|
||||||
// Context must already be set by the parent layout via provideConfirmService().
|
// Context must already be set by the parent layout via provideConfirmService().
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import { describe, it, expect, afterEach, vi } from 'vitest';
|
|||||||
import { cleanup, render } from 'vitest-browser-svelte';
|
import { cleanup, render } from 'vitest-browser-svelte';
|
||||||
import { page } from 'vitest/browser';
|
import { page } from 'vitest/browser';
|
||||||
import ConfirmDialog from './ConfirmDialog.svelte';
|
import ConfirmDialog from './ConfirmDialog.svelte';
|
||||||
import { createConfirmService, CONFIRM_KEY } from '$lib/services/confirm.svelte.js';
|
import { createConfirmService, CONFIRM_KEY } from '$lib/shared/services/confirm.svelte.js';
|
||||||
|
|
||||||
afterEach(cleanup);
|
afterEach(cleanup);
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { isoToGerman, handleGermanDateInput, germanToIso } from '$lib/utils/date';
|
import { isoToGerman, handleGermanDateInput, germanToIso } from '$lib/shared/utils/date';
|
||||||
import { m } from '$lib/paraglide/messages.js';
|
import { m } from '$lib/paraglide/messages.js';
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import type { components } from '$lib/generated/api';
|
import type { components } from '$lib/generated/api';
|
||||||
import { formatLifeDateRange } from '$lib/utils/personLifeDates';
|
import { formatLifeDateRange } from '$lib/person/personLifeDates';
|
||||||
import { m } from '$lib/paraglide/messages.js';
|
import { m } from '$lib/paraglide/messages.js';
|
||||||
|
|
||||||
type Person = components['schemas']['Person'];
|
type Person = components['schemas']['Person'];
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { onDestroy, tick } from 'svelte';
|
import { onDestroy, tick } from 'svelte';
|
||||||
import { detectMention } from '$lib/utils/mention';
|
import { detectMention } from '$lib/shared/discussion/mention';
|
||||||
import type { MentionDTO } from '$lib/types';
|
import type { MentionDTO } from '$lib/types';
|
||||||
import { m } from '$lib/paraglide/messages.js';
|
import { m } from '$lib/paraglide/messages.js';
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { tick } from 'svelte';
|
import { tick } from 'svelte';
|
||||||
import { m } from '$lib/paraglide/messages.js';
|
import { m } from '$lib/paraglide/messages.js';
|
||||||
import { clickOutside } from '$lib/actions/clickOutside';
|
import { clickOutside } from '$lib/shared/actions/clickOutside';
|
||||||
|
|
||||||
type Person = { id: string; firstName?: string | null; lastName: string; displayName: string };
|
type Person = { id: string; firstName?: string | null; lastName: string; displayName: string };
|
||||||
|
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import { Mention } from '@tiptap/extension-mention';
|
|||||||
import { m } from '$lib/paraglide/messages.js';
|
import { m } from '$lib/paraglide/messages.js';
|
||||||
import type { components } from '$lib/generated/api';
|
import type { components } from '$lib/generated/api';
|
||||||
import type { PersonMention } from '$lib/types';
|
import type { PersonMention } from '$lib/types';
|
||||||
import { deserialize, serialize } from '$lib/utils/mentionSerializer';
|
import { deserialize, serialize } from '$lib/shared/discussion/mentionSerializer';
|
||||||
import MentionDropdown from './MentionDropdown.svelte';
|
import MentionDropdown from './MentionDropdown.svelte';
|
||||||
|
|
||||||
type Person = components['schemas']['Person'];
|
type Person = components['schemas']['Person'];
|
||||||
|
|||||||
@@ -3,8 +3,8 @@ import { SvelteMap } from 'svelte/reactivity';
|
|||||||
import { goto } from '$app/navigation';
|
import { goto } from '$app/navigation';
|
||||||
import { onDestroy, onMount, untrack } from 'svelte';
|
import { onDestroy, onMount, untrack } from 'svelte';
|
||||||
import { m } from '$lib/paraglide/messages.js';
|
import { m } from '$lib/paraglide/messages.js';
|
||||||
import { getConfirmService } from '$lib/services/confirm.svelte.js';
|
import { getConfirmService } from '$lib/shared/services/confirm.svelte.js';
|
||||||
import type { ConfirmService } from '$lib/services/confirm.svelte.js';
|
import type { ConfirmService } from '$lib/shared/services/confirm.svelte.js';
|
||||||
import { bulkSelectionStore } from '$lib/document/bulkSelection.svelte';
|
import { bulkSelectionStore } from '$lib/document/bulkSelection.svelte';
|
||||||
import BulkDropZone from './BulkDropZone.svelte';
|
import BulkDropZone from './BulkDropZone.svelte';
|
||||||
import FileSwitcherStrip from './FileSwitcherStrip.svelte';
|
import FileSwitcherStrip from './FileSwitcherStrip.svelte';
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ import { onMount, onDestroy, untrack } from 'svelte';
|
|||||||
import type { Snippet } from 'svelte';
|
import type { Snippet } from 'svelte';
|
||||||
import { createFileLoader } from '$lib/document/viewer/useFileLoader.svelte';
|
import { createFileLoader } from '$lib/document/viewer/useFileLoader.svelte';
|
||||||
import { m } from '$lib/paraglide/messages.js';
|
import { m } from '$lib/paraglide/messages.js';
|
||||||
import { countRequiredFilled } from '$lib/utils/requiredFields';
|
import { countRequiredFilled } from '$lib/shared/utils/requiredFields';
|
||||||
import { validateFile } from '$lib/document/validateFile';
|
import { validateFile } from '$lib/document/validateFile';
|
||||||
import DocumentViewer from '$lib/document/DocumentViewer.svelte';
|
import DocumentViewer from '$lib/document/DocumentViewer.svelte';
|
||||||
import UploadZone from '$lib/document/UploadZone.svelte';
|
import UploadZone from '$lib/document/UploadZone.svelte';
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { m } from '$lib/paraglide/messages.js';
|
import { m } from '$lib/paraglide/messages.js';
|
||||||
import { formatDate } from '$lib/utils/date';
|
import { formatDate } from '$lib/shared/utils/date';
|
||||||
import { formatDocumentStatus } from '$lib/document/documentStatusLabel';
|
import { formatDocumentStatus } from '$lib/document/documentStatusLabel';
|
||||||
import { getInitials, personAvatarColor } from '$lib/utils/personFormat';
|
import { getInitials, personAvatarColor } from '$lib/person/personFormat';
|
||||||
import RelationshipPill from '$lib/person/RelationshipPill.svelte';
|
import RelationshipPill from '$lib/person/RelationshipPill.svelte';
|
||||||
|
|
||||||
type Person = { id: string; firstName?: string | null; lastName: string; displayName: string };
|
type Person = { id: string; firstName?: string | null; lastName: string; displayName: string };
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import type { components } from '$lib/generated/api';
|
import type { components } from '$lib/generated/api';
|
||||||
import { m } from '$lib/paraglide/messages.js';
|
import { m } from '$lib/paraglide/messages.js';
|
||||||
import { clickOutside } from '$lib/actions/clickOutside';
|
import { clickOutside } from '$lib/shared/actions/clickOutside';
|
||||||
import { formatDate } from '$lib/utils/date';
|
import { formatDate } from '$lib/shared/utils/date';
|
||||||
|
|
||||||
type Document = components['schemas']['Document'];
|
type Document = components['schemas']['Document'];
|
||||||
type DocumentSearchItem = components['schemas']['DocumentSearchItem'];
|
type DocumentSearchItem = components['schemas']['DocumentSearchItem'];
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
import { goto } from '$app/navigation';
|
import { goto } from '$app/navigation';
|
||||||
import type { components } from '$lib/generated/api';
|
import type { components } from '$lib/generated/api';
|
||||||
import { applyOffsets } from '$lib/document/search';
|
import { applyOffsets } from '$lib/document/search';
|
||||||
import { formatDate } from '$lib/utils/date';
|
import { formatDate } from '$lib/shared/utils/date';
|
||||||
import * as m from '$lib/paraglide/messages.js';
|
import * as m from '$lib/paraglide/messages.js';
|
||||||
import { bulkSelectionStore } from '$lib/document/bulkSelection.svelte';
|
import { bulkSelectionStore } from '$lib/document/bulkSelection.svelte';
|
||||||
import ProgressRing from '$lib/components/ProgressRing.svelte';
|
import ProgressRing from '$lib/components/ProgressRing.svelte';
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { statusDotClass, statusLabel } from '$lib/utils/personFormat';
|
import { statusDotClass, statusLabel } from '$lib/person/personFormat';
|
||||||
|
|
||||||
type DocumentStatus = 'PLACEHOLDER' | 'UPLOADED' | 'TRANSCRIBED' | 'REVIEWED' | 'ARCHIVED';
|
type DocumentStatus = 'PLACEHOLDER' | 'UPLOADED' | 'TRANSCRIBED' | 'REVIEWED' | 'ARCHIVED';
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { m } from '$lib/paraglide/messages.js';
|
import { m } from '$lib/paraglide/messages.js';
|
||||||
import { slide } from 'svelte/transition';
|
import { slide } from 'svelte/transition';
|
||||||
import { formatDate } from '$lib/utils/date';
|
import { formatDate } from '$lib/shared/utils/date';
|
||||||
import { clickOutside } from '$lib/actions/clickOutside';
|
import { clickOutside } from '$lib/shared/actions/clickOutside';
|
||||||
import PersonChipRow from '$lib/person/PersonChipRow.svelte';
|
import PersonChipRow from '$lib/person/PersonChipRow.svelte';
|
||||||
import OverflowPillButton from '$lib/components/OverflowPillButton.svelte';
|
import OverflowPillButton from '$lib/components/OverflowPillButton.svelte';
|
||||||
import DocumentMetadataDrawer from './DocumentMetadataDrawer.svelte';
|
import DocumentMetadataDrawer from './DocumentMetadataDrawer.svelte';
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import * as m from '$lib/paraglide/messages.js';
|
import * as m from '$lib/paraglide/messages.js';
|
||||||
import { getLocale } from '$lib/paraglide/runtime.js';
|
import { getLocale } from '$lib/paraglide/runtime.js';
|
||||||
import { formatMCDate } from '$lib/utils/date.js';
|
import { formatMCDate } from '$lib/shared/utils/date.js';
|
||||||
import type { components } from '$lib/generated/api';
|
import type { components } from '$lib/generated/api';
|
||||||
import ContributorStack from '$lib/components/ContributorStack.svelte';
|
import ContributorStack from '$lib/components/ContributorStack.svelte';
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import * as m from '$lib/paraglide/messages.js';
|
import * as m from '$lib/paraglide/messages.js';
|
||||||
import { getLocale } from '$lib/paraglide/runtime.js';
|
import { getLocale } from '$lib/paraglide/runtime.js';
|
||||||
import { formatMCDate } from '$lib/utils/date.js';
|
import { formatMCDate } from '$lib/shared/utils/date.js';
|
||||||
import type { components } from '$lib/generated/api';
|
import type { components } from '$lib/generated/api';
|
||||||
import ContributorStack from '$lib/components/ContributorStack.svelte';
|
import ContributorStack from '$lib/components/ContributorStack.svelte';
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import ConversationThumbnail from '$lib/conversation/ConversationThumbnail.svelte';
|
import ConversationThumbnail from '$lib/conversation/ConversationThumbnail.svelte';
|
||||||
import TagChipList from '$lib/tag/TagChipList.svelte';
|
import TagChipList from '$lib/tag/TagChipList.svelte';
|
||||||
import { formatDate } from '$lib/utils/date';
|
import { formatDate } from '$lib/shared/utils/date';
|
||||||
import * as m from '$lib/paraglide/messages.js';
|
import * as m from '$lib/paraglide/messages.js';
|
||||||
|
|
||||||
type Person = { id: string; firstName?: string | null; lastName: string; displayName: string };
|
type Person = { id: string; firstName?: string | null; lastName: string; displayName: string };
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { onMount, untrack } from 'svelte';
|
|||||||
import PersonTypeahead from '$lib/person/PersonTypeahead.svelte';
|
import PersonTypeahead from '$lib/person/PersonTypeahead.svelte';
|
||||||
import PersonMultiSelect from '$lib/person/PersonMultiSelect.svelte';
|
import PersonMultiSelect from '$lib/person/PersonMultiSelect.svelte';
|
||||||
import FieldLabelBadge from './FieldLabelBadge.svelte';
|
import FieldLabelBadge from './FieldLabelBadge.svelte';
|
||||||
import { isoToGerman, handleGermanDateInput } from '$lib/utils/date';
|
import { isoToGerman, handleGermanDateInput } from '$lib/shared/utils/date';
|
||||||
import { m } from '$lib/paraglide/messages.js';
|
import { m } from '$lib/paraglide/messages.js';
|
||||||
import type { components } from '$lib/generated/api';
|
import type { components } from '$lib/generated/api';
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { isoToGerman } from '$lib/utils/date';
|
import { isoToGerman } from '$lib/shared/utils/date';
|
||||||
|
|
||||||
export interface FilenameParseResult {
|
export interface FilenameParseResult {
|
||||||
/** ISO format: YYYY-MM-DD */
|
/** ISO format: YYYY-MM-DD */
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { m } from '$lib/paraglide/messages.js';
|
import { m } from '$lib/paraglide/messages.js';
|
||||||
import { getConfirmService } from '$lib/services/confirm.svelte.js';
|
import { getConfirmService } from '$lib/shared/services/confirm.svelte.js';
|
||||||
import CommentThread from '$lib/components/CommentThread.svelte';
|
import CommentThread from '$lib/components/CommentThread.svelte';
|
||||||
import PersonMentionEditor from '$lib/components/PersonMentionEditor.svelte';
|
import PersonMentionEditor from '$lib/components/PersonMentionEditor.svelte';
|
||||||
import type { PersonMention } from '$lib/types';
|
import type { PersonMention } from '$lib/types';
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import { describe, it, expect, vi, afterEach } from 'vitest';
|
|||||||
import { cleanup, render } from 'vitest-browser-svelte';
|
import { cleanup, render } from 'vitest-browser-svelte';
|
||||||
import { page } from 'vitest/browser';
|
import { page } from 'vitest/browser';
|
||||||
import TranscriptionBlockHost from './TranscriptionBlock.test-host.svelte';
|
import TranscriptionBlockHost from './TranscriptionBlock.test-host.svelte';
|
||||||
import type { ConfirmService } from '$lib/services/confirm.svelte.js';
|
import type { ConfirmService } from '$lib/shared/services/confirm.svelte.js';
|
||||||
|
|
||||||
afterEach(cleanup);
|
afterEach(cleanup);
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { provideConfirmService, type ConfirmService } from '$lib/services/confirm.svelte.js';
|
import { provideConfirmService, type ConfirmService } from '$lib/shared/services/confirm.svelte.js';
|
||||||
import TranscriptionBlock from './TranscriptionBlock.svelte';
|
import TranscriptionBlock from './TranscriptionBlock.svelte';
|
||||||
import type { PersonMention } from '$lib/types';
|
import type { PersonMention } from '$lib/types';
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import * as m from '$lib/paraglide/messages.js';
|
import * as m from '$lib/paraglide/messages.js';
|
||||||
import { getLocale } from '$lib/paraglide/runtime.js';
|
import { getLocale } from '$lib/paraglide/runtime.js';
|
||||||
import { formatMCDate } from '$lib/utils/date.js';
|
import { formatMCDate } from '$lib/shared/utils/date.js';
|
||||||
import type { components } from '$lib/generated/api';
|
import type { components } from '$lib/generated/api';
|
||||||
import ContributorStack from '$lib/components/ContributorStack.svelte';
|
import ContributorStack from '$lib/components/ContributorStack.svelte';
|
||||||
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import { describe, it, expect, vi, afterEach } from 'vitest';
|
|||||||
import { cleanup, render } from 'vitest-browser-svelte';
|
import { cleanup, render } from 'vitest-browser-svelte';
|
||||||
import { page } from 'vitest/browser';
|
import { page } from 'vitest/browser';
|
||||||
import TranscriptionEditView from './TranscriptionEditView.svelte';
|
import TranscriptionEditView from './TranscriptionEditView.svelte';
|
||||||
import { createConfirmService, CONFIRM_KEY } from '$lib/services/confirm.svelte.js';
|
import { createConfirmService, CONFIRM_KEY } from '$lib/shared/services/confirm.svelte.js';
|
||||||
|
|
||||||
afterEach(cleanup);
|
afterEach(cleanup);
|
||||||
|
|
||||||
|
|||||||
@@ -6,10 +6,10 @@ import {
|
|||||||
renderTranscriptionBody,
|
renderTranscriptionBody,
|
||||||
type SafeHtml,
|
type SafeHtml,
|
||||||
PERSON_MENTION_SELECTOR
|
PERSON_MENTION_SELECTOR
|
||||||
} from '$lib/utils/mention';
|
} from '$lib/shared/discussion/mention';
|
||||||
import { computeHoverCardPosition } from '$lib/utils/hoverCardPosition';
|
import { computeHoverCardPosition } from '$lib/shared/utils/hoverCardPosition';
|
||||||
import PersonHoverCard from '$lib/person/PersonHoverCard.svelte';
|
import PersonHoverCard from '$lib/person/PersonHoverCard.svelte';
|
||||||
import type { HoverData, LoadState } from '$lib/types/personHoverCard';
|
import type { HoverData, LoadState } from '$lib/person/personHoverCard';
|
||||||
import { goto } from '$app/navigation';
|
import { goto } from '$app/navigation';
|
||||||
import { SvelteMap, SvelteSet } from 'svelte/reactivity';
|
import { SvelteMap, SvelteSet } from 'svelte/reactivity';
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { m } from '$lib/paraglide/messages.js';
|
import { m } from '$lib/paraglide/messages.js';
|
||||||
import type { components } from '$lib/generated/api';
|
import type { components } from '$lib/generated/api';
|
||||||
import { plainExcerpt } from '$lib/utils/extractText';
|
import { plainExcerpt } from '$lib/shared/utils/extractText';
|
||||||
import { formatDate } from '$lib/utils/date';
|
import { formatDate } from '$lib/shared/utils/date';
|
||||||
|
|
||||||
type Geschichte = components['schemas']['Geschichte'];
|
type Geschichte = components['schemas']['Geschichte'];
|
||||||
|
|
||||||
|
|||||||
@@ -2,9 +2,9 @@
|
|||||||
import { onMount, onDestroy } from 'svelte';
|
import { onMount, onDestroy } from 'svelte';
|
||||||
import { goto } from '$app/navigation';
|
import { goto } from '$app/navigation';
|
||||||
import { m } from '$lib/paraglide/messages.js';
|
import { m } from '$lib/paraglide/messages.js';
|
||||||
import { clickOutside } from '$lib/actions/clickOutside';
|
import { clickOutside } from '$lib/shared/actions/clickOutside';
|
||||||
import { notificationStore } from '$lib/notification/notifications.svelte';
|
import { notificationStore } from '$lib/notification/notifications.svelte';
|
||||||
import { buildCommentHref } from '$lib/utils/commentDeepLink';
|
import { buildCommentHref } from '$lib/shared/discussion/commentDeepLink';
|
||||||
import NotificationDropdown from './NotificationDropdown.svelte';
|
import NotificationDropdown from './NotificationDropdown.svelte';
|
||||||
|
|
||||||
let open = $state(false);
|
let open = $state(false);
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { m } from '$lib/paraglide/messages.js';
|
import { m } from '$lib/paraglide/messages.js';
|
||||||
import { relativeTime } from '$lib/utils/time';
|
import { relativeTime } from '$lib/shared/utils/time';
|
||||||
import type { NotificationItem } from '$lib/notification/notifications.svelte';
|
import type { NotificationItem } from '$lib/notification/notifications.svelte';
|
||||||
|
|
||||||
type Props = {
|
type Props = {
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ export type NotificationItem = {
|
|||||||
documentTitle: string | null;
|
documentTitle: string | null;
|
||||||
};
|
};
|
||||||
|
|
||||||
export { relativeTime } from '$lib/utils/time';
|
export { relativeTime } from '$lib/shared/utils/time';
|
||||||
|
|
||||||
export function parseNotificationEvent(raw: string): NotificationItem | null {
|
export function parseNotificationEvent(raw: string): NotificationItem | null {
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import TrainingHistory from './TrainingHistory.svelte';
|
import TrainingHistory from './TrainingHistory.svelte';
|
||||||
import { m } from '$lib/paraglide/messages.js';
|
import { m } from '$lib/paraglide/messages.js';
|
||||||
import type { TrainingRun } from '$lib/types/training.js';
|
import type { TrainingRun } from '$lib/ocr/training.js';
|
||||||
|
|
||||||
interface TrainingInfo {
|
interface TrainingInfo {
|
||||||
availableBlocks?: number;
|
availableBlocks?: number;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import TrainingHistory from './TrainingHistory.svelte';
|
import TrainingHistory from './TrainingHistory.svelte';
|
||||||
import { m } from '$lib/paraglide/messages.js';
|
import { m } from '$lib/paraglide/messages.js';
|
||||||
import type { TrainingRun } from '$lib/types/training.js';
|
import type { TrainingRun } from '$lib/ocr/training.js';
|
||||||
|
|
||||||
interface TrainingInfo {
|
interface TrainingInfo {
|
||||||
availableSegBlocks?: number;
|
availableSegBlocks?: number;
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { m } from '$lib/paraglide/messages.js';
|
import { m } from '$lib/paraglide/messages.js';
|
||||||
import type { TrainingRun } from '$lib/types/training.js';
|
import type { TrainingRun } from '$lib/ocr/training.js';
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
runs: TrainingRun[];
|
runs: TrainingRun[];
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { abbreviateName, getInitials, personAvatarColor } from '$lib/utils/personFormat';
|
import { abbreviateName, getInitials, personAvatarColor } from '$lib/person/personFormat';
|
||||||
|
|
||||||
type Person = { id: string; firstName?: string | null; lastName: string; displayName: string };
|
type Person = { id: string; firstName?: string | null; lastName: string; displayName: string };
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,9 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { m } from '$lib/paraglide/messages.js';
|
import { m } from '$lib/paraglide/messages.js';
|
||||||
import { formatLifeDateRange } from '$lib/utils/personLifeDates';
|
import { formatLifeDateRange } from '$lib/person/personLifeDates';
|
||||||
import { chipLabel, otherName } from '$lib/person/relationshipLabels';
|
import { chipLabel, otherName } from '$lib/person/relationshipLabels';
|
||||||
import type { components } from '$lib/generated/api';
|
import type { components } from '$lib/generated/api';
|
||||||
import type { LoadState } from '$lib/types/personHoverCard';
|
import type { LoadState } from '$lib/person/personHoverCard';
|
||||||
|
|
||||||
type RelationshipDTO = components['schemas']['RelationshipDTO'];
|
type RelationshipDTO = components['schemas']['RelationshipDTO'];
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import type { components } from '$lib/generated/api';
|
import type { components } from '$lib/generated/api';
|
||||||
import { m } from '$lib/paraglide/messages.js';
|
import { m } from '$lib/paraglide/messages.js';
|
||||||
import { clickOutside } from '$lib/actions/clickOutside';
|
import { clickOutside } from '$lib/shared/actions/clickOutside';
|
||||||
type Person = components['schemas']['Person'];
|
type Person = components['schemas']['Person'];
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { untrack } from 'svelte';
|
import { untrack } from 'svelte';
|
||||||
import { radioGroupNav } from '$lib/actions/radioGroupNav';
|
import { radioGroupNav } from '$lib/shared/actions/radioGroupNav';
|
||||||
import { m } from '$lib/paraglide/messages.js';
|
import { m } from '$lib/paraglide/messages.js';
|
||||||
import { PERSON_TYPES as TYPES, type PersonType } from '$lib/person/person-validation';
|
import { PERSON_TYPES as TYPES, type PersonType } from '$lib/person/person-validation';
|
||||||
|
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
import { untrack } from 'svelte';
|
import { untrack } from 'svelte';
|
||||||
import type { components } from '$lib/generated/api';
|
import type { components } from '$lib/generated/api';
|
||||||
import { m } from '$lib/paraglide/messages.js';
|
import { m } from '$lib/paraglide/messages.js';
|
||||||
import { clickOutside } from '$lib/actions/clickOutside';
|
import { clickOutside } from '$lib/shared/actions/clickOutside';
|
||||||
import { createTypeahead } from '$lib/hooks/useTypeahead.svelte';
|
import { createTypeahead } from '$lib/shared/hooks/useTypeahead.svelte';
|
||||||
import FieldLabelBadge from '$lib/document/FieldLabelBadge.svelte';
|
import FieldLabelBadge from '$lib/document/FieldLabelBadge.svelte';
|
||||||
type Person = components['schemas']['Person'];
|
type Person = components['schemas']['Person'];
|
||||||
|
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ import {
|
|||||||
statusDotClass,
|
statusDotClass,
|
||||||
statusLabel
|
statusLabel
|
||||||
} from './personFormat';
|
} from './personFormat';
|
||||||
import { formatDate } from './date';
|
import { formatDate } from '$lib/shared/utils/date';
|
||||||
|
|
||||||
// ─── getInitials ─────────────────────────────────────────────────────────────
|
// ─── getInitials ─────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
import { formatDocumentStatus } from '$lib/document/documentStatusLabel';
|
import { formatDocumentStatus } from '$lib/document/documentStatusLabel';
|
||||||
import { formatDate } from './date';
|
import { formatDate } from '$lib/shared/utils/date';
|
||||||
|
|
||||||
type Person = { firstName?: string | null; lastName: string; displayName: string };
|
type Person = { firstName?: string | null; lastName: string; displayName: string };
|
||||||
type DocumentStatus = 'PLACEHOLDER' | 'UPLOADED' | 'TRANSCRIBED' | 'REVIEWED' | 'ARCHIVED';
|
type DocumentStatus = 'PLACEHOLDER' | 'UPLOADED' | 'TRANSCRIBED' | 'REVIEWED' | 'ARCHIVED';
|
||||||
@@ -8,7 +8,7 @@
|
|||||||
*
|
*
|
||||||
* ## Usage in event handlers
|
* ## Usage in event handlers
|
||||||
* ```typescript
|
* ```typescript
|
||||||
* import { getConfirmService } from '$lib/services/confirm.svelte.js';
|
* import { getConfirmService } from '$lib/shared/services/confirm.svelte.js';
|
||||||
* const { confirm } = getConfirmService();
|
* const { confirm } = getConfirmService();
|
||||||
*
|
*
|
||||||
* async function handleDelete() {
|
* async function handleDelete() {
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
import { untrack } from 'svelte';
|
import { untrack } from 'svelte';
|
||||||
import { SvelteMap } from 'svelte/reactivity';
|
import { SvelteMap } from 'svelte/reactivity';
|
||||||
import { m } from '$lib/paraglide/messages.js';
|
import { m } from '$lib/paraglide/messages.js';
|
||||||
import { clickOutside } from '$lib/actions/clickOutside';
|
import { clickOutside } from '$lib/shared/actions/clickOutside';
|
||||||
|
|
||||||
export type Tag = { id?: string; name: string; color?: string; parentId?: string };
|
export type Tag = { id?: string; name: string; color?: string; parentId?: string };
|
||||||
|
|
||||||
|
|||||||
@@ -2,8 +2,8 @@
|
|||||||
import { untrack } from 'svelte';
|
import { untrack } from 'svelte';
|
||||||
import type { components } from '$lib/generated/api';
|
import type { components } from '$lib/generated/api';
|
||||||
import { m } from '$lib/paraglide/messages.js';
|
import { m } from '$lib/paraglide/messages.js';
|
||||||
import { clickOutside } from '$lib/actions/clickOutside';
|
import { clickOutside } from '$lib/shared/actions/clickOutside';
|
||||||
import { createTypeahead } from '$lib/hooks/useTypeahead.svelte';
|
import { createTypeahead } from '$lib/shared/hooks/useTypeahead.svelte';
|
||||||
|
|
||||||
type Tag = components['schemas']['Tag'];
|
type Tag = components['schemas']['Tag'];
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { untrack } from 'svelte';
|
import { untrack } from 'svelte';
|
||||||
import { isoToGerman, handleGermanDateInput } from '$lib/utils/date';
|
import { isoToGerman, handleGermanDateInput } from '$lib/shared/utils/date';
|
||||||
import { m } from '$lib/paraglide/messages.js';
|
import { m } from '$lib/paraglide/messages.js';
|
||||||
|
|
||||||
let {
|
let {
|
||||||
|
|||||||
@@ -1 +1 @@
|
|||||||
export { isoToGerman, germanToIso } from '$lib/utils/date';
|
export { isoToGerman, germanToIso } from '$lib/shared/utils/date';
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import NotificationBell from '$lib/notification/NotificationBell.svelte';
|
|||||||
import AppNav from './AppNav.svelte';
|
import AppNav from './AppNav.svelte';
|
||||||
import UserMenu from './UserMenu.svelte';
|
import UserMenu from './UserMenu.svelte';
|
||||||
import ConfirmDialog from '$lib/components/ConfirmDialog.svelte';
|
import ConfirmDialog from '$lib/components/ConfirmDialog.svelte';
|
||||||
import { provideConfirmService } from '$lib/services/confirm.svelte.js';
|
import { provideConfirmService } from '$lib/shared/services/confirm.svelte.js';
|
||||||
import { bulkSelectionStore } from '$lib/document/bulkSelection.svelte';
|
import { bulkSelectionStore } from '$lib/document/bulkSelection.svelte';
|
||||||
|
|
||||||
let { children, data } = $props();
|
let { children, data } = $props();
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { enhance } from '$app/forms';
|
import { enhance } from '$app/forms';
|
||||||
import { m } from '$lib/paraglide/messages.js';
|
import { m } from '$lib/paraglide/messages.js';
|
||||||
import { clickOutside } from '$lib/actions/clickOutside';
|
import { clickOutside } from '$lib/shared/actions/clickOutside';
|
||||||
|
|
||||||
let { userInitials }: { userInitials: string | null } = $props();
|
let { userInitials }: { userInitials: string | null } = $props();
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { enhance } from '$app/forms';
|
import { enhance } from '$app/forms';
|
||||||
import { m } from '$lib/paraglide/messages.js';
|
import { m } from '$lib/paraglide/messages.js';
|
||||||
import { getConfirmService } from '$lib/services/confirm.svelte.js';
|
import { getConfirmService } from '$lib/shared/services/confirm.svelte.js';
|
||||||
import { createUnsavedWarning } from '$lib/hooks/useUnsavedWarning.svelte';
|
import { createUnsavedWarning } from '$lib/shared/hooks/useUnsavedWarning.svelte';
|
||||||
import UnsavedWarningBanner from '$lib/components/UnsavedWarningBanner.svelte';
|
import UnsavedWarningBanner from '$lib/components/UnsavedWarningBanner.svelte';
|
||||||
|
|
||||||
let { data, form } = $props();
|
let { data, form } = $props();
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
|||||||
import { cleanup, render } from 'vitest-browser-svelte';
|
import { cleanup, render } from 'vitest-browser-svelte';
|
||||||
import { page } from 'vitest/browser';
|
import { page } from 'vitest/browser';
|
||||||
import Page from './+page.svelte';
|
import Page from './+page.svelte';
|
||||||
import { createConfirmService, CONFIRM_KEY } from '$lib/services/confirm.svelte.js';
|
import { createConfirmService, CONFIRM_KEY } from '$lib/shared/services/confirm.svelte.js';
|
||||||
|
|
||||||
vi.mock('$app/forms', () => ({ enhance: () => () => {} }));
|
vi.mock('$app/forms', () => ({ enhance: () => () => {} }));
|
||||||
vi.mock('$app/navigation', () => ({ beforeNavigate: vi.fn(), goto: vi.fn() }));
|
vi.mock('$app/navigation', () => ({ beforeNavigate: vi.fn(), goto: vi.fn() }));
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { enhance } from '$app/forms';
|
|||||||
import { replaceState } from '$app/navigation';
|
import { replaceState } from '$app/navigation';
|
||||||
import { page } from '$app/stores';
|
import { page } from '$app/stores';
|
||||||
import { m } from '$lib/paraglide/messages.js';
|
import { m } from '$lib/paraglide/messages.js';
|
||||||
import { createUnsavedWarning } from '$lib/hooks/useUnsavedWarning.svelte';
|
import { createUnsavedWarning } from '$lib/shared/hooks/useUnsavedWarning.svelte';
|
||||||
import UnsavedWarningBanner from '$lib/components/UnsavedWarningBanner.svelte';
|
import UnsavedWarningBanner from '$lib/components/UnsavedWarningBanner.svelte';
|
||||||
import TagParentPicker from '$lib/tag/TagParentPicker.svelte';
|
import TagParentPicker from '$lib/tag/TagParentPicker.svelte';
|
||||||
import TagAncestry from './TagAncestry.svelte';
|
import TagAncestry from './TagAncestry.svelte';
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { enhance } from '$app/forms';
|
import { enhance } from '$app/forms';
|
||||||
import { m } from '$lib/paraglide/messages.js';
|
import { m } from '$lib/paraglide/messages.js';
|
||||||
import { getConfirmService } from '$lib/services/confirm.svelte.js';
|
import { getConfirmService } from '$lib/shared/services/confirm.svelte.js';
|
||||||
|
|
||||||
type FlatTag = {
|
type FlatTag = {
|
||||||
id: string;
|
id: string;
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user