@tryghost/activitypub 3.0.8 → 3.1.0

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.
Files changed (60) hide show
  1. package/dist/activitypub.js +2 -2
  2. package/dist/{at-sign-Fsk3x72r.mjs → at-sign-l8HMU0fk.mjs} +2 -2
  3. package/dist/{at-sign-Fsk3x72r.mjs.map → at-sign-l8HMU0fk.mjs.map} +1 -1
  4. package/dist/{avatar-flipboard-C10JfFS_.mjs → avatar-flipboard-D12yCmyH.mjs} +2 -2
  5. package/dist/{avatar-flipboard-C10JfFS_.mjs.map → avatar-flipboard-D12yCmyH.mjs.map} +1 -1
  6. package/dist/{bluesky-sharing-C1xeGSL6.mjs → bluesky-sharing-D65sfQFX.mjs} +4 -4
  7. package/dist/{bluesky-sharing-C1xeGSL6.mjs.map → bluesky-sharing-D65sfQFX.mjs.map} +1 -1
  8. package/dist/{copy-C1fElSkQ.mjs → copy-DCHXVz-9.mjs} +2 -2
  9. package/dist/{copy-C1fElSkQ.mjs.map → copy-DCHXVz-9.mjs.map} +1 -1
  10. package/dist/{deleted-feed-item-Bun4tY2_.mjs → deleted-feed-item-BkXeOOSC.mjs} +4 -4
  11. package/dist/{deleted-feed-item-Bun4tY2_.mjs.map → deleted-feed-item-BkXeOOSC.mjs.map} +1 -1
  12. package/dist/{edit-profile-CYh00FZ7.mjs → edit-profile-DdCJ6UkE.mjs} +3 -3
  13. package/dist/{edit-profile-CYh00FZ7.mjs.map → edit-profile-DdCJ6UkE.mjs.map} +1 -1
  14. package/dist/{feed-BxUqmcN9.mjs → feed-D4gYSgoO.mjs} +4 -4
  15. package/dist/{feed-BxUqmcN9.mjs.map → feed-D4gYSgoO.mjs.map} +1 -1
  16. package/dist/{hash-CNgwAx-U.mjs → hash-D_Ql6FHR.mjs} +2 -2
  17. package/dist/{hash-CNgwAx-U.mjs.map → hash-D_Ql6FHR.mjs.map} +1 -1
  18. package/dist/{inbox-DqNqII4a.mjs → inbox-BIeU-G-G.mjs} +2 -2
  19. package/dist/{inbox-DqNqII4a.mjs.map → inbox-BIeU-G-G.mjs.map} +1 -1
  20. package/dist/{index-CJJXnqq1.mjs → index-BlNT1f8K.mjs} +38 -38
  21. package/dist/index-BlNT1f8K.mjs.map +1 -0
  22. package/dist/{index-C9pnotJK.mjs → index-BurflorF.mjs} +466 -375
  23. package/dist/index-BurflorF.mjs.map +1 -0
  24. package/dist/{index-CONoLlDU.mjs → index-BvOcRwis.mjs} +2 -2
  25. package/dist/{index-CONoLlDU.mjs.map → index-BvOcRwis.mjs.map} +1 -1
  26. package/dist/{index-Dvh9q3jy.mjs → index-CPG1Xmp8.mjs} +6 -6
  27. package/dist/{index-Dvh9q3jy.mjs.map → index-CPG1Xmp8.mjs.map} +1 -1
  28. package/dist/{index--Q6orQkb.mjs → index-DIicyWvr.mjs} +10224 -9581
  29. package/dist/index-DIicyWvr.mjs.map +1 -0
  30. package/dist/{index-jhjmoHwu.mjs → index-DK0316YP.mjs} +13 -13
  31. package/dist/{index-jhjmoHwu.mjs.map → index-DK0316YP.mjs.map} +1 -1
  32. package/dist/{index-C3KJXzZE.mjs → index-DiYjJ67s.mjs} +115 -115
  33. package/dist/index-DiYjJ67s.mjs.map +1 -0
  34. package/dist/{index-BueIufRq.mjs → index-l72TqahD.mjs} +5 -5
  35. package/dist/{index-BueIufRq.mjs.map → index-l72TqahD.mjs.map} +1 -1
  36. package/dist/{moderation-CYhwUFi2.mjs → moderation-B0rtiaEH.mjs} +3 -3
  37. package/dist/{moderation-CYhwUFi2.mjs.map → moderation-B0rtiaEH.mjs.map} +1 -1
  38. package/dist/{note-COVa8CMw.mjs → note-DjaU27En.mjs} +4 -4
  39. package/dist/{note-COVa8CMw.mjs.map → note-DjaU27En.mjs.map} +1 -1
  40. package/dist/{reply-BHpKVBxx.mjs → reply-4cqNFwLY.mjs} +2 -2
  41. package/dist/{reply-BHpKVBxx.mjs.map → reply-4cqNFwLY.mjs.map} +1 -1
  42. package/dist/{separator-DP7q5sFH.mjs → separator-Dgj8LPTF.mjs} +12 -12
  43. package/dist/{separator-DP7q5sFH.mjs.map → separator-Dgj8LPTF.mjs.map} +1 -1
  44. package/dist/{settings-3n7zo_3K.mjs → settings-qNWc2HyW.mjs} +3 -3
  45. package/dist/{settings-3n7zo_3K.mjs.map → settings-qNWc2HyW.mjs.map} +1 -1
  46. package/dist/{step-1-BmUukywZ.mjs → step-1-CuRWXSkm.mjs} +12 -12
  47. package/dist/{step-1-BmUukywZ.mjs.map → step-1-CuRWXSkm.mjs.map} +1 -1
  48. package/dist/{step-2-C--I3xxp.mjs → step-2-BsxjLzY8.mjs} +5 -5
  49. package/dist/{step-2-C--I3xxp.mjs.map → step-2-BsxjLzY8.mjs.map} +1 -1
  50. package/dist/{step-3-0Deh5N9c.mjs → step-3-NBvYqr7R.mjs} +7 -7
  51. package/dist/{step-3-0Deh5N9c.mjs.map → step-3-NBvYqr7R.mjs.map} +1 -1
  52. package/dist/{tabs-D_vmoLBo.mjs → tabs-ROut24vi.mjs} +3 -3
  53. package/dist/{tabs-D_vmoLBo.mjs.map → tabs-ROut24vi.mjs.map} +1 -1
  54. package/dist/{topic-filter-DJMrhH-c.mjs → topic-filter-YL1wy3Q1.mjs} +2 -2
  55. package/dist/{topic-filter-DJMrhH-c.mjs.map → topic-filter-YL1wy3Q1.mjs.map} +1 -1
  56. package/package.json +3 -1
  57. package/dist/index--Q6orQkb.mjs.map +0 -1
  58. package/dist/index-C3KJXzZE.mjs.map +0 -1
  59. package/dist/index-C9pnotJK.mjs.map +0 -1
  60. package/dist/index-CJJXnqq1.mjs.map +0 -1
@@ -1,4 +1,4 @@
1
- import { l as v, c as r, b as T, e as g, j as l, B as j } from "./index--Q6orQkb.mjs";
1
+ import { l as v, c as r, b as T, e as g, j as l, B as j } from "./index-DIicyWvr.mjs";
2
2
  const N = ({ currentTopic: o, onTopicChange: a, excludeTopics: c = [] }) => {
3
3
  const { topicsQuery: i } = v(), { data: t } = i, d = { slug: "following", name: "Following" }, f = (t == null ? void 0 : t.topics) || [], u = [d, ...f].filter(({ slug: e }) => !c.includes(e)), s = r(null), p = r(null), [m, h] = T(!0), w = (e) => {
4
4
  const { scrollLeft: n, scrollWidth: x, clientWidth: b } = e.currentTarget;
@@ -36,4 +36,4 @@ const N = ({ currentTopic: o, onTopicChange: a, excludeTopics: c = [] }) => {
36
36
  export {
37
37
  N as T
38
38
  };
39
- //# sourceMappingURL=topic-filter-DJMrhH-c.mjs.map
39
+ //# sourceMappingURL=topic-filter-YL1wy3Q1.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"topic-filter-DJMrhH-c.mjs","sources":["../src/components/topic-filter.tsx"],"sourcesContent":["import React, {useEffect, useRef, useState} from 'react';\nimport {Button} from '@tryghost/shade';\nimport {useTopicsForUser} from '@src/hooks/use-activity-pub-queries';\n\nexport type Topic = string;\n\ninterface TopicFilterProps {\n currentTopic: Topic;\n onTopicChange: (topic: Topic) => void;\n excludeTopics?: Topic[];\n}\n\nconst TopicFilter: React.FC<TopicFilterProps> = ({currentTopic, onTopicChange, excludeTopics = []}) => {\n const {topicsQuery} = useTopicsForUser();\n const {data: topicsData} = topicsQuery;\n\n // Always include \"Following\" topic at the beginning, then merge with API topics\n const followingTopic = {slug: 'following', name: 'Following'};\n const apiTopics = topicsData?.topics || [];\n const allTopics = [followingTopic, ...apiTopics];\n\n const filteredTopics = allTopics.filter(({slug}) => !excludeTopics.includes(slug));\n const selectedButtonRef = useRef<HTMLButtonElement>(null);\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n const [showGradient, setShowGradient] = useState(true);\n\n const handleScroll = (e: React.UIEvent<HTMLDivElement>) => {\n const {scrollLeft, scrollWidth, clientWidth} = e.currentTarget;\n setShowGradient(scrollLeft + clientWidth < scrollWidth - 1);\n };\n\n useEffect(() => {\n if (selectedButtonRef.current) {\n selectedButtonRef.current.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'center'\n });\n }\n }, [currentTopic]);\n\n return (\n <div className=\"relative w-full\">\n <div\n ref={scrollContainerRef}\n className=\"flex w-full min-w-0 max-w-full snap-x snap-mandatory gap-2 overflow-x-auto [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden\"\n onScroll={handleScroll}\n >\n {filteredTopics.map(({slug, name}) => (\n <Button\n key={slug}\n ref={currentTopic === slug ? selectedButtonRef : null}\n className=\"h-8 snap-start rounded-full px-3.5 text-sm\"\n variant={currentTopic === slug ? 'default' : 'secondary'}\n onClick={() => onTopicChange(slug)}\n >\n {name}\n </Button>\n ))}\n </div>\n {showGradient && (\n <div className=\"pointer-events-none absolute right-0 top-0 h-full w-12 bg-gradient-to-l from-white to-transparent dark:from-black\" />\n )}\n </div>\n );\n};\n\nexport default TopicFilter;\n"],"names":["TopicFilter","currentTopic","onTopicChange","excludeTopics","topicsQuery","useTopicsForUser","topicsData","followingTopic","apiTopics","filteredTopics","slug","selectedButtonRef","useRef","scrollContainerRef","showGradient","setShowGradient","useState","handleScroll","scrollLeft","scrollWidth","clientWidth","useEffect","jsxs","jsx","name","Button"],"mappings":";AAYA,MAAMA,IAA0C,CAAC,EAAC,cAAAC,GAAc,eAAAC,GAAe,eAAAC,IAAgB,CAAA,QAAQ;AACnG,QAAM,EAAC,aAAAC,EAAA,IAAeC,EAAA,GAChB,EAAC,MAAMC,EAAA,IAAcF,GAGrBG,IAAiB,EAAC,MAAM,aAAa,MAAM,YAAA,GAC3CC,KAAYF,KAAA,gBAAAA,EAAY,WAAU,CAAA,GAGlCG,IAFY,CAACF,GAAgB,GAAGC,CAAS,EAEd,OAAO,CAAC,EAAC,MAAAE,EAAA,MAAU,CAACP,EAAc,SAASO,CAAI,CAAC,GAC3EC,IAAoBC,EAA0B,IAAI,GAClDC,IAAqBD,EAAuB,IAAI,GAChD,CAACE,GAAcC,CAAe,IAAIC,EAAS,EAAI,GAE/CC,IAAe,CAAC,MAAqC;AACvD,UAAM,EAAC,YAAAC,GAAY,aAAAC,GAAa,aAAAC,EAAA,IAAe,EAAE;AACjD,IAAAL,EAAgBG,IAAaE,IAAcD,IAAc,CAAC;AAAA,EAC9D;AAEA,SAAAE,EAAU,MAAM;AACZ,IAAIV,EAAkB,WAClBA,EAAkB,QAAQ,eAAe;AAAA,MACrC,UAAU;AAAA,MACV,OAAO;AAAA,MACP,QAAQ;AAAA,IAAA,CACX;AAAA,EAET,GAAG,CAACV,CAAY,CAAC,GAGbqB,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,mBACX,UAAA;AAAA,IAAAC,gBAAAA,EAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACG,KAAKV;AAAA,QACL,WAAU;AAAA,QACV,UAAUI;AAAA,QAET,YAAe,IAAI,CAAC,EAAC,MAAAP,GAAM,MAAAc,QACxBD,gBAAAA,EAAAA;AAAAA,UAACE;AAAA,UAAA;AAAA,YAEG,KAAKxB,MAAiBS,IAAOC,IAAoB;AAAA,YACjD,WAAU;AAAA,YACV,SAASV,MAAiBS,IAAO,YAAY;AAAA,YAC7C,SAAS,MAAMR,EAAcQ,CAAI;AAAA,YAEhC,UAAAc;AAAA,UAAA;AAAA,UANId;AAAA,QAAA,CAQZ;AAAA,MAAA;AAAA,IAAA;AAAA,IAEJI,KACGS,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAU,oHAAA,CAAoH;AAAA,EAAA,GAE3I;AAER;"}
1
+ {"version":3,"file":"topic-filter-YL1wy3Q1.mjs","sources":["../src/components/topic-filter.tsx"],"sourcesContent":["import React, {useEffect, useRef, useState} from 'react';\nimport {Button} from '@tryghost/shade';\nimport {useTopicsForUser} from '@src/hooks/use-activity-pub-queries';\n\nexport type Topic = string;\n\ninterface TopicFilterProps {\n currentTopic: Topic;\n onTopicChange: (topic: Topic) => void;\n excludeTopics?: Topic[];\n}\n\nconst TopicFilter: React.FC<TopicFilterProps> = ({currentTopic, onTopicChange, excludeTopics = []}) => {\n const {topicsQuery} = useTopicsForUser();\n const {data: topicsData} = topicsQuery;\n\n // Always include \"Following\" topic at the beginning, then merge with API topics\n const followingTopic = {slug: 'following', name: 'Following'};\n const apiTopics = topicsData?.topics || [];\n const allTopics = [followingTopic, ...apiTopics];\n\n const filteredTopics = allTopics.filter(({slug}) => !excludeTopics.includes(slug));\n const selectedButtonRef = useRef<HTMLButtonElement>(null);\n const scrollContainerRef = useRef<HTMLDivElement>(null);\n const [showGradient, setShowGradient] = useState(true);\n\n const handleScroll = (e: React.UIEvent<HTMLDivElement>) => {\n const {scrollLeft, scrollWidth, clientWidth} = e.currentTarget;\n setShowGradient(scrollLeft + clientWidth < scrollWidth - 1);\n };\n\n useEffect(() => {\n if (selectedButtonRef.current) {\n selectedButtonRef.current.scrollIntoView({\n behavior: 'smooth',\n block: 'nearest',\n inline: 'center'\n });\n }\n }, [currentTopic]);\n\n return (\n <div className=\"relative w-full\">\n <div\n ref={scrollContainerRef}\n className=\"flex w-full min-w-0 max-w-full snap-x snap-mandatory gap-2 overflow-x-auto [-ms-overflow-style:none] [scrollbar-width:none] [&::-webkit-scrollbar]:hidden\"\n onScroll={handleScroll}\n >\n {filteredTopics.map(({slug, name}) => (\n <Button\n key={slug}\n ref={currentTopic === slug ? selectedButtonRef : null}\n className=\"h-8 snap-start rounded-full px-3.5 text-sm\"\n variant={currentTopic === slug ? 'default' : 'secondary'}\n onClick={() => onTopicChange(slug)}\n >\n {name}\n </Button>\n ))}\n </div>\n {showGradient && (\n <div className=\"pointer-events-none absolute right-0 top-0 h-full w-12 bg-gradient-to-l from-white to-transparent dark:from-black\" />\n )}\n </div>\n );\n};\n\nexport default TopicFilter;\n"],"names":["TopicFilter","currentTopic","onTopicChange","excludeTopics","topicsQuery","useTopicsForUser","topicsData","followingTopic","apiTopics","filteredTopics","slug","selectedButtonRef","useRef","scrollContainerRef","showGradient","setShowGradient","useState","handleScroll","scrollLeft","scrollWidth","clientWidth","useEffect","jsxs","jsx","name","Button"],"mappings":";AAYA,MAAMA,IAA0C,CAAC,EAAC,cAAAC,GAAc,eAAAC,GAAe,eAAAC,IAAgB,CAAA,QAAQ;AACnG,QAAM,EAAC,aAAAC,EAAA,IAAeC,EAAA,GAChB,EAAC,MAAMC,EAAA,IAAcF,GAGrBG,IAAiB,EAAC,MAAM,aAAa,MAAM,YAAA,GAC3CC,KAAYF,KAAA,gBAAAA,EAAY,WAAU,CAAA,GAGlCG,IAFY,CAACF,GAAgB,GAAGC,CAAS,EAEd,OAAO,CAAC,EAAC,MAAAE,EAAA,MAAU,CAACP,EAAc,SAASO,CAAI,CAAC,GAC3EC,IAAoBC,EAA0B,IAAI,GAClDC,IAAqBD,EAAuB,IAAI,GAChD,CAACE,GAAcC,CAAe,IAAIC,EAAS,EAAI,GAE/CC,IAAe,CAAC,MAAqC;AACvD,UAAM,EAAC,YAAAC,GAAY,aAAAC,GAAa,aAAAC,EAAA,IAAe,EAAE;AACjD,IAAAL,EAAgBG,IAAaE,IAAcD,IAAc,CAAC;AAAA,EAC9D;AAEA,SAAAE,EAAU,MAAM;AACZ,IAAIV,EAAkB,WAClBA,EAAkB,QAAQ,eAAe;AAAA,MACrC,UAAU;AAAA,MACV,OAAO;AAAA,MACP,QAAQ;AAAA,IAAA,CACX;AAAA,EAET,GAAG,CAACV,CAAY,CAAC,GAGbqB,gBAAAA,EAAAA,KAAC,OAAA,EAAI,WAAU,mBACX,UAAA;AAAA,IAAAC,gBAAAA,EAAAA;AAAAA,MAAC;AAAA,MAAA;AAAA,QACG,KAAKV;AAAA,QACL,WAAU;AAAA,QACV,UAAUI;AAAA,QAET,YAAe,IAAI,CAAC,EAAC,MAAAP,GAAM,MAAAc,QACxBD,gBAAAA,EAAAA;AAAAA,UAACE;AAAA,UAAA;AAAA,YAEG,KAAKxB,MAAiBS,IAAOC,IAAoB;AAAA,YACjD,WAAU;AAAA,YACV,SAASV,MAAiBS,IAAO,YAAY;AAAA,YAC7C,SAAS,MAAMR,EAAcQ,CAAI;AAAA,YAEhC,UAAAc;AAAA,UAAA;AAAA,UANId;AAAA,QAAA,CAQZ;AAAA,MAAA;AAAA,IAAA;AAAA,IAEJI,KACGS,gBAAAA,EAAAA,IAAC,OAAA,EAAI,WAAU,oHAAA,CAAoH;AAAA,EAAA,GAE3I;AAER;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tryghost/activitypub",
3
- "version": "3.0.8",
3
+ "version": "3.1.0",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -31,6 +31,7 @@
31
31
  "devDependencies": {
32
32
  "@playwright/test": "1.55.1",
33
33
  "@testing-library/react": "14.3.1",
34
+ "@types/dompurify": "3.2.0",
34
35
  "@types/jest": "29.5.14",
35
36
  "@types/react": "18.3.26",
36
37
  "@types/react-dom": "18.3.7",
@@ -70,6 +71,7 @@
70
71
  "@tryghost/admin-x-framework": "0.0.0",
71
72
  "@tryghost/shade": "0.0.0",
72
73
  "clsx": "2.1.1",
74
+ "dompurify": "3.3.1",
73
75
  "html2canvas-objectfit-fix": "1.2.0",
74
76
  "react": "18.3.1",
75
77
  "react-dom": "18.3.1",