octalens-mentions 0.0.2 → 0.0.4

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 (146) hide show
  1. package/dist/_chunks/{App-CPej22xb.js → App-B-QcAxW7.js} +2 -2
  2. package/dist/_chunks/{App-DA1KtZxY.js.map → App-B-QcAxW7.js.map} +1 -1
  3. package/dist/_chunks/{App-HpszAlq5.mjs → App-DjWYlFjn.mjs} +2 -2
  4. package/dist/_chunks/{App-HpszAlq5.mjs.map → App-DjWYlFjn.mjs.map} +1 -1
  5. package/dist/_chunks/{index-MjmrX_qB.js → index-QtHFaCQE.js} +16 -4
  6. package/dist/_chunks/index-QtHFaCQE.js.map +1 -0
  7. package/dist/_chunks/{index-3mNRnzIR.mjs → index-S3IY0oBe.mjs} +17 -5
  8. package/dist/_chunks/index-S3IY0oBe.mjs.map +1 -0
  9. package/dist/admin/index.js +1 -1
  10. package/dist/admin/index.mjs +1 -1
  11. package/dist/admin/src/types/index.d.ts +1 -0
  12. package/dist/server/index.js +2 -1
  13. package/dist/server/index.js.map +1 -1
  14. package/dist/server/index.mjs +2 -1
  15. package/dist/server/index.mjs.map +1 -1
  16. package/package.json +1 -1
  17. package/dist/_chunks/App--ENzwlke.js +0 -30
  18. package/dist/_chunks/App--ENzwlke.js.map +0 -1
  19. package/dist/_chunks/App-75QgqKbt.mjs +0 -29
  20. package/dist/_chunks/App-75QgqKbt.mjs.map +0 -1
  21. package/dist/_chunks/App-BAfec0ux.mjs +0 -31
  22. package/dist/_chunks/App-BAfec0ux.mjs.map +0 -1
  23. package/dist/_chunks/App-BIffUtYI.js +0 -30
  24. package/dist/_chunks/App-BIffUtYI.js.map +0 -1
  25. package/dist/_chunks/App-B_sMYxju.mjs +0 -27
  26. package/dist/_chunks/App-B_sMYxju.mjs.map +0 -1
  27. package/dist/_chunks/App-BcWFGc-s.js +0 -31
  28. package/dist/_chunks/App-BcWFGc-s.js.map +0 -1
  29. package/dist/_chunks/App-Bdin-Qhb.js +0 -30
  30. package/dist/_chunks/App-Bdin-Qhb.js.map +0 -1
  31. package/dist/_chunks/App-BjIpZ5Gy.js +0 -29
  32. package/dist/_chunks/App-BjIpZ5Gy.js.map +0 -1
  33. package/dist/_chunks/App-Bz4Wu5GI.mjs +0 -30
  34. package/dist/_chunks/App-Bz4Wu5GI.mjs.map +0 -1
  35. package/dist/_chunks/App-C0IDjiqN.mjs +0 -30
  36. package/dist/_chunks/App-C0IDjiqN.mjs.map +0 -1
  37. package/dist/_chunks/App-C46-I109.mjs +0 -29
  38. package/dist/_chunks/App-C46-I109.mjs.map +0 -1
  39. package/dist/_chunks/App-CFbMml4i.js +0 -29
  40. package/dist/_chunks/App-CFbMml4i.js.map +0 -1
  41. package/dist/_chunks/App-CPej22xb.js.map +0 -1
  42. package/dist/_chunks/App-CTT2mCMu.js +0 -24
  43. package/dist/_chunks/App-CTT2mCMu.js.map +0 -1
  44. package/dist/_chunks/App-CZ5Z2mZv.js +0 -29
  45. package/dist/_chunks/App-CZ5Z2mZv.js.map +0 -1
  46. package/dist/_chunks/App-C_Lp3V5-.js +0 -27
  47. package/dist/_chunks/App-C_Lp3V5-.js.map +0 -1
  48. package/dist/_chunks/App-CcbyKFnF.js +0 -55
  49. package/dist/_chunks/App-CcbyKFnF.js.map +0 -1
  50. package/dist/_chunks/App-CjOu4m5M.mjs +0 -29
  51. package/dist/_chunks/App-CjOu4m5M.mjs.map +0 -1
  52. package/dist/_chunks/App-CkT0fH8s.mjs +0 -29
  53. package/dist/_chunks/App-CkT0fH8s.mjs.map +0 -1
  54. package/dist/_chunks/App-CmRg9S2z.mjs +0 -29
  55. package/dist/_chunks/App-CmRg9S2z.mjs.map +0 -1
  56. package/dist/_chunks/App-D0rBJ7iM.mjs +0 -30
  57. package/dist/_chunks/App-D0rBJ7iM.mjs.map +0 -1
  58. package/dist/_chunks/App-D92R87Zh.js +0 -29
  59. package/dist/_chunks/App-D92R87Zh.js.map +0 -1
  60. package/dist/_chunks/App-DA1KtZxY.js +0 -29
  61. package/dist/_chunks/App-DC64hBpD.js +0 -29
  62. package/dist/_chunks/App-DC64hBpD.js.map +0 -1
  63. package/dist/_chunks/App-DHKoqr97.mjs +0 -29
  64. package/dist/_chunks/App-DHKoqr97.mjs.map +0 -1
  65. package/dist/_chunks/App-D_uRLQKm.js +0 -30
  66. package/dist/_chunks/App-D_uRLQKm.js.map +0 -1
  67. package/dist/_chunks/App-Dwg3aLMa.mjs +0 -55
  68. package/dist/_chunks/App-Dwg3aLMa.mjs.map +0 -1
  69. package/dist/_chunks/App-DzHKWBmE.mjs +0 -30
  70. package/dist/_chunks/App-DzHKWBmE.mjs.map +0 -1
  71. package/dist/_chunks/App-OuT3TTVJ.mjs +0 -29
  72. package/dist/_chunks/App-OuT3TTVJ.mjs.map +0 -1
  73. package/dist/_chunks/App-PNVuelEp.mjs +0 -24
  74. package/dist/_chunks/App-PNVuelEp.mjs.map +0 -1
  75. package/dist/_chunks/App-Sr50o70g.js +0 -29
  76. package/dist/_chunks/App-Sr50o70g.js.map +0 -1
  77. package/dist/_chunks/App-ot837BOf.js +0 -29
  78. package/dist/_chunks/App-ot837BOf.js.map +0 -1
  79. package/dist/_chunks/App-sSrt9hXQ.mjs +0 -29
  80. package/dist/_chunks/App-sSrt9hXQ.mjs.map +0 -1
  81. package/dist/_chunks/index--annyiFm.mjs +0 -168
  82. package/dist/_chunks/index--annyiFm.mjs.map +0 -1
  83. package/dist/_chunks/index-3mNRnzIR.mjs.map +0 -1
  84. package/dist/_chunks/index-B26su1ae.js +0 -168
  85. package/dist/_chunks/index-B26su1ae.js.map +0 -1
  86. package/dist/_chunks/index-B2sNP6GB.mjs +0 -168
  87. package/dist/_chunks/index-B2sNP6GB.mjs.map +0 -1
  88. package/dist/_chunks/index-BBddlEA1.js +0 -148
  89. package/dist/_chunks/index-BBddlEA1.js.map +0 -1
  90. package/dist/_chunks/index-BK0eSFgX.js +0 -167
  91. package/dist/_chunks/index-BK0eSFgX.js.map +0 -1
  92. package/dist/_chunks/index-BMLg_Xy6.mjs +0 -168
  93. package/dist/_chunks/index-BMLg_Xy6.mjs.map +0 -1
  94. package/dist/_chunks/index-BQ3z94rf.js +0 -167
  95. package/dist/_chunks/index-BQ3z94rf.js.map +0 -1
  96. package/dist/_chunks/index-BTLbR3Fz.js +0 -146
  97. package/dist/_chunks/index-BTLbR3Fz.js.map +0 -1
  98. package/dist/_chunks/index-Brdl3E9B.js +0 -167
  99. package/dist/_chunks/index-Brdl3E9B.js.map +0 -1
  100. package/dist/_chunks/index-C1E0XTLK.js +0 -167
  101. package/dist/_chunks/index-C1E0XTLK.js.map +0 -1
  102. package/dist/_chunks/index-CEANqesM.mjs +0 -149
  103. package/dist/_chunks/index-CEANqesM.mjs.map +0 -1
  104. package/dist/_chunks/index-CWUnKgbJ.mjs +0 -168
  105. package/dist/_chunks/index-CWUnKgbJ.mjs.map +0 -1
  106. package/dist/_chunks/index-CaLjngAz.js +0 -167
  107. package/dist/_chunks/index-CaLjngAz.js.map +0 -1
  108. package/dist/_chunks/index-CiKBF0JD.js +0 -167
  109. package/dist/_chunks/index-CiKBF0JD.js.map +0 -1
  110. package/dist/_chunks/index-Csbvj5yS.mjs +0 -168
  111. package/dist/_chunks/index-Csbvj5yS.mjs.map +0 -1
  112. package/dist/_chunks/index-CtQiBuW6.js +0 -167
  113. package/dist/_chunks/index-CtQiBuW6.js.map +0 -1
  114. package/dist/_chunks/index-D14Rwvah.js +0 -167
  115. package/dist/_chunks/index-D14Rwvah.js.map +0 -1
  116. package/dist/_chunks/index-D4gZr0dD.js +0 -167
  117. package/dist/_chunks/index-D4gZr0dD.js.map +0 -1
  118. package/dist/_chunks/index-DCBzOUS9.mjs +0 -168
  119. package/dist/_chunks/index-DCBzOUS9.mjs.map +0 -1
  120. package/dist/_chunks/index-DNiMaXXq.mjs +0 -168
  121. package/dist/_chunks/index-DNiMaXXq.mjs.map +0 -1
  122. package/dist/_chunks/index-DOggc2pQ.js +0 -167
  123. package/dist/_chunks/index-DOggc2pQ.js.map +0 -1
  124. package/dist/_chunks/index-DPb3j3vn.mjs +0 -168
  125. package/dist/_chunks/index-DPb3j3vn.mjs.map +0 -1
  126. package/dist/_chunks/index-DdzkeneF.js +0 -167
  127. package/dist/_chunks/index-DdzkeneF.js.map +0 -1
  128. package/dist/_chunks/index-DjIZwNv3.js +0 -167
  129. package/dist/_chunks/index-DjIZwNv3.js.map +0 -1
  130. package/dist/_chunks/index-Dkdi7LFi.mjs +0 -168
  131. package/dist/_chunks/index-Dkdi7LFi.mjs.map +0 -1
  132. package/dist/_chunks/index-Dtd5kXzE.js +0 -167
  133. package/dist/_chunks/index-Dtd5kXzE.js.map +0 -1
  134. package/dist/_chunks/index-HmV1XMES.mjs +0 -168
  135. package/dist/_chunks/index-HmV1XMES.mjs.map +0 -1
  136. package/dist/_chunks/index-MjmrX_qB.js.map +0 -1
  137. package/dist/_chunks/index-U0EJ6dJB.mjs +0 -147
  138. package/dist/_chunks/index-U0EJ6dJB.mjs.map +0 -1
  139. package/dist/_chunks/index-i2nteAHO.mjs +0 -168
  140. package/dist/_chunks/index-i2nteAHO.mjs.map +0 -1
  141. package/dist/_chunks/index-jZYmZUW8.mjs +0 -169
  142. package/dist/_chunks/index-jZYmZUW8.mjs.map +0 -1
  143. package/dist/_chunks/index-rOWNxR0l.mjs +0 -168
  144. package/dist/_chunks/index-rOWNxR0l.mjs.map +0 -1
  145. package/dist/_chunks/index-zpJzJYtP.mjs +0 -168
  146. package/dist/_chunks/index-zpJzJYtP.mjs.map +0 -1
@@ -1,168 +0,0 @@
1
- import { PuzzlePiece, Pencil, Trash, Globe } from "@strapi/icons";
2
- import { useRef, useEffect, useState } from "react";
3
- import { jsx, jsxs } from "react/jsx-runtime";
4
- import { Table, Thead, Tr, Th, Checkbox, Typography, VisuallyHidden, Tbody, Td, Flex, IconButton, Box } from "@strapi/design-system";
5
- import { useFetchClient } from "@strapi/strapi/admin";
6
- const __variableDynamicImportRuntimeHelper = (glob, path, segs) => {
7
- const v = glob[path];
8
- if (v) {
9
- return typeof v === "function" ? v() : Promise.resolve(v);
10
- }
11
- return new Promise((_, reject) => {
12
- (typeof queueMicrotask === "function" ? queueMicrotask : setTimeout)(
13
- reject.bind(
14
- null,
15
- new Error(
16
- "Unknown variable dynamic import: " + path + (path.split("/").length !== segs ? ". Note that variables only represent file names one level deep." : "")
17
- )
18
- )
19
- );
20
- });
21
- };
22
- const PLUGIN_ID = "octalens-mentions";
23
- const Initializer = ({ setPlugin }) => {
24
- const ref = useRef(setPlugin);
25
- useEffect(() => {
26
- ref.current(PLUGIN_ID);
27
- }, []);
28
- return null;
29
- };
30
- const PluginIcon = () => /* @__PURE__ */ jsx(PuzzlePiece, {});
31
- const BASE_PATH = "/octalens-mentions";
32
- const CONSTANTS = {
33
- routes: {
34
- MENTIONS_URL: BASE_PATH + "/mentions"
35
- }
36
- };
37
- function useMentions() {
38
- const { get } = useFetchClient();
39
- const [mentions, setMentions] = useState([]);
40
- const [loading, setLoading] = useState(true);
41
- const [error, setError] = useState(null);
42
- useEffect(() => {
43
- const fetchMentions = async () => {
44
- try {
45
- setLoading(true);
46
- setError(null);
47
- const { data } = await get(CONSTANTS.routes.MENTIONS_URL);
48
- const mentions2 = data?.data;
49
- setMentions(mentions2 || []);
50
- } catch (error2) {
51
- console.error("Error fetching mentions:", error2);
52
- setError(error2 instanceof Error ? error2 : new Error("Failed to fetch mentions"));
53
- } finally {
54
- setLoading(false);
55
- }
56
- };
57
- fetchMentions();
58
- }, [get]);
59
- return { mentions, loading, error };
60
- }
61
- const COL_COUNT = 7;
62
- function MentionsTable({ mentions }) {
63
- return /* @__PURE__ */ jsxs(Table, { colCount: COL_COUNT, rowCount: mentions.length, children: [
64
- /* @__PURE__ */ jsx(Thead, { children: /* @__PURE__ */ jsxs(Tr, { children: [
65
- /* @__PURE__ */ jsx(Th, { children: /* @__PURE__ */ jsx(Checkbox, { "aria-label": "Select all entries" }) }),
66
- /* @__PURE__ */ jsx(Th, { children: /* @__PURE__ */ jsx(Typography, { variant: "sigma", children: "Title" }) }),
67
- /* @__PURE__ */ jsx(Th, { children: /* @__PURE__ */ jsx(Typography, { variant: "sigma", children: "Source" }) }),
68
- /* @__PURE__ */ jsx(Th, { children: /* @__PURE__ */ jsx(Typography, { variant: "sigma", children: "Keyword" }) }),
69
- /* @__PURE__ */ jsx(Th, { children: /* @__PURE__ */ jsx(Typography, { variant: "sigma", children: "Relevance Score" }) }),
70
- /* @__PURE__ */ jsx(Th, { children: /* @__PURE__ */ jsx(Typography, { variant: "sigma", children: "Comment" }) }),
71
- /* @__PURE__ */ jsx(Th, { children: /* @__PURE__ */ jsx(VisuallyHidden, { children: "Actions" }) })
72
- ] }) }),
73
- /* @__PURE__ */ jsx(Tbody, { children: mentions.map((mention) => /* @__PURE__ */ jsxs(Tr, { children: [
74
- /* @__PURE__ */ jsx(Td, { children: /* @__PURE__ */ jsx(Checkbox, { "aria-label": `Select ${mention.title}` }) }),
75
- /* @__PURE__ */ jsx(Td, { children: /* @__PURE__ */ jsx(Typography, { textColor: "neutral800", fontWeight: "bold", children: mention.title || "Untitled" }) }),
76
- /* @__PURE__ */ jsx(Td, { children: /* @__PURE__ */ jsx(Typography, { textColor: "neutral800", children: mention.source }) }),
77
- /* @__PURE__ */ jsx(Td, { children: /* @__PURE__ */ jsx(Typography, { textColor: "neutral800", children: mention.keyword }) }),
78
- /* @__PURE__ */ jsx(Td, { children: /* @__PURE__ */ jsx(Typography, { textColor: "neutral800", children: mention.relevanceScore }) }),
79
- /* @__PURE__ */ jsx(Td, { children: /* @__PURE__ */ jsxs(Typography, { textColor: "neutral600", ellipsis: true, children: [
80
- mention.relevanceComment?.substring(0, 50),
81
- mention.relevanceComment?.length > 50 ? "..." : ""
82
- ] }) }),
83
- /* @__PURE__ */ jsx(Td, { children: /* @__PURE__ */ jsxs(Flex, { children: [
84
- /* @__PURE__ */ jsx(
85
- IconButton,
86
- {
87
- onClick: () => console.log("edit", mention.documentId),
88
- label: "Edit",
89
- borderWidth: 0,
90
- children: /* @__PURE__ */ jsx(Pencil, {})
91
- }
92
- ),
93
- /* @__PURE__ */ jsx(Box, { paddingLeft: 1, children: /* @__PURE__ */ jsx(
94
- IconButton,
95
- {
96
- onClick: () => console.log("delete", mention.documentId),
97
- label: "Delete",
98
- borderWidth: 0,
99
- children: /* @__PURE__ */ jsx(Trash, {})
100
- }
101
- ) })
102
- ] }) })
103
- ] }, mention.documentId)) })
104
- ] });
105
- }
106
- function MentionsWidget() {
107
- const { mentions, loading, error } = useMentions();
108
- if (loading) {
109
- return /* @__PURE__ */ jsx(Box, { padding: 4, children: /* @__PURE__ */ jsx(Typography, { children: "Loading mentions..." }) });
110
- }
111
- if (error) {
112
- return /* @__PURE__ */ jsx(Box, { padding: 4, children: /* @__PURE__ */ jsxs(Typography, { textColor: "danger600", children: [
113
- "Error: ",
114
- error.message
115
- ] }) });
116
- }
117
- return /* @__PURE__ */ jsx(Box, { padding: 4, children: /* @__PURE__ */ jsx(MentionsTable, { mentions }) });
118
- }
119
- const index = {
120
- register(app) {
121
- app.addMenuLink({
122
- to: `plugins/${PLUGIN_ID}`,
123
- icon: PluginIcon,
124
- intlLabel: {
125
- id: `${PLUGIN_ID}.plugin.name`,
126
- defaultMessage: PLUGIN_ID
127
- },
128
- Component: async () => {
129
- const { App } = await import("./App-B_sMYxju.mjs");
130
- return App;
131
- }
132
- });
133
- app.widgets.register({
134
- icon: Globe,
135
- title: {
136
- id: `${PLUGIN_ID}.mentions-widget.title`,
137
- defaultMessage: "Social Mentions"
138
- },
139
- component: () => Promise.resolve(MentionsWidget),
140
- pluginId: PLUGIN_ID,
141
- id: "mentions-widget"
142
- });
143
- app.registerPlugin({
144
- id: PLUGIN_ID,
145
- initializer: Initializer,
146
- isReady: false,
147
- name: PLUGIN_ID
148
- });
149
- },
150
- async registerTrads({ locales }) {
151
- return Promise.all(
152
- locales.map(async (locale) => {
153
- try {
154
- const { default: data } = await __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/en.json": () => import("./en-Byx4XI2L.mjs") }), `./translations/${locale}.json`, 3);
155
- return { data, locale };
156
- } catch {
157
- return { data: {}, locale };
158
- }
159
- })
160
- );
161
- }
162
- };
163
- export {
164
- MentionsTable as M,
165
- index as i,
166
- useMentions as u
167
- };
168
- //# sourceMappingURL=index--annyiFm.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index--annyiFm.mjs","sources":["../../admin/src/pluginId.ts","../../admin/src/components/Initializer.tsx","../../admin/src/components/PluginIcon.tsx","../../admin/src/constants.ts","../../admin/src/hooks/useMentions.ts","../../admin/src/components/MentionsTable/index.tsx","../../admin/src/components/MentionsWidget/index.tsx","../../admin/src/index.ts"],"sourcesContent":["export const PLUGIN_ID = 'octalens-mentions';\n","import { useEffect, useRef } from 'react';\n\nimport { PLUGIN_ID } from '../pluginId';\n\ntype InitializerProps = {\n setPlugin: (id: string) => void;\n};\n\nconst Initializer = ({ setPlugin }: InitializerProps) => {\n const ref = useRef(setPlugin);\n\n useEffect(() => {\n ref.current(PLUGIN_ID);\n }, []);\n\n return null;\n};\n\nexport { Initializer };\n","import { PuzzlePiece } from '@strapi/icons';\n\nconst PluginIcon = () => <PuzzlePiece />;\n\nexport { PluginIcon };\n","const BASE_PATH = '/octalens-mentions';\n\nexport const CONSTANTS = {\n routes: {\n MENTIONS_URL: BASE_PATH + '/mentions',\n },\n};\n","import { useEffect, useState } from 'react';\nimport { useFetchClient } from '@strapi/strapi/admin';\nimport type { IMention } from '../types';\nimport { CONSTANTS } from '../constants';\n\nexport function useMentions() {\n const { get } = useFetchClient();\n const [mentions, setMentions] = useState<IMention[]>([]);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n useEffect(() => {\n const fetchMentions = async () => {\n try {\n setLoading(true);\n setError(null);\n const { data } = await get(CONSTANTS.routes.MENTIONS_URL);\n const mentions = data?.data;\n setMentions(mentions || []);\n } catch (error) {\n console.error('Error fetching mentions:', error);\n setError(error instanceof Error ? error : new Error('Failed to fetch mentions'));\n } finally {\n setLoading(false);\n }\n };\n\n fetchMentions();\n }, [get]);\n\n return { mentions, loading, error };\n}\n","import {\n Table,\n Thead,\n Tbody,\n Tr,\n Td,\n Th,\n Typography,\n Checkbox,\n VisuallyHidden,\n Flex,\n Box,\n IconButton,\n} from '@strapi/design-system';\nimport { Pencil, Trash } from '@strapi/icons';\nimport type { IMention } from '../../types';\n\nconst COL_COUNT = 7;\n\ninterface MentionsTableProps {\n readonly mentions: IMention[];\n}\n\nexport function MentionsTable({ mentions }: MentionsTableProps) {\n return (\n <Table colCount={COL_COUNT} rowCount={mentions.length}>\n <Thead>\n <Tr>\n <Th>\n <Checkbox aria-label=\"Select all entries\" />\n </Th>\n <Th>\n <Typography variant=\"sigma\">Title</Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\">Source</Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\">Keyword</Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\">Relevance Score</Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\">Comment</Typography>\n </Th>\n <Th>\n <VisuallyHidden>Actions</VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n <Tbody>\n {mentions.map((mention) => (\n <Tr key={mention.documentId}>\n <Td>\n <Checkbox aria-label={`Select ${mention.title}`} />\n </Td>\n <Td>\n <Typography textColor=\"neutral800\" fontWeight=\"bold\">\n {mention.title || 'Untitled'}\n </Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">{mention.source}</Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">{mention.keyword}</Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">{mention.relevanceScore}</Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral600\" ellipsis>\n {mention.relevanceComment?.substring(0, 50)}\n {mention.relevanceComment?.length > 50 ? '...' : ''}\n </Typography>\n </Td>\n <Td>\n <Flex>\n <IconButton\n onClick={() => console.log('edit', mention.documentId)}\n label=\"Edit\"\n borderWidth={0}\n >\n <Pencil />\n </IconButton>\n <Box paddingLeft={1}>\n <IconButton\n onClick={() => console.log('delete', mention.documentId)}\n label=\"Delete\"\n borderWidth={0}\n >\n <Trash />\n </IconButton>\n </Box>\n </Flex>\n </Td>\n </Tr>\n ))}\n </Tbody>\n </Table>\n );\n}\n","import { Box, Typography } from '@strapi/design-system';\nimport { useMentions } from '../../hooks/useMentions';\nimport { MentionsTable } from '../MentionsTable';\n\nexport function MentionsWidget() {\n const { mentions, loading, error } = useMentions();\n\n if (loading) {\n return (\n <Box padding={4}>\n <Typography>Loading mentions...</Typography>\n </Box>\n );\n }\n\n if (error) {\n return (\n <Box padding={4}>\n <Typography textColor=\"danger600\">Error: {error.message}</Typography>\n </Box>\n );\n }\n\n return (\n <Box padding={4}>\n <MentionsTable mentions={mentions} />\n </Box>\n );\n}\n","import { Globe } from \"@strapi/icons\";\n\nimport { PLUGIN_ID } from './pluginId';\nimport { Initializer } from './components/Initializer';\nimport { PluginIcon } from './components/PluginIcon';\nimport { MentionsWidget } from \"./components/MentionsWidget\";\n\nexport default {\n register(app: any) {\n app.addMenuLink({\n to: `plugins/${PLUGIN_ID}`,\n icon: PluginIcon,\n intlLabel: {\n id: `${PLUGIN_ID}.plugin.name`,\n defaultMessage: PLUGIN_ID,\n },\n Component: async () => {\n const { App } = await import('./pages/App');\n\n return App;\n },\n });\n\n app.widgets.register({\n icon: Globe,\n title: {\n id: `${PLUGIN_ID}.mentions-widget.title`,\n defaultMessage: \"Social Mentions\"\n },\n component: () => Promise.resolve(MentionsWidget),\n pluginId: PLUGIN_ID,\n id: \"mentions-widget\"\n })\n\n app.registerPlugin({\n id: PLUGIN_ID,\n initializer: Initializer,\n isReady: false,\n name: PLUGIN_ID,\n });\n\n },\n\n async registerTrads({ locales }: { locales: string[] }) {\n return Promise.all(\n locales.map(async (locale) => {\n try {\n const { default: data } = await import(`./translations/${locale}.json`);\n\n return { data, locale };\n } catch {\n return { data: {}, locale };\n }\n })\n );\n },\n};\n"],"names":["mentions","error"],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-3mNRnzIR.mjs","sources":["../../admin/src/pluginId.ts","../../admin/src/components/Initializer.tsx","../../admin/src/components/PluginIcon.tsx","../../admin/src/constants.ts","../../admin/src/hooks/useMentions.ts","../../admin/src/components/MentionsTable/index.tsx","../../admin/src/components/MentionsWidget/index.tsx","../../admin/src/index.ts"],"sourcesContent":["export const PLUGIN_ID = 'octalens-mentions';\n","import { useEffect, useRef } from 'react';\n\nimport { PLUGIN_ID } from '../pluginId';\n\ntype InitializerProps = {\n setPlugin: (id: string) => void;\n};\n\nconst Initializer = ({ setPlugin }: InitializerProps) => {\n const ref = useRef(setPlugin);\n\n useEffect(() => {\n ref.current(PLUGIN_ID);\n }, []);\n\n return null;\n};\n\nexport { Initializer };\n","import { Globe } from '@strapi/icons';\n\nconst PluginIcon = () => <Globe />;\n\nexport { PluginIcon };\n","const BASE_PATH = '/octalens-mentions';\n\nexport const CONSTANTS = {\n routes: {\n MENTIONS_URL: BASE_PATH + '/mentions',\n },\n};\n","import { useEffect, useState } from 'react';\nimport { useFetchClient } from '@strapi/strapi/admin';\nimport type { IMention } from '../types';\nimport { CONSTANTS } from '../constants';\n\nexport function useMentions() {\n const { get } = useFetchClient();\n const [mentions, setMentions] = useState<IMention[]>([]);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n useEffect(() => {\n const fetchMentions = async () => {\n try {\n setLoading(true);\n setError(null);\n const { data } = await get(CONSTANTS.routes.MENTIONS_URL);\n const mentions = data?.data;\n setMentions(mentions || []);\n } catch (error) {\n console.error('Error fetching mentions:', error);\n setError(error instanceof Error ? error : new Error('Failed to fetch mentions'));\n } finally {\n setLoading(false);\n }\n };\n\n fetchMentions();\n }, [get]);\n\n return { mentions, loading, error };\n}\n","import {\n Table,\n Thead,\n Tbody,\n Tr,\n Td,\n Th,\n Typography,\n Checkbox,\n VisuallyHidden,\n Flex,\n Box,\n IconButton,\n} from '@strapi/design-system';\nimport { Pencil, Trash } from '@strapi/icons';\nimport type { IMention } from '../../types';\n\nconst COL_COUNT = 7;\n\ninterface MentionsTableProps {\n readonly mentions: IMention[];\n}\n\nexport function MentionsTable({ mentions }: MentionsTableProps) {\n return (\n <Table colCount={COL_COUNT} rowCount={mentions.length}>\n <Thead>\n <Tr>\n <Th>\n <Checkbox aria-label=\"Select all entries\" />\n </Th>\n <Th>\n <Typography variant=\"sigma\">Title</Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\">Source</Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\">Keyword</Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\">Relevance Score</Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\">Comment</Typography>\n </Th>\n <Th>\n <VisuallyHidden>Actions</VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n <Tbody>\n {mentions.map((mention) => (\n <Tr key={mention.documentId}>\n <Td>\n <Checkbox aria-label={`Select ${mention.title}`} />\n </Td>\n <Td>\n <Typography textColor=\"neutral800\" fontWeight=\"bold\">\n {mention.title || 'Untitled'}\n </Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">{mention.source}</Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">{mention.keyword}</Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">{mention.relevanceScore}</Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral600\" ellipsis>\n {mention.relevanceComment?.substring(0, 50)}\n {mention.relevanceComment?.length > 50 ? '...' : ''}\n </Typography>\n </Td>\n <Td>\n <Flex>\n <IconButton\n onClick={() => console.log('edit', mention.documentId)}\n label=\"Edit\"\n borderWidth={0}\n >\n <Pencil />\n </IconButton>\n <Box paddingLeft={1}>\n <IconButton\n onClick={() => console.log('delete', mention.documentId)}\n label=\"Delete\"\n borderWidth={0}\n >\n <Trash />\n </IconButton>\n </Box>\n </Flex>\n </Td>\n </Tr>\n ))}\n </Tbody>\n </Table>\n );\n}\n","import { Box, Typography } from '@strapi/design-system';\nimport { useMentions } from '../../hooks/useMentions';\nimport { MentionsTable } from '../MentionsTable';\n\nexport function MentionsWidget() {\n const { mentions, loading, error } = useMentions();\n\n if (loading) {\n return (\n <Box padding={4}>\n <Typography>Loading mentions...</Typography>\n </Box>\n );\n }\n\n if (error) {\n return (\n <Box padding={4}>\n <Typography textColor=\"danger600\">Error: {error.message}</Typography>\n </Box>\n );\n }\n\n return (\n <Box padding={4}>\n <MentionsTable mentions={mentions} />\n </Box>\n );\n}\n","import { Globe } from \"@strapi/icons\";\n\nimport { PLUGIN_ID } from './pluginId';\nimport { Initializer } from './components/Initializer';\nimport { PluginIcon } from './components/PluginIcon';\nimport { MentionsWidget } from \"./components/MentionsWidget\";\n\nexport default {\n register(app: any) {\n app.addMenuLink({\n to: `plugins/${PLUGIN_ID}`,\n icon: PluginIcon,\n intlLabel: {\n id: `${PLUGIN_ID}.plugin.name`,\n defaultMessage: PLUGIN_ID,\n },\n Component: async () => {\n const { App } = await import('./pages/App');\n\n return App;\n },\n });\n\n app.widgets.register({\n icon: Globe,\n title: {\n id: `${PLUGIN_ID}.mentions-widget.title`,\n defaultMessage: \"Social Mentions\"\n },\n component: () => Promise.resolve(MentionsWidget),\n pluginId: PLUGIN_ID,\n id: \"mentions-widget\"\n })\n\n app.registerPlugin({\n id: PLUGIN_ID,\n initializer: Initializer,\n isReady: false,\n name: PLUGIN_ID,\n });\n\n },\n\n async registerTrads({ locales }: { locales: string[] }) {\n return Promise.all(\n locales.map(async (locale) => {\n try {\n const { default: data } = await import(`./translations/${locale}.json`);\n\n return { data, locale };\n } catch {\n return { data: {}, locale };\n }\n })\n );\n },\n};\n"],"names":["mentions","error"],"mappings":"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"}
@@ -1,168 +0,0 @@
1
- "use strict";
2
- const icons = require("@strapi/icons");
3
- const react = require("react");
4
- const jsxRuntime = require("react/jsx-runtime");
5
- const designSystem = require("@strapi/design-system");
6
- const admin = require("@strapi/strapi/admin");
7
- const __variableDynamicImportRuntimeHelper = (glob, path, segs) => {
8
- const v = glob[path];
9
- if (v) {
10
- return typeof v === "function" ? v() : Promise.resolve(v);
11
- }
12
- return new Promise((_, reject) => {
13
- (typeof queueMicrotask === "function" ? queueMicrotask : setTimeout)(
14
- reject.bind(
15
- null,
16
- new Error(
17
- "Unknown variable dynamic import: " + path + (path.split("/").length !== segs ? ". Note that variables only represent file names one level deep." : "")
18
- )
19
- )
20
- );
21
- });
22
- };
23
- const PLUGIN_ID = "octalens-mentions";
24
- const Initializer = ({ setPlugin }) => {
25
- const ref = react.useRef(setPlugin);
26
- react.useEffect(() => {
27
- ref.current(PLUGIN_ID);
28
- }, []);
29
- return null;
30
- };
31
- const PluginIcon = () => /* @__PURE__ */ jsxRuntime.jsx(icons.PuzzlePiece, {});
32
- const BASE_PATH = "/octalens-mentions";
33
- const CONSTANTS = {
34
- routes: {
35
- MENTIONS_URL: BASE_PATH + "/mentions"
36
- }
37
- };
38
- function useMentions() {
39
- const { get } = admin.useFetchClient();
40
- const [mentions, setMentions] = react.useState([]);
41
- const [loading, setLoading] = react.useState(true);
42
- const [error, setError] = react.useState(null);
43
- react.useEffect(() => {
44
- const fetchMentions = async () => {
45
- try {
46
- setLoading(true);
47
- setError(null);
48
- const { data } = await get(CONSTANTS.routes.MENTIONS_URL);
49
- const mentions2 = data?.data;
50
- setMentions(mentions2 || []);
51
- } catch (error2) {
52
- console.error("Error fetching mentions:", error2);
53
- setError(error2 instanceof Error ? error2 : new Error("Failed to fetch mentions"));
54
- } finally {
55
- setLoading(false);
56
- }
57
- };
58
- fetchMentions();
59
- }, [get]);
60
- return { mentions, loading, error };
61
- }
62
- const COL_COUNT = 7;
63
- function MentionsTable({ mentions }) {
64
- return /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Table, { colCount: COL_COUNT, rowCount: mentions.length, children: [
65
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Thead, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Tr, { children: [
66
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Th, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Checkbox, { "aria-label": "Select all entries" }) }),
67
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Th, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "sigma", children: "Title" }) }),
68
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Th, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "sigma", children: "Source" }) }),
69
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Th, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "sigma", children: "Keyword" }) }),
70
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Th, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "sigma", children: "Relevance Score" }) }),
71
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Th, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "sigma", children: "Comment" }) }),
72
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Th, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.VisuallyHidden, { children: "Actions" }) })
73
- ] }) }),
74
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Tbody, { children: mentions.map((mention) => /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Tr, { children: [
75
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Checkbox, { "aria-label": `Select ${mention.title}` }) }),
76
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "neutral800", fontWeight: "bold", children: mention.title || "Untitled" }) }),
77
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "neutral800", children: mention.source }) }),
78
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "neutral800", children: mention.keyword }) }),
79
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { textColor: "neutral800", children: mention.relevanceScore }) }),
80
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Typography, { textColor: "neutral600", ellipsis: true, children: [
81
- mention.relevanceComment?.substring(0, 50),
82
- mention.relevanceComment?.length > 50 ? "..." : ""
83
- ] }) }),
84
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Td, { children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { children: [
85
- /* @__PURE__ */ jsxRuntime.jsx(
86
- designSystem.IconButton,
87
- {
88
- onClick: () => console.log("edit", mention.documentId),
89
- label: "Edit",
90
- borderWidth: 0,
91
- children: /* @__PURE__ */ jsxRuntime.jsx(icons.Pencil, {})
92
- }
93
- ),
94
- /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { paddingLeft: 1, children: /* @__PURE__ */ jsxRuntime.jsx(
95
- designSystem.IconButton,
96
- {
97
- onClick: () => console.log("delete", mention.documentId),
98
- label: "Delete",
99
- borderWidth: 0,
100
- children: /* @__PURE__ */ jsxRuntime.jsx(icons.Trash, {})
101
- }
102
- ) })
103
- ] }) })
104
- ] }, mention.documentId)) })
105
- ] });
106
- }
107
- function MentionsWidget() {
108
- const { mentions, loading, error } = useMentions();
109
- if (loading) {
110
- return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { padding: 4, children: /* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { children: "Loading mentions..." }) });
111
- }
112
- if (error) {
113
- return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { padding: 4, children: /* @__PURE__ */ jsxRuntime.jsxs(designSystem.Typography, { textColor: "danger600", children: [
114
- "Error: ",
115
- error.message
116
- ] }) });
117
- }
118
- return /* @__PURE__ */ jsxRuntime.jsx(designSystem.Box, { padding: 4, children: /* @__PURE__ */ jsxRuntime.jsx(MentionsTable, { mentions }) });
119
- }
120
- const index = {
121
- register(app) {
122
- app.addMenuLink({
123
- to: `plugins/${PLUGIN_ID}`,
124
- icon: PluginIcon,
125
- intlLabel: {
126
- id: `${PLUGIN_ID}.plugin.name`,
127
- defaultMessage: PLUGIN_ID
128
- },
129
- Component: async () => {
130
- const { App } = await Promise.resolve().then(() => require("./App-Bdin-Qhb.js"));
131
- return App;
132
- }
133
- });
134
- app.widgets.register({
135
- icon: icons.Globe,
136
- title: {
137
- id: `${PLUGIN_ID}.mentions-widget.title`,
138
- defaultMessage: "Social Mentions"
139
- },
140
- component: () => Promise.resolve(MentionsWidget),
141
- pluginId: PLUGIN_ID,
142
- id: "mentions-widget"
143
- });
144
- app.registerPlugin({
145
- id: PLUGIN_ID,
146
- initializer: Initializer,
147
- isReady: false,
148
- name: PLUGIN_ID
149
- });
150
- },
151
- async registerTrads({ locales }) {
152
- return Promise.all(
153
- locales.map(async (locale) => {
154
- try {
155
- const { default: data } = await __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/en.json": () => Promise.resolve().then(() => require("./en-B4KWt_jN.js")) }), `./translations/${locale}.json`, 3);
156
- return { data, locale };
157
- } catch {
158
- return { data: {}, locale };
159
- }
160
- })
161
- );
162
- }
163
- };
164
- exports.MentionsTable = MentionsTable;
165
- exports.PLUGIN_ID = PLUGIN_ID;
166
- exports.index = index;
167
- exports.useMentions = useMentions;
168
- //# sourceMappingURL=index-B26su1ae.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-B26su1ae.js","sources":["../../admin/src/pluginId.ts","../../admin/src/components/Initializer.tsx","../../admin/src/components/PluginIcon.tsx","../../admin/src/constants.ts","../../admin/src/hooks/useMentions.ts","../../admin/src/components/MentionsTable/index.tsx","../../admin/src/components/MentionsWidget/index.tsx","../../admin/src/index.ts"],"sourcesContent":["export const PLUGIN_ID = 'octalens-mentions';\n","import { useEffect, useRef } from 'react';\n\nimport { PLUGIN_ID } from '../pluginId';\n\ntype InitializerProps = {\n setPlugin: (id: string) => void;\n};\n\nconst Initializer = ({ setPlugin }: InitializerProps) => {\n const ref = useRef(setPlugin);\n\n useEffect(() => {\n ref.current(PLUGIN_ID);\n }, []);\n\n return null;\n};\n\nexport { Initializer };\n","import { PuzzlePiece } from '@strapi/icons';\n\nconst PluginIcon = () => <PuzzlePiece />;\n\nexport { PluginIcon };\n","const BASE_PATH = '/octalens-mentions';\n\nexport const CONSTANTS = {\n routes: {\n MENTIONS_URL: BASE_PATH + '/mentions',\n },\n};\n","import { useEffect, useState } from 'react';\nimport { useFetchClient } from '@strapi/strapi/admin';\nimport type { IMention } from '../types';\nimport { CONSTANTS } from '../constants';\n\nexport function useMentions() {\n const { get } = useFetchClient();\n const [mentions, setMentions] = useState<IMention[]>([]);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n useEffect(() => {\n const fetchMentions = async () => {\n try {\n setLoading(true);\n setError(null);\n const { data } = await get(CONSTANTS.routes.MENTIONS_URL);\n const mentions = data?.data;\n setMentions(mentions || []);\n } catch (error) {\n console.error('Error fetching mentions:', error);\n setError(error instanceof Error ? error : new Error('Failed to fetch mentions'));\n } finally {\n setLoading(false);\n }\n };\n\n fetchMentions();\n }, [get]);\n\n return { mentions, loading, error };\n}\n","import {\n Table,\n Thead,\n Tbody,\n Tr,\n Td,\n Th,\n Typography,\n Checkbox,\n VisuallyHidden,\n Flex,\n Box,\n IconButton,\n} from '@strapi/design-system';\nimport { Pencil, Trash } from '@strapi/icons';\nimport type { IMention } from '../../types';\n\nconst COL_COUNT = 7;\n\ninterface MentionsTableProps {\n readonly mentions: IMention[];\n}\n\nexport function MentionsTable({ mentions }: MentionsTableProps) {\n return (\n <Table colCount={COL_COUNT} rowCount={mentions.length}>\n <Thead>\n <Tr>\n <Th>\n <Checkbox aria-label=\"Select all entries\" />\n </Th>\n <Th>\n <Typography variant=\"sigma\">Title</Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\">Source</Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\">Keyword</Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\">Relevance Score</Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\">Comment</Typography>\n </Th>\n <Th>\n <VisuallyHidden>Actions</VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n <Tbody>\n {mentions.map((mention) => (\n <Tr key={mention.documentId}>\n <Td>\n <Checkbox aria-label={`Select ${mention.title}`} />\n </Td>\n <Td>\n <Typography textColor=\"neutral800\" fontWeight=\"bold\">\n {mention.title || 'Untitled'}\n </Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">{mention.source}</Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">{mention.keyword}</Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">{mention.relevanceScore}</Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral600\" ellipsis>\n {mention.relevanceComment?.substring(0, 50)}\n {mention.relevanceComment?.length > 50 ? '...' : ''}\n </Typography>\n </Td>\n <Td>\n <Flex>\n <IconButton\n onClick={() => console.log('edit', mention.documentId)}\n label=\"Edit\"\n borderWidth={0}\n >\n <Pencil />\n </IconButton>\n <Box paddingLeft={1}>\n <IconButton\n onClick={() => console.log('delete', mention.documentId)}\n label=\"Delete\"\n borderWidth={0}\n >\n <Trash />\n </IconButton>\n </Box>\n </Flex>\n </Td>\n </Tr>\n ))}\n </Tbody>\n </Table>\n );\n}\n","import { Box, Typography } from '@strapi/design-system';\nimport { useMentions } from '../../hooks/useMentions';\nimport { MentionsTable } from '../MentionsTable';\n\nexport function MentionsWidget() {\n const { mentions, loading, error } = useMentions();\n\n if (loading) {\n return (\n <Box padding={4}>\n <Typography>Loading mentions...</Typography>\n </Box>\n );\n }\n\n if (error) {\n return (\n <Box padding={4}>\n <Typography textColor=\"danger600\">Error: {error.message}</Typography>\n </Box>\n );\n }\n\n return (\n <Box padding={4}>\n <MentionsTable mentions={mentions} />\n </Box>\n );\n}\n","import { Globe } from \"@strapi/icons\";\n\nimport { PLUGIN_ID } from './pluginId';\nimport { Initializer } from './components/Initializer';\nimport { PluginIcon } from './components/PluginIcon';\nimport { MentionsWidget } from \"./components/MentionsWidget\";\n\nexport default {\n register(app: any) {\n app.addMenuLink({\n to: `plugins/${PLUGIN_ID}`,\n icon: PluginIcon,\n intlLabel: {\n id: `${PLUGIN_ID}.plugin.name`,\n defaultMessage: PLUGIN_ID,\n },\n Component: async () => {\n const { App } = await import('./pages/App');\n\n return App;\n },\n });\n\n app.widgets.register({\n icon: Globe,\n title: {\n id: `${PLUGIN_ID}.mentions-widget.title`,\n defaultMessage: \"Social Mentions\"\n },\n component: () => Promise.resolve(MentionsWidget),\n pluginId: PLUGIN_ID,\n id: \"mentions-widget\"\n })\n\n app.registerPlugin({\n id: PLUGIN_ID,\n initializer: Initializer,\n isReady: false,\n name: PLUGIN_ID,\n });\n\n },\n\n async registerTrads({ locales }: { locales: string[] }) {\n return Promise.all(\n locales.map(async (locale) => {\n try {\n const { default: data } = await import(`./translations/${locale}.json`);\n\n return { data, locale };\n } catch {\n return { data: {}, locale };\n }\n })\n );\n },\n};\n"],"names":["useRef","useEffect","jsx","PuzzlePiece","useFetchClient","useState","mentions","error","Table","Thead","Tr","Th","Checkbox","Typography","VisuallyHidden","Tbody","Td","jsxs","Flex","IconButton","Pencil","Box","Trash","Globe"],"mappings":"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"}
@@ -1,168 +0,0 @@
1
- import { PuzzlePiece, Pencil, Trash, Globe } from "@strapi/icons";
2
- import { useRef, useEffect, useState } from "react";
3
- import { jsx, jsxs } from "react/jsx-runtime";
4
- import { Table, Thead, Tr, Th, Checkbox, Typography, VisuallyHidden, Tbody, Td, Flex, IconButton, Box } from "@strapi/design-system";
5
- import { useFetchClient } from "@strapi/strapi/admin";
6
- const __variableDynamicImportRuntimeHelper = (glob, path, segs) => {
7
- const v = glob[path];
8
- if (v) {
9
- return typeof v === "function" ? v() : Promise.resolve(v);
10
- }
11
- return new Promise((_, reject) => {
12
- (typeof queueMicrotask === "function" ? queueMicrotask : setTimeout)(
13
- reject.bind(
14
- null,
15
- new Error(
16
- "Unknown variable dynamic import: " + path + (path.split("/").length !== segs ? ". Note that variables only represent file names one level deep." : "")
17
- )
18
- )
19
- );
20
- });
21
- };
22
- const PLUGIN_ID = "octalens-mentions";
23
- const Initializer = ({ setPlugin }) => {
24
- const ref = useRef(setPlugin);
25
- useEffect(() => {
26
- ref.current(PLUGIN_ID);
27
- }, []);
28
- return null;
29
- };
30
- const PluginIcon = () => /* @__PURE__ */ jsx(PuzzlePiece, {});
31
- const BASE_PATH = "/octalens-mentions";
32
- const CONSTANTS = {
33
- routes: {
34
- MENTIONS_URL: BASE_PATH + "/mentions"
35
- }
36
- };
37
- function useMentions() {
38
- const { get } = useFetchClient();
39
- const [mentions, setMentions] = useState([]);
40
- const [loading, setLoading] = useState(true);
41
- const [error, setError] = useState(null);
42
- useEffect(() => {
43
- const fetchMentions = async () => {
44
- try {
45
- setLoading(true);
46
- setError(null);
47
- const { data } = await get(CONSTANTS.routes.MENTIONS_URL);
48
- const mentions2 = data?.data;
49
- setMentions(mentions2 || []);
50
- } catch (error2) {
51
- console.error("Error fetching mentions:", error2);
52
- setError(error2 instanceof Error ? error2 : new Error("Failed to fetch mentions"));
53
- } finally {
54
- setLoading(false);
55
- }
56
- };
57
- fetchMentions();
58
- }, [get]);
59
- return { mentions, loading, error };
60
- }
61
- const COL_COUNT = 7;
62
- function MentionsTable({ mentions }) {
63
- return /* @__PURE__ */ jsxs(Table, { colCount: COL_COUNT, rowCount: mentions.length, children: [
64
- /* @__PURE__ */ jsx(Thead, { children: /* @__PURE__ */ jsxs(Tr, { children: [
65
- /* @__PURE__ */ jsx(Th, { children: /* @__PURE__ */ jsx(Checkbox, { "aria-label": "Select all entries" }) }),
66
- /* @__PURE__ */ jsx(Th, { children: /* @__PURE__ */ jsx(Typography, { variant: "sigma", children: "Title" }) }),
67
- /* @__PURE__ */ jsx(Th, { children: /* @__PURE__ */ jsx(Typography, { variant: "sigma", children: "Source" }) }),
68
- /* @__PURE__ */ jsx(Th, { children: /* @__PURE__ */ jsx(Typography, { variant: "sigma", children: "Keyword" }) }),
69
- /* @__PURE__ */ jsx(Th, { children: /* @__PURE__ */ jsx(Typography, { variant: "sigma", children: "Relevance Score" }) }),
70
- /* @__PURE__ */ jsx(Th, { children: /* @__PURE__ */ jsx(Typography, { variant: "sigma", children: "Comment" }) }),
71
- /* @__PURE__ */ jsx(Th, { children: /* @__PURE__ */ jsx(VisuallyHidden, { children: "Actions" }) })
72
- ] }) }),
73
- /* @__PURE__ */ jsx(Tbody, { children: mentions.map((mention) => /* @__PURE__ */ jsxs(Tr, { children: [
74
- /* @__PURE__ */ jsx(Td, { children: /* @__PURE__ */ jsx(Checkbox, { "aria-label": `Select ${mention.title}` }) }),
75
- /* @__PURE__ */ jsx(Td, { children: /* @__PURE__ */ jsx(Typography, { textColor: "neutral800", fontWeight: "bold", children: mention.title || "Untitled" }) }),
76
- /* @__PURE__ */ jsx(Td, { children: /* @__PURE__ */ jsx(Typography, { textColor: "neutral800", children: mention.source }) }),
77
- /* @__PURE__ */ jsx(Td, { children: /* @__PURE__ */ jsx(Typography, { textColor: "neutral800", children: mention.keyword }) }),
78
- /* @__PURE__ */ jsx(Td, { children: /* @__PURE__ */ jsx(Typography, { textColor: "neutral800", children: mention.relevanceScore }) }),
79
- /* @__PURE__ */ jsx(Td, { children: /* @__PURE__ */ jsxs(Typography, { textColor: "neutral600", ellipsis: true, children: [
80
- mention.relevanceComment?.substring(0, 50),
81
- mention.relevanceComment?.length > 50 ? "..." : ""
82
- ] }) }),
83
- /* @__PURE__ */ jsx(Td, { children: /* @__PURE__ */ jsxs(Flex, { children: [
84
- /* @__PURE__ */ jsx(
85
- IconButton,
86
- {
87
- onClick: () => console.log("edit", mention.documentId),
88
- label: "Edit",
89
- borderWidth: 0,
90
- children: /* @__PURE__ */ jsx(Pencil, {})
91
- }
92
- ),
93
- /* @__PURE__ */ jsx(Box, { paddingLeft: 1, children: /* @__PURE__ */ jsx(
94
- IconButton,
95
- {
96
- onClick: () => console.log("delete", mention.documentId),
97
- label: "Delete",
98
- borderWidth: 0,
99
- children: /* @__PURE__ */ jsx(Trash, {})
100
- }
101
- ) })
102
- ] }) })
103
- ] }, mention.documentId)) })
104
- ] });
105
- }
106
- function MentionsWidget() {
107
- const { mentions, loading, error } = useMentions();
108
- if (loading) {
109
- return /* @__PURE__ */ jsx(Box, { padding: 4, children: /* @__PURE__ */ jsx(Typography, { children: "Loading mentions..." }) });
110
- }
111
- if (error) {
112
- return /* @__PURE__ */ jsx(Box, { padding: 4, children: /* @__PURE__ */ jsxs(Typography, { textColor: "danger600", children: [
113
- "Error: ",
114
- error.message
115
- ] }) });
116
- }
117
- return /* @__PURE__ */ jsx(Box, { padding: 4, children: /* @__PURE__ */ jsx(MentionsTable, { mentions }) });
118
- }
119
- const index = {
120
- register(app) {
121
- app.addMenuLink({
122
- to: `plugins/${PLUGIN_ID}`,
123
- icon: PluginIcon,
124
- intlLabel: {
125
- id: `${PLUGIN_ID}.plugin.name`,
126
- defaultMessage: PLUGIN_ID
127
- },
128
- Component: async () => {
129
- const { App } = await import("./App-BAfec0ux.mjs");
130
- return App;
131
- }
132
- });
133
- app.widgets.register({
134
- icon: Globe,
135
- title: {
136
- id: `${PLUGIN_ID}.mentions-widget.title`,
137
- defaultMessage: "Social Mentions"
138
- },
139
- component: () => Promise.resolve(MentionsWidget),
140
- pluginId: PLUGIN_ID,
141
- id: "mentions-widget"
142
- });
143
- app.registerPlugin({
144
- id: PLUGIN_ID,
145
- initializer: Initializer,
146
- isReady: false,
147
- name: PLUGIN_ID
148
- });
149
- },
150
- async registerTrads({ locales }) {
151
- return Promise.all(
152
- locales.map(async (locale) => {
153
- try {
154
- const { default: data } = await __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/en.json": () => import("./en-Byx4XI2L.mjs") }), `./translations/${locale}.json`, 3);
155
- return { data, locale };
156
- } catch {
157
- return { data: {}, locale };
158
- }
159
- })
160
- );
161
- }
162
- };
163
- export {
164
- MentionsTable as M,
165
- index as i,
166
- useMentions as u
167
- };
168
- //# sourceMappingURL=index-B2sNP6GB.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-B2sNP6GB.mjs","sources":["../../admin/src/pluginId.ts","../../admin/src/components/Initializer.tsx","../../admin/src/components/PluginIcon.tsx","../../admin/src/constants.ts","../../admin/src/hooks/useMentions.ts","../../admin/src/components/MentionsTable/index.tsx","../../admin/src/components/MentionsWidget/index.tsx","../../admin/src/index.ts"],"sourcesContent":["export const PLUGIN_ID = 'octalens-mentions';\n","import { useEffect, useRef } from 'react';\n\nimport { PLUGIN_ID } from '../pluginId';\n\ntype InitializerProps = {\n setPlugin: (id: string) => void;\n};\n\nconst Initializer = ({ setPlugin }: InitializerProps) => {\n const ref = useRef(setPlugin);\n\n useEffect(() => {\n ref.current(PLUGIN_ID);\n }, []);\n\n return null;\n};\n\nexport { Initializer };\n","import { PuzzlePiece } from '@strapi/icons';\n\nconst PluginIcon = () => <PuzzlePiece />;\n\nexport { PluginIcon };\n","const BASE_PATH = '/octalens-mentions';\n\nexport const CONSTANTS = {\n routes: {\n MENTIONS_URL: BASE_PATH + '/mentions',\n },\n};\n","import { useEffect, useState } from 'react';\nimport { useFetchClient } from '@strapi/strapi/admin';\nimport type { IMention } from '../types';\nimport { CONSTANTS } from '../constants';\n\nexport function useMentions() {\n const { get } = useFetchClient();\n const [mentions, setMentions] = useState<IMention[]>([]);\n const [loading, setLoading] = useState(true);\n const [error, setError] = useState<Error | null>(null);\n\n useEffect(() => {\n const fetchMentions = async () => {\n try {\n setLoading(true);\n setError(null);\n const { data } = await get(CONSTANTS.routes.MENTIONS_URL);\n const mentions = data?.data;\n setMentions(mentions || []);\n } catch (error) {\n console.error('Error fetching mentions:', error);\n setError(error instanceof Error ? error : new Error('Failed to fetch mentions'));\n } finally {\n setLoading(false);\n }\n };\n\n fetchMentions();\n }, [get]);\n\n return { mentions, loading, error };\n}\n","import {\n Table,\n Thead,\n Tbody,\n Tr,\n Td,\n Th,\n Typography,\n Checkbox,\n VisuallyHidden,\n Flex,\n Box,\n IconButton,\n} from '@strapi/design-system';\nimport { Pencil, Trash } from '@strapi/icons';\nimport type { IMention } from '../../types';\n\nconst COL_COUNT = 7;\n\ninterface MentionsTableProps {\n readonly mentions: IMention[];\n}\n\nexport function MentionsTable({ mentions }: MentionsTableProps) {\n return (\n <Table colCount={COL_COUNT} rowCount={mentions.length}>\n <Thead>\n <Tr>\n <Th>\n <Checkbox aria-label=\"Select all entries\" />\n </Th>\n <Th>\n <Typography variant=\"sigma\">Title</Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\">Source</Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\">Keyword</Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\">Relevance Score</Typography>\n </Th>\n <Th>\n <Typography variant=\"sigma\">Comment</Typography>\n </Th>\n <Th>\n <VisuallyHidden>Actions</VisuallyHidden>\n </Th>\n </Tr>\n </Thead>\n <Tbody>\n {mentions.map((mention) => (\n <Tr key={mention.documentId}>\n <Td>\n <Checkbox aria-label={`Select ${mention.title}`} />\n </Td>\n <Td>\n <Typography textColor=\"neutral800\" fontWeight=\"bold\">\n {mention.title || 'Untitled'}\n </Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">{mention.source}</Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">{mention.keyword}</Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral800\">{mention.relevanceScore}</Typography>\n </Td>\n <Td>\n <Typography textColor=\"neutral600\" ellipsis>\n {mention.relevanceComment?.substring(0, 50)}\n {mention.relevanceComment?.length > 50 ? '...' : ''}\n </Typography>\n </Td>\n <Td>\n <Flex>\n <IconButton\n onClick={() => console.log('edit', mention.documentId)}\n label=\"Edit\"\n borderWidth={0}\n >\n <Pencil />\n </IconButton>\n <Box paddingLeft={1}>\n <IconButton\n onClick={() => console.log('delete', mention.documentId)}\n label=\"Delete\"\n borderWidth={0}\n >\n <Trash />\n </IconButton>\n </Box>\n </Flex>\n </Td>\n </Tr>\n ))}\n </Tbody>\n </Table>\n );\n}\n","import { Box, Typography } from '@strapi/design-system';\nimport { useMentions } from '../../hooks/useMentions';\nimport { MentionsTable } from '../MentionsTable';\n\nexport function MentionsWidget() {\n const { mentions, loading, error } = useMentions();\n\n if (loading) {\n return (\n <Box padding={4}>\n <Typography>Loading mentions...</Typography>\n </Box>\n );\n }\n\n if (error) {\n return (\n <Box padding={4}>\n <Typography textColor=\"danger600\">Error: {error.message}</Typography>\n </Box>\n );\n }\n\n return (\n <Box padding={4}>\n <MentionsTable mentions={mentions} />\n </Box>\n );\n}\n","import { Globe } from \"@strapi/icons\";\n\nimport { PLUGIN_ID } from './pluginId';\nimport { Initializer } from './components/Initializer';\nimport { PluginIcon } from './components/PluginIcon';\nimport { MentionsWidget } from \"./components/MentionsWidget\";\n\nexport default {\n register(app: any) {\n app.addMenuLink({\n to: `plugins/${PLUGIN_ID}`,\n icon: PluginIcon,\n intlLabel: {\n id: `${PLUGIN_ID}.plugin.name`,\n defaultMessage: PLUGIN_ID,\n },\n Component: async () => {\n const { App } = await import('./pages/App');\n\n return App;\n },\n });\n\n app.widgets.register({\n icon: Globe,\n title: {\n id: `${PLUGIN_ID}.mentions-widget.title`,\n defaultMessage: \"Social Mentions\"\n },\n component: () => Promise.resolve(MentionsWidget),\n pluginId: PLUGIN_ID,\n id: \"mentions-widget\"\n })\n\n app.registerPlugin({\n id: PLUGIN_ID,\n initializer: Initializer,\n isReady: false,\n name: PLUGIN_ID,\n });\n\n },\n\n async registerTrads({ locales }: { locales: string[] }) {\n return Promise.all(\n locales.map(async (locale) => {\n try {\n const { default: data } = await import(`./translations/${locale}.json`);\n\n return { data, locale };\n } catch {\n return { data: {}, locale };\n }\n })\n );\n },\n};\n"],"names":["mentions","error"],"mappings":"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"}