@churchapps/apphelper 0.7.7 → 0.7.8

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.
@@ -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,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAG7E,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;CACpB;AAED,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAmEhC,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,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAG7E,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;CACpB;AAED,eAAO,MAAM,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAsHhC,CAAC"}
@@ -1,8 +1,8 @@
1
1
  "use client";
2
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
3
  import { Icon, IconButton, Stack, Box, Typography } from "@mui/material";
4
4
  import { useState, useEffect } from "react";
5
- import { DateHelper } from "../../helpers";
5
+ import { DateHelper, Locale } from "../../helpers";
6
6
  import { PersonAvatar } from "../PersonAvatar";
7
7
  export const Note = (props) => {
8
8
  const [message, setMessage] = useState(null);
@@ -12,7 +12,31 @@ export const Note = (props) => {
12
12
  const datePosted = new Date(message.timeUpdated || message.timeSent);
13
13
  const displayDuration = DateHelper.getDisplayDuration(datePosted);
14
14
  const isEdited = message.timeUpdated && message.timeUpdated !== message.timeSent;
15
- const contents = message.content?.split("\n");
15
+ const renderMessageContent = (content) => {
16
+ if (!content)
17
+ return null;
18
+ const imageRegex = /https?:\/\/\S+\.(jpg|jpeg|png|gif|webp|svg)(\?\S*)?/gi;
19
+ const urlRegex = /https?:\/\/\S+/gi;
20
+ const imageMatches = content.match(imageRegex) || [];
21
+ const allUrls = content.match(urlRegex) || [];
22
+ const fileMatches = allUrls.filter((url) => !imageMatches.includes(url));
23
+ const textWithoutUrls = content.replace(urlRegex, "").trim();
24
+ return (_jsxs(_Fragment, { children: [textWithoutUrls && (_jsx(Typography, { variant: "body2", sx: { whiteSpace: "pre-wrap", mb: 0.5 }, children: textWithoutUrls })), 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: {
25
+ display: "inline-flex",
26
+ alignItems: "center",
27
+ gap: 0.75,
28
+ mt: 0.5,
29
+ px: 1.25,
30
+ py: 0.75,
31
+ bgcolor: "grey.100",
32
+ border: "1px solid",
33
+ borderColor: "grey.300",
34
+ borderRadius: 1,
35
+ textDecoration: "none",
36
+ color: "text.primary",
37
+ "&:hover": { bgcolor: "grey.200" }
38
+ }, children: [_jsx(Icon, { sx: { fontSize: 18 }, children: "attach_file" }), _jsx(Typography, { variant: "caption", sx: { fontWeight: 500 }, children: Locale.label("notes.openFile", "Open file") })] }, `file-${i}-${url}`)))] }));
39
+ };
16
40
  return (_jsxs(Box, { sx: {
17
41
  display: "flex",
18
42
  gap: 2,
@@ -23,6 +47,6 @@ export const Note = (props) => {
23
47
  border: props.isEditing ? "1px solid #FFA726" : "none",
24
48
  transition: "background-color 0.3s, border 0.3s",
25
49
  "&:hover": { bgcolor: "action.hover" }
26
- }, 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", children: displayDuration }), isEdited && (_jsx(Typography, { variant: "caption", color: "text.secondary", children: "(edited)" }))] }), _jsx(Box, { children: contents.map((c, i) => c ? (_jsx(Typography, { variant: "body2", sx: { mb: 0.5 }, children: c }, `content-${i}-${c.substring(0, 20)}`)) : (_jsx(Box, { sx: { height: "1em" } }, `empty-${i}`))) })] }), (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" }) }))] }) })] }));
50
+ }, 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", children: displayDuration }), isEdited && (_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" }) }))] }) })] }));
27
51
  };
28
52
  //# sourceMappingURL=Note.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Note.js","sourceRoot":"","sources":["../../../src/components/notes/Note.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Note.js","sourceRoot":"","sources":["../../../src/components/notes/Note.tsx"],"names":[],"mappings":"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"}
@@ -212,6 +212,7 @@
212
212
  "comment": "comment",
213
213
  "comments": "comments",
214
214
  "notes": "Notes",
215
+ "openFile": "Open file",
215
216
  "startConversation": "Start a conversation",
216
217
  "validate": {
217
218
  "content": "Please enter a note."
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@churchapps/apphelper",
3
- "version": "0.7.7",
3
+ "version": "0.7.8",
4
4
  "description": "Library of helper functions, components, and feature modules (donations/forms/login/markdown/website) for React and NextJS ChurchApps",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",