strapi-plugin-hubspot 0.16.1 → 0.16.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +16 -0
- package/README.md +12 -9
- package/dist/_chunks/{Forms-DEoZGrEt.mjs → Forms-BBaw53Tz.mjs} +48 -5
- package/dist/_chunks/{Forms-D0QXkYAN.js → Forms-CIJrUB_n.js} +48 -5
- package/dist/_chunks/{HubspotFormInput-CPep55GL.mjs → HubspotFormInput-DIo6hCNz.mjs} +1 -1
- package/dist/_chunks/{HubspotFormInput-4ZMYXWM_.js → HubspotFormInput-DSTuQ_bx.js} +1 -1
- package/dist/_chunks/{HubspotObjectInput-CQszIx1W.mjs → HubspotObjectInput-BA16dswz.mjs} +3 -3
- package/dist/_chunks/{HubspotObjectInput-BTqYXJIa.js → HubspotObjectInput-BIqC8tl2.js} +3 -3
- package/dist/_chunks/{HubspotPropertyInput-2MgIKlR_.js → HubspotPropertyInput-C77Op1Wm.js} +3 -3
- package/dist/_chunks/{HubspotPropertyInput-ClNph0f1.mjs → HubspotPropertyInput-Dsn7ikop.mjs} +3 -3
- package/dist/_chunks/{Settings-CZ-qQSKT.mjs → Settings-DxX9Uh_2.mjs} +21 -3
- package/dist/_chunks/{Settings-DhiHQC6U.js → Settings-PVhJVPqq.js} +21 -3
- package/dist/_chunks/{en-Dh3bMS6N.mjs → en-Djd3TID0.mjs} +6 -2
- package/dist/_chunks/{en-CSgFmKmM.js → en-sfzopB5K.js} +6 -2
- package/dist/_chunks/{fr-aWOIOlS9.mjs → fr-C7t1elmR.mjs} +6 -2
- package/dist/_chunks/{fr-D_EhZS0P.js → fr-sF5Josfh.js} +6 -2
- package/dist/_chunks/{index-gKM4jVf8.mjs → index-B8GYi6sw.mjs} +6 -6
- package/dist/_chunks/{index-ciliGv0E.js → index-XEuSPuUj.js} +6 -6
- package/dist/_chunks/{objectLabels-DQpSLUaJ.mjs → objectLabels-DybqhBdT.mjs} +1 -1
- package/dist/_chunks/{objectLabels-BjYfdhRB.js → objectLabels-wBwfLdZt.js} +1 -1
- package/dist/_chunks/{useHubspotSchema-CE7tJgOM.mjs → useHubspotSchema-DtcHHUOb.mjs} +1 -1
- package/dist/_chunks/{useHubspotSchema-KKVppjC2.js → useHubspotSchema-WvgW3od8.js} +1 -1
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/server/index.js +138 -17
- package/dist/server/index.mjs +138 -17
- package/dist/server/src/forms.d.ts +3 -2
- package/dist/server/src/formsAdmin.d.ts +8 -3
- package/dist/server/src/importHubspot.d.ts +12 -0
- package/dist/server/src/index.d.ts +2 -0
- package/dist/server/src/settings.d.ts +6 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,22 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
## 0.16.3 — 2026-09-22
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
- Timeline recap notes (`forms.timelineNote`, default `true`) now also write
|
|
9
|
+
after a native Forms API conversion: page URL and originating subject sit
|
|
10
|
+
on the contact next to the conversion. The Forms API already forwards
|
|
11
|
+
`context.pageUri` / `pageName`. Toggle lives in Settings → HubSpot.
|
|
12
|
+
|
|
13
|
+
## 0.16.2 — 2026-09-22
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
- **Resync from HubSpot** in the form editor (and a safer list re-import):
|
|
17
|
+
mapped fields update in place (label, type, required, options), new HubSpot
|
|
18
|
+
fields append to the last step, Strapi steps / conditions / extra fields
|
|
19
|
+
stay. Matching uses the linked form GUID rather than the slug.
|
|
20
|
+
|
|
5
21
|
## 0.16.1 — 2026-09-22
|
|
6
22
|
|
|
7
23
|
### Changed
|
package/README.md
CHANGED
|
@@ -54,11 +54,14 @@ upserts can share the same plugin:
|
|
|
54
54
|
| `forms.submissionMode` | `auto` | `auto`: Forms API when a marketing GUID is linked, else CRM upsert. `forms`: always try the Forms API. `crm`: never count as a conversion |
|
|
55
55
|
| `forms.writeExtraProperties` | `true` | After a conversion, CRM-write mapped contact fields the HubSpot form dropped (they 400 the Forms API) |
|
|
56
56
|
| `forms.syncFieldsOnPublish` | `false` | On publish, PATCH missing mapped **contact** fields onto the HubSpot form. Off by default so HubSpot-first installs aren't mutated |
|
|
57
|
+
| `forms.timelineNote` | `true` | Recap note on the contact after a successful sync (page URL, subject, answers). Sits next to a native conversion; turn off if you only want the form submission |
|
|
57
58
|
|
|
58
|
-
The visitor's `hutk` is forwarded so attribution sticks.
|
|
59
|
-
|
|
60
|
-
is
|
|
61
|
-
|
|
59
|
+
The visitor's `hutk` is forwarded so attribution sticks. The conversion carries
|
|
60
|
+
`context.pageUri` / `pageName` (the page the visitor submitted from). Then the
|
|
61
|
+
contact is looked up by email and, when the address is on a corporate domain,
|
|
62
|
+
the company is found-or-created and associated. Timeline notes (`forms.timelineNote`,
|
|
63
|
+
default `true`) add a recap of that page plus the originating subject on the
|
|
64
|
+
contact timeline — they don't replace the conversion.
|
|
62
65
|
|
|
63
66
|
CRM properties are **never created**. Map to properties that already exist in
|
|
64
67
|
the portal; opting into field sync only adds form fields that point at those
|
|
@@ -75,7 +78,7 @@ hubspot: {
|
|
|
75
78
|
region: env("HUBSPOT_REGION", "eu1"), // eu1 → api-eu1.hsforms.com
|
|
76
79
|
forms: {
|
|
77
80
|
companyFromDomain: true, // Company by corporate domain + association
|
|
78
|
-
timelineNote:
|
|
81
|
+
timelineNote: true, // recap note (page + subject) next to the conversion
|
|
79
82
|
defaultFormId: env("HUBSPOT_DEFAULT_FORM_ID", ""),
|
|
80
83
|
submissionMode: "auto", // auto | forms | crm
|
|
81
84
|
writeExtraProperties: true,
|
|
@@ -174,10 +177,10 @@ the portal. The translation carries over what the builder can express:
|
|
|
174
177
|
- dependent fields become `visibleIf` conditions (value lists are expanded
|
|
175
178
|
into OR'd/AND'd rules).
|
|
176
179
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
180
|
+
The HubSpot original is never modified. Re-importing (or **Resync from HubSpot**
|
|
181
|
+
in the editor) updates mapped fields in place and appends new ones — Strapi
|
|
182
|
+
steps, conditions and extra fields stay. Matching is by HubSpot form GUID,
|
|
183
|
+
then slug. The published version is never touched.
|
|
181
184
|
|
|
182
185
|
### i18n and publishing
|
|
183
186
|
|
|
@@ -5,12 +5,12 @@ import { u as useIntl } from "./index-CEh8vkxY.mjs";
|
|
|
5
5
|
import { Typography, Flex, Box, SingleSelect, SingleSelectOption, MultiSelect, MultiSelectOption, TextInput, IconButton, Button, Combobox, ComboboxOption, Field, Textarea, Checkbox, Divider, Loader, Badge, Table, Thead, Tr, Th, Tbody, Td, Modal } from "@strapi/design-system";
|
|
6
6
|
import { Trash, Plus, ArrowClockwise, ArrowLeft, Drag, ArrowUp, ArrowDown, List, Duplicate, Download } from "@strapi/icons";
|
|
7
7
|
import { useFetchClient } from "@strapi/strapi/admin";
|
|
8
|
-
import { g as getTranslation, P as PLUGIN_ID } from "./index-
|
|
8
|
+
import { g as getTranslation, P as PLUGIN_ID } from "./index-B8GYi6sw.mjs";
|
|
9
9
|
import { useSensors, useSensor, PointerSensor, KeyboardSensor, DndContext, useDroppable, closestCorners } from "@dnd-kit/core";
|
|
10
10
|
import { arrayMove, sortableKeyboardCoordinates, SortableContext, verticalListSortingStrategy, useSortable } from "@dnd-kit/sortable";
|
|
11
11
|
import { CSS } from "@dnd-kit/utilities";
|
|
12
|
-
import { o as objectLabel } from "./objectLabels-
|
|
13
|
-
import { u as useHubspotSchema } from "./useHubspotSchema-
|
|
12
|
+
import { o as objectLabel } from "./objectLabels-DybqhBdT.mjs";
|
|
13
|
+
import { u as useHubspotSchema } from "./useHubspotSchema-DtcHHUOb.mjs";
|
|
14
14
|
const OPERATORS = [
|
|
15
15
|
"eq",
|
|
16
16
|
"neq",
|
|
@@ -899,6 +899,40 @@ const FormEditor = () => {
|
|
|
899
899
|
setBusy(false);
|
|
900
900
|
}
|
|
901
901
|
};
|
|
902
|
+
const resync = async () => {
|
|
903
|
+
if (dirty && !await save()) return;
|
|
904
|
+
setBusy(true);
|
|
905
|
+
setFeedback(null);
|
|
906
|
+
try {
|
|
907
|
+
const { data } = await post(`/${PLUGIN_ID}/builder/forms/${documentId}/resync${query}`);
|
|
908
|
+
if (data.form) {
|
|
909
|
+
setEntry(data.form);
|
|
910
|
+
setDirty(false);
|
|
911
|
+
}
|
|
912
|
+
const added = data.added?.length ?? 0;
|
|
913
|
+
const updated = data.updated?.length ?? 0;
|
|
914
|
+
const skipped = data.skipped?.length ?? 0;
|
|
915
|
+
setFeedback({
|
|
916
|
+
tone: "success",
|
|
917
|
+
text: skipped > 0 ? t(
|
|
918
|
+
"editor.resynced-gaps",
|
|
919
|
+
"Resynced from HubSpot — {updated, plural, one {# updated} other {# updated}}, {added, plural, one {# added} other {# added}}, {skipped, plural, one {# skipped} other {# skipped}}.",
|
|
920
|
+
{ updated, added, skipped }
|
|
921
|
+
) : t(
|
|
922
|
+
"editor.resynced",
|
|
923
|
+
"Resynced from HubSpot — {updated, plural, one {# field updated} other {# fields updated}}, {added, plural, one {# added} other {# added}}.",
|
|
924
|
+
{ updated, added }
|
|
925
|
+
)
|
|
926
|
+
});
|
|
927
|
+
} catch {
|
|
928
|
+
setFeedback({
|
|
929
|
+
tone: "danger",
|
|
930
|
+
text: t("editor.resync-error", "Could not resync from HubSpot — is the form still linked?")
|
|
931
|
+
});
|
|
932
|
+
} finally {
|
|
933
|
+
setBusy(false);
|
|
934
|
+
}
|
|
935
|
+
};
|
|
902
936
|
const fieldFlags = (fieldId) => ({
|
|
903
937
|
error: errors.find((e) => e.fieldId === fieldId),
|
|
904
938
|
problem: problems.find((p) => p.fieldId === fieldId)
|
|
@@ -936,6 +970,15 @@ const FormEditor = () => {
|
|
|
936
970
|
}
|
|
937
971
|
),
|
|
938
972
|
/* @__PURE__ */ jsx(Button, { variant: "secondary", onClick: save, disabled: busy || !dirty, children: t("editor.save", "Save") }),
|
|
973
|
+
/* @__PURE__ */ jsx(
|
|
974
|
+
Button,
|
|
975
|
+
{
|
|
976
|
+
variant: "tertiary",
|
|
977
|
+
onClick: resync,
|
|
978
|
+
disabled: busy || !entry.hubspotFormId,
|
|
979
|
+
children: t("editor.resync", "Resync from HubSpot")
|
|
980
|
+
}
|
|
981
|
+
),
|
|
939
982
|
/* @__PURE__ */ jsx(Button, { onClick: publish, disabled: busy, children: t("editor.publish", "Publish") }),
|
|
940
983
|
published && /* @__PURE__ */ jsx(Button, { variant: "tertiary", onClick: unpublish, disabled: busy, children: t("editor.unpublish", "Unpublish") })
|
|
941
984
|
] })
|
|
@@ -1311,7 +1354,7 @@ const FormEditor = () => {
|
|
|
1311
1354
|
),
|
|
1312
1355
|
/* @__PURE__ */ jsx(Typography, { variant: "pi", textColor: "neutral600", children: t(
|
|
1313
1356
|
"editor.hubspot-form-hint",
|
|
1314
|
-
"Submissions go through HubSpot’s Forms API so they count as conversions.
|
|
1357
|
+
"Submissions go through HubSpot’s Forms API so they count as conversions. After you change the form in HubSpot, use Resync from HubSpot — mapped fields update in place, new ones are appended, your steps stay."
|
|
1315
1358
|
) })
|
|
1316
1359
|
] }),
|
|
1317
1360
|
/* @__PURE__ */ jsx(Typography, { variant: "pi", textColor: "neutral600", children: t(
|
|
@@ -1490,7 +1533,7 @@ const FormsList = () => {
|
|
|
1490
1533
|
/* @__PURE__ */ jsx(Typography, { variant: "delta", tag: "h2", children: t("forms.import-hubspot-title", "Import from your HubSpot portal") }),
|
|
1491
1534
|
/* @__PURE__ */ jsx(Typography, { variant: "pi", textColor: "neutral600", tag: "p", children: t(
|
|
1492
1535
|
"forms.import-hubspot-hint",
|
|
1493
|
-
"Translates a form built in HubSpot into a draft here, CRM mapping included. What the builder can't express is skipped and reported. Re-importing
|
|
1536
|
+
"Translates a form built in HubSpot into a draft here, CRM mapping included. What the builder can't express is skipped and reported. Re-importing updates mapped fields in place and appends new ones."
|
|
1494
1537
|
) })
|
|
1495
1538
|
] }),
|
|
1496
1539
|
/* @__PURE__ */ jsxs(Flex, { gap: 2, children: [
|
|
@@ -7,12 +7,12 @@ const index = require("./index-DkTxsEqL.js");
|
|
|
7
7
|
const designSystem = require("@strapi/design-system");
|
|
8
8
|
const icons = require("@strapi/icons");
|
|
9
9
|
const admin = require("@strapi/strapi/admin");
|
|
10
|
-
const index$1 = require("./index-
|
|
10
|
+
const index$1 = require("./index-XEuSPuUj.js");
|
|
11
11
|
const core = require("@dnd-kit/core");
|
|
12
12
|
const sortable = require("@dnd-kit/sortable");
|
|
13
13
|
const utilities = require("@dnd-kit/utilities");
|
|
14
|
-
const objectLabels = require("./objectLabels-
|
|
15
|
-
const useHubspotSchema = require("./useHubspotSchema-
|
|
14
|
+
const objectLabels = require("./objectLabels-wBwfLdZt.js");
|
|
15
|
+
const useHubspotSchema = require("./useHubspotSchema-WvgW3od8.js");
|
|
16
16
|
function _interopNamespace(e) {
|
|
17
17
|
if (e && e.__esModule) return e;
|
|
18
18
|
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
|
@@ -919,6 +919,40 @@ const FormEditor = () => {
|
|
|
919
919
|
setBusy(false);
|
|
920
920
|
}
|
|
921
921
|
};
|
|
922
|
+
const resync = async () => {
|
|
923
|
+
if (dirty && !await save()) return;
|
|
924
|
+
setBusy(true);
|
|
925
|
+
setFeedback(null);
|
|
926
|
+
try {
|
|
927
|
+
const { data } = await post(`/${index$1.PLUGIN_ID}/builder/forms/${documentId}/resync${query}`);
|
|
928
|
+
if (data.form) {
|
|
929
|
+
setEntry(data.form);
|
|
930
|
+
setDirty(false);
|
|
931
|
+
}
|
|
932
|
+
const added = data.added?.length ?? 0;
|
|
933
|
+
const updated = data.updated?.length ?? 0;
|
|
934
|
+
const skipped = data.skipped?.length ?? 0;
|
|
935
|
+
setFeedback({
|
|
936
|
+
tone: "success",
|
|
937
|
+
text: skipped > 0 ? t(
|
|
938
|
+
"editor.resynced-gaps",
|
|
939
|
+
"Resynced from HubSpot — {updated, plural, one {# updated} other {# updated}}, {added, plural, one {# added} other {# added}}, {skipped, plural, one {# skipped} other {# skipped}}.",
|
|
940
|
+
{ updated, added, skipped }
|
|
941
|
+
) : t(
|
|
942
|
+
"editor.resynced",
|
|
943
|
+
"Resynced from HubSpot — {updated, plural, one {# field updated} other {# fields updated}}, {added, plural, one {# added} other {# added}}.",
|
|
944
|
+
{ updated, added }
|
|
945
|
+
)
|
|
946
|
+
});
|
|
947
|
+
} catch {
|
|
948
|
+
setFeedback({
|
|
949
|
+
tone: "danger",
|
|
950
|
+
text: t("editor.resync-error", "Could not resync from HubSpot — is the form still linked?")
|
|
951
|
+
});
|
|
952
|
+
} finally {
|
|
953
|
+
setBusy(false);
|
|
954
|
+
}
|
|
955
|
+
};
|
|
922
956
|
const fieldFlags = (fieldId) => ({
|
|
923
957
|
error: errors.find((e) => e.fieldId === fieldId),
|
|
924
958
|
problem: problems.find((p) => p.fieldId === fieldId)
|
|
@@ -956,6 +990,15 @@ const FormEditor = () => {
|
|
|
956
990
|
}
|
|
957
991
|
),
|
|
958
992
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { variant: "secondary", onClick: save, disabled: busy || !dirty, children: t("editor.save", "Save") }),
|
|
993
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
994
|
+
designSystem.Button,
|
|
995
|
+
{
|
|
996
|
+
variant: "tertiary",
|
|
997
|
+
onClick: resync,
|
|
998
|
+
disabled: busy || !entry.hubspotFormId,
|
|
999
|
+
children: t("editor.resync", "Resync from HubSpot")
|
|
1000
|
+
}
|
|
1001
|
+
),
|
|
959
1002
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { onClick: publish, disabled: busy, children: t("editor.publish", "Publish") }),
|
|
960
1003
|
published && /* @__PURE__ */ jsxRuntime.jsx(designSystem.Button, { variant: "tertiary", onClick: unpublish, disabled: busy, children: t("editor.unpublish", "Unpublish") })
|
|
961
1004
|
] })
|
|
@@ -1331,7 +1374,7 @@ const FormEditor = () => {
|
|
|
1331
1374
|
),
|
|
1332
1375
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", textColor: "neutral600", children: t(
|
|
1333
1376
|
"editor.hubspot-form-hint",
|
|
1334
|
-
"Submissions go through HubSpot’s Forms API so they count as conversions.
|
|
1377
|
+
"Submissions go through HubSpot’s Forms API so they count as conversions. After you change the form in HubSpot, use Resync from HubSpot — mapped fields update in place, new ones are appended, your steps stay."
|
|
1335
1378
|
) })
|
|
1336
1379
|
] }),
|
|
1337
1380
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", textColor: "neutral600", children: t(
|
|
@@ -1510,7 +1553,7 @@ const FormsList = () => {
|
|
|
1510
1553
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "delta", tag: "h2", children: t("forms.import-hubspot-title", "Import from your HubSpot portal") }),
|
|
1511
1554
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", textColor: "neutral600", tag: "p", children: t(
|
|
1512
1555
|
"forms.import-hubspot-hint",
|
|
1513
|
-
"Translates a form built in HubSpot into a draft here, CRM mapping included. What the builder can't express is skipped and reported. Re-importing
|
|
1556
|
+
"Translates a form built in HubSpot into a draft here, CRM mapping included. What the builder can't express is skipped and reported. Re-importing updates mapped fields in place and appends new ones."
|
|
1514
1557
|
) })
|
|
1515
1558
|
] }),
|
|
1516
1559
|
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, children: [
|
|
@@ -3,7 +3,7 @@ import * as React from "react";
|
|
|
3
3
|
import { u as useIntl } from "./index-CEh8vkxY.mjs";
|
|
4
4
|
import { Field, Flex, Loader, Combobox, ComboboxOption } from "@strapi/design-system";
|
|
5
5
|
import { useFetchClient } from "@strapi/strapi/admin";
|
|
6
|
-
import { P as PLUGIN_ID, g as getTranslation } from "./index-
|
|
6
|
+
import { P as PLUGIN_ID, g as getTranslation } from "./index-B8GYi6sw.mjs";
|
|
7
7
|
const HubspotFormInput = React.forwardRef(
|
|
8
8
|
({ name, value, onChange, disabled, error, required, label, hint, labelAction }, ref) => {
|
|
9
9
|
const { formatMessage } = useIntl();
|
|
@@ -5,7 +5,7 @@ const React = require("react");
|
|
|
5
5
|
const index = require("./index-DkTxsEqL.js");
|
|
6
6
|
const designSystem = require("@strapi/design-system");
|
|
7
7
|
const admin = require("@strapi/strapi/admin");
|
|
8
|
-
const index$1 = require("./index-
|
|
8
|
+
const index$1 = require("./index-XEuSPuUj.js");
|
|
9
9
|
function _interopNamespace(e) {
|
|
10
10
|
if (e && e.__esModule) return e;
|
|
11
11
|
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
|
@@ -2,9 +2,9 @@ import { jsxs, jsx } from "react/jsx-runtime";
|
|
|
2
2
|
import * as React from "react";
|
|
3
3
|
import { u as useIntl } from "./index-CEh8vkxY.mjs";
|
|
4
4
|
import { Field, Flex, Loader, SingleSelect, SingleSelectOption } from "@strapi/design-system";
|
|
5
|
-
import { g as getTranslation } from "./index-
|
|
6
|
-
import { o as objectLabel } from "./objectLabels-
|
|
7
|
-
import { u as useHubspotSchema } from "./useHubspotSchema-
|
|
5
|
+
import { g as getTranslation } from "./index-B8GYi6sw.mjs";
|
|
6
|
+
import { o as objectLabel } from "./objectLabels-DybqhBdT.mjs";
|
|
7
|
+
import { u as useHubspotSchema } from "./useHubspotSchema-DtcHHUOb.mjs";
|
|
8
8
|
const HubspotObjectInput = React.forwardRef(
|
|
9
9
|
({ name, value, onChange, disabled, error, required, label, hint, labelAction }, ref) => {
|
|
10
10
|
const intl = useIntl();
|
|
@@ -4,9 +4,9 @@ const jsxRuntime = require("react/jsx-runtime");
|
|
|
4
4
|
const React = require("react");
|
|
5
5
|
const index = require("./index-DkTxsEqL.js");
|
|
6
6
|
const designSystem = require("@strapi/design-system");
|
|
7
|
-
const index$1 = require("./index-
|
|
8
|
-
const objectLabels = require("./objectLabels-
|
|
9
|
-
const useHubspotSchema = require("./useHubspotSchema-
|
|
7
|
+
const index$1 = require("./index-XEuSPuUj.js");
|
|
8
|
+
const objectLabels = require("./objectLabels-wBwfLdZt.js");
|
|
9
|
+
const useHubspotSchema = require("./useHubspotSchema-WvgW3od8.js");
|
|
10
10
|
function _interopNamespace(e) {
|
|
11
11
|
if (e && e.__esModule) return e;
|
|
12
12
|
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
|
@@ -6,9 +6,9 @@ const index = require("./index-DkTxsEqL.js");
|
|
|
6
6
|
const designSystem = require("@strapi/design-system");
|
|
7
7
|
const icons = require("@strapi/icons");
|
|
8
8
|
const admin = require("@strapi/strapi/admin");
|
|
9
|
-
const index$1 = require("./index-
|
|
10
|
-
const objectLabels = require("./objectLabels-
|
|
11
|
-
const useHubspotSchema = require("./useHubspotSchema-
|
|
9
|
+
const index$1 = require("./index-XEuSPuUj.js");
|
|
10
|
+
const objectLabels = require("./objectLabels-wBwfLdZt.js");
|
|
11
|
+
const useHubspotSchema = require("./useHubspotSchema-WvgW3od8.js");
|
|
12
12
|
function _interopNamespace(e) {
|
|
13
13
|
if (e && e.__esModule) return e;
|
|
14
14
|
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
package/dist/_chunks/{HubspotPropertyInput-ClNph0f1.mjs → HubspotPropertyInput-Dsn7ikop.mjs}
RENAMED
|
@@ -4,9 +4,9 @@ import { u as useIntl } from "./index-CEh8vkxY.mjs";
|
|
|
4
4
|
import { Field, Flex, Loader, Combobox, ComboboxOption, IconButton, Button, Typography, Link } from "@strapi/design-system";
|
|
5
5
|
import { ArrowClockwise } from "@strapi/icons";
|
|
6
6
|
import { useField } from "@strapi/strapi/admin";
|
|
7
|
-
import { g as getTranslation } from "./index-
|
|
8
|
-
import { o as objectLabel } from "./objectLabels-
|
|
9
|
-
import { u as useHubspotSchema } from "./useHubspotSchema-
|
|
7
|
+
import { g as getTranslation } from "./index-B8GYi6sw.mjs";
|
|
8
|
+
import { o as objectLabel } from "./objectLabels-DybqhBdT.mjs";
|
|
9
|
+
import { u as useHubspotSchema } from "./useHubspotSchema-DtcHHUOb.mjs";
|
|
10
10
|
const oneLine = {
|
|
11
11
|
display: "block",
|
|
12
12
|
whiteSpace: "nowrap",
|
|
@@ -3,9 +3,9 @@ import * as React from "react";
|
|
|
3
3
|
import { u as useIntl } from "./index-CEh8vkxY.mjs";
|
|
4
4
|
import { Flex, Divider, Typography, Button, Box, Link, Badge, Loader, Field, SingleSelect, SingleSelectOption, Checkbox } from "@strapi/design-system";
|
|
5
5
|
import { useFetchClient } from "@strapi/strapi/admin";
|
|
6
|
-
import { g as getTranslation, P as PLUGIN_ID } from "./index-
|
|
6
|
+
import { g as getTranslation, P as PLUGIN_ID } from "./index-B8GYi6sw.mjs";
|
|
7
7
|
import { Link as Link$1 } from "react-router-dom";
|
|
8
|
-
import { o as objectLabel } from "./objectLabels-
|
|
8
|
+
import { o as objectLabel } from "./objectLabels-DybqhBdT.mjs";
|
|
9
9
|
const AuditSection = ({ configured }) => {
|
|
10
10
|
const intl = useIntl();
|
|
11
11
|
const { formatMessage } = intl;
|
|
@@ -184,6 +184,7 @@ const HubspotSettings = () => {
|
|
|
184
184
|
const [submissionMode, setSubmissionMode] = React.useState("auto");
|
|
185
185
|
const [writeExtraProperties, setWriteExtraProperties] = React.useState(true);
|
|
186
186
|
const [syncFieldsOnPublish, setSyncFieldsOnPublish] = React.useState(false);
|
|
187
|
+
const [timelineNote, setTimelineNote] = React.useState(true);
|
|
187
188
|
const [forms, setForms] = React.useState([]);
|
|
188
189
|
const [busy, setBusy] = React.useState(false);
|
|
189
190
|
const [feedback, setFeedback] = React.useState(
|
|
@@ -198,6 +199,7 @@ const HubspotSettings = () => {
|
|
|
198
199
|
setSubmissionMode(data.submissionMode === "crm" || data.submissionMode === "forms" ? data.submissionMode : "auto");
|
|
199
200
|
setWriteExtraProperties(data.writeExtraProperties !== false);
|
|
200
201
|
setSyncFieldsOnPublish(data.syncFieldsOnPublish === true);
|
|
202
|
+
setTimelineNote(data.timelineNote !== false);
|
|
201
203
|
setForms(Array.isArray(data.forms) ? data.forms : []);
|
|
202
204
|
};
|
|
203
205
|
const load = React.useCallback(async () => {
|
|
@@ -220,7 +222,8 @@ const HubspotSettings = () => {
|
|
|
220
222
|
defaultFormId,
|
|
221
223
|
submissionMode,
|
|
222
224
|
writeExtraProperties,
|
|
223
|
-
syncFieldsOnPublish
|
|
225
|
+
syncFieldsOnPublish,
|
|
226
|
+
timelineNote
|
|
224
227
|
});
|
|
225
228
|
setApiKey("");
|
|
226
229
|
await load();
|
|
@@ -454,6 +457,21 @@ const HubspotSettings = () => {
|
|
|
454
457
|
/* @__PURE__ */ jsx(Typography, { variant: "pi", textColor: "neutral600", children: t(
|
|
455
458
|
"settings.sync.hint",
|
|
456
459
|
"Strapi-first installs: a field added here appears on the HubSpot form next publish. HubSpot-first installs should leave this off — importing a form already carries its fields. Properties themselves are never created; map to ones that exist in the portal."
|
|
460
|
+
) }),
|
|
461
|
+
/* @__PURE__ */ jsx(
|
|
462
|
+
Checkbox,
|
|
463
|
+
{
|
|
464
|
+
checked: timelineNote,
|
|
465
|
+
onCheckedChange: (checked) => setTimelineNote(checked === true),
|
|
466
|
+
children: t(
|
|
467
|
+
"settings.note.label",
|
|
468
|
+
"Also write a recap note on the contact (page, subject, answers)"
|
|
469
|
+
)
|
|
470
|
+
}
|
|
471
|
+
),
|
|
472
|
+
/* @__PURE__ */ jsx(Typography, { variant: "pi", textColor: "neutral600", children: t(
|
|
473
|
+
"settings.note.hint",
|
|
474
|
+
"The conversion already carries the page URL (pageUri). The note puts that page plus the originating subject on the contact timeline, next to the native form submission."
|
|
457
475
|
) })
|
|
458
476
|
] }) }),
|
|
459
477
|
/* @__PURE__ */ jsxs(Flex, { gap: 2, children: [
|
|
@@ -5,9 +5,9 @@ const React = require("react");
|
|
|
5
5
|
const index = require("./index-DkTxsEqL.js");
|
|
6
6
|
const designSystem = require("@strapi/design-system");
|
|
7
7
|
const admin = require("@strapi/strapi/admin");
|
|
8
|
-
const index$1 = require("./index-
|
|
8
|
+
const index$1 = require("./index-XEuSPuUj.js");
|
|
9
9
|
const reactRouterDom = require("react-router-dom");
|
|
10
|
-
const objectLabels = require("./objectLabels-
|
|
10
|
+
const objectLabels = require("./objectLabels-wBwfLdZt.js");
|
|
11
11
|
function _interopNamespace(e) {
|
|
12
12
|
if (e && e.__esModule) return e;
|
|
13
13
|
const n = Object.create(null, { [Symbol.toStringTag]: { value: "Module" } });
|
|
@@ -204,6 +204,7 @@ const HubspotSettings = () => {
|
|
|
204
204
|
const [submissionMode, setSubmissionMode] = React__namespace.useState("auto");
|
|
205
205
|
const [writeExtraProperties, setWriteExtraProperties] = React__namespace.useState(true);
|
|
206
206
|
const [syncFieldsOnPublish, setSyncFieldsOnPublish] = React__namespace.useState(false);
|
|
207
|
+
const [timelineNote, setTimelineNote] = React__namespace.useState(true);
|
|
207
208
|
const [forms, setForms] = React__namespace.useState([]);
|
|
208
209
|
const [busy, setBusy] = React__namespace.useState(false);
|
|
209
210
|
const [feedback, setFeedback] = React__namespace.useState(
|
|
@@ -218,6 +219,7 @@ const HubspotSettings = () => {
|
|
|
218
219
|
setSubmissionMode(data.submissionMode === "crm" || data.submissionMode === "forms" ? data.submissionMode : "auto");
|
|
219
220
|
setWriteExtraProperties(data.writeExtraProperties !== false);
|
|
220
221
|
setSyncFieldsOnPublish(data.syncFieldsOnPublish === true);
|
|
222
|
+
setTimelineNote(data.timelineNote !== false);
|
|
221
223
|
setForms(Array.isArray(data.forms) ? data.forms : []);
|
|
222
224
|
};
|
|
223
225
|
const load = React__namespace.useCallback(async () => {
|
|
@@ -240,7 +242,8 @@ const HubspotSettings = () => {
|
|
|
240
242
|
defaultFormId,
|
|
241
243
|
submissionMode,
|
|
242
244
|
writeExtraProperties,
|
|
243
|
-
syncFieldsOnPublish
|
|
245
|
+
syncFieldsOnPublish,
|
|
246
|
+
timelineNote
|
|
244
247
|
});
|
|
245
248
|
setApiKey("");
|
|
246
249
|
await load();
|
|
@@ -474,6 +477,21 @@ const HubspotSettings = () => {
|
|
|
474
477
|
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", textColor: "neutral600", children: t(
|
|
475
478
|
"settings.sync.hint",
|
|
476
479
|
"Strapi-first installs: a field added here appears on the HubSpot form next publish. HubSpot-first installs should leave this off — importing a form already carries its fields. Properties themselves are never created; map to ones that exist in the portal."
|
|
480
|
+
) }),
|
|
481
|
+
/* @__PURE__ */ jsxRuntime.jsx(
|
|
482
|
+
designSystem.Checkbox,
|
|
483
|
+
{
|
|
484
|
+
checked: timelineNote,
|
|
485
|
+
onCheckedChange: (checked) => setTimelineNote(checked === true),
|
|
486
|
+
children: t(
|
|
487
|
+
"settings.note.label",
|
|
488
|
+
"Also write a recap note on the contact (page, subject, answers)"
|
|
489
|
+
)
|
|
490
|
+
}
|
|
491
|
+
),
|
|
492
|
+
/* @__PURE__ */ jsxRuntime.jsx(designSystem.Typography, { variant: "pi", textColor: "neutral600", children: t(
|
|
493
|
+
"settings.note.hint",
|
|
494
|
+
"The conversion already carries the page URL (pageUri). The note puts that page plus the originating subject on the contact timeline, next to the native form submission."
|
|
477
495
|
) })
|
|
478
496
|
] }) }),
|
|
479
497
|
/* @__PURE__ */ jsxRuntime.jsxs(designSystem.Flex, { gap: 2, children: [
|
|
@@ -164,7 +164,11 @@ const en = {
|
|
|
164
164
|
"editor.hubspot-form": "HubSpot marketing form",
|
|
165
165
|
"editor.hubspot-form-placeholder": "Pick a form of the connected portal",
|
|
166
166
|
"editor.hubspot-form-none": "None — CRM upsert only",
|
|
167
|
-
"editor.hubspot-form-hint": "Submissions go through HubSpot’s Forms API so they count as conversions.
|
|
167
|
+
"editor.hubspot-form-hint": "Submissions go through HubSpot’s Forms API so they count as conversions. After you change the form in HubSpot, use Resync from HubSpot — mapped fields update in place, new ones are appended, your steps stay.",
|
|
168
|
+
"editor.resync": "Resync from HubSpot",
|
|
169
|
+
"editor.resynced": "Resynced from HubSpot — {updated, plural, one {# field updated} other {# fields updated}}, {added, plural, one {# added} other {# added}}.",
|
|
170
|
+
"editor.resynced-gaps": "Resynced from HubSpot — {updated, plural, one {# updated} other {# updated}}, {added, plural, one {# added} other {# added}}, {skipped, plural, one {# skipped} other {# skipped}}.",
|
|
171
|
+
"editor.resync-error": "Could not resync from HubSpot — is the form still linked?",
|
|
168
172
|
"editor.form-hint": "Select a step or a field to edit it. The public endpoint serves this form at /api/hubspot/forms/{slug}.",
|
|
169
173
|
"panel.label": "Label",
|
|
170
174
|
"panel.name": "Payload key",
|
|
@@ -234,7 +238,7 @@ const en = {
|
|
|
234
238
|
"forms.col-submissions": "Submissions",
|
|
235
239
|
"forms.submissions": "Submissions",
|
|
236
240
|
"forms.import-hubspot-title": "Import from your HubSpot portal",
|
|
237
|
-
"forms.import-hubspot-hint": "Translates a form built in HubSpot into a draft here, CRM mapping included. What the builder can't express is skipped and reported. Re-importing
|
|
241
|
+
"forms.import-hubspot-hint": "Translates a form built in HubSpot into a draft here, CRM mapping included. What the builder can't express is skipped and reported. Re-importing updates mapped fields in place and appends new ones.",
|
|
238
242
|
"forms.import-hubspot-source": "HubSpot form to import",
|
|
239
243
|
"forms.hubspot-list-error": "Could not list the portal's forms — the token needs the `forms` read scope.",
|
|
240
244
|
"forms.report-title": "Imported with gaps",
|
|
@@ -166,7 +166,11 @@ const en = {
|
|
|
166
166
|
"editor.hubspot-form": "HubSpot marketing form",
|
|
167
167
|
"editor.hubspot-form-placeholder": "Pick a form of the connected portal",
|
|
168
168
|
"editor.hubspot-form-none": "None — CRM upsert only",
|
|
169
|
-
"editor.hubspot-form-hint": "Submissions go through HubSpot’s Forms API so they count as conversions.
|
|
169
|
+
"editor.hubspot-form-hint": "Submissions go through HubSpot’s Forms API so they count as conversions. After you change the form in HubSpot, use Resync from HubSpot — mapped fields update in place, new ones are appended, your steps stay.",
|
|
170
|
+
"editor.resync": "Resync from HubSpot",
|
|
171
|
+
"editor.resynced": "Resynced from HubSpot — {updated, plural, one {# field updated} other {# fields updated}}, {added, plural, one {# added} other {# added}}.",
|
|
172
|
+
"editor.resynced-gaps": "Resynced from HubSpot — {updated, plural, one {# updated} other {# updated}}, {added, plural, one {# added} other {# added}}, {skipped, plural, one {# skipped} other {# skipped}}.",
|
|
173
|
+
"editor.resync-error": "Could not resync from HubSpot — is the form still linked?",
|
|
170
174
|
"editor.form-hint": "Select a step or a field to edit it. The public endpoint serves this form at /api/hubspot/forms/{slug}.",
|
|
171
175
|
"panel.label": "Label",
|
|
172
176
|
"panel.name": "Payload key",
|
|
@@ -236,7 +240,7 @@ const en = {
|
|
|
236
240
|
"forms.col-submissions": "Submissions",
|
|
237
241
|
"forms.submissions": "Submissions",
|
|
238
242
|
"forms.import-hubspot-title": "Import from your HubSpot portal",
|
|
239
|
-
"forms.import-hubspot-hint": "Translates a form built in HubSpot into a draft here, CRM mapping included. What the builder can't express is skipped and reported. Re-importing
|
|
243
|
+
"forms.import-hubspot-hint": "Translates a form built in HubSpot into a draft here, CRM mapping included. What the builder can't express is skipped and reported. Re-importing updates mapped fields in place and appends new ones.",
|
|
240
244
|
"forms.import-hubspot-source": "HubSpot form to import",
|
|
241
245
|
"forms.hubspot-list-error": "Could not list the portal's forms — the token needs the `forms` read scope.",
|
|
242
246
|
"forms.report-title": "Imported with gaps",
|
|
@@ -164,7 +164,11 @@ const fr = {
|
|
|
164
164
|
"editor.hubspot-form": "Formulaire marketing HubSpot",
|
|
165
165
|
"editor.hubspot-form-placeholder": "Choisir un formulaire du portail connecté",
|
|
166
166
|
"editor.hubspot-form-none": "Aucun — upsert CRM uniquement",
|
|
167
|
-
"editor.hubspot-form-hint": "Les envois passent par l’API Forms de HubSpot pour compter comme des conversions.
|
|
167
|
+
"editor.hubspot-form-hint": "Les envois passent par l’API Forms de HubSpot pour compter comme des conversions. Après une modification dans HubSpot, utilisez Resynchroniser — les champs mappés se mettent à jour sur place, les nouveaux s’ajoutent, vos étapes restent.",
|
|
168
|
+
"editor.resync": "Resynchroniser depuis HubSpot",
|
|
169
|
+
"editor.resynced": "Resynchronisé depuis HubSpot — {updated, plural, one {# champ mis à jour} other {# champs mis à jour}}, {added, plural, one {# ajouté} other {# ajoutés}}.",
|
|
170
|
+
"editor.resynced-gaps": "Resynchronisé depuis HubSpot — {updated, plural, one {# mis à jour} other {# mis à jour}}, {added, plural, one {# ajouté} other {# ajoutés}}, {skipped, plural, one {# écarté} other {# écartés}}.",
|
|
171
|
+
"editor.resync-error": "Resynchronisation impossible — le formulaire est-il toujours lié ?",
|
|
168
172
|
"editor.form-hint": "Sélectionnez une étape ou un champ pour l'éditer. Le endpoint public sert ce formulaire sur /api/hubspot/forms/{slug}.",
|
|
169
173
|
"panel.label": "Libellé",
|
|
170
174
|
"panel.name": "Clé du payload",
|
|
@@ -234,7 +238,7 @@ const fr = {
|
|
|
234
238
|
"forms.col-submissions": "Soumissions",
|
|
235
239
|
"forms.submissions": "Soumissions",
|
|
236
240
|
"forms.import-hubspot-title": "Importer depuis votre portail HubSpot",
|
|
237
|
-
"forms.import-hubspot-hint": "Traduit un formulaire construit dans HubSpot en brouillon ici, mapping CRM inclus. Ce que le builder ne sait pas exprimer est écarté et signalé. Ré-importer
|
|
241
|
+
"forms.import-hubspot-hint": "Traduit un formulaire construit dans HubSpot en brouillon ici, mapping CRM inclus. Ce que le builder ne sait pas exprimer est écarté et signalé. Ré-importer met à jour les champs mappés et ajoute les nouveaux.",
|
|
238
242
|
"forms.import-hubspot-source": "Formulaire HubSpot à importer",
|
|
239
243
|
"forms.hubspot-list-error": "Impossible de lister les formulaires du portail — le jeton a besoin du scope de lecture `forms`.",
|
|
240
244
|
"forms.report-title": "Importé avec des manques",
|
|
@@ -166,7 +166,11 @@ const fr = {
|
|
|
166
166
|
"editor.hubspot-form": "Formulaire marketing HubSpot",
|
|
167
167
|
"editor.hubspot-form-placeholder": "Choisir un formulaire du portail connecté",
|
|
168
168
|
"editor.hubspot-form-none": "Aucun — upsert CRM uniquement",
|
|
169
|
-
"editor.hubspot-form-hint": "Les envois passent par l’API Forms de HubSpot pour compter comme des conversions.
|
|
169
|
+
"editor.hubspot-form-hint": "Les envois passent par l’API Forms de HubSpot pour compter comme des conversions. Après une modification dans HubSpot, utilisez Resynchroniser — les champs mappés se mettent à jour sur place, les nouveaux s’ajoutent, vos étapes restent.",
|
|
170
|
+
"editor.resync": "Resynchroniser depuis HubSpot",
|
|
171
|
+
"editor.resynced": "Resynchronisé depuis HubSpot — {updated, plural, one {# champ mis à jour} other {# champs mis à jour}}, {added, plural, one {# ajouté} other {# ajoutés}}.",
|
|
172
|
+
"editor.resynced-gaps": "Resynchronisé depuis HubSpot — {updated, plural, one {# mis à jour} other {# mis à jour}}, {added, plural, one {# ajouté} other {# ajoutés}}, {skipped, plural, one {# écarté} other {# écartés}}.",
|
|
173
|
+
"editor.resync-error": "Resynchronisation impossible — le formulaire est-il toujours lié ?",
|
|
170
174
|
"editor.form-hint": "Sélectionnez une étape ou un champ pour l'éditer. Le endpoint public sert ce formulaire sur /api/hubspot/forms/{slug}.",
|
|
171
175
|
"panel.label": "Libellé",
|
|
172
176
|
"panel.name": "Clé du payload",
|
|
@@ -236,7 +240,7 @@ const fr = {
|
|
|
236
240
|
"forms.col-submissions": "Soumissions",
|
|
237
241
|
"forms.submissions": "Soumissions",
|
|
238
242
|
"forms.import-hubspot-title": "Importer depuis votre portail HubSpot",
|
|
239
|
-
"forms.import-hubspot-hint": "Traduit un formulaire construit dans HubSpot en brouillon ici, mapping CRM inclus. Ce que le builder ne sait pas exprimer est écarté et signalé. Ré-importer
|
|
243
|
+
"forms.import-hubspot-hint": "Traduit un formulaire construit dans HubSpot en brouillon ici, mapping CRM inclus. Ce que le builder ne sait pas exprimer est écarté et signalé. Ré-importer met à jour les champs mappés et ajoute les nouveaux.",
|
|
240
244
|
"forms.import-hubspot-source": "Formulaire HubSpot à importer",
|
|
241
245
|
"forms.hubspot-list-error": "Impossible de lister les formulaires du portail — le jeton a besoin du scope de lecture `forms`.",
|
|
242
246
|
"forms.report-title": "Importé avec des manques",
|
|
@@ -25,7 +25,7 @@ const index = {
|
|
|
25
25
|
icon: PaperPlane,
|
|
26
26
|
intlLabel: { id: `${PLUGIN_ID}.menu.label`, defaultMessage: "HubSpot Forms" },
|
|
27
27
|
permissions: [{ action: `plugin::${PLUGIN_ID}.forms`, subject: null }],
|
|
28
|
-
Component: async () => (await import("./Forms-
|
|
28
|
+
Component: async () => (await import("./Forms-BBaw53Tz.mjs")).default
|
|
29
29
|
});
|
|
30
30
|
app.customFields.register({
|
|
31
31
|
name: "property",
|
|
@@ -40,7 +40,7 @@ const index = {
|
|
|
40
40
|
defaultMessage: "Picked from the portal's real properties"
|
|
41
41
|
},
|
|
42
42
|
components: {
|
|
43
|
-
Input: async () => import("./HubspotPropertyInput-
|
|
43
|
+
Input: async () => import("./HubspotPropertyInput-Dsn7ikop.mjs")
|
|
44
44
|
},
|
|
45
45
|
// Exposed in the Content-Type Builder. Without this, `objectField` could
|
|
46
46
|
// only be set by hand-editing schema.json — which is not how anyone
|
|
@@ -103,7 +103,7 @@ const index = {
|
|
|
103
103
|
defaultMessage: "Picked from the portal's configured objects"
|
|
104
104
|
},
|
|
105
105
|
components: {
|
|
106
|
-
Input: async () => import("./HubspotObjectInput-
|
|
106
|
+
Input: async () => import("./HubspotObjectInput-BA16dswz.mjs")
|
|
107
107
|
}
|
|
108
108
|
});
|
|
109
109
|
app.customFields.register({
|
|
@@ -119,7 +119,7 @@ const index = {
|
|
|
119
119
|
defaultMessage: "A form built in the HubSpot form builder, stored by slug"
|
|
120
120
|
},
|
|
121
121
|
components: {
|
|
122
|
-
Input: async () => import("./HubspotFormInput-
|
|
122
|
+
Input: async () => import("./HubspotFormInput-DIo6hCNz.mjs")
|
|
123
123
|
}
|
|
124
124
|
});
|
|
125
125
|
app.createSettingSection(
|
|
@@ -135,7 +135,7 @@ const index = {
|
|
|
135
135
|
// Mirrors the RBAC action registered server-side: a role without it
|
|
136
136
|
// doesn't see the link at all — the routes refuse it anyway.
|
|
137
137
|
permissions: [{ action: `plugin::${PLUGIN_ID}.settings`, subject: null }],
|
|
138
|
-
Component: async () => (await import("./Settings-
|
|
138
|
+
Component: async () => (await import("./Settings-DxX9Uh_2.mjs")).default
|
|
139
139
|
}
|
|
140
140
|
]
|
|
141
141
|
);
|
|
@@ -145,7 +145,7 @@ const index = {
|
|
|
145
145
|
return Promise.all(
|
|
146
146
|
locales.map(async (locale) => {
|
|
147
147
|
try {
|
|
148
|
-
const { default: data } = await __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/en.json": () => import("./en-
|
|
148
|
+
const { default: data } = await __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/en.json": () => import("./en-Djd3TID0.mjs"), "./translations/fr.json": () => import("./fr-C7t1elmR.mjs") }), `./translations/${locale}.json`, 3);
|
|
149
149
|
return { data: prefixPluginTranslations(data), locale };
|
|
150
150
|
} catch {
|
|
151
151
|
return { data: {}, locale };
|