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,147 +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
- const COL_COUNT = 7;
38
- function MentionsTable({ mentions }) {
39
- return /* @__PURE__ */ jsxs(Table, { colCount: COL_COUNT, rowCount: mentions.length, children: [
40
- /* @__PURE__ */ jsx(Thead, { children: /* @__PURE__ */ jsxs(Tr, { children: [
41
- /* @__PURE__ */ jsx(Th, { children: /* @__PURE__ */ jsx(Checkbox, { "aria-label": "Select all entries" }) }),
42
- /* @__PURE__ */ jsx(Th, { children: /* @__PURE__ */ jsx(Typography, { variant: "sigma", children: "Title" }) }),
43
- /* @__PURE__ */ jsx(Th, { children: /* @__PURE__ */ jsx(Typography, { variant: "sigma", children: "Source" }) }),
44
- /* @__PURE__ */ jsx(Th, { children: /* @__PURE__ */ jsx(Typography, { variant: "sigma", children: "Keyword" }) }),
45
- /* @__PURE__ */ jsx(Th, { children: /* @__PURE__ */ jsx(Typography, { variant: "sigma", children: "Relevance Score" }) }),
46
- /* @__PURE__ */ jsx(Th, { children: /* @__PURE__ */ jsx(Typography, { variant: "sigma", children: "Comment" }) }),
47
- /* @__PURE__ */ jsx(Th, { children: /* @__PURE__ */ jsx(VisuallyHidden, { children: "Actions" }) })
48
- ] }) }),
49
- /* @__PURE__ */ jsx(Tbody, { children: mentions.map((mention) => /* @__PURE__ */ jsxs(Tr, { children: [
50
- /* @__PURE__ */ jsx(Td, { children: /* @__PURE__ */ jsx(Checkbox, { "aria-label": `Select ${mention.title}` }) }),
51
- /* @__PURE__ */ jsx(Td, { children: /* @__PURE__ */ jsx(Typography, { textColor: "neutral800", fontWeight: "bold", children: mention.title || "Untitled" }) }),
52
- /* @__PURE__ */ jsx(Td, { children: /* @__PURE__ */ jsx(Typography, { textColor: "neutral800", children: mention.source }) }),
53
- /* @__PURE__ */ jsx(Td, { children: /* @__PURE__ */ jsx(Typography, { textColor: "neutral800", children: mention.keyword }) }),
54
- /* @__PURE__ */ jsx(Td, { children: /* @__PURE__ */ jsx(Typography, { textColor: "neutral800", children: mention.relevanceScore }) }),
55
- /* @__PURE__ */ jsx(Td, { children: /* @__PURE__ */ jsxs(Typography, { textColor: "neutral600", ellipsis: true, children: [
56
- mention.relevanceComment?.substring(0, 50),
57
- mention.relevanceComment?.length > 50 ? "..." : ""
58
- ] }) }),
59
- /* @__PURE__ */ jsx(Td, { children: /* @__PURE__ */ jsxs(Flex, { children: [
60
- /* @__PURE__ */ jsx(
61
- IconButton,
62
- {
63
- onClick: () => console.log("edit", mention.documentId),
64
- label: "Edit",
65
- borderWidth: 0,
66
- children: /* @__PURE__ */ jsx(Pencil, {})
67
- }
68
- ),
69
- /* @__PURE__ */ jsx(Box, { paddingLeft: 1, children: /* @__PURE__ */ jsx(
70
- IconButton,
71
- {
72
- onClick: () => console.log("delete", mention.documentId),
73
- label: "Delete",
74
- borderWidth: 0,
75
- children: /* @__PURE__ */ jsx(Trash, {})
76
- }
77
- ) })
78
- ] }) })
79
- ] }, mention.documentId)) })
80
- ] });
81
- }
82
- function MentionsWidget() {
83
- const { get } = useFetchClient();
84
- const [mentions, setMentions] = useState([]);
85
- useEffect(() => {
86
- const fetchMentions = async () => {
87
- try {
88
- const { data } = await get(CONSTANTS.routes.MENTIONS_URL);
89
- const mentions2 = data?.data;
90
- setMentions(mentions2);
91
- } catch (error) {
92
- console.error("Error fetching mentions:", error);
93
- }
94
- };
95
- fetchMentions();
96
- }, [get]);
97
- return /* @__PURE__ */ jsx(Box, { padding: 4, children: /* @__PURE__ */ jsx(MentionsTable, { mentions }) });
98
- }
99
- const index = {
100
- register(app) {
101
- app.addMenuLink({
102
- to: `plugins/${PLUGIN_ID}`,
103
- icon: PluginIcon,
104
- intlLabel: {
105
- id: `${PLUGIN_ID}.plugin.name`,
106
- defaultMessage: PLUGIN_ID
107
- },
108
- Component: async () => {
109
- const { App } = await import("./App-PNVuelEp.mjs");
110
- return App;
111
- }
112
- });
113
- app.widgets.register({
114
- icon: Globe,
115
- title: {
116
- id: `${PLUGIN_ID}.mentions-widget.title`,
117
- defaultMessage: "Social Mentions"
118
- },
119
- component: () => Promise.resolve(MentionsWidget),
120
- pluginId: PLUGIN_ID,
121
- id: "mentions-widget"
122
- });
123
- app.registerPlugin({
124
- id: PLUGIN_ID,
125
- initializer: Initializer,
126
- isReady: false,
127
- name: PLUGIN_ID
128
- });
129
- },
130
- async registerTrads({ locales }) {
131
- return Promise.all(
132
- locales.map(async (locale) => {
133
- try {
134
- const { default: data } = await __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/en.json": () => import("./en-Byx4XI2L.mjs") }), `./translations/${locale}.json`, 3);
135
- return { data, locale };
136
- } catch {
137
- return { data: {}, locale };
138
- }
139
- })
140
- );
141
- }
142
- };
143
- export {
144
- PLUGIN_ID as P,
145
- index as i
146
- };
147
- //# sourceMappingURL=index-U0EJ6dJB.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-U0EJ6dJB.mjs","sources":["../../admin/src/pluginId.ts","../../admin/src/components/Initializer.tsx","../../admin/src/components/PluginIcon.tsx","../../admin/src/constants.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 {\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 { useEffect, useState } from 'react';\nimport { Box } from '@strapi/design-system';\nimport { useFetchClient } from '@strapi/strapi/admin';\nimport type { IMention } from '../../types';\nimport { CONSTANTS } from \"../../constants\";\nimport { MentionsTable } from '../MentionsTable';\n\nexport function MentionsWidget() {\n const { get } = useFetchClient();\n const [mentions, setMentions] = useState<IMention[]>([]);\n\n useEffect(() => {\n const fetchMentions = async () => {\n try {\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 }\n };\n\n fetchMentions();\n }, [get]);\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"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAAO,MAAM,YAAY;ACQzB,MAAM,cAAc,CAAC,EAAE,gBAAkC;AACvD,QAAM,MAAM,OAAO,SAAS;AAE5B,YAAU,MAAM;AACd,QAAI,QAAQ,SAAS;AAAA,EACvB,GAAG,CAAA,CAAE;AAEL,SAAO;AACT;ACdA,MAAM,aAAa,MAAM,oBAAC,aAAA,EAAY;ACFtC,MAAM,YAAY;AAEX,MAAM,YAAY;AAAA,EACvB,QAAQ;AAAA,IACN,cAAc,YAAY;AAAA,EAAA;AAE9B;ACWA,MAAM,YAAY;AAMX,SAAS,cAAc,EAAE,YAAgC;AAC9D,8BACG,OAAA,EAAM,UAAU,WAAW,UAAU,SAAS,QAC7C,UAAA;AAAA,IAAA,oBAAC,OAAA,EACC,+BAAC,IAAA,EACC,UAAA;AAAA,MAAA,oBAAC,IAAA,EACC,UAAA,oBAAC,UAAA,EAAS,cAAW,sBAAqB,GAC5C;AAAA,0BACC,IAAA,EACC,UAAA,oBAAC,cAAW,SAAQ,SAAQ,mBAAK,EAAA,CACnC;AAAA,0BACC,IAAA,EACC,UAAA,oBAAC,cAAW,SAAQ,SAAQ,oBAAM,EAAA,CACpC;AAAA,0BACC,IAAA,EACC,UAAA,oBAAC,cAAW,SAAQ,SAAQ,qBAAO,EAAA,CACrC;AAAA,0BACC,IAAA,EACC,UAAA,oBAAC,cAAW,SAAQ,SAAQ,6BAAe,EAAA,CAC7C;AAAA,0BACC,IAAA,EACC,UAAA,oBAAC,cAAW,SAAQ,SAAQ,qBAAO,EAAA,CACrC;AAAA,MACA,oBAAC,IAAA,EACC,UAAA,oBAAC,gBAAA,EAAe,qBAAO,EAAA,CACzB;AAAA,IAAA,EAAA,CACF,EAAA,CACF;AAAA,wBACC,OAAA,EACE,UAAA,SAAS,IAAI,CAAC,iCACZ,IAAA,EACC,UAAA;AAAA,MAAA,oBAAC,IAAA,EACC,8BAAC,UAAA,EAAS,cAAY,UAAU,QAAQ,KAAK,IAAI,EAAA,CACnD;AAAA,MACA,oBAAC,IAAA,EACC,UAAA,oBAAC,YAAA,EAAW,WAAU,cAAa,YAAW,QAC3C,UAAA,QAAQ,SAAS,WAAA,CACpB,GACF;AAAA,MACA,oBAAC,MACC,UAAA,oBAAC,YAAA,EAAW,WAAU,cAAc,UAAA,QAAQ,QAAO,EAAA,CACrD;AAAA,MACA,oBAAC,MACC,UAAA,oBAAC,YAAA,EAAW,WAAU,cAAc,UAAA,QAAQ,SAAQ,EAAA,CACtD;AAAA,MACA,oBAAC,MACC,UAAA,oBAAC,YAAA,EAAW,WAAU,cAAc,UAAA,QAAQ,gBAAe,EAAA,CAC7D;AAAA,0BACC,IAAA,EACC,UAAA,qBAAC,cAAW,WAAU,cAAa,UAAQ,MACxC,UAAA;AAAA,QAAA,QAAQ,kBAAkB,UAAU,GAAG,EAAE;AAAA,QACzC,QAAQ,kBAAkB,SAAS,KAAK,QAAQ;AAAA,MAAA,EAAA,CACnD,EAAA,CACF;AAAA,MACA,oBAAC,IAAA,EACC,UAAA,qBAAC,MAAA,EACC,UAAA;AAAA,QAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,SAAS,MAAM,QAAQ,IAAI,QAAQ,QAAQ,UAAU;AAAA,YACrD,OAAM;AAAA,YACN,aAAa;AAAA,YAEb,8BAAC,QAAA,CAAA,CAAO;AAAA,UAAA;AAAA,QAAA;AAAA,QAEV,oBAAC,KAAA,EAAI,aAAa,GAChB,UAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,SAAS,MAAM,QAAQ,IAAI,UAAU,QAAQ,UAAU;AAAA,YACvD,OAAM;AAAA,YACN,aAAa;AAAA,YAEb,8BAAC,OAAA,CAAA,CAAM;AAAA,UAAA;AAAA,QAAA,EACT,CACF;AAAA,MAAA,EAAA,CACF,EAAA,CACF;AAAA,IAAA,KA3CO,QAAQ,UA4CjB,CACD,EAAA,CACH;AAAA,EAAA,GACF;AAEJ;AC/FO,SAAS,iBAAiB;AAC/B,QAAM,EAAE,IAAA,IAAQ,eAAA;AAChB,QAAM,CAAC,UAAU,WAAW,IAAI,SAAqB,CAAA,CAAE;AAEvD,YAAU,MAAM;AACd,UAAM,gBAAgB,YAAY;AAChC,UAAI;AACF,cAAM,EAAE,KAAA,IAAS,MAAM,IAAI,UAAU,OAAO,YAAY;AACxD,cAAMA,YAAW,MAAM;AACvB,oBAAYA,SAAQ;AAAA,MACtB,SAAS,OAAO;AACd,gBAAQ,MAAM,4BAA4B,KAAK;AAAA,MACjD;AAAA,IACF;AAEA,kBAAA;AAAA,EACF,GAAG,CAAC,GAAG,CAAC;AAER,6BACG,KAAA,EAAI,SAAS,GACZ,UAAA,oBAAC,eAAA,EAAc,UAAoB,EAAA,CACrC;AAEJ;ACvBA,MAAA,QAAe;AAAA,EACb,SAAS,KAAU;AACjB,QAAI,YAAY;AAAA,MACd,IAAI,WAAW,SAAS;AAAA,MACxB,MAAM;AAAA,MACN,WAAW;AAAA,QACT,IAAI,GAAG,SAAS;AAAA,QAChB,gBAAgB;AAAA,MAAA;AAAA,MAElB,WAAW,YAAY;AACrB,cAAM,EAAE,IAAA,IAAQ,MAAM,OAAO,oBAAa;AAE1C,eAAO;AAAA,MACT;AAAA,IAAA,CACD;AAED,QAAI,QAAQ,SAAS;AAAA,MACnB,MAAM;AAAA,MACN,OAAO;AAAA,QACL,IAAI,GAAG,SAAS;AAAA,QAChB,gBAAgB;AAAA,MAAA;AAAA,MAElB,WAAW,MAAM,QAAQ,QAAQ,cAAc;AAAA,MAC/C,UAAU;AAAA,MACV,IAAI;AAAA,IAAA,CACL;AAED,QAAI,eAAe;AAAA,MACjB,IAAI;AAAA,MACJ,aAAa;AAAA,MACb,SAAS;AAAA,MACT,MAAM;AAAA,IAAA,CACP;AAAA,EAEH;AAAA,EAEA,MAAM,cAAc,EAAE,WAAkC;AACtD,WAAO,QAAQ;AAAA,MACb,QAAQ,IAAI,OAAO,WAAW;AAC5B,YAAI;AACF,gBAAM,EAAE,SAAS,KAAA,IAAS,MAAM,qCAAA,uBAAA,OAAA,EAAA,0BAAA,MAAA,OAAA,mBAAA,EAAA,CAAA,GAAA,kBAAA,MAAA,SAAA,CAAA;AAEhC,iBAAO,EAAE,MAAM,OAAA;AAAA,QACjB,QAAQ;AACN,iBAAO,EAAE,MAAM,CAAA,GAAI,OAAA;AAAA,QACrB;AAAA,MACF,CAAC;AAAA,IAAA;AAAA,EAEL;AACF;"}
@@ -1,168 +0,0 @@
1
- import { Pencil, Trash, Globe as Globe$1 } 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(Globe, {});
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-HpszAlq5.mjs");
130
- return App;
131
- }
132
- });
133
- app.widgets.register({
134
- icon: Globe$1,
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-i2nteAHO.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-i2nteAHO.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 = () => <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","Globe"],"mappings":"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"}
@@ -1,169 +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-C0IDjiqN.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
- PLUGIN_ID as P,
166
- index as i,
167
- useMentions as u
168
- };
169
- //# sourceMappingURL=index-jZYmZUW8.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-jZYmZUW8.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":";;;;;;;;;;;;;;;;;;;;;AAAO,MAAM,YAAY;ACQzB,MAAM,cAAc,CAAC,EAAE,gBAAkC;AACvD,QAAM,MAAM,OAAO,SAAS;AAE5B,YAAU,MAAM;AACd,QAAI,QAAQ,SAAS;AAAA,EACvB,GAAG,CAAA,CAAE;AAEL,SAAO;AACT;ACdA,MAAM,aAAa,MAAM,oBAAC,aAAA,EAAY;ACFtC,MAAM,YAAY;AAEX,MAAM,YAAY;AAAA,EACvB,QAAQ;AAAA,IACN,cAAc,YAAY;AAAA,EAAA;AAE9B;ACDO,SAAS,cAAc;AAC5B,QAAM,EAAE,IAAA,IAAQ,eAAA;AAChB,QAAM,CAAC,UAAU,WAAW,IAAI,SAAqB,CAAA,CAAE;AACvD,QAAM,CAAC,SAAS,UAAU,IAAI,SAAS,IAAI;AAC3C,QAAM,CAAC,OAAO,QAAQ,IAAI,SAAuB,IAAI;AAErD,YAAU,MAAM;AACd,UAAM,gBAAgB,YAAY;AAChC,UAAI;AACF,mBAAW,IAAI;AACf,iBAAS,IAAI;AACb,cAAM,EAAE,KAAA,IAAS,MAAM,IAAI,UAAU,OAAO,YAAY;AACxD,cAAMA,YAAW,MAAM;AACvB,oBAAYA,aAAY,EAAE;AAAA,MAC5B,SAASC,QAAO;AACd,gBAAQ,MAAM,4BAA4BA,MAAK;AAC/C,iBAASA,kBAAiB,QAAQA,SAAQ,IAAI,MAAM,0BAA0B,CAAC;AAAA,MACjF,UAAA;AACE,mBAAW,KAAK;AAAA,MAClB;AAAA,IACF;AAEA,kBAAA;AAAA,EACF,GAAG,CAAC,GAAG,CAAC;AAER,SAAO,EAAE,UAAU,SAAS,MAAA;AAC9B;ACdA,MAAM,YAAY;AAMX,SAAS,cAAc,EAAE,YAAgC;AAC9D,8BACG,OAAA,EAAM,UAAU,WAAW,UAAU,SAAS,QAC7C,UAAA;AAAA,IAAA,oBAAC,OAAA,EACC,+BAAC,IAAA,EACC,UAAA;AAAA,MAAA,oBAAC,IAAA,EACC,UAAA,oBAAC,UAAA,EAAS,cAAW,sBAAqB,GAC5C;AAAA,0BACC,IAAA,EACC,UAAA,oBAAC,cAAW,SAAQ,SAAQ,mBAAK,EAAA,CACnC;AAAA,0BACC,IAAA,EACC,UAAA,oBAAC,cAAW,SAAQ,SAAQ,oBAAM,EAAA,CACpC;AAAA,0BACC,IAAA,EACC,UAAA,oBAAC,cAAW,SAAQ,SAAQ,qBAAO,EAAA,CACrC;AAAA,0BACC,IAAA,EACC,UAAA,oBAAC,cAAW,SAAQ,SAAQ,6BAAe,EAAA,CAC7C;AAAA,0BACC,IAAA,EACC,UAAA,oBAAC,cAAW,SAAQ,SAAQ,qBAAO,EAAA,CACrC;AAAA,MACA,oBAAC,IAAA,EACC,UAAA,oBAAC,gBAAA,EAAe,qBAAO,EAAA,CACzB;AAAA,IAAA,EAAA,CACF,EAAA,CACF;AAAA,wBACC,OAAA,EACE,UAAA,SAAS,IAAI,CAAC,iCACZ,IAAA,EACC,UAAA;AAAA,MAAA,oBAAC,IAAA,EACC,8BAAC,UAAA,EAAS,cAAY,UAAU,QAAQ,KAAK,IAAI,EAAA,CACnD;AAAA,MACA,oBAAC,IAAA,EACC,UAAA,oBAAC,YAAA,EAAW,WAAU,cAAa,YAAW,QAC3C,UAAA,QAAQ,SAAS,WAAA,CACpB,GACF;AAAA,MACA,oBAAC,MACC,UAAA,oBAAC,YAAA,EAAW,WAAU,cAAc,UAAA,QAAQ,QAAO,EAAA,CACrD;AAAA,MACA,oBAAC,MACC,UAAA,oBAAC,YAAA,EAAW,WAAU,cAAc,UAAA,QAAQ,SAAQ,EAAA,CACtD;AAAA,MACA,oBAAC,MACC,UAAA,oBAAC,YAAA,EAAW,WAAU,cAAc,UAAA,QAAQ,gBAAe,EAAA,CAC7D;AAAA,0BACC,IAAA,EACC,UAAA,qBAAC,cAAW,WAAU,cAAa,UAAQ,MACxC,UAAA;AAAA,QAAA,QAAQ,kBAAkB,UAAU,GAAG,EAAE;AAAA,QACzC,QAAQ,kBAAkB,SAAS,KAAK,QAAQ;AAAA,MAAA,EAAA,CACnD,EAAA,CACF;AAAA,MACA,oBAAC,IAAA,EACC,UAAA,qBAAC,MAAA,EACC,UAAA;AAAA,QAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,SAAS,MAAM,QAAQ,IAAI,QAAQ,QAAQ,UAAU;AAAA,YACrD,OAAM;AAAA,YACN,aAAa;AAAA,YAEb,8BAAC,QAAA,CAAA,CAAO;AAAA,UAAA;AAAA,QAAA;AAAA,QAEV,oBAAC,KAAA,EAAI,aAAa,GAChB,UAAA;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,SAAS,MAAM,QAAQ,IAAI,UAAU,QAAQ,UAAU;AAAA,YACvD,OAAM;AAAA,YACN,aAAa;AAAA,YAEb,8BAAC,OAAA,CAAA,CAAM;AAAA,UAAA;AAAA,QAAA,EACT,CACF;AAAA,MAAA,EAAA,CACF,EAAA,CACF;AAAA,IAAA,KA3CO,QAAQ,UA4CjB,CACD,EAAA,CACH;AAAA,EAAA,GACF;AAEJ;AClGO,SAAS,iBAAiB;AAC/B,QAAM,EAAE,UAAU,SAAS,MAAA,IAAU,YAAA;AAErC,MAAI,SAAS;AACX,+BACG,KAAA,EAAI,SAAS,GACZ,UAAA,oBAAC,YAAA,EAAW,iCAAmB,EAAA,CACjC;AAAA,EAEJ;AAEA,MAAI,OAAO;AACT,+BACG,KAAA,EAAI,SAAS,GACZ,UAAA,qBAAC,YAAA,EAAW,WAAU,aAAY,UAAA;AAAA,MAAA;AAAA,MAAQ,MAAM;AAAA,IAAA,EAAA,CAAQ,EAAA,CAC1D;AAAA,EAEJ;AAEA,6BACG,KAAA,EAAI,SAAS,GACZ,UAAA,oBAAC,eAAA,EAAc,UAAoB,EAAA,CACrC;AAEJ;ACrBA,MAAA,QAAe;AAAA,EACb,SAAS,KAAU;AACjB,QAAI,YAAY;AAAA,MACd,IAAI,WAAW,SAAS;AAAA,MACxB,MAAM;AAAA,MACN,WAAW;AAAA,QACT,IAAI,GAAG,SAAS;AAAA,QAChB,gBAAgB;AAAA,MAAA;AAAA,MAElB,WAAW,YAAY;AACrB,cAAM,EAAE,IAAA,IAAQ,MAAM,OAAO,oBAAa;AAE1C,eAAO;AAAA,MACT;AAAA,IAAA,CACD;AAED,QAAI,QAAQ,SAAS;AAAA,MACnB,MAAM;AAAA,MACN,OAAO;AAAA,QACL,IAAI,GAAG,SAAS;AAAA,QAChB,gBAAgB;AAAA,MAAA;AAAA,MAElB,WAAW,MAAM,QAAQ,QAAQ,cAAc;AAAA,MAC/C,UAAU;AAAA,MACV,IAAI;AAAA,IAAA,CACL;AAED,QAAI,eAAe;AAAA,MACjB,IAAI;AAAA,MACJ,aAAa;AAAA,MACb,SAAS;AAAA,MACT,MAAM;AAAA,IAAA,CACP;AAAA,EAEH;AAAA,EAEA,MAAM,cAAc,EAAE,WAAkC;AACtD,WAAO,QAAQ;AAAA,MACb,QAAQ,IAAI,OAAO,WAAW;AAC5B,YAAI;AACF,gBAAM,EAAE,SAAS,KAAA,IAAS,MAAM,qCAAA,uBAAA,OAAA,EAAA,0BAAA,MAAA,OAAA,mBAAA,EAAA,CAAA,GAAA,kBAAA,MAAA,SAAA,CAAA;AAEhC,iBAAO,EAAE,MAAM,OAAA;AAAA,QACjB,QAAQ;AACN,iBAAO,EAAE,MAAM,CAAA,GAAI,OAAA;AAAA,QACrB;AAAA,MACF,CAAC;AAAA,IAAA;AAAA,EAEL;AACF;"}