@churchapps/apphelper 1.10.11 → 1.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/notes/AddNote.d.ts.map +1 -1
- package/dist/components/notes/AddNote.js +11 -3
- package/dist/components/notes/AddNote.js.map +1 -1
- package/dist/components/notes/FormattingPopup.d.ts +14 -0
- package/dist/components/notes/FormattingPopup.d.ts.map +1 -0
- package/dist/components/notes/FormattingPopup.js +62 -0
- package/dist/components/notes/FormattingPopup.js.map +1 -0
- package/dist/components/notes/Note.d.ts +1 -0
- package/dist/components/notes/Note.d.ts.map +1 -1
- package/dist/components/notes/Note.js +5 -2
- package/dist/components/notes/Note.js.map +1 -1
- package/dist/components/notes/Notes.d.ts +8 -0
- package/dist/components/notes/Notes.d.ts.map +1 -1
- package/dist/components/notes/Notes.js +28 -5
- package/dist/components/notes/Notes.js.map +1 -1
- package/dist/components/notes/formatSelection.d.ts +8 -0
- package/dist/components/notes/formatSelection.d.ts.map +1 -0
- package/dist/components/notes/formatSelection.js +52 -0
- package/dist/components/notes/formatSelection.js.map +1 -0
- package/dist/components/notes/index.d.ts +4 -0
- package/dist/components/notes/index.d.ts.map +1 -1
- package/dist/components/notes/index.js +2 -0
- package/dist/components/notes/index.js.map +1 -1
- package/dist/components/wrapper/Notifications.d.ts +2 -0
- package/dist/components/wrapper/Notifications.d.ts.map +1 -1
- package/dist/components/wrapper/Notifications.js +25 -26
- package/dist/components/wrapper/Notifications.js.map +1 -1
- package/dist/components/wrapper/PrivateMessages.d.ts +2 -0
- package/dist/components/wrapper/PrivateMessages.d.ts.map +1 -1
- package/dist/components/wrapper/PrivateMessages.js +95 -87
- package/dist/components/wrapper/PrivateMessages.js.map +1 -1
- package/dist/components/wrapper/UserMenu.d.ts.map +1 -1
- package/dist/components/wrapper/UserMenu.js +3 -3
- package/dist/components/wrapper/UserMenu.js.map +1 -1
- package/dist/helpers/Locale.d.ts.map +1 -1
- package/dist/helpers/Locale.js +10 -3
- package/dist/helpers/Locale.js.map +1 -1
- package/dist/markdown/components/markdownEditor/MarkdownPreviewLight.d.ts +2 -1
- package/dist/markdown/components/markdownEditor/MarkdownPreviewLight.d.ts.map +1 -1
- package/dist/markdown/components/markdownEditor/MarkdownPreviewLight.js +2 -2
- package/dist/markdown/components/markdownEditor/MarkdownPreviewLight.js.map +1 -1
- package/dist/markdown/components/markdownEditor/markdownPreviewHtml.d.ts +3 -1
- package/dist/markdown/components/markdownEditor/markdownPreviewHtml.d.ts.map +1 -1
- package/dist/markdown/components/markdownEditor/markdownPreviewHtml.js +2 -2
- package/dist/markdown/components/markdownEditor/markdownPreviewHtml.js.map +1 -1
- package/dist/public/locales/en.json +20 -4
- package/dist/website/helpers/index.d.ts +1 -1
- package/dist/website/helpers/index.d.ts.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddNote.d.ts","sourceRoot":"","sources":["../../../src/components/notes/AddNote.tsx"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"AddNote.d.ts","sourceRoot":"","sources":["../../../src/components/notes/AddNote.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAsC,MAAM,OAAO,CAAC;AAI3D,OAAO,EAAoB,oBAAoB,EAAc,MAAM,qBAAqB,CAAC;AAezF,KAAK,KAAK,GAAG;IACX,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,kBAAkB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,oBAAoB,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CACvB,CAAC;AAEF,wBAAgB,OAAO,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,KAAK,qBA0L7D"}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
-
import { useState, useEffect } from "react";
|
|
3
|
+
import { useState, useEffect, useRef } from "react";
|
|
4
4
|
import { ApiHelper, Locale, PersonHelper } from "../../helpers";
|
|
5
5
|
import { ConversationStore } from "../../helpers/ConversationStore";
|
|
6
6
|
import { SubscriptionManager } from "../../helpers/SubscriptionManager";
|
|
7
7
|
import { UserHelper } from "@churchapps/helpers";
|
|
8
8
|
import { Box, Stack, TextField, IconButton, Paper, CircularProgress, Avatar, Icon } from "@mui/material";
|
|
9
9
|
import { EmojiPicker } from "./EmojiPicker";
|
|
10
|
+
import { useFormattingShortcuts } from "./FormattingPopup";
|
|
10
11
|
import { ErrorMessages } from "../ErrorMessages";
|
|
11
12
|
export function AddNote({ context, onCancel, ...props }) {
|
|
12
13
|
const [message, setMessage] = useState();
|
|
@@ -15,6 +16,11 @@ export function AddNote({ context, onCancel, ...props }) {
|
|
|
15
16
|
const [emojiAnchorEl, setEmojiAnchorEl] = useState(null);
|
|
16
17
|
const headerText = props.messageId ? "Edit note" : "Add a note";
|
|
17
18
|
const churchId = UserHelper.currentUserChurch?.church?.id || "";
|
|
19
|
+
const inputRef = useRef(null);
|
|
20
|
+
const { onKeyDown, popup } = useFormattingShortcuts(inputRef, message?.content || "", (content) => {
|
|
21
|
+
setErrors([]);
|
|
22
|
+
setMessage({ ...message, content });
|
|
23
|
+
});
|
|
18
24
|
useEffect(() => {
|
|
19
25
|
if (props.messageId) {
|
|
20
26
|
ApiHelper.get(`/messages/${churchId}/${props.messageId}`, "MessagingApi")
|
|
@@ -75,12 +81,14 @@ export function AddNote({ context, onCancel, ...props }) {
|
|
|
75
81
|
async function deleteNote() {
|
|
76
82
|
if (!props.messageId)
|
|
77
83
|
return;
|
|
84
|
+
if (!window.confirm(Locale.label("notes.confirmDelete", "Delete this note? This cannot be undone.")))
|
|
85
|
+
return;
|
|
78
86
|
await ApiHelper.delete(`/messages/${props.messageId}`, "MessagingApi");
|
|
79
87
|
props.onUpdate();
|
|
80
88
|
}
|
|
81
89
|
const deleteFunction = props.messageId ? deleteNote : null;
|
|
82
90
|
const image = PersonHelper.getPhotoUrl(context?.person);
|
|
83
|
-
return (_jsxs(Box, { sx: { width: "100%" }, children: [_jsx(ErrorMessages, { errors: errors }), _jsx(Paper, { variant: "outlined", sx: (theme) => ({ p: 2, bgcolor: theme.palette.mode === "dark" ? "background.default" : "grey.50", borderColor: theme.palette.mode === "dark" ? "grey.800" : "grey.300" }), children: _jsxs(Stack, { direction: "row", spacing: 2, alignItems: "flex-start", children: [_jsx(Avatar, { src: image, alt: context?.person?.name?.display, sx: { width: 48, height: 48 } }), _jsxs(Box, { sx: { flex: 1 }, children: [_jsx(TextField, { fullWidth: true, multiline: true, rows: 2, name: "noteText", "aria-label": headerText, placeholder: props.messageId ? "Edit your message..." : "Type a message...", variant: "standard", value: message?.content || "", onChange: handleChange, disabled: isSubmitting, InputProps: {
|
|
91
|
+
return (_jsxs(Box, { sx: { width: "100%" }, children: [_jsx(ErrorMessages, { errors: errors }), _jsx(Paper, { variant: "outlined", sx: (theme) => ({ p: 2, bgcolor: theme.palette.mode === "dark" ? "background.default" : "grey.50", borderColor: theme.palette.mode === "dark" ? "grey.800" : "grey.300" }), children: _jsxs(Stack, { direction: "row", spacing: 2, alignItems: "flex-start", children: [_jsx(Avatar, { src: image, alt: context?.person?.name?.display, sx: { width: 48, height: 48 } }), _jsxs(Box, { sx: { flex: 1 }, children: [_jsx(TextField, { fullWidth: true, multiline: true, rows: 2, name: "noteText", "aria-label": headerText, placeholder: props.messageId ? "Edit your message..." : "Type a message...", variant: "standard", value: message?.content || "", onChange: handleChange, onKeyDown: onKeyDown, inputRef: inputRef, disabled: isSubmitting, InputProps: {
|
|
84
92
|
disableUnderline: true,
|
|
85
93
|
sx: {
|
|
86
94
|
fontSize: "1rem",
|
|
@@ -94,7 +102,7 @@ export function AddNote({ context, onCancel, ...props }) {
|
|
|
94
102
|
borderColor: theme.palette.mode === "dark" ? "grey.700" : "grey.300",
|
|
95
103
|
"&:hover": { borderColor: theme.palette.mode === "dark" ? "grey.600" : "grey.400" },
|
|
96
104
|
"&.Mui-focused": { borderColor: "primary.main" }
|
|
97
|
-
}) }), _jsxs(Box, { sx: { display: "flex", alignItems: "center", mt: 1 }, children: [props.messageId && (_jsx(IconButton, { size: "small", onClick: () => {
|
|
105
|
+
}) }), popup, _jsxs(Box, { sx: { display: "flex", alignItems: "center", mt: 1 }, children: [props.messageId && (_jsx(IconButton, { size: "small", onClick: () => {
|
|
98
106
|
setMessage({ ...message, content: "" });
|
|
99
107
|
onCancel?.();
|
|
100
108
|
}, disabled: isSubmitting, sx: { color: "grey.700" }, children: _jsx(Icon, { fontSize: "small", children: "cancel" }) })), _jsx(Box, { sx: { flex: 1 } }), _jsxs(Box, { sx: { display: "flex", gap: 0.5 }, children: [_jsx(IconButton, { size: "small", onClick: (e) => setEmojiAnchorEl(e.currentTarget), disabled: isSubmitting, sx: { color: "grey.600" }, children: _jsx(Icon, { fontSize: "small", children: "sentiment_satisfied_alt" }) }), deleteFunction && (_jsx(IconButton, { size: "small", onClick: deleteFunction, disabled: isSubmitting, sx: { color: "error.main" }, children: _jsx(Icon, { fontSize: "small", children: "delete" }) })), _jsx(IconButton, { size: "small", color: "primary", onClick: handleSave, disabled: isSubmitting || !message?.content?.trim(), sx: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AddNote.js","sourceRoot":"","sources":["../../../src/components/notes/AddNote.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"AddNote.js","sourceRoot":"","sources":["../../../src/components/notes/AddNote.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
type TextareaRef = React.RefObject<HTMLTextAreaElement | HTMLInputElement | null>;
|
|
3
|
+
interface Props {
|
|
4
|
+
textareaRef: TextareaRef;
|
|
5
|
+
value: string;
|
|
6
|
+
onChange: (value: string) => void;
|
|
7
|
+
}
|
|
8
|
+
export declare function FormattingPopup({ textareaRef, value, onChange }: Props): React.JSX.Element;
|
|
9
|
+
export declare function useFormattingShortcuts(textareaRef: TextareaRef, value: string, onChange: (value: string) => void): {
|
|
10
|
+
onKeyDown: (e: React.KeyboardEvent) => void;
|
|
11
|
+
popup: React.JSX.Element;
|
|
12
|
+
};
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=FormattingPopup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormattingPopup.d.ts","sourceRoot":"","sources":["../../../src/components/notes/FormattingPopup.tsx"],"names":[],"mappings":"AAEA,OAAO,KAA2C,MAAM,OAAO,CAAC;AAKhE,KAAK,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,mBAAmB,GAAG,gBAAgB,GAAG,IAAI,CAAC,CAAC;AAsBlF,UAAU,KAAK;IACb,WAAW,EAAE,WAAW,CAAC;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAGD,wBAAgB,eAAe,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,KAAK,qBAqCtE;AAGD,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI;mBAG7E,KAAK,CAAC,aAAa;;EAUtD"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { useCallback, useEffect, useState } from "react";
|
|
4
|
+
import { Icon, IconButton, Paper, Popper } from "@mui/material";
|
|
5
|
+
import { Locale } from "../../helpers";
|
|
6
|
+
import { applyFormat } from "./formatSelection";
|
|
7
|
+
const BUTTONS = [
|
|
8
|
+
{ kind: "bold", icon: "format_bold", key: "notes.formatBold", fallback: "Bold" },
|
|
9
|
+
{ kind: "italic", icon: "format_italic", key: "notes.formatItalic", fallback: "Italic" },
|
|
10
|
+
{ kind: "bullets", icon: "format_list_bulleted", key: "notes.formatBullets", fallback: "Bulleted list" },
|
|
11
|
+
{ kind: "numbered", icon: "format_list_numbered", key: "notes.formatNumbered", fallback: "Numbered list" }
|
|
12
|
+
];
|
|
13
|
+
function useApplyFormat(textareaRef, value, onChange) {
|
|
14
|
+
return useCallback((kind) => {
|
|
15
|
+
const el = textareaRef.current;
|
|
16
|
+
if (!el)
|
|
17
|
+
return;
|
|
18
|
+
const result = applyFormat(value || "", el.selectionStart ?? 0, el.selectionEnd ?? 0, kind);
|
|
19
|
+
onChange(result.value);
|
|
20
|
+
requestAnimationFrame(() => {
|
|
21
|
+
el.focus();
|
|
22
|
+
el.setSelectionRange(result.start, result.end);
|
|
23
|
+
});
|
|
24
|
+
}, [textareaRef, value, onChange]);
|
|
25
|
+
}
|
|
26
|
+
// Bold / Italic / Bullets / Numbered popup shown over highlighted text in a plain text box.
|
|
27
|
+
export function FormattingPopup({ textareaRef, value, onChange }) {
|
|
28
|
+
const [open, setOpen] = useState(false);
|
|
29
|
+
const format = useApplyFormat(textareaRef, value, onChange);
|
|
30
|
+
useEffect(() => {
|
|
31
|
+
const el = textareaRef.current;
|
|
32
|
+
if (!el)
|
|
33
|
+
return;
|
|
34
|
+
const update = () => setOpen(document.activeElement === el && (el.selectionStart ?? 0) !== (el.selectionEnd ?? 0));
|
|
35
|
+
const close = () => setOpen(false);
|
|
36
|
+
const events = ["select", "keyup", "mouseup", "focus"];
|
|
37
|
+
events.forEach((e) => el.addEventListener(e, update));
|
|
38
|
+
el.addEventListener("blur", close);
|
|
39
|
+
return () => {
|
|
40
|
+
events.forEach((e) => el.removeEventListener(e, update));
|
|
41
|
+
el.removeEventListener("blur", close);
|
|
42
|
+
};
|
|
43
|
+
}, [textareaRef]);
|
|
44
|
+
const anchor = textareaRef.current;
|
|
45
|
+
return (_jsx(Popper, { open: open && !!anchor, anchorEl: anchor, placement: "top-start", sx: { zIndex: (theme) => theme.zIndex.tooltip }, children: _jsx(Paper, { elevation: 4, sx: { display: "flex", p: 0.25, mb: 0.5 }, "data-testid": "formatting-popup", children: BUTTONS.map((b) => (_jsx(IconButton, { size: "small", "aria-label": Locale.label(b.key, b.fallback), title: Locale.label(b.key, b.fallback), onMouseDown: (e) => e.preventDefault(), onClick: () => format(b.kind), children: _jsx(Icon, { fontSize: "small", children: b.icon }) }, b.kind))) }) }));
|
|
46
|
+
}
|
|
47
|
+
// Ctrl/Cmd+B and Ctrl/Cmd+I for a plain text box, plus the highlight popup.
|
|
48
|
+
export function useFormattingShortcuts(textareaRef, value, onChange) {
|
|
49
|
+
const format = useApplyFormat(textareaRef, value, onChange);
|
|
50
|
+
const onKeyDown = useCallback((e) => {
|
|
51
|
+
if (!(e.ctrlKey || e.metaKey) || e.altKey || e.shiftKey)
|
|
52
|
+
return;
|
|
53
|
+
const key = e.key.toLowerCase();
|
|
54
|
+
if (key !== "b" && key !== "i")
|
|
55
|
+
return;
|
|
56
|
+
e.preventDefault();
|
|
57
|
+
format(key === "b" ? "bold" : "italic");
|
|
58
|
+
}, [format]);
|
|
59
|
+
const popup = _jsx(FormattingPopup, { textareaRef: textareaRef, value: value, onChange: onChange });
|
|
60
|
+
return { onKeyDown, popup };
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=FormattingPopup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FormattingPopup.js","sourceRoot":"","sources":["../../../src/components/notes/FormattingPopup.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Note.d.ts","sourceRoot":"","sources":["../../../src/components/notes/Note.tsx"],"names":[],"mappings":"AAGA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAEnD,OAAO,EAAE,gBAAgB,EAAmB,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"Note.d.ts","sourceRoot":"","sources":["../../../src/components/notes/Note.tsx"],"names":[],"mappings":"AAGA,OAAO,KAA8B,MAAM,OAAO,CAAC;AAEnD,OAAO,EAAE,gBAAgB,EAAmB,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAI9F,UAAU,KAAK;IACb,OAAO,EAAE,gBAAgB,CAAC;IAC1B,YAAY,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,OAAO,EAAE,oBAAoB,CAAC;IAC9B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CA6HhC,CAAC"}
|
|
@@ -4,6 +4,7 @@ import { Icon, IconButton, Stack, Box, Typography } from "@mui/material";
|
|
|
4
4
|
import { useState, useEffect } from "react";
|
|
5
5
|
import { DateHelper, Locale } from "../../helpers";
|
|
6
6
|
import { PersonAvatar } from "../PersonAvatar";
|
|
7
|
+
import { MarkdownPreviewLight } from "../../markdown/components/markdownEditor/MarkdownPreviewLight";
|
|
7
8
|
export const Note = (props) => {
|
|
8
9
|
const [message, setMessage] = useState(null);
|
|
9
10
|
useEffect(() => setMessage(props.message), [props.message]);
|
|
@@ -22,7 +23,7 @@ export const Note = (props) => {
|
|
|
22
23
|
const allUrls = content.match(urlRegex) || [];
|
|
23
24
|
const fileMatches = allUrls.filter((url) => !imageMatches.includes(url));
|
|
24
25
|
const textWithoutUrls = content.replace(urlRegex, "").trim();
|
|
25
|
-
return (_jsxs(_Fragment, { children: [textWithoutUrls && (_jsx(
|
|
26
|
+
return (_jsxs(_Fragment, { children: [textWithoutUrls && (_jsx(Box, { sx: { mb: 0.5, fontSize: "0.875rem", overflowWrap: "anywhere", "& p": { m: 0 }, "& p + p": { mt: 1 }, "& ul, & ol": { my: 0.5, pl: 2.5 } }, "data-testid": "note-content", children: _jsx(MarkdownPreviewLight, { value: textWithoutUrls, breaks: true }) })), imageMatches.map((url, i) => (_jsx(Box, { component: "img", src: url, alt: "", sx: { display: "block", maxWidth: "100%", borderRadius: 1, mt: 0.5 } }, `img-${i}-${url}`))), fileMatches.map((url, i) => (_jsxs(Box, { component: "a", href: url, target: "_blank", rel: "noopener noreferrer", sx: {
|
|
26
27
|
display: "inline-flex",
|
|
27
28
|
alignItems: "center",
|
|
28
29
|
gap: 0.75,
|
|
@@ -48,6 +49,8 @@ export const Note = (props) => {
|
|
|
48
49
|
border: props.isEditing ? "1px solid #FFA726" : "none",
|
|
49
50
|
transition: "background-color 0.3s, border 0.3s",
|
|
50
51
|
"&:hover": { bgcolor: "action.hover" }
|
|
51
|
-
}, children: [_jsx(PersonAvatar, { person: message.person, size: "small" }), _jsx(Box, { sx: { flex: 1 }, children: _jsxs(Stack, { direction: "row", justifyContent: "space-between", alignItems: "flex-start", children: [_jsxs(Box, { sx: { flex: 1 }, children: [_jsxs(Stack, { direction: "row", alignItems: "center", spacing: 1, sx: { mb: 0.5 }, children: [_jsx(Typography, { variant: "subtitle2", fontWeight: "bold", children: message.person?.name?.display }), _jsx(Typography, { variant: "caption", color: "text.secondary", title: displayDateTime, "data-testid": "note-timestamp", children: displayDateTime ? `${displayDateTime} · ${displayDuration}` : displayDuration }), isEdited && (
|
|
52
|
+
}, children: [_jsx(PersonAvatar, { person: message.person, size: "small" }), _jsx(Box, { sx: { flex: 1 }, children: _jsxs(Stack, { direction: "row", justifyContent: "space-between", alignItems: "flex-start", children: [_jsxs(Box, { sx: { flex: 1 }, children: [_jsxs(Stack, { direction: "row", alignItems: "center", spacing: 1, sx: { mb: 0.5 }, children: [_jsx(Typography, { variant: "subtitle2", fontWeight: "bold", children: message.person?.name?.display }), _jsx(Typography, { variant: "caption", color: "text.secondary", title: displayDateTime, "data-testid": "note-timestamp", children: displayDateTime ? `${displayDateTime} · ${displayDuration}` : displayDuration }), isEdited && (props.historyLink
|
|
53
|
+
? (_jsx(Typography, { variant: "caption", component: "a", href: props.historyLink, color: "text.secondary", sx: { textDecoration: "underline" }, "data-testid": "note-history-link", children: Locale.label("notes.editedViewHistory", "(edited · view history)") }))
|
|
54
|
+
: (_jsx(Typography, { variant: "caption", color: "text.secondary", children: "(edited)" })))] }), _jsx(Box, { children: renderMessageContent(message.content || "") })] }), (message?.id && message.personId === props.context?.person.id && !props.hideEdit) && (_jsx(IconButton, { size: "small", "aria-label": "editNote", onClick: () => props.showEditNote(message.id), sx: { opacity: 0.7, "&:hover": { opacity: 1 } }, children: _jsx(Icon, { fontSize: "small", children: "edit" }) }))] }) })] }));
|
|
52
55
|
};
|
|
53
56
|
//# sourceMappingURL=Note.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Note.js","sourceRoot":"","sources":["../../../src/components/notes/Note.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACzE,OAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEnD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"Note.js","sourceRoot":"","sources":["../../../src/components/notes/Note.tsx"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,14 @@ interface Props {
|
|
|
7
7
|
context: UserContextInterface;
|
|
8
8
|
maxHeight?: any;
|
|
9
9
|
refreshKey?: number;
|
|
10
|
+
historyLink?: string;
|
|
11
|
+
deletedNotes?: DeletedNoteInterface[];
|
|
12
|
+
}
|
|
13
|
+
export interface DeletedNoteInterface {
|
|
14
|
+
messageId?: string;
|
|
15
|
+
displayName?: string;
|
|
16
|
+
timeSent?: Date | string;
|
|
17
|
+
deletedAt?: Date | string;
|
|
10
18
|
}
|
|
11
19
|
export declare function Notes(props: Props): React.JSX.Element;
|
|
12
20
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Notes.d.ts","sourceRoot":"","sources":["../../../src/components/notes/Notes.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,OAAO,EAA2C,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAIpG,UAAU,KAAK;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3C,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,EAAE,oBAAoB,CAAC;IAC9B,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"Notes.d.ts","sourceRoot":"","sources":["../../../src/components/notes/Notes.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAO1B,OAAO,EAA2C,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAIpG,UAAU,KAAK;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3C,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,OAAO,EAAE,oBAAoB,CAAC;IAC9B,SAAS,CAAC,EAAE,GAAG,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,oBAAoB,EAAE,CAAC;CACvC;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,IAAI,GAAG,MAAM,CAAC;CAC3B;AAwCD,wBAAgB,KAAK,CAAC,KAAK,EAAE,KAAK,qBA2NjC"}
|
|
@@ -1,13 +1,31 @@
|
|
|
1
|
-
import { jsx as _jsx,
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import React from "react";
|
|
3
3
|
import { Note } from "./Note";
|
|
4
4
|
import { AddNote } from "./AddNote";
|
|
5
5
|
import { DisplayBox, Loading } from "../";
|
|
6
|
-
import { Locale } from "../../helpers";
|
|
6
|
+
import { DateHelper, Locale } from "../../helpers";
|
|
7
7
|
import { ConversationStore } from "../../helpers/ConversationStore";
|
|
8
8
|
import { SubscriptionManager } from "../../helpers/SubscriptionManager";
|
|
9
9
|
import { SubscriptionToggle, filterVisibleMessages } from "./SubscriptionToggle";
|
|
10
|
-
import { Box } from "@mui/material";
|
|
10
|
+
import { Box, Icon, Stack, Typography } from "@mui/material";
|
|
11
|
+
const formatTime = (value) => {
|
|
12
|
+
if (!value)
|
|
13
|
+
return "";
|
|
14
|
+
const d = new Date(value);
|
|
15
|
+
return isNaN(d.getTime()) ? "" : DateHelper.prettyDateTime(d);
|
|
16
|
+
};
|
|
17
|
+
// Greyed placeholder where a note was deleted. The old text stays in the audit log, never inline.
|
|
18
|
+
const DeletedNote = ({ note, historyLink }) => {
|
|
19
|
+
const caption = Locale.label("notes.deletedNoteBy", "Note by {name}, {posted} · deleted {deleted}")
|
|
20
|
+
.replace("{name}", note.displayName || "")
|
|
21
|
+
.replace("{posted}", formatTime(note.timeSent))
|
|
22
|
+
.replace("{deleted}", formatTime(note.deletedAt));
|
|
23
|
+
return (_jsxs(Box, { "data-testid": "deleted-note", sx: { display: "flex", gap: 2, mb: 2, p: 1, borderRadius: 1, opacity: 0.7, bgcolor: "action.hover", border: "1px dashed", borderColor: "divider" }, children: [_jsx(Icon, { sx: { color: "text.secondary", width: 32, textAlign: "center" }, children: "delete_outline" }), _jsxs(Box, { sx: { flex: 1 }, children: [_jsx(Typography, { variant: "subtitle2", color: "text.secondary", children: Locale.label("notes.deletedNote", "Deleted note") }), _jsxs(Stack, { direction: "row", spacing: 1, alignItems: "center", flexWrap: "wrap", children: [_jsx(Typography, { variant: "caption", color: "text.secondary", children: caption }), historyLink && (_jsx(Typography, { variant: "caption", component: "a", href: historyLink, color: "text.secondary", sx: { textDecoration: "underline" }, "data-testid": "deleted-note-history-link", children: Locale.label("notes.viewHistory", "View history") }))] })] })] }));
|
|
24
|
+
};
|
|
25
|
+
const timeOf = (value) => {
|
|
26
|
+
const t = value ? new Date(value).getTime() : NaN;
|
|
27
|
+
return isNaN(t) ? 0 : t;
|
|
28
|
+
};
|
|
11
29
|
export function Notes(props) {
|
|
12
30
|
const [messages, setMessages] = React.useState(null);
|
|
13
31
|
const [editMessageId, setEditMessageId] = React.useState(null);
|
|
@@ -96,9 +114,14 @@ export function Notes(props) {
|
|
|
96
114
|
const getNotes = () => {
|
|
97
115
|
if (!messages)
|
|
98
116
|
return _jsx(Loading, {});
|
|
99
|
-
|
|
117
|
+
const deleted = props.deletedNotes || [];
|
|
118
|
+
if (visibleMessages.length === 0 && deleted.length === 0)
|
|
100
119
|
return _jsx(_Fragment, {});
|
|
101
|
-
|
|
120
|
+
const rows = [
|
|
121
|
+
...visibleMessages.map(m => ({ time: timeOf(m.timeSent), el: _jsx(Note, { message: m, showEditNote: (id) => setEditMessageId(id ?? null), context: props.context, historyLink: props.historyLink }, m.id) })),
|
|
122
|
+
...deleted.map((d, i) => ({ time: timeOf(d.timeSent), el: _jsx(DeletedNote, { note: d, historyLink: props.historyLink }, "deleted-" + (d.messageId || i)) }))
|
|
123
|
+
];
|
|
124
|
+
return rows.sort((a, b) => a.time - b.time).map(r => r.el);
|
|
102
125
|
};
|
|
103
126
|
const getNotesWrapper = () => {
|
|
104
127
|
const notes = getNotes();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Notes.js","sourceRoot":"","sources":["../../../src/components/notes/Notes.tsx"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"Notes.js","sourceRoot":"","sources":["../../../src/components/notes/Notes.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export type FormatKind = "bold" | "italic" | "bullets" | "numbered";
|
|
2
|
+
export interface FormatResult {
|
|
3
|
+
value: string;
|
|
4
|
+
start: number;
|
|
5
|
+
end: number;
|
|
6
|
+
}
|
|
7
|
+
export declare function applyFormat(value: string, start: number, end: number, kind: FormatKind): FormatResult;
|
|
8
|
+
//# sourceMappingURL=formatSelection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatSelection.d.ts","sourceRoot":"","sources":["../../../src/components/notes/formatSelection.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,GAAG,UAAU,CAAC;AAEpE,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AA6CD,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,YAAY,CAOrG"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
const BULLET = /^- /;
|
|
2
|
+
const NUMBERED = /^\d+\. /;
|
|
3
|
+
function wrap(value, start, end, marker) {
|
|
4
|
+
const before = value.slice(0, start);
|
|
5
|
+
const selected = value.slice(start, end);
|
|
6
|
+
const after = value.slice(end);
|
|
7
|
+
// Already wrapped right outside the selection: unwrap.
|
|
8
|
+
if (before.endsWith(marker) && after.startsWith(marker)) {
|
|
9
|
+
return {
|
|
10
|
+
value: before.slice(0, before.length - marker.length) + selected + after.slice(marker.length),
|
|
11
|
+
start: start - marker.length,
|
|
12
|
+
end: end - marker.length
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
return { value: before + marker + selected + marker + after, start: start + marker.length, end: end + marker.length };
|
|
16
|
+
}
|
|
17
|
+
function prefixLines(value, start, end, kind) {
|
|
18
|
+
const lineStart = value.lastIndexOf("\n", start - 1) + 1;
|
|
19
|
+
// A selection ending right after a newline does not touch the next line.
|
|
20
|
+
const lastChar = end > start && value[end - 1] === "\n" ? end - 1 : end;
|
|
21
|
+
const nextBreak = value.indexOf("\n", lastChar);
|
|
22
|
+
const lineEnd = nextBreak === -1 ? value.length : nextBreak;
|
|
23
|
+
const lines = value.slice(lineStart, lineEnd).split("\n");
|
|
24
|
+
const pattern = kind === "bullets" ? BULLET : NUMBERED;
|
|
25
|
+
const remove = lines.every((l) => pattern.test(l));
|
|
26
|
+
const updated = lines.map((l, i) => {
|
|
27
|
+
if (remove)
|
|
28
|
+
return l.replace(pattern, "");
|
|
29
|
+
const stripped = l.replace(BULLET, "").replace(NUMBERED, "");
|
|
30
|
+
return (kind === "bullets" ? "- " : `${i + 1}. `) + stripped;
|
|
31
|
+
});
|
|
32
|
+
const block = updated.join("\n");
|
|
33
|
+
const newValue = value.slice(0, lineStart) + block + value.slice(lineEnd);
|
|
34
|
+
if (start === end) {
|
|
35
|
+
const caret = lineStart + updated[0].length;
|
|
36
|
+
return { value: newValue, start: caret, end: caret };
|
|
37
|
+
}
|
|
38
|
+
return { value: newValue, start: lineStart, end: lineStart + block.length };
|
|
39
|
+
}
|
|
40
|
+
// Applies one formatting action to a plain-text selection using the markdown
|
|
41
|
+
// that MarkdownPreviewLight renders: **bold**, _italic_, "- " and "1. " lists.
|
|
42
|
+
export function applyFormat(value, start, end, kind) {
|
|
43
|
+
const text = value || "";
|
|
44
|
+
const s = Math.max(0, Math.min(start, end, text.length));
|
|
45
|
+
const e = Math.min(Math.max(start, end), text.length);
|
|
46
|
+
if (kind === "bold")
|
|
47
|
+
return wrap(text, s, e, "**");
|
|
48
|
+
if (kind === "italic")
|
|
49
|
+
return wrap(text, s, e, "_");
|
|
50
|
+
return prefixLines(text, s, e, kind);
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=formatSelection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatSelection.js","sourceRoot":"","sources":["../../../src/components/notes/formatSelection.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
export { Notes } from "./Notes";
|
|
2
|
+
export type { DeletedNoteInterface } from "./Notes";
|
|
2
3
|
export { Note } from "./Note";
|
|
3
4
|
export { AddNote } from "./AddNote";
|
|
4
5
|
export { EmojiPicker } from "./EmojiPicker";
|
|
5
6
|
export { SubscriptionToggle, filterVisibleMessages, computeSubscriptionState, SUBSCRIPTION_MESSAGE_TYPE } from "./SubscriptionToggle";
|
|
7
|
+
export { FormattingPopup, useFormattingShortcuts } from "./FormattingPopup";
|
|
8
|
+
export { applyFormat } from "./formatSelection";
|
|
9
|
+
export type { FormatKind, FormatResult } from "./formatSelection";
|
|
6
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/notes/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/notes/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,YAAY,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AACpD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACtI,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -3,4 +3,6 @@ export { Note } from "./Note";
|
|
|
3
3
|
export { AddNote } from "./AddNote";
|
|
4
4
|
export { EmojiPicker } from "./EmojiPicker";
|
|
5
5
|
export { SubscriptionToggle, filterVisibleMessages, computeSubscriptionState, SUBSCRIPTION_MESSAGE_TYPE } from "./SubscriptionToggle";
|
|
6
|
+
export { FormattingPopup, useFormattingShortcuts } from "./FormattingPopup";
|
|
7
|
+
export { applyFormat } from "./formatSelection";
|
|
6
8
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/notes/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/components/notes/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAEhC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AACtI,OAAO,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -5,6 +5,8 @@ interface Props {
|
|
|
5
5
|
context: UserContextInterface;
|
|
6
6
|
onNavigate: (url: string) => void;
|
|
7
7
|
onUpdate: () => void;
|
|
8
|
+
/** Hide the panel's own "Notifications" heading, e.g. when a surrounding dialog already shows it as its title. */
|
|
9
|
+
hideTitle?: boolean;
|
|
8
10
|
}
|
|
9
11
|
export declare const Notifications: React.FC<Props>;
|
|
10
12
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Notifications.d.ts","sourceRoot":"","sources":["../../../src/components/wrapper/Notifications.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmB,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Notifications.d.ts","sourceRoot":"","sources":["../../../src/components/wrapper/Notifications.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAmB,MAAM,OAAO,CAAC;AA4BxC,OAAO,EAAyB,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAKlF,UAAU,KAAK;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,oBAAoB,CAAC;IAC9B,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,kHAAkH;IAClH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAkQzC,CAAC"}
|