@antelopejs/dms-marketing 0.3.2 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +18 -15
- package/dist/config.d.ts +1 -0
- package/dist/config.js +4 -0
- package/dist/config.js.map +1 -1
- package/dist/data-api/funnels.d.ts +2 -0
- package/dist/data-api/funnels.js +8 -1
- package/dist/data-api/funnels.js.map +1 -1
- package/dist/db/models/funnels.model.d.ts +2 -0
- package/dist/db/models/funnels.model.js +9 -0
- package/dist/db/models/funnels.model.js.map +1 -1
- package/dist/db/models/index.d.ts +1 -0
- package/dist/db/models/index.js +1 -0
- package/dist/db/models/index.js.map +1 -1
- package/dist/db/models/marketing_events.model.d.ts +22 -0
- package/dist/db/models/marketing_events.model.js +70 -5
- package/dist/db/models/marketing_events.model.js.map +1 -1
- package/dist/db/models/marketing_preferences.model.d.ts +25 -0
- package/dist/db/models/marketing_preferences.model.js +29 -0
- package/dist/db/models/marketing_preferences.model.js.map +1 -0
- package/dist/db/models/marketing_sessions.model.d.ts +2 -1
- package/dist/db/models/marketing_sessions.model.js +11 -1
- package/dist/db/models/marketing_sessions.model.js.map +1 -1
- package/dist/db/models/page_snapshots.model.d.ts +2 -1
- package/dist/db/models/page_snapshots.model.js +7 -7
- package/dist/db/models/page_snapshots.model.js.map +1 -1
- package/dist/db/models/website_statistics.model.d.ts +4 -1
- package/dist/db/models/website_statistics.model.js +15 -1
- package/dist/db/models/website_statistics.model.js.map +1 -1
- package/dist/db/tables/index.d.ts +1 -0
- package/dist/db/tables/index.js +1 -0
- package/dist/db/tables/index.js.map +1 -1
- package/dist/db/tables/marketing_preferences.table.d.ts +6 -0
- package/dist/db/tables/marketing_preferences.table.js +31 -0
- package/dist/db/tables/marketing_preferences.table.js.map +1 -0
- package/dist/hooks/index.js +8 -0
- package/dist/hooks/index.js.map +1 -1
- package/dist/index.js +18 -2
- package/dist/index.js.map +1 -1
- package/dist/pages/acquisition/page.d.ts +9 -0
- package/dist/pages/acquisition/page.js +181 -0
- package/dist/pages/acquisition/page.js.map +1 -0
- package/dist/pages/all.d.ts +5 -1
- package/dist/pages/all.js +5 -1
- package/dist/pages/all.js.map +1 -1
- package/dist/pages/blocks.d.ts +18 -0
- package/dist/pages/blocks.js +56 -0
- package/dist/pages/blocks.js.map +1 -0
- package/dist/pages/funnel/page.d.ts +9 -0
- package/dist/pages/funnel/page.js +36 -0
- package/dist/pages/funnel/page.js.map +1 -0
- package/dist/pages/funnel-builder/page.d.ts +9 -0
- package/dist/pages/funnel-builder/page.js +29 -0
- package/dist/pages/funnel-builder/page.js.map +1 -0
- package/dist/pages/funnels/page.d.ts +1 -1
- package/dist/pages/funnels/page.js +200 -3
- package/dist/pages/funnels/page.js.map +1 -1
- package/dist/pages/index.d.ts +1 -0
- package/dist/pages/index.js +1 -0
- package/dist/pages/index.js.map +1 -1
- package/dist/pages/{campaigns → install}/page.d.ts +3 -3
- package/dist/pages/{campaigns → install}/page.js +14 -12
- package/dist/pages/install/page.js.map +1 -0
- package/dist/pages/module.d.ts +3 -0
- package/dist/pages/module.js +30 -3
- package/dist/pages/module.js.map +1 -1
- package/dist/pages/overview/page.d.ts +1 -1
- package/dist/pages/overview/page.js +122 -3
- package/dist/pages/overview/page.js.map +1 -1
- package/dist/pages/pages/page.d.ts +1 -1
- package/dist/pages/pages/page.js +9 -4
- package/dist/pages/pages/page.js.map +1 -1
- package/dist/pages/quick-actions.d.ts +1 -0
- package/dist/pages/quick-actions.js +25 -0
- package/dist/pages/quick-actions.js.map +1 -0
- package/dist/pages/settings/form.d.ts +2 -1
- package/dist/pages/settings/form.js +62 -20
- package/dist/pages/settings/form.js.map +1 -1
- package/dist/pages/settings/page.d.ts +4 -1
- package/dist/pages/settings/page.js +50 -4
- package/dist/pages/settings/page.js.map +1 -1
- package/dist/pages/websites/page.d.ts +11 -0
- package/dist/pages/websites/page.js +62 -0
- package/dist/pages/websites/page.js.map +1 -0
- package/dist/routes/blocks.d.ts +50 -0
- package/dist/routes/blocks.js +269 -0
- package/dist/routes/blocks.js.map +1 -0
- package/dist/routes/collect.d.ts +1 -2
- package/dist/routes/collect.js +19 -12
- package/dist/routes/collect.js.map +1 -1
- package/dist/routes/context.d.ts +8 -0
- package/dist/routes/context.js +54 -0
- package/dist/routes/context.js.map +1 -0
- package/dist/routes/experiments.js +2 -1
- package/dist/routes/experiments.js.map +1 -1
- package/dist/routes/funnels.d.ts +21 -3
- package/dist/routes/funnels.js +150 -7
- package/dist/routes/funnels.js.map +1 -1
- package/dist/routes/index.d.ts +2 -0
- package/dist/routes/index.js +2 -0
- package/dist/routes/index.js.map +1 -1
- package/dist/routes/settings.d.ts +6 -1
- package/dist/routes/settings.js +65 -4
- package/dist/routes/settings.js.map +1 -1
- package/dist/routes/snapshot.d.ts +1 -1
- package/dist/routes/snapshot.js +24 -25
- package/dist/routes/snapshot.js.map +1 -1
- package/dist/routes/stats.d.ts +14 -23
- package/dist/routes/stats.js +73 -97
- package/dist/routes/stats.js.map +1 -1
- package/dist/routes/tracker.js +6 -4
- package/dist/routes/tracker.js.map +1 -1
- package/dist/routes/websites.d.ts +4 -0
- package/dist/routes/websites.js +111 -12
- package/dist/routes/websites.js.map +1 -1
- package/dist/services/acquisition-report.d.ts +62 -0
- package/dist/services/acquisition-report.js +181 -0
- package/dist/services/acquisition-report.js.map +1 -0
- package/dist/services/acquisition.d.ts +9 -3
- package/dist/services/acquisition.js +35 -5
- package/dist/services/acquisition.js.map +1 -1
- package/dist/services/catalog.d.ts +3 -0
- package/dist/services/catalog.js +17 -0
- package/dist/services/catalog.js.map +1 -0
- package/dist/services/collect.d.ts +1 -2
- package/dist/services/collect.js +49 -24
- package/dist/services/collect.js.map +1 -1
- package/dist/services/composed.d.ts +9 -0
- package/dist/services/composed.js +62 -0
- package/dist/services/composed.js.map +1 -0
- package/dist/services/context.d.ts +20 -0
- package/dist/services/context.js +76 -0
- package/dist/services/context.js.map +1 -0
- package/dist/services/dashboard.d.ts +74 -0
- package/dist/services/dashboard.js +343 -0
- package/dist/services/dashboard.js.map +1 -0
- package/dist/services/experiments/results.d.ts +12 -1
- package/dist/services/experiments/results.js +19 -2
- package/dist/services/experiments/results.js.map +1 -1
- package/dist/services/experiments/stats.d.ts +7 -1
- package/dist/services/experiments/stats.js +43 -5
- package/dist/services/experiments/stats.js.map +1 -1
- package/dist/services/funnel-report.d.ts +64 -0
- package/dist/services/funnel-report.js +280 -0
- package/dist/services/funnel-report.js.map +1 -0
- package/dist/services/funnels/compute.d.ts +2 -0
- package/dist/services/funnels/compute.js +25 -13
- package/dist/services/funnels/compute.js.map +1 -1
- package/dist/services/funnels/results.js +4 -1
- package/dist/services/funnels/results.js.map +1 -1
- package/dist/services/funnels/step-path.d.ts +4 -0
- package/dist/services/funnels/step-path.js +47 -0
- package/dist/services/funnels/step-path.js.map +1 -0
- package/dist/services/funnels-table.d.ts +31 -0
- package/dist/services/funnels-table.js +230 -0
- package/dist/services/funnels-table.js.map +1 -0
- package/dist/services/heatmap.d.ts +15 -3
- package/dist/services/heatmap.js +54 -11
- package/dist/services/heatmap.js.map +1 -1
- package/dist/services/hourly-traffic.d.ts +4 -0
- package/dist/services/hourly-traffic.js +35 -0
- package/dist/services/hourly-traffic.js.map +1 -0
- package/dist/services/origin-guard.d.ts +9 -1
- package/dist/services/origin-guard.js +46 -1
- package/dist/services/origin-guard.js.map +1 -1
- package/dist/services/period.d.ts +26 -1
- package/dist/services/period.js +99 -9
- package/dist/services/period.js.map +1 -1
- package/dist/services/prune.d.ts +6 -0
- package/dist/services/prune.js +35 -0
- package/dist/services/prune.js.map +1 -1
- package/dist/services/request-body.d.ts +1 -2
- package/dist/services/request-body.js +10 -36
- package/dist/services/request-body.js.map +1 -1
- package/dist/services/request-meta.d.ts +0 -1
- package/dist/services/request-meta.js +0 -11
- package/dist/services/request-meta.js.map +1 -1
- package/dist/services/rollups.d.ts +25 -0
- package/dist/services/rollups.js +102 -0
- package/dist/services/rollups.js.map +1 -0
- package/dist/services/sessionize.d.ts +5 -1
- package/dist/services/sessionize.js +52 -10
- package/dist/services/sessionize.js.map +1 -1
- package/dist/services/settings.d.ts +41 -2
- package/dist/services/settings.js +219 -6
- package/dist/services/settings.js.map +1 -1
- package/dist/services/snapshots.d.ts +3 -2
- package/dist/services/snapshots.js +110 -9
- package/dist/services/snapshots.js.map +1 -1
- package/dist/services/tenant-website.js +1 -0
- package/dist/services/tenant-website.js.map +1 -1
- package/dist/services/url.js +12 -4
- package/dist/services/url.js.map +1 -1
- package/dist/services/website-hosts.d.ts +15 -0
- package/dist/services/website-hosts.js +67 -0
- package/dist/services/website-hosts.js.map +1 -0
- package/dist/services/website-report.d.ts +40 -0
- package/dist/services/website-report.js +84 -0
- package/dist/services/website-report.js.map +1 -0
- package/dist/types/constants.d.ts +14 -2
- package/dist/types/constants.js +17 -6
- package/dist/types/constants.js.map +1 -1
- package/dist/types/events.d.ts +221 -68
- package/dist/types/events.js +60 -11
- package/dist/types/events.js.map +1 -1
- package/dist/types/snapshots.d.ts +6 -0
- package/dist/types/snapshots.js +2 -0
- package/dist/types/snapshots.js.map +1 -1
- package/dist/types/statistics.d.ts +2 -1
- package/dist/types/statistics.js +9 -2
- package/dist/types/statistics.js.map +1 -1
- package/dist/utils/experiment-type.js +1 -1
- package/dist/utils/experiment-type.js.map +1 -1
- package/dist/utils/funnel-steps-type.d.ts +21 -3
- package/dist/utils/funnel-steps-type.js +7 -2
- package/dist/utils/funnel-steps-type.js.map +1 -1
- package/frontend-vue/app/components/ChannelsCard.vue +265 -0
- package/frontend-vue/app/components/Context.vue +479 -0
- package/frontend-vue/app/components/ExperimentInput.vue +3 -1
- package/frontend-vue/app/components/ExperimentReport.vue +736 -0
- package/frontend-vue/app/components/FirstRun.vue +60 -0
- package/frontend-vue/app/components/FunnelBuilder.vue +1595 -0
- package/frontend-vue/app/components/FunnelFigure.vue +640 -0
- package/frontend-vue/app/components/FunnelReport.vue +532 -0
- package/frontend-vue/app/components/FunnelStepsInput.vue +3 -1
- package/frontend-vue/app/components/FunnelTemplates.vue +161 -0
- package/frontend-vue/app/components/HeatmapCanvas.vue +11 -4
- package/frontend-vue/app/components/InstallGuide.vue +753 -0
- package/frontend-vue/app/components/PagePreview.vue +889 -416
- package/frontend-vue/app/components/PagesExplorer.vue +552 -0
- package/frontend-vue/app/components/ScrollDepthOverlay.vue +48 -20
- package/frontend-vue/app/components/TopListTabs.vue +317 -0
- package/frontend-vue/app/components/TrackerSnippet.vue +50 -16
- package/frontend-vue/app/components/VariationsInput.vue +15 -5
- package/frontend-vue/app/components/WebsitesGrid.vue +799 -0
- package/frontend-vue/app/composables/useContextLink.ts +16 -0
- package/frontend-vue/app/composables/useExperiment.ts +1 -2
- package/frontend-vue/app/composables/useFunnelSteps.ts +1 -2
- package/frontend-vue/app/composables/useLatestRequest.ts +2 -4
- package/frontend-vue/app/composables/useMarketingApi.ts +298 -133
- package/frontend-vue/app/composables/useMarketingContext.ts +55 -0
- package/frontend-vue/app/composables/useMarketingRoutes.ts +80 -27
- package/frontend-vue/app/composables/useSnapshotFrame.ts +26 -4
- package/frontend-vue/app/constants.ts +22 -0
- package/frontend-vue/app/plugins/funnel-steps-data-type.client.ts +2 -1
- package/frontend-vue/app/utils/channels.ts +37 -0
- package/frontend-vue/app/utils/format.ts +132 -0
- package/frontend-vue/app/utils/funnel-draft.ts +264 -0
- package/frontend-vue/app/utils/heatmap.ts +82 -0
- package/frontend-vue/app/utils/heatmapPalette.ts +10 -0
- package/frontend-vue/app/utils/host-conflict.ts +48 -0
- package/frontend-vue/app/utils/sample-size.ts +17 -0
- package/frontend-vue/app/utils/snapshotViewportUnits.ts +15 -5
- package/frontend-vue/app/utils/snippet.ts +53 -0
- package/frontend-vue/app/utils/step-path.ts +32 -0
- package/frontend-vue/dms.frontend.ts +4 -3
- package/frontend-vue/i18n/locales/marketing-en-GB.json +1083 -316
- package/frontend-vue/i18n/locales/marketing-fr-FR.json +1087 -320
- package/frontend-vue/package.json +3 -0
- package/frontend-vue/tests/drafts.test.ts +3 -3
- package/frontend-vue/tests/format.test.ts +73 -0
- package/frontend-vue/tests/funnel-draft.test.ts +194 -0
- package/frontend-vue/tests/heatmap.test.ts +32 -0
- package/frontend-vue/tests/i18n.test.ts +87 -4
- package/frontend-vue/tests/latest-request.test.ts +6 -3
- package/frontend-vue/tests/locale-typography.test.ts +115 -0
- package/frontend-vue/tests/registration.test.ts +21 -11
- package/frontend-vue/tests/routes.test.ts +67 -7
- package/frontend-vue/tests/server-parity.test.ts +77 -0
- package/frontend-vue/tests/stubs/frontend-module.ts +18 -3
- package/package.json +9 -7
- package/static/snapshot.js +46 -16
- package/static/tracker.js +139 -48
- package/dist/pages/campaigns/page.js.map +0 -1
- package/frontend-vue/app/components/CampaignsView.vue +0 -330
- package/frontend-vue/app/components/FunnelDetail.vue +0 -1026
- package/frontend-vue/app/components/FunnelsView.vue +0 -493
- package/frontend-vue/app/components/NoWebsiteState.vue +0 -18
- package/frontend-vue/app/components/OverviewView.vue +0 -493
- package/frontend-vue/app/components/PagesView.vue +0 -391
- package/frontend-vue/app/components/TextKpiCard.vue +0 -28
- package/frontend-vue/app/components/TopListTabsCard.vue +0 -162
- package/frontend-vue/app/composables/useChildId.ts +0 -13
- package/frontend-vue/app/composables/useMarketingPeriod.ts +0 -65
- package/frontend-vue/app/composables/useMarketingWebsiteForm.ts +0 -69
- package/frontend-vue/app/composables/useMarketingWebsites.ts +0 -80
- package/frontend-vue/app/utils/dmsComponent.ts +0 -18
- package/frontend-vue/tests/period.test.ts +0 -35
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page_snapshots.model.js","sourceRoot":"","sources":["../../../src/db/models/page_snapshots.model.ts"],"names":[],"mappings":";;;AAAA,6FAA2E;AAC3E,yEAGwC;AACxC,2CAAgD;AAEhD,MAAa,kBAAmB,SAAQ,IAAA,8CAAc,EACpD,mCAAY,EACZ,6CAAsB,CACvB;IAEC,KAAK,CAAC,SAAS,CAAC,SAAiB,EAAE,GAAW;QAC5C,OAAO,IAAI,CAAC,KAAK;aACd,MAAM,CAAC,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC;aAChC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;aACvC,GAAG,EAAE,CAAC;IACX,CAAC;
|
|
1
|
+
{"version":3,"file":"page_snapshots.model.js","sourceRoot":"","sources":["../../../src/db/models/page_snapshots.model.ts"],"names":[],"mappings":";;;AAAA,6FAA2E;AAC3E,yEAGwC;AACxC,2CAAgD;AAEhD,MAAa,kBAAmB,SAAQ,IAAA,8CAAc,EACpD,mCAAY,EACZ,6CAAsB,CACvB;IAEC,KAAK,CAAC,SAAS,CAAC,SAAiB,EAAE,GAAW;QAC5C,OAAO,IAAI,CAAC,KAAK;aACd,MAAM,CAAC,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC;aAChC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;aACvC,GAAG,EAAE,CAAC;IACX,CAAC;IAGD,KAAK,CAAC,cAAc,CAAC,SAAiB,EAAE,GAAY;QAClD,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,CAAC;IACtD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAiB;QAC5B,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC;IAC9D,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,SAAiB,EAAE,GAAY;QACnD,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC;IACvD,CAAC;IAED,KAAK,CAAC,eAAe,CAAC,MAAY;QAChC,OAAO,IAAA,6BAAiB,EAAC,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC;IAGO,SAAS,CAAC,SAAiB,EAAE,GAAY;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,EAAE,WAAW,CAAC,CAAC;QACzD,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACnE,CAAC;CACF;AAlCD,gDAkCC"}
|
|
@@ -2,6 +2,7 @@ import { type TopDimension, type TopEntries, type MarketingStatsDelta } from "@/
|
|
|
2
2
|
import { WebsiteStatistics } from "../tables/website_statistics.table";
|
|
3
3
|
export declare function dayRowId(websiteId: string, day: number): string;
|
|
4
4
|
export type DayTops = Partial<Record<TopDimension, TopEntries>>;
|
|
5
|
+
type DayCounters = Pick<WebsiteStatistics, "day" | "sessions" | "pageviews">;
|
|
5
6
|
declare const WebsiteStatisticsModel_base: {
|
|
6
7
|
new (database: import("@antelopejs/interface-database").SchemaInstance<any>): {
|
|
7
8
|
readonly table: import("@antelopejs/interface-database").Table<WebsiteStatistics>;
|
|
@@ -22,10 +23,12 @@ declare const WebsiteStatisticsModel_base: {
|
|
|
22
23
|
};
|
|
23
24
|
export declare class WebsiteStatisticsModel extends WebsiteStatisticsModel_base {
|
|
24
25
|
getDaysSince(websiteId: string, cutoff: number): Promise<WebsiteStatistics[]>;
|
|
25
|
-
|
|
26
|
+
getDaysBetween(websiteId: string, firstDay: number, lastDay: number): Promise<WebsiteStatistics[]>;
|
|
27
|
+
getTopsSince(websiteId: string, cutoff: number, dimensions: readonly TopDimension[], lastDay: number): Promise<DayTops[]>;
|
|
26
28
|
addDelta(id: string, delta: MarketingStatsDelta, tops: Record<TopDimension, TopEntries>): Promise<number>;
|
|
27
29
|
deleteDaysBefore(cutoff: number): Promise<number>;
|
|
28
30
|
emptyTopsBefore(cutoff: number): Promise<number>;
|
|
29
31
|
deleteByWebsite(websiteId: string): Promise<number>;
|
|
32
|
+
getCounters(websiteId: string): Promise<DayCounters[]>;
|
|
30
33
|
}
|
|
31
34
|
export {};
|
|
@@ -16,10 +16,18 @@ class WebsiteStatisticsModel extends (0, interface_database_decorators_1.BasicDa
|
|
|
16
16
|
.orderBy("day", "asc")
|
|
17
17
|
.run();
|
|
18
18
|
}
|
|
19
|
-
async
|
|
19
|
+
async getDaysBetween(websiteId, firstDay, lastDay) {
|
|
20
|
+
return this.table
|
|
21
|
+
.getAll(websiteId, "websiteId")
|
|
22
|
+
.filter((doc) => doc.key("day").ge(firstDay).and(doc.key("day").le(lastDay)))
|
|
23
|
+
.orderBy("day", "asc")
|
|
24
|
+
.run();
|
|
25
|
+
}
|
|
26
|
+
async getTopsSince(websiteId, cutoff, dimensions, lastDay) {
|
|
20
27
|
return this.table
|
|
21
28
|
.getAll(websiteId, "websiteId")
|
|
22
29
|
.filter((doc) => doc.key("day").ge(cutoff))
|
|
30
|
+
.filter((doc) => doc.key("day").le(lastDay))
|
|
23
31
|
.map((doc) => {
|
|
24
32
|
const tops = doc.key("tops");
|
|
25
33
|
return Object.fromEntries(dimensions.map((dimension) => [dimension, tops.key(dimension)]));
|
|
@@ -58,6 +66,12 @@ class WebsiteStatisticsModel extends (0, interface_database_decorators_1.BasicDa
|
|
|
58
66
|
async deleteByWebsite(websiteId) {
|
|
59
67
|
return this.table.getAll(websiteId, "websiteId").delete().run();
|
|
60
68
|
}
|
|
69
|
+
async getCounters(websiteId) {
|
|
70
|
+
return this.table
|
|
71
|
+
.getAll(websiteId, "websiteId")
|
|
72
|
+
.pluck("day", "sessions", "pageviews")
|
|
73
|
+
.run();
|
|
74
|
+
}
|
|
61
75
|
}
|
|
62
76
|
exports.WebsiteStatisticsModel = WebsiteStatisticsModel;
|
|
63
77
|
//# sourceMappingURL=website_statistics.model.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"website_statistics.model.js","sourceRoot":"","sources":["../../../src/db/models/website_statistics.model.ts"],"names":[],"mappings":";;;AAaA,4BAEC;AAfD,6FAA2E;AAC3E,mCAKiB;AACjB,iFAG4C;AAG5C,SAAgB,QAAQ,CAAC,SAAiB,EAAE,GAAW;IACrD,OAAO,GAAG,SAAS,IAAI,GAAG,EAAE,CAAC;AAC/B,CAAC;
|
|
1
|
+
{"version":3,"file":"website_statistics.model.js","sourceRoot":"","sources":["../../../src/db/models/website_statistics.model.ts"],"names":[],"mappings":"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"}
|
package/dist/db/tables/index.js
CHANGED
|
@@ -16,6 +16,7 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./funnels.table"), exports);
|
|
18
18
|
__exportStar(require("./marketing_events.table"), exports);
|
|
19
|
+
__exportStar(require("./marketing_preferences.table"), exports);
|
|
19
20
|
__exportStar(require("./marketing_sessions.table"), exports);
|
|
20
21
|
__exportStar(require("./marketing_settings.table"), exports);
|
|
21
22
|
__exportStar(require("./page_snapshots.table"), exports);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/db/tables/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,2DAAyC;AACzC,6DAA2C;AAC3C,6DAA2C;AAC3C,yDAAuC;AACvC,6DAA2C;AAC3C,mDAAiC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/db/tables/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,kDAAgC;AAChC,2DAAyC;AACzC,gEAA8C;AAC9C,6DAA2C;AAC3C,6DAA2C;AAC3C,yDAAuC;AACvC,6DAA2C;AAC3C,mDAAiC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.MarketingPreferences = exports.marketingPreferencesTableName = void 0;
|
|
13
|
+
const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
|
|
14
|
+
const constants_1 = require("@antelopejs/interface-dms/constants");
|
|
15
|
+
exports.marketingPreferencesTableName = "marketing_preferences";
|
|
16
|
+
let MarketingPreferences = class MarketingPreferences extends interface_database_decorators_1.Table {
|
|
17
|
+
};
|
|
18
|
+
exports.MarketingPreferences = MarketingPreferences;
|
|
19
|
+
__decorate([
|
|
20
|
+
(0, interface_database_decorators_1.Field)("string"),
|
|
21
|
+
__metadata("design:type", String)
|
|
22
|
+
], MarketingPreferences.prototype, "websiteId", void 0);
|
|
23
|
+
__decorate([
|
|
24
|
+
(0, interface_database_decorators_1.UpdateTime)(),
|
|
25
|
+
(0, interface_database_decorators_1.Field)("date"),
|
|
26
|
+
__metadata("design:type", Date)
|
|
27
|
+
], MarketingPreferences.prototype, "updatedAt", void 0);
|
|
28
|
+
exports.MarketingPreferences = MarketingPreferences = __decorate([
|
|
29
|
+
(0, interface_database_decorators_1.RegisterTable)(exports.marketingPreferencesTableName, constants_1.TENANT_SCHEMA_NAME)
|
|
30
|
+
], MarketingPreferences);
|
|
31
|
+
//# sourceMappingURL=marketing_preferences.table.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"marketing_preferences.table.js","sourceRoot":"","sources":["../../../src/db/tables/marketing_preferences.table.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,6FAKmD;AACnD,mEAAyE;AAE5D,QAAA,6BAA6B,GAAG,uBAAuB,CAAC;AAS9D,IAAM,oBAAoB,GAA1B,MAAM,oBAAqB,SAAQ,qCAAK;CAO9C,CAAA;AAPY,oDAAoB;AAEvB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;uDACU;AAIlB;IAFP,IAAA,0CAAU,GAAE;IACZ,IAAA,qCAAK,EAAC,MAAM,CAAC;8BACK,IAAI;uDAAC;+BANb,oBAAoB;IADhC,IAAA,6CAAa,EAAC,qCAA6B,EAAE,8BAAkB,CAAC;GACpD,oBAAoB,CAOhC"}
|
package/dist/hooks/index.js
CHANGED
|
@@ -11,6 +11,7 @@ const TENANT_MODELS = [
|
|
|
11
11
|
db_1.PageSnapshotsModel,
|
|
12
12
|
db_1.WebsiteStatisticsModel,
|
|
13
13
|
db_1.FunnelsModel,
|
|
14
|
+
db_1.MarketingPreferencesModel,
|
|
14
15
|
];
|
|
15
16
|
async function purgeTenantMarketingData(tenantId) {
|
|
16
17
|
for (const modelClass of TENANT_MODELS) {
|
|
@@ -35,5 +36,12 @@ function registerMarketingHookListeners() {
|
|
|
35
36
|
return undefined;
|
|
36
37
|
});
|
|
37
38
|
(0, hooks_1.RegisterHook)(hooks_1.Hook.TENANT_DATA_EXPORT, exportTenantMarketingData);
|
|
39
|
+
(0, hooks_1.RegisterHook)(hooks_1.Hook.USER_DELETED, forgetUserPreferences);
|
|
40
|
+
}
|
|
41
|
+
async function forgetUserPreferences(payload) {
|
|
42
|
+
for (const tenantId of payload.tenantIds) {
|
|
43
|
+
await (0, interface_database_decorators_1.GetModel)(db_1.MarketingPreferencesModel, tenantId).forget(payload.userId);
|
|
44
|
+
}
|
|
45
|
+
return undefined;
|
|
38
46
|
}
|
|
39
47
|
//# sourceMappingURL=index.js.map
|
package/dist/hooks/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":";;AA4DA,wEAOC;AAnED,6FAAqE;AAKrE,2DAAqE;AACrE,6BAQc;AACd,iDAAwD;AAQxD,MAAM,aAAa,GAAkD;IACnE,yBAAoB;IACpB,2BAAsB;IACtB,uBAAkB;IAClB,2BAAsB;IACtB,iBAAY;IACZ,8BAAyB;CAC1B,CAAC;AAEF,KAAK,UAAU,wBAAwB,CAAC,QAAgB;IACtD,KAAK,MAAM,UAAU,IAAI,aAAa,EAAE,CAAC;QACvC,MAAM,IAAA,wCAAQ,EAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC;IAC5D,CAAC;IAGD,MAAM,IAAA,wCAAQ,EAAC,kBAAa,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;AACzD,CAAC;AAED,KAAK,UAAU,yBAAyB,CACtC,QAAgB;IAEhB,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACxD,IAAA,wCAAQ,EAAC,kBAAa,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC;QAC7C,IAAA,wCAAQ,EAAC,iBAAY,EAAE,QAAQ,CAAC,CAAC,MAAM,EAAE;QACzC,IAAA,wCAAQ,EAAC,2BAAsB,EAAE,QAAQ,CAAC,CAAC,MAAM,EAAE;KACpD,CAAC,CAAC;IACH,OAAO;QACL,QAAQ,EAAE,+BAAmB;QAC7B,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE;KACxC,CAAC;AACJ,CAAC;AAOD,SAAgB,8BAA8B;IAC5C,IAAA,oBAAY,EAAC,YAAI,CAAC,cAAc,EAAE,KAAK,EAAE,QAAgB,EAAE,EAAE;QAC3D,MAAM,wBAAwB,CAAC,QAAQ,CAAC,CAAC;QACzC,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC,CAAC;IACH,IAAA,oBAAY,EAAC,YAAI,CAAC,kBAAkB,EAAE,yBAAyB,CAAC,CAAC;IACjE,IAAA,oBAAY,EAAC,YAAI,CAAC,YAAY,EAAE,qBAAqB,CAAC,CAAC;AACzD,CAAC;AAGD,KAAK,UAAU,qBAAqB,CAClC,OAA+B;IAE/B,KAAK,MAAM,QAAQ,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QACzC,MAAM,IAAA,wCAAQ,EAAC,8BAAyB,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -55,7 +55,9 @@ const hooks_2 = require("./hooks");
|
|
|
55
55
|
const services_1 = require("./services");
|
|
56
56
|
const constants_1 = require("./types/constants");
|
|
57
57
|
const HOURLY_CRON = "0 * * * *";
|
|
58
|
+
const SETTINGS_RELOAD_MS = 30 * constants_1.MS_PER_SECOND;
|
|
58
59
|
let pruneTask = null;
|
|
60
|
+
let settingsReload = null;
|
|
59
61
|
async function construct(config) {
|
|
60
62
|
(0, config_1.setConfig)(config);
|
|
61
63
|
await (0, services_1.loadGeoipDatabase)();
|
|
@@ -70,17 +72,31 @@ async function construct(config) {
|
|
|
70
72
|
});
|
|
71
73
|
}
|
|
72
74
|
async function onDatabaseInitialized() {
|
|
73
|
-
|
|
75
|
+
const settings = (0, interface_database_decorators_1.GetModel)(db_1.MarketingSettingsModel);
|
|
76
|
+
await (0, services_1.loadSettings)(settings);
|
|
77
|
+
settingsReload ??= setInterval(() => {
|
|
78
|
+
void (0, services_1.reloadSettings)(settings).catch(logReloadError);
|
|
79
|
+
}, SETTINGS_RELOAD_MS);
|
|
80
|
+
settingsReload.unref();
|
|
74
81
|
pruneTask ??= node_cron_1.default.schedule(HOURLY_CRON, () => {
|
|
75
|
-
void (0, services_1.
|
|
82
|
+
void (0, services_1.reloadSettings)(settings)
|
|
83
|
+
.then(() => (0, services_1.pruneAllTenants)(logPruneError))
|
|
84
|
+
.catch(logPruneError);
|
|
76
85
|
});
|
|
77
86
|
return undefined;
|
|
78
87
|
}
|
|
79
88
|
function logPruneError(err) {
|
|
80
89
|
logging_1.Logging.Error("[dms-marketing] retention prune failed:", err);
|
|
81
90
|
}
|
|
91
|
+
function logReloadError(err) {
|
|
92
|
+
logging_1.Logging.Error("[dms-marketing] settings reload failed:", err);
|
|
93
|
+
}
|
|
82
94
|
function destroy() { }
|
|
83
95
|
function stop() {
|
|
96
|
+
if (settingsReload) {
|
|
97
|
+
clearInterval(settingsReload);
|
|
98
|
+
settingsReload = null;
|
|
99
|
+
}
|
|
84
100
|
if (pruneTask) {
|
|
85
101
|
void pruneTask.stop();
|
|
86
102
|
pruneTask = null;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BA,8BAqBC;AAkCD,0BAAkC;AAElC,oBAWC;AAjGD,6BAA8C;AAC9C,sBAAoB;AACpB,oBAAkB;AAClB,mBAAiB;AAEjB,0DAA6B;AAC7B,+DAAgE;AAChE,gEAA6D;AAC7D,6FAAqE;AACrE,2DAAqE;AACrE,yDAAmE;AACnE,0DAAqD;AACrD,qCAA8D;AAC9D,mCAAyD;AACzD,yCAKoB;AACpB,iDAAwE;AAExE,MAAM,WAAW,GAAG,WAAW,CAAC;AAEhC,MAAM,kBAAkB,GAAG,EAAE,GAAG,yBAAa,CAAC;AAE9C,IAAI,SAAS,GAAyB,IAAI,CAAC;AAC3C,IAAI,cAAc,GAA0B,IAAI,CAAC;AAE1C,KAAK,UAAU,SAAS,CAC7B,MAAoC;IAEpC,IAAA,kBAAS,EAAC,MAAM,CAAC,CAAC;IAClB,MAAM,IAAA,4BAAiB,GAAE,CAAC;IAC1B,IAAA,sCAA8B,GAAE,CAAC;IACjC,IAAA,oBAAY,EAAC,YAAI,CAAC,oBAAoB,EAAE,qBAAqB,CAAC,CAAC;IAI/D,IAAA,mCAAkB,EAChB,wDAAa,qCAAqC,GAAC,EACnD,wDAAa,iCAAiC,GAAC,CAChD,CAAC;IAEF,MAAM,IAAA,wBAAiB,EAAC;QACtB,IAAI,EAAE,gCAAoB;QAC1B,UAAU,EAAE,mBAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC;QACnD,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE;QACvC,QAAQ,EAAE,CAAC;KACZ,CAAC,CAAC;AACL,CAAC;AAQD,KAAK,UAAU,qBAAqB;IAClC,MAAM,QAAQ,GAAG,IAAA,wCAAQ,EAAC,2BAAsB,CAAC,CAAC;IAClD,MAAM,IAAA,uBAAY,EAAC,QAAQ,CAAC,CAAC;IAI7B,cAAc,KAAK,WAAW,CAAC,GAAG,EAAE;QAClC,KAAK,IAAA,yBAAc,EAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;IACtD,CAAC,EAAE,kBAAkB,CAAC,CAAC;IACvB,cAAc,CAAC,KAAK,EAAE,CAAC;IACvB,SAAS,KAAK,mBAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG,EAAE;QAC5C,KAAK,IAAA,yBAAc,EAAC,QAAQ,CAAC;aAC1B,IAAI,CAAC,GAAG,EAAE,CAAC,IAAA,0BAAe,EAAC,aAAa,CAAC,CAAC;aAC1C,KAAK,CAAC,aAAa,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;IACH,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,aAAa,CAAC,GAAY;IACjC,iBAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,GAAG,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,cAAc,CAAC,GAAY;IAClC,iBAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,GAAG,CAAC,CAAC;AAChE,CAAC;AAED,SAAgB,OAAO,KAAU,CAAC;AAElC,SAAgB,IAAI;IAClB,IAAI,cAAc,EAAE,CAAC;QACnB,aAAa,CAAC,cAAc,CAAC,CAAC;QAC9B,cAAc,GAAG,IAAI,CAAC;IACxB,CAAC;IACD,IAAI,SAAS,EAAE,CAAC;QAGd,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;QACtB,SAAS,GAAG,IAAI,CAAC;IACnB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
declare const MarketingAcquisitionPage_base: {
|
|
2
|
+
new (...args: any[]): {};
|
|
3
|
+
extend: <T extends import("@antelopejs/interface-api").ControllerClass>(this: T, location: string) => T;
|
|
4
|
+
location: string;
|
|
5
|
+
};
|
|
6
|
+
export declare class MarketingAcquisitionPage extends MarketingAcquisitionPage_base {
|
|
7
|
+
static content: import("@antelopejs/interface-dms").ComponentBuilder<import("../blocks").MarketingContextOptions>;
|
|
8
|
+
}
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.MarketingAcquisitionPage = void 0;
|
|
10
|
+
const banner_1 = require("@antelopejs/interface-dms/base/banner");
|
|
11
|
+
const default_types_1 = require("@antelopejs/interface-dms/base/data-types/default-types");
|
|
12
|
+
const grid_1 = require("@antelopejs/interface-dms/base/grid");
|
|
13
|
+
const key_value_list_1 = require("@antelopejs/interface-dms/base/key-value-list");
|
|
14
|
+
const layouts_1 = require("@antelopejs/interface-dms/base/layouts");
|
|
15
|
+
const table_view_1 = require("@antelopejs/interface-dms/base/table-view");
|
|
16
|
+
const column_display_1 = require("@antelopejs/interface-dms/base/table-view/column-display");
|
|
17
|
+
const top_list_card_1 = require("@antelopejs/interface-dms/base/top-list-card");
|
|
18
|
+
const page_1 = require("@antelopejs/interface-dms/page");
|
|
19
|
+
const types_1 = require("@/types");
|
|
20
|
+
const constants_1 = require("@/types/constants");
|
|
21
|
+
const blocks_1 = require("../blocks");
|
|
22
|
+
const module_1 = require("../module");
|
|
23
|
+
const CHANNEL_ICONS = {
|
|
24
|
+
direct: "i-ph-arrow-elbow-down-right",
|
|
25
|
+
organic: "i-ph-magnifying-glass",
|
|
26
|
+
email: "i-ph-envelope-simple",
|
|
27
|
+
referral: "i-ph-link",
|
|
28
|
+
social: "i-ph-share-network",
|
|
29
|
+
paid: "i-ph-currency-eur",
|
|
30
|
+
};
|
|
31
|
+
const RULES_PREFIX = "$page.marketing.acquisition.rules.";
|
|
32
|
+
const CHANNEL_RULES = [
|
|
33
|
+
"paid",
|
|
34
|
+
"email",
|
|
35
|
+
"social",
|
|
36
|
+
"organic",
|
|
37
|
+
"referral",
|
|
38
|
+
"direct",
|
|
39
|
+
].map((channel) => ({
|
|
40
|
+
id: channel,
|
|
41
|
+
label: `$page.marketing.channels.${channel}`,
|
|
42
|
+
value: `${RULES_PREFIX}${channel}`,
|
|
43
|
+
}));
|
|
44
|
+
const CAMPAIGNS_PREFIX = "$page.marketing.acquisition.campaigns.";
|
|
45
|
+
const utmText = () => ({
|
|
46
|
+
type: new default_types_1.DefaultDataTypes.StringType(),
|
|
47
|
+
display: new column_display_1.DefaultDisplays.TwoLineDisplay({
|
|
48
|
+
emptyLabel: `${CAMPAIGNS_PREFIX}not_set`,
|
|
49
|
+
}),
|
|
50
|
+
sortable: true,
|
|
51
|
+
});
|
|
52
|
+
const campaignsTable = table_view_1.TableView.fromSource({
|
|
53
|
+
caption: `${CAMPAIGNS_PREFIX}title`,
|
|
54
|
+
fetchUrl: (0, blocks_1.websiteUrl)(`${blocks_1.BLOCKS_API}/campaigns/rows`),
|
|
55
|
+
periodScope: blocks_1.MARKETING_PERIOD_SCOPE,
|
|
56
|
+
capabilities: { search: true, filter: true, sort: true, paginate: true },
|
|
57
|
+
searchPlaceholder: `${CAMPAIGNS_PREFIX}filter`,
|
|
58
|
+
pageSize: 25,
|
|
59
|
+
defaultSort: { field: "sessions", desc: true },
|
|
60
|
+
columns: {
|
|
61
|
+
campaign: { name: `${CAMPAIGNS_PREFIX}campaign`, order: 1, ...utmText() },
|
|
62
|
+
source: { name: `${CAMPAIGNS_PREFIX}source`, order: 2, ...utmText() },
|
|
63
|
+
medium: { name: `${CAMPAIGNS_PREFIX}medium`, order: 3, ...utmText() },
|
|
64
|
+
channel: {
|
|
65
|
+
name: `${CAMPAIGNS_PREFIX}channel`,
|
|
66
|
+
order: 4,
|
|
67
|
+
filterable: true,
|
|
68
|
+
type: new default_types_1.DefaultDataTypes.SelectType({
|
|
69
|
+
items: types_1.MARKETING_CHANNELS.map((channel) => ({
|
|
70
|
+
value: channel,
|
|
71
|
+
label: `$page.marketing.channels.${channel}`,
|
|
72
|
+
icon: CHANNEL_ICONS[channel],
|
|
73
|
+
})),
|
|
74
|
+
}),
|
|
75
|
+
},
|
|
76
|
+
sessions: {
|
|
77
|
+
name: `${CAMPAIGNS_PREFIX}sessions`,
|
|
78
|
+
order: 5,
|
|
79
|
+
type: new default_types_1.DefaultDataTypes.NumberType(),
|
|
80
|
+
display: new column_display_1.DefaultDisplays.TwoLineDisplay({ subField: "share" }),
|
|
81
|
+
sortable: true,
|
|
82
|
+
},
|
|
83
|
+
daily: {
|
|
84
|
+
name: `${CAMPAIGNS_PREFIX}per_day`,
|
|
85
|
+
order: 6,
|
|
86
|
+
type: new default_types_1.DefaultDataTypes.StringType(),
|
|
87
|
+
display: new column_display_1.DefaultDisplays.SparklineDisplay({ field: "daily" }),
|
|
88
|
+
},
|
|
89
|
+
missingMedium: {
|
|
90
|
+
name: `${CAMPAIGNS_PREFIX}flags`,
|
|
91
|
+
order: 7,
|
|
92
|
+
type: new default_types_1.DefaultDataTypes.BooleanType(),
|
|
93
|
+
display: new column_display_1.DefaultDisplays.IndicatorDisplay({
|
|
94
|
+
onLabel: `${CAMPAIGNS_PREFIX}missing_medium`,
|
|
95
|
+
onIcon: "i-ph-warning",
|
|
96
|
+
onTone: "warning",
|
|
97
|
+
offLabel: "",
|
|
98
|
+
offIcon: "",
|
|
99
|
+
}),
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
|
+
tabs: [
|
|
103
|
+
{ id: "all", label: `${CAMPAIGNS_PREFIX}all` },
|
|
104
|
+
...types_1.MARKETING_CHANNELS.map((channel) => ({
|
|
105
|
+
id: channel,
|
|
106
|
+
label: `$page.marketing.channels.${channel}`,
|
|
107
|
+
icon: CHANNEL_ICONS[channel],
|
|
108
|
+
filter: { accessorKey: "channel", mode: "is", value: channel },
|
|
109
|
+
})),
|
|
110
|
+
],
|
|
111
|
+
emptyStates: {
|
|
112
|
+
firstRun: {
|
|
113
|
+
icon: "i-ph-megaphone",
|
|
114
|
+
title: `${CAMPAIGNS_PREFIX}empty_title`,
|
|
115
|
+
description: `${CAMPAIGNS_PREFIX}empty_description`,
|
|
116
|
+
},
|
|
117
|
+
filtered: {
|
|
118
|
+
icon: "i-ph-magnifying-glass",
|
|
119
|
+
title: `${CAMPAIGNS_PREFIX}no_match`,
|
|
120
|
+
},
|
|
121
|
+
},
|
|
122
|
+
footer: {
|
|
123
|
+
countLabel: `${CAMPAIGNS_PREFIX}count`,
|
|
124
|
+
hint: `${CAMPAIGNS_PREFIX}note`,
|
|
125
|
+
},
|
|
126
|
+
});
|
|
127
|
+
function campaignNotice(kind) {
|
|
128
|
+
return (0, banner_1.Banner)({
|
|
129
|
+
fetchUrl: (0, blocks_1.websiteUrl)(`${blocks_1.BLOCKS_API}/campaigns/notice?kind=${kind}`),
|
|
130
|
+
periodScope: blocks_1.MARKETING_PERIOD_SCOPE,
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
function topDimension(dimension, key, icon) {
|
|
134
|
+
return (0, top_list_card_1.TopListCard)({
|
|
135
|
+
title: `$page.marketing.acquisition.tops.${key}`,
|
|
136
|
+
fetchUrl: (0, blocks_1.websiteUrl)(`${blocks_1.BLOCKS_API}/top?dimension=${dimension}&limit=5`),
|
|
137
|
+
periodScope: blocks_1.MARKETING_PERIOD_SCOPE,
|
|
138
|
+
valueFormat: "number",
|
|
139
|
+
showRank: true,
|
|
140
|
+
highlightTopN: 3,
|
|
141
|
+
skeletonCount: 5,
|
|
142
|
+
emptyLabel: "$page.marketing.acquisition.tops.empty",
|
|
143
|
+
}).meta((0, blocks_1.blockMeta)(`acquisition_${key}`, icon));
|
|
144
|
+
}
|
|
145
|
+
let MarketingAcquisitionPage = class MarketingAcquisitionPage extends (0, page_1.PageController)("acquisition", {
|
|
146
|
+
displayName: "$page.marketing.acquisition.title",
|
|
147
|
+
description: "$page.marketing.acquisition.description",
|
|
148
|
+
icon: "i-ph-megaphone",
|
|
149
|
+
module: constants_1.MARKETING_MODULE_ID,
|
|
150
|
+
category: module_1.analyticsCategory,
|
|
151
|
+
order: 2,
|
|
152
|
+
live: blocks_1.CONTEXT_PAGE_LIVE,
|
|
153
|
+
}, (0, layouts_1.DefaultLayout)()) {
|
|
154
|
+
static content = (0, blocks_1.MarketingContext)()
|
|
155
|
+
.child("waiting", (0, banner_1.Banner)({ fetchUrl: (0, blocks_1.websiteUrl)(`${blocks_1.BLOCKS_API}/website-notice`) }).meta((0, blocks_1.blockMeta)("website_waiting", "i-ph-plugs")))
|
|
156
|
+
.child("channels", (0, grid_1.Grid)({ minColumnWidth: "280px" })
|
|
157
|
+
.child("row", (0, grid_1.GridRow)()
|
|
158
|
+
.child("split", (0, blocks_1.MarketingBlock)("ChannelsCard", "channels", "i-ph-chart-bar-horizontal", {
|
|
159
|
+
fetchUrl: (0, blocks_1.websiteUrl)(`${blocks_1.BLOCKS_API}/channels`),
|
|
160
|
+
periodScope: blocks_1.MARKETING_PERIOD_SCOPE,
|
|
161
|
+
}), { colSpan: 2 })
|
|
162
|
+
.child("rules", (0, key_value_list_1.KeyValueList)({
|
|
163
|
+
title: "$page.marketing.acquisition.rules.title",
|
|
164
|
+
items: CHANNEL_RULES,
|
|
165
|
+
}).meta((0, blocks_1.blockMeta)("channel_rules", "i-ph-info"))))
|
|
166
|
+
.meta((0, blocks_1.blockMeta)("channels_row", "i-ph-chart-bar-horizontal")))
|
|
167
|
+
.child("tagged", campaignNotice("tagged").meta((0, blocks_1.blockMeta)("campaigns_tagged", "i-ph-tag")))
|
|
168
|
+
.child("missing_medium", campaignNotice("missing").meta((0, blocks_1.blockMeta)("campaigns_missing", "i-ph-warning")))
|
|
169
|
+
.child("campaigns", campaignsTable.meta((0, blocks_1.blockMeta)("campaigns", "i-ph-tag")))
|
|
170
|
+
.child("tops", (0, grid_1.Grid)({ minColumnWidth: "280px" })
|
|
171
|
+
.child("row", (0, grid_1.GridRow)()
|
|
172
|
+
.child("referrers", topDimension("topReferrers", "referrers", "i-ph-link"))
|
|
173
|
+
.child("contents", topDimension("topUtmContents", "contents", "i-ph-cursor-click"))
|
|
174
|
+
.child("terms", topDimension("topUtmTerms", "terms", "i-ph-text-aa")))
|
|
175
|
+
.meta((0, blocks_1.blockMeta)("acquisition_tops", "i-ph-list-numbers")));
|
|
176
|
+
};
|
|
177
|
+
exports.MarketingAcquisitionPage = MarketingAcquisitionPage;
|
|
178
|
+
exports.MarketingAcquisitionPage = MarketingAcquisitionPage = __decorate([
|
|
179
|
+
(0, page_1.RegisterPage)()
|
|
180
|
+
], MarketingAcquisitionPage);
|
|
181
|
+
//# sourceMappingURL=page.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page.js","sourceRoot":"","sources":["../../../src/pages/acquisition/page.ts"],"names":[],"mappings":"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"}
|
package/dist/pages/all.d.ts
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
|
-
export * from "./
|
|
1
|
+
export * from "./acquisition/page";
|
|
2
|
+
export * from "./funnel-builder/page";
|
|
3
|
+
export * from "./funnel/page";
|
|
2
4
|
export * from "./funnels/page";
|
|
5
|
+
export * from "./install/page";
|
|
3
6
|
export * from "./overview/page";
|
|
4
7
|
export * from "./pages/page";
|
|
5
8
|
export * from "./settings/page";
|
|
9
|
+
export * from "./websites/page";
|
package/dist/pages/all.js
CHANGED
|
@@ -14,9 +14,13 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
14
14
|
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
15
|
};
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./
|
|
17
|
+
__exportStar(require("./acquisition/page"), exports);
|
|
18
|
+
__exportStar(require("./funnel-builder/page"), exports);
|
|
19
|
+
__exportStar(require("./funnel/page"), exports);
|
|
18
20
|
__exportStar(require("./funnels/page"), exports);
|
|
21
|
+
__exportStar(require("./install/page"), exports);
|
|
19
22
|
__exportStar(require("./overview/page"), exports);
|
|
20
23
|
__exportStar(require("./pages/page"), exports);
|
|
21
24
|
__exportStar(require("./settings/page"), exports);
|
|
25
|
+
__exportStar(require("./websites/page"), exports);
|
|
22
26
|
//# sourceMappingURL=all.js.map
|
package/dist/pages/all.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"all.js","sourceRoot":"","sources":["../../src/pages/all.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"all.js","sourceRoot":"","sources":["../../src/pages/all.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,wDAAsC;AACtC,gDAA8B;AAC9B,iDAA+B;AAC/B,iDAA+B;AAC/B,kDAAgC;AAChC,+CAA6B;AAC7B,kDAAgC;AAChC,kDAAgC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ComponentBuilder, ComponentMetadata } from "@antelopejs/interface-dms/component";
|
|
2
|
+
import type { PageLiveOptions } from "@antelopejs/interface-dms/page";
|
|
3
|
+
export declare const MARKETING_PERIOD_SCOPE = "marketing";
|
|
4
|
+
export declare const BLOCKS_API = "/api/marketing/blocks";
|
|
5
|
+
export declare function websiteUrl(path: string): string;
|
|
6
|
+
export declare const CONTEXT_QUERY: string;
|
|
7
|
+
export interface ScopedBlockOptions {
|
|
8
|
+
fetchUrl?: string;
|
|
9
|
+
periodScope?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function MarketingBlock<T extends object>(name: string, key: string, icon: string, options?: T): ComponentBuilder<T>;
|
|
12
|
+
export interface MarketingContextOptions extends ScopedBlockOptions {
|
|
13
|
+
waitingGuide?: boolean;
|
|
14
|
+
}
|
|
15
|
+
export declare const CONTEXT_PAGE_LIVE: PageLiveOptions;
|
|
16
|
+
export declare function MarketingContext(options?: Omit<MarketingContextOptions, "periodScope">): ComponentBuilder<MarketingContextOptions>;
|
|
17
|
+
export declare function blockMeta(key: string, icon: string): ComponentMetadata;
|
|
18
|
+
export declare function collectionPausedBanner(): ComponentBuilder<import("@antelopejs/interface-dms/base").BannerProps>;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CONTEXT_PAGE_LIVE = exports.CONTEXT_QUERY = exports.BLOCKS_API = exports.MARKETING_PERIOD_SCOPE = void 0;
|
|
4
|
+
exports.websiteUrl = websiteUrl;
|
|
5
|
+
exports.MarketingBlock = MarketingBlock;
|
|
6
|
+
exports.MarketingContext = MarketingContext;
|
|
7
|
+
exports.blockMeta = blockMeta;
|
|
8
|
+
exports.collectionPausedBanner = collectionPausedBanner;
|
|
9
|
+
const banner_1 = require("@antelopejs/interface-dms/base/banner");
|
|
10
|
+
const custom_1 = require("@antelopejs/interface-dms/base/custom");
|
|
11
|
+
const constants_1 = require("@/types/constants");
|
|
12
|
+
exports.MARKETING_PERIOD_SCOPE = "marketing";
|
|
13
|
+
exports.BLOCKS_API = `${constants_1.API_BASE_PATH}/blocks`;
|
|
14
|
+
const WEBSITE_QUERY = "website={{query.website}}";
|
|
15
|
+
function websiteUrl(path) {
|
|
16
|
+
return `${path}${path.includes("?") ? "&" : "?"}${WEBSITE_QUERY}`;
|
|
17
|
+
}
|
|
18
|
+
const PERIOD_KEYS = [
|
|
19
|
+
"period",
|
|
20
|
+
"compare",
|
|
21
|
+
"from",
|
|
22
|
+
"to",
|
|
23
|
+
"compareFrom",
|
|
24
|
+
"compareTo",
|
|
25
|
+
];
|
|
26
|
+
exports.CONTEXT_QUERY = [
|
|
27
|
+
WEBSITE_QUERY,
|
|
28
|
+
...PERIOD_KEYS.map((key) => `${exports.MARKETING_PERIOD_SCOPE}.${key}={{query.${exports.MARKETING_PERIOD_SCOPE}.${key}}}`),
|
|
29
|
+
].join("&");
|
|
30
|
+
function MarketingBlock(name, key, icon, options) {
|
|
31
|
+
return (0, custom_1.CustomComponent)(`DmsMarketing${name}`)
|
|
32
|
+
.options(options)
|
|
33
|
+
.meta({
|
|
34
|
+
name: `$page.marketing.blocks.${key}.name`,
|
|
35
|
+
description: `$page.marketing.blocks.${key}.description`,
|
|
36
|
+
icon,
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
exports.CONTEXT_PAGE_LIVE = { maxRate: 60 };
|
|
40
|
+
function MarketingContext(options = {}) {
|
|
41
|
+
return MarketingBlock("Context", "context", "i-ph-sliders-horizontal", {
|
|
42
|
+
periodScope: exports.MARKETING_PERIOD_SCOPE,
|
|
43
|
+
...options,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
function blockMeta(key, icon) {
|
|
47
|
+
return {
|
|
48
|
+
name: `$page.marketing.blocks.${key}.name`,
|
|
49
|
+
description: `$page.marketing.blocks.${key}.description`,
|
|
50
|
+
icon,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
function collectionPausedBanner() {
|
|
54
|
+
return (0, banner_1.Banner)({ fetchUrl: `${exports.BLOCKS_API}/collection-notice` }).meta(blockMeta("collection_paused", "i-ph-pause-circle"));
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=blocks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"blocks.js","sourceRoot":"","sources":["../../src/pages/blocks.ts"],"names":[],"mappings":";;;AA6BA,gCAEC;AAqCD,wCAaC;AAuBD,4CAOC;AAGD,8BAMC;AAOD,wDAIC;AA/HD,kEAA+D;AAC/D,kEAAwE;AAExE,iDAAkD;AAQrC,QAAA,sBAAsB,GAAG,WAAW,CAAC;AAErC,QAAA,UAAU,GAAG,GAAG,yBAAa,SAAS,CAAC;AASpD,MAAM,aAAa,GAAG,2BAA2B,CAAC;AAGlD,SAAgB,UAAU,CAAC,IAAY;IACrC,OAAO,GAAG,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,aAAa,EAAE,CAAC;AACpE,CAAC;AAGD,MAAM,WAAW,GAAG;IAClB,QAAQ;IACR,SAAS;IACT,MAAM;IACN,IAAI;IACJ,aAAa;IACb,WAAW;CACH,CAAC;AAQE,QAAA,aAAa,GAAG;IAC3B,aAAa;IACb,GAAG,WAAW,CAAC,GAAG,CAChB,CAAC,GAAG,EAAE,EAAE,CACN,GAAG,8BAAsB,IAAI,GAAG,YAAY,8BAAsB,IAAI,GAAG,IAAI,CAChF;CACF,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAaZ,SAAgB,cAAc,CAC5B,IAAY,EACZ,GAAW,EACX,IAAY,EACZ,OAAW;IAEX,OAAQ,IAAA,wBAAe,EAAC,eAAe,IAAI,EAAE,CAAyB;SACnE,OAAO,CAAC,OAAO,CAAC;SAChB,IAAI,CAAC;QACJ,IAAI,EAAE,0BAA0B,GAAG,OAAO;QAC1C,WAAW,EAAE,0BAA0B,GAAG,cAAc;QACxD,IAAI;KACL,CAAC,CAAC;AACP,CAAC;AAgBY,QAAA,iBAAiB,GAAoB,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;AAOlE,SAAgB,gBAAgB,CAC9B,UAAwD,EAAE;IAE1D,OAAO,cAAc,CAAC,SAAS,EAAE,SAAS,EAAE,yBAAyB,EAAE;QACrE,WAAW,EAAE,8BAAsB;QACnC,GAAG,OAAO;KACX,CAAC,CAAC;AACL,CAAC;AAGD,SAAgB,SAAS,CAAC,GAAW,EAAE,IAAY;IACjD,OAAO;QACL,IAAI,EAAE,0BAA0B,GAAG,OAAO;QAC1C,WAAW,EAAE,0BAA0B,GAAG,cAAc;QACxD,IAAI;KACL,CAAC;AACJ,CAAC;AAOD,SAAgB,sBAAsB;IACpC,OAAO,IAAA,eAAM,EAAC,EAAE,QAAQ,EAAE,GAAG,kBAAU,oBAAoB,EAAE,CAAC,CAAC,IAAI,CACjE,SAAS,CAAC,mBAAmB,EAAE,mBAAmB,CAAC,CACpD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
declare const MarketingFunnelPage_base: {
|
|
2
|
+
new (...args: any[]): {};
|
|
3
|
+
extend: <T extends import("@antelopejs/interface-api").ControllerClass>(this: T, location: string) => T;
|
|
4
|
+
location: string;
|
|
5
|
+
};
|
|
6
|
+
export declare class MarketingFunnelPage extends MarketingFunnelPage_base {
|
|
7
|
+
static content: import("@antelopejs/interface-dms").ComponentBuilder<import("../blocks").MarketingContextOptions>;
|
|
8
|
+
}
|
|
9
|
+
export {};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.MarketingFunnelPage = void 0;
|
|
10
|
+
const layouts_1 = require("@antelopejs/interface-dms/base/layouts");
|
|
11
|
+
const page_1 = require("@antelopejs/interface-dms/page");
|
|
12
|
+
const constants_1 = require("@/types/constants");
|
|
13
|
+
const blocks_1 = require("../blocks");
|
|
14
|
+
const module_1 = require("../module");
|
|
15
|
+
let MarketingFunnelPage = class MarketingFunnelPage extends (0, page_1.PageController)("funnel", {
|
|
16
|
+
displayName: "$page.marketing.funnel.title",
|
|
17
|
+
description: "$page.marketing.funnel.description",
|
|
18
|
+
icon: "i-ph-funnel",
|
|
19
|
+
module: constants_1.MARKETING_MODULE_ID,
|
|
20
|
+
category: module_1.conversionCategory,
|
|
21
|
+
hidden: true,
|
|
22
|
+
live: blocks_1.CONTEXT_PAGE_LIVE,
|
|
23
|
+
validation: {
|
|
24
|
+
requiredQueryParams: ["id"],
|
|
25
|
+
redirectTo: `${constants_1.MARKETING_MODULE_PATH}/funnels?${blocks_1.CONTEXT_QUERY}`,
|
|
26
|
+
},
|
|
27
|
+
}, (0, layouts_1.DefaultLayout)({ hideHeader: true })) {
|
|
28
|
+
static content = (0, blocks_1.MarketingContext)().child("report", (0, blocks_1.MarketingBlock)("FunnelReport", "funnel_report", "i-ph-funnel", {
|
|
29
|
+
periodScope: blocks_1.MARKETING_PERIOD_SCOPE,
|
|
30
|
+
}));
|
|
31
|
+
};
|
|
32
|
+
exports.MarketingFunnelPage = MarketingFunnelPage;
|
|
33
|
+
exports.MarketingFunnelPage = MarketingFunnelPage = __decorate([
|
|
34
|
+
(0, page_1.RegisterPage)()
|
|
35
|
+
], MarketingFunnelPage);
|
|
36
|
+
//# sourceMappingURL=page.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"page.js","sourceRoot":"","sources":["../../../src/pages/funnel/page.ts"],"names":[],"mappings":";;;;;;;;;AAAA,oEAAuE;AACvE,yDAA8E;AAC9E,iDAA+E;AAC/E,sCAMmB;AACnB,sCAA+C;AAWxC,IAAM,mBAAmB,GAAzB,MAAM,mBAAoB,SAAQ,IAAA,qBAAc,EACrD,QAAQ,EACR;IACE,WAAW,EAAE,8BAA8B;IAC3C,WAAW,EAAE,oCAAoC;IACjD,IAAI,EAAE,aAAa;IACnB,MAAM,EAAE,+BAAmB;IAC3B,QAAQ,EAAE,2BAAkB;IAC5B,MAAM,EAAE,IAAI;IACZ,IAAI,EAAE,0BAAiB;IACvB,UAAU,EAAE;QACV,mBAAmB,EAAE,CAAC,IAAI,CAAC;QAC3B,UAAU,EAAE,GAAG,iCAAqB,YAAY,sBAAa,EAAE;KAChE;CACF,EACD,IAAA,uBAAa,EAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CACpC;IACC,MAAM,CAAC,OAAO,GAAG,IAAA,yBAAgB,GAAE,CAAC,KAAK,CACvC,QAAQ,EACR,IAAA,uBAAc,EAAC,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE;QAC7D,WAAW,EAAE,+BAAsB;KACpC,CAAC,CACH,CAAC;;AAtBS,kDAAmB;8BAAnB,mBAAmB;IAD/B,IAAA,mBAAY,GAAE;GACF,mBAAmB,CAuB/B"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
declare const MarketingFunnelBuilderPage_base: {
|
|
2
|
+
new (...args: any[]): {};
|
|
3
|
+
extend: <T extends import("@antelopejs/interface-api").ControllerClass>(this: T, location: string) => T;
|
|
4
|
+
location: string;
|
|
5
|
+
};
|
|
6
|
+
export declare class MarketingFunnelBuilderPage extends MarketingFunnelBuilderPage_base {
|
|
7
|
+
static content: import("@antelopejs/interface-dms").ComponentBuilder<{}>;
|
|
8
|
+
}
|
|
9
|
+
export {};
|