@datawheel/bespoke 1.0.0-rc.2 → 1.0.0-rc.21

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.
@@ -0,0 +1,24 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import react from 'react';
3
+
4
+ interface ConfirmPrompt {
5
+ title?: string;
6
+ message: string;
7
+ cancelText?: string;
8
+ confirmText?: string;
9
+ }
10
+ type Prompt = ConfirmPrompt;
11
+ interface RequestFactory<T extends Prompt> {
12
+ (request: T, delayed?: false): Promise<void>;
13
+ (request: T, delayed: true): {
14
+ show(): Promise<void>;
15
+ };
16
+ }
17
+ type DialogContextProps = {
18
+ newConfirmation: RequestFactory<ConfirmPrompt>;
19
+ };
20
+ type DialogProviderProps = react.PropsWithChildren<Record<string, unknown>>;
21
+ declare function DialogProvider(props: DialogProviderProps): react_jsx_runtime.JSX.Element;
22
+ declare function useDialog(): DialogContextProps;
23
+
24
+ export { DialogProvider, useDialog };
@@ -0,0 +1,176 @@
1
+ import { R as RecordsKey, A as AppThunk, a as ReadMembersResult, V as ValidateVariantSlugResponse, b as RegenerateSearchResponse, c as ReadMembersParams, d as ReadMembersResponse, S as SearchMemberParams, e as SearchMemberResponse, P as ProxyRequestParams, f as AppDispatch, g as AppState } from './store-D5N14riO.mjs';
2
+ export { s as storeWrapper } from './store-D5N14riO.mjs';
3
+ import * as _reduxjs_toolkit from '@reduxjs/toolkit';
4
+ import { D as DataSource, A as AnyBlock, R as Result, a as AnyNestedBlock, N as NestedDimension, F as Formatter, b as AnyReport, c as AnyNestedReport, d as Section, e as NestedSection, V as Variant, f as DeleteParams, g as ReadParams, h as Dimension, i as SearchReportParams, j as SearchReportResponse, k as ReadMetadataParams, l as ReadMetadataResponse, S as SearchUsersParams, U as UpdateUserParams, m as UpdateMyDataParams, n as ReadPrivateBlocksParams, o as ReadPrivateBlocksResponse, p as RevalidateUrlRequest, q as RevalidateUrlResponse, r as RevalidateReportRequest, s as RevalidateReportResponse, t as ReadEnvSecretsResponse } from './types-WI9fSG9b.mjs';
5
+ import { d as BespokeUserProfile } from './auth-D3PWImeZ.mjs';
6
+ import { TypedUseSelectorHook } from 'react-redux';
7
+ import * as react_jsx_runtime from 'react/jsx-runtime';
8
+ import 'next/app';
9
+ import 'next';
10
+ import 'querystring';
11
+ import 'next-redux-wrapper';
12
+ import 'immer';
13
+ import 'sequelize';
14
+ import 'next-auth';
15
+ import 'next-auth/react';
16
+
17
+ interface ResourceContextType {
18
+ pathSegment: string;
19
+ formatterFunctions: Record<string, Record<string, (value: any) => string>>;
20
+ datasourceFunctions: DataSource[];
21
+ profilePrefix: string;
22
+ previewPrefix?: string | null;
23
+ siteProps?: Record<string, any>;
24
+ }
25
+
26
+ type VariableUpdateParams = {
27
+ sid: number;
28
+ bid: number;
29
+ previews: Record<string, any>[];
30
+ query: Record<string, any>;
31
+ };
32
+
33
+ declare const createEntity: <T extends RecordsKey>(type: T, payload: Parameters<{
34
+ block: (payload: Pick<AnyBlock, "type" | "blockrow" | "blockcol" | "section_id"> & {
35
+ locales: Array<string>;
36
+ }) => AppThunk<Promise<Result<AnyNestedBlock>>>;
37
+ dimension: (payload: Pick<NestedDimension, "report_id" | "name" | "ordering">) => AppThunk<Promise<Result<NestedDimension>>>;
38
+ formatter: (payload: Pick<Formatter, "content" | "name">) => AppThunk<Promise<Result<Formatter>>>;
39
+ report: (payload: Pick<AnyReport, "name">) => AppThunk<Promise<Result<AnyNestedReport>>>;
40
+ section: (payload: Pick<Section, "report_id" | "ordering">) => AppThunk<Promise<Result<NestedSection>>>;
41
+ variant: (payload: Pick<Variant, "dimension_id" | "slug" | "name">) => AppThunk<Promise<Result<Variant>>>;
42
+ datasource: (payload: Pick<DataSource, "content" | "description" | "name">) => AppThunk<Promise<Result<DataSource>>>;
43
+ }[T]>[0]) => any;
44
+ declare const readEntity: <T extends RecordsKey>(type: T, payload: Parameters<{
45
+ block: (payload: ReadParams) => AppThunk<Promise<Result<AnyBlock[] | AnyNestedBlock[], string>>>;
46
+ dimension: (payload: ReadParams) => AppThunk<Promise<Result<NestedDimension[] | Dimension[], string>>>;
47
+ formatter: (payload: ReadParams) => AppThunk<Promise<Result<Formatter[], string>>>;
48
+ report: (payload: ReadParams) => AppThunk<Promise<Result<AnyNestedReport[] | AnyReport[], string>>>;
49
+ section: (payload: ReadParams) => AppThunk<Promise<Result<NestedSection[] | Section[], string>>>;
50
+ variant: (payload: ReadParams) => AppThunk<Promise<Result<Variant[], string>>>;
51
+ datasource: (payload: ReadParams) => AppThunk<Promise<Result<DataSource[], string>>>;
52
+ }[T]>[0]) => any;
53
+ declare const updateEntity: <T extends RecordsKey>(type: T, payload: Parameters<{
54
+ block: (payload: Partial<AnyNestedBlock> & {
55
+ id: number;
56
+ inputAction?: {
57
+ operation: "create" | "delete";
58
+ input: {
59
+ input_id: number;
60
+ block_id: number;
61
+ };
62
+ };
63
+ }) => AppThunk<Promise<Result<AnyNestedBlock>>>;
64
+ dimension: (payload: Partial<NestedDimension> & {
65
+ id: number;
66
+ }) => AppThunk<Promise<Result<NestedDimension>>>;
67
+ formatter: (payload: Partial<Formatter> & {
68
+ id: number;
69
+ }) => AppThunk<Promise<Result<Formatter>>>;
70
+ report: (payload: Partial<AnyNestedReport> & {
71
+ id: number;
72
+ }) => AppThunk<Promise<Result<AnyNestedReport>>>;
73
+ section: (payload: Partial<NestedSection> & {
74
+ id: number;
75
+ }) => AppThunk<Promise<Result<NestedSection>>>;
76
+ variant: (payload: Partial<Variant> & {
77
+ id: number;
78
+ }) => AppThunk<Promise<Result<Variant>>>;
79
+ datasource: (payload: Partial<DataSource> & {
80
+ id: number;
81
+ }) => AppThunk<Promise<Result<DataSource>>>;
82
+ }[T]>[0]) => any;
83
+ declare const deleteEntity: <T extends RecordsKey>(type: T, payload: Parameters<{
84
+ block: (payload: DeleteParams) => AppThunk<Promise<void>>;
85
+ dimension: (payload: DeleteParams) => AppThunk<Promise<void>>;
86
+ formatter: (payload: DeleteParams) => AppThunk<Promise<void>>;
87
+ report: (payload: DeleteParams) => AppThunk<Promise<void>>;
88
+ section: (payload: DeleteParams) => AppThunk<Promise<void>>;
89
+ variant: (payload: DeleteParams) => AppThunk<Promise<void>>;
90
+ datasource: (payload: DeleteParams) => AppThunk<Promise<void>>;
91
+ }[T]>[0]) => any;
92
+ declare const cloneEntity: <T extends RecordsKey>(type: T, payload: Parameters<Record<RecordsKey, AnyThunk>[T]>[0]) => any;
93
+ type AnyThunk = (p: any) => any;
94
+
95
+ declare const setStatus: _reduxjs_toolkit.ActionCreatorWithNonInferrablePayload<"status/setStatus">;
96
+ declare const setPreviews: _reduxjs_toolkit.ActionCreatorWithOptionalPayload<ReadMembersResult[], "status/setPreviews">;
97
+ declare const setSectionState: _reduxjs_toolkit.ActionCreatorWithOptionalPayload<Record<number, any>, "status/setSectionState">;
98
+ declare const resetSectionState: _reduxjs_toolkit.ActionCreatorWithOptionalPayload<number, "status/resetSectionState">;
99
+ declare const setCurrentLocale: _reduxjs_toolkit.ActionCreatorWithOptionalPayload<string, "status/setCurrentLocale">;
100
+ declare const setPreferredLocale: _reduxjs_toolkit.ActionCreatorWithOptionalPayload<string, "status/setPreferredLocale">;
101
+ declare const addRunConsumersRunning: _reduxjs_toolkit.ActionCreatorWithOptionalPayload<number[], "status/addRunConsumersRunning">;
102
+ declare const removeRunConsumersRunning: _reduxjs_toolkit.ActionCreatorWithOptionalPayload<number[], "status/removeRunConsumersRunning">;
103
+ declare function variantValidateSlug(dimension: number, slug: string): AppThunk<Promise<ValidateVariantSlugResponse>>;
104
+ declare function reportSearch(filters: SearchReportParams): AppThunk<Promise<SearchReportResponse>>;
105
+ declare function searchRegenerate(): AppThunk<Promise<RegenerateSearchResponse>>;
106
+ declare function readMember(params: ReadMembersParams): AppThunk<Promise<ReadMembersResponse>>;
107
+ declare function searchMember(params: SearchMemberParams): AppThunk<Promise<SearchMemberResponse>>;
108
+ /** Deletes a given key from the current query parameters */
109
+ declare function deleteQueryParam(resource: any, key: any): (dispatch: any, getState: any) => Promise<void>;
110
+ /** Adds to or edits the current status query parameters to include the given key/val */
111
+ declare function setQueryParam(resource: any, key: any, value: any): (dispatch: any, getState: any) => Promise<void>;
112
+ declare function recalculateVariables(resource: ResourceContextType, params?: Partial<VariableUpdateParams>): AppThunk;
113
+ declare function readMetadata(filters: ReadMetadataParams): AppThunk<Promise<ReadMetadataResponse>>;
114
+ declare function urlProxy(config: ProxyRequestParams): AppThunk<Promise<any>>;
115
+ /** Users actions */
116
+ declare function searchRole(): AppThunk<Promise<any>>;
117
+ declare function searchUser(filters: SearchUsersParams): AppThunk<Promise<any>>;
118
+ declare function readUser(userId: string): AppThunk<Promise<BespokeUserProfile>>;
119
+ declare function updateUser({ user }: {
120
+ user: UpdateUserParams;
121
+ }): AppThunk<Promise<any>>;
122
+ declare function updateMyData(params: UpdateMyDataParams): AppThunk<Promise<any>>;
123
+ /** Remove a list of blocks from state, only used for private blocks during getStaticProps */
124
+ declare function removeBlocksFromState(privateBlockIds: any): (dispatch: any) => Promise<void>;
125
+ declare function addBlockToState(newBlocks: any): (dispatch: any) => Promise<void>;
126
+ declare function readPrivateBlocks(params: ReadPrivateBlocksParams): AppThunk<Promise<ReadPrivateBlocksResponse>>;
127
+ declare function revalidateUrl(params: RevalidateUrlRequest): AppThunk<Promise<RevalidateUrlResponse>>;
128
+ declare function revalidateReport(params: RevalidateReportRequest): AppThunk<Promise<RevalidateReportResponse>>;
129
+ declare function readEnvSecrets(): AppThunk<Promise<ReadEnvSecretsResponse>>;
130
+ declare function removeDataSourceLogic(): (dispatch: any) => Promise<void>;
131
+
132
+ declare const actions_addBlockToState: typeof addBlockToState;
133
+ declare const actions_addRunConsumersRunning: typeof addRunConsumersRunning;
134
+ declare const actions_cloneEntity: typeof cloneEntity;
135
+ declare const actions_createEntity: typeof createEntity;
136
+ declare const actions_deleteEntity: typeof deleteEntity;
137
+ declare const actions_deleteQueryParam: typeof deleteQueryParam;
138
+ declare const actions_readEntity: typeof readEntity;
139
+ declare const actions_readEnvSecrets: typeof readEnvSecrets;
140
+ declare const actions_readMember: typeof readMember;
141
+ declare const actions_readMetadata: typeof readMetadata;
142
+ declare const actions_readPrivateBlocks: typeof readPrivateBlocks;
143
+ declare const actions_readUser: typeof readUser;
144
+ declare const actions_recalculateVariables: typeof recalculateVariables;
145
+ declare const actions_removeBlocksFromState: typeof removeBlocksFromState;
146
+ declare const actions_removeDataSourceLogic: typeof removeDataSourceLogic;
147
+ declare const actions_removeRunConsumersRunning: typeof removeRunConsumersRunning;
148
+ declare const actions_reportSearch: typeof reportSearch;
149
+ declare const actions_resetSectionState: typeof resetSectionState;
150
+ declare const actions_revalidateReport: typeof revalidateReport;
151
+ declare const actions_revalidateUrl: typeof revalidateUrl;
152
+ declare const actions_searchMember: typeof searchMember;
153
+ declare const actions_searchRegenerate: typeof searchRegenerate;
154
+ declare const actions_searchRole: typeof searchRole;
155
+ declare const actions_searchUser: typeof searchUser;
156
+ declare const actions_setCurrentLocale: typeof setCurrentLocale;
157
+ declare const actions_setPreferredLocale: typeof setPreferredLocale;
158
+ declare const actions_setPreviews: typeof setPreviews;
159
+ declare const actions_setQueryParam: typeof setQueryParam;
160
+ declare const actions_setSectionState: typeof setSectionState;
161
+ declare const actions_setStatus: typeof setStatus;
162
+ declare const actions_updateEntity: typeof updateEntity;
163
+ declare const actions_updateMyData: typeof updateMyData;
164
+ declare const actions_updateUser: typeof updateUser;
165
+ declare const actions_urlProxy: typeof urlProxy;
166
+ declare const actions_variantValidateSlug: typeof variantValidateSlug;
167
+ declare namespace actions {
168
+ export { actions_addBlockToState as addBlockToState, actions_addRunConsumersRunning as addRunConsumersRunning, actions_cloneEntity as cloneEntity, actions_createEntity as createEntity, actions_deleteEntity as deleteEntity, actions_deleteQueryParam as deleteQueryParam, actions_readEntity as readEntity, actions_readEnvSecrets as readEnvSecrets, actions_readMember as readMember, actions_readMetadata as readMetadata, actions_readPrivateBlocks as readPrivateBlocks, actions_readUser as readUser, actions_recalculateVariables as recalculateVariables, actions_removeBlocksFromState as removeBlocksFromState, actions_removeDataSourceLogic as removeDataSourceLogic, actions_removeRunConsumersRunning as removeRunConsumersRunning, actions_reportSearch as reportSearch, actions_resetSectionState as resetSectionState, actions_revalidateReport as revalidateReport, actions_revalidateUrl as revalidateUrl, actions_searchMember as searchMember, actions_searchRegenerate as searchRegenerate, actions_searchRole as searchRole, actions_searchUser as searchUser, actions_setCurrentLocale as setCurrentLocale, actions_setPreferredLocale as setPreferredLocale, actions_setPreviews as setPreviews, actions_setQueryParam as setQueryParam, actions_setSectionState as setSectionState, actions_setStatus as setStatus, actions_updateEntity as updateEntity, actions_updateMyData as updateMyData, actions_updateUser as updateUser, actions_urlProxy as urlProxy, actions_variantValidateSlug as variantValidateSlug };
169
+ }
170
+
171
+ declare const useAppDispatch: () => AppDispatch;
172
+ declare const useAppSelector: TypedUseSelectorHook<AppState>;
173
+
174
+ declare const withBespokeStore: (Component: any) => (props: any) => react_jsx_runtime.JSX.Element;
175
+
176
+ export { AppDispatch, AppState, actions, useAppDispatch as useBespokeDispatch, useAppSelector as useBespokeSelector, withBespokeStore };
@@ -1,5 +1,5 @@
1
- import {createSlice,configureStore}from'@reduxjs/toolkit';import {HYDRATE,createWrapper}from'next-redux-wrapper';import Ye from'axios';import {schema,normalize}from'normalizr';import {merge,closest,assign,isObject}from'd3plus-common';import*as Br from'd3-array';import*as Ir from'd3-collection';import*as Or from'd3-format';import*as vr from'd3-time-format';import {formatAbbreviate}from'd3plus-format';import {date}from'd3plus-axis';import {titleCase,strip}from'd3plus-text';import Vr from'jsonwebtoken';import Vt from'axios-retry';import yo from'yn';import {format}from'pretty-format';import Oo from'toposort';import {csvParse}from'd3-dsv';import _o from'next/config';import {getSession}from'next-auth/react';import {notifications}from'@mantine/notifications';import {produce}from'immer';import {createContext}from'react';import {useDispatch,useSelector,Provider}from'react-redux';import {jsx}from'react/jsx-runtime';import'@mantine/core';var br=Object.defineProperty;var Ar=(e,t)=>{for(var r in t)br(e,r,{get:t[r],enumerable:true});};function X(e,t){return e.request(t).then(r=>{let{status:o,data:n}=r;return "error"in n?{ok:false,status:o,error:n.error}:{ok:true,status:o,wrapper:n.wrapper,data:n.data}},r=>{if("isAxiosError"in r){let{status:o,data:n}=r.response||{status:500};return {ok:false,status:o,error:n?.error??r.message}}return {ok:false,status:500,error:r.message}})}function F(e,t,r){let o=typeof t=="string"?{url:t}:t;return n=>X(e,{...o,method:"GET",params:r?r(n):n})}function V(e,t,r){let o=typeof t=="string"?{url:t}:t;return n=>X(e,{...o,method:"POST",data:n})}function oe(e,t,r){let o=typeof t=="string"?{url:t}:t;return n=>X(e,{...o,method:"DELETE",params:r?r(n):n})}function he(e,t){return r=>X(e,{method:"POST",url:`images/save/${t}`,params:{prompt:r.prompt,provider:t}})}function ke(e,t){return r=>X(e,{method:"GET",url:`images/search/${t}`,params:{prompt:r.prompt,page:r.page,provider:t}})}function yt(e,t){return ()=>X(e,{method:"GET",url:`list/icons/${t}`,params:{provider:t}})}function Rt(e,t){return r=>X(e,{method:"GET",url:`read/icons/${t}/icon.svg`,params:{name:r.name}})}var le=e=>({id:e}),Cr=e=>{if(e.mode==="slugs"){let t=e.slugs.map(r=>[r.variantSlug,r.memberSlug].join("/")).join(",");return {...e,slugs:t}}return ["related","whole"].includes(e.mode)?{...e}:{...e,[e.mode]:e[e.mode].join(",")}};function Le(e){let t=Ye.create({baseURL:e});return {createBulkBlock:V(t,"create/bulk/block"),createBlock:V(t,"create/block"),createDimension:V(t,"create/dimension"),createFormatter:V(t,"create/formatter"),createReport:V(t,"create/report"),createSection:V(t,"create/section"),createVariant:V(t,"create/variant"),createDatasource:V(t,"create/datasource"),deleteBlock:oe(t,"delete/block",le),deleteDimension:oe(t,"delete/dimension",le),deleteFormatter:oe(t,"delete/formatter",le),deleteReport:oe(t,"delete/report",le),deleteSection:oe(t,"delete/section",le),deleteVariant:oe(t,"delete/variant",le),deleteDatasource:oe(t,"delete/datasource",le),readBlock:F(t,"read/block"),readDimension:F(t,"read/dimension"),readFormatter:F(t,"read/formatter"),readReport:F(t,"read/report"),readSection:F(t,"read/section"),readVariant:F(t,"read/variant"),readDatasource:F(t,"read/datasource"),updateBulkBlock:V(t,"update/bulk/block"),updateBlock:V(t,"update/block"),updateDimension:V(t,"update/dimension"),updateFormatter:V(t,"update/formatter"),updateReport:V(t,"update/report"),updateSection:V(t,"update/section"),updateVariant:V(t,"update/variant"),updateDatasource:V(t,"update/datasource"),searchReport:F(t,"search/reports"),validateVariantSlug:F(t,"validate/variant"),readMember:F(t,"read/members",Cr),readMemberImage:F(t,{url:"member/image",responseType:"blob"}),searchMember:F(t,"search/members"),updateMember:F(t,"update/members"),imageLocalSearch:ke(t,"local"),imageLocalSave:he(t,"local"),imageFlickrSearch:ke(t,"flickr"),imageFlickrSave:he(t,"flickr"),imageUnsplashSearch:ke(t,"unsplash"),imageUnsplashSave:he(t,"unsplash"),imageUploadSave:he(t,"upload"),imageAdobeSearch:ke(t,"adobe"),imageAdobeSave:he(t,"adobe"),readMetadata:F(t,"read/metadata"),regenerateSearch:V(t,"search/regenerate"),urlProxy:F(t,"url/proxy"),searchRole:F(t,"auth/search/roles"),searchUser:F(t,"auth/search/users"),readUser:F(t,"auth/read/user"),updateUser:V(t,"auth/update/user"),updateMyData:V(t,"auth/update/me"),revalidateReport:F(t,"revalidate/report"),revalidateUrl:F(t,"revalidate/url"),readPrivateBlocks:V(t,"read/blocks/private"),listTablerIcons:yt(t,"tabler"),readTablerIcon:Rt(t,"tabler"),readEnvSecrets:F(t,"read/secrets")}}function xr(e,t){return +(e<t)-+(e>t)}function we(e,t,r="ordering"){return xr(t[r],e[r])}function Je(e){let t=1+76.18009173/e-86.50532033/(e+1)+24.01409822/(e+2)-1.231739516/(e+3)+.00120858003/(e+4)-536382e-11/(e+5);return (e-.5)*Math.log(e+4.5)-(e+4.5)+Math.log(t*2.50662827465)}function Et(e,t,r){let o=0,n=1,a=1,s=1,i=0,c=0,l;for(;Math.abs((a-c)/a)>1e-5;)c=a,l=-(t+i)*(t+r+i)*e/(t+2*i)/(t+2*i+1),o=a+l*o,n=s+l*n,i+=1,l=i*(r-i)*e/(t+2*i-1)/(t+2*i),a=o+l*a,s=n+l*s,o/=s,n/=s,a/=s,s=1;return a/t}function kr(e,t,r){let o,n;if(e<0)n=0;else if(e>=t)n=1;else {e=Math.floor(e);let a=r,s=e+1,i=t-e,c=s+i,l=Math.exp(Je(c)-Je(i)-Je(s)+s*Math.log(a)+i*Math.log(1-a));a<(s+1)/(c+2)?o=l*Et(a,s,i):o=1-l*Et(1-a,i,s),n=1-o;}return Math.round(n*1e5)/1e5}function Lr(e){return {.99999:15.137,.99:6.635,.95:3.841,.9:2.706}[e]}function _e(e,t,r,o){let n=t/(1-t),a=0,s=1,i=0,c=0;for(;a<=e;)c+=s,a>=r&a<=o&&(i+=s),c>1e30&&(i/=1e30,c/=1e30,s/=1e30),a+=1,s=s*n*(e+1-a)/a;return i/c}function _r(e,t,r){let o=e/t,a=(100-r*100)/2,s,i;if(e===0)s=0;else {let c=o/2,l=0,m=o,u=a/100;for(;m-l>1e-5;)_e(t,c,e,e)*.5+_e(t,c,e+1,t)>u?(m=c,c=(l+c)/2):(l=c,c=(m+c)/2);s=c;}if(e===t)i=0;else {let c=(1+o)/2,l=o,m=1,u=a/100;for(;m-l>1e-5;)_e(t,c,e,e)*.5+_e(t,c,0,e-1)<u?(m=c,c=(l+c)/2):(l=c,c=(m+c)/2);i=c;}return {lci:s,uci:i}}function Pr(e,t){let r=e,o=t,n=r,a=o,s=95,i=.5,c=.5,m=(100-s)/2/100,u=n;for(;c>1e-5;)c/=2,Ue((1+u)*i/(1-i),u+1,1e10)+.5*Ue((1+u)*i/(1-i),u,u)>m?i-=c:i+=c;let f=(1+u)*i/(1-i)/a;for(i=.5,c=.5,m=(100-s)/2/100;c>1e-5;)c/=2,Ue((1+u)*i/(1-i),0,u-1)+.5*Ue((1+u)*i/(1-i),u,u)<m?i-=c:i+=c;let A=(1+u)*i/(1-i)/a;return {lci:f,uci:A}}function Ue(e,t,r){let o=1,n=0,a=0,s=0;for(;s<e||o>n*1e-10;)n+=o,s>=t&s<=r&&(a+=o),n>1e30&&(a/=1e30,n/=1e30,o/=1e30),s+=1,o=o*e/s;return a/n}var gt={binomialCdf:kr,binP:_e,computeMidP:_r,criticalValue:Lr,smr:Pr};var Ce={d3:{...Br,...Ir,...Or,...vr},d3plus:{assign:assign,closest:closest,date:date,formatAbbreviate:formatAbbreviate,merge:merge,strip:strip,titleCase:titleCase},stats:gt};var St={jwt:Vr};var bt=(e,t={})=>{let r={libs:St,...t};function o(a){return Function("globals",...a.vars,`with (globals) { ${a.logic} }`).bind(r,r)}function n(a){if(a.vars&&a.logic)return o(a);for(let s in a)Array.isArray(a[s])?a[s]=a[s].map(i=>isObject(i)?n(i):i):isObject(a[s])&&(a[s]=n(a[s]));return a}return n(e)};var $r=()=>{let e=process.env.NEXT_PUBLIC_REPORTS_LOCALE_DEFAULT||"en",t=process.env.NEXT_PUBLIC_REPORTS_LOCALES?.split(",")||[e];return t.includes(e)||t.push(e),{localeDefault:e,locales:t}},Z=$r;Z();var Pe=new schema.Entity("block",{},{mergeStrategy(e,t){return t.block_input?e||{}:{...e,...t}}});Pe.define({consumers:[Pe],inputs:[Pe]});var At=new schema.Entity("variant"),ht=new schema.Entity("dimension",{variants:[At]},{processStrategy(e){return {...e,variants:"variants"in e?e.variants:[]}}}),Ct=new schema.Entity("section",{blocks:[Pe]}),Gr=new schema.Entity("report",{dimensions:[ht],sections:[Ct]},{processStrategy(e){return {...e,sections:"sections"in e?e.sections.sort(we):[]}}}),Hr=new schema.Entity("formatter"),Kr=new schema.Entity("datasource"),jr={report:Gr,section:Ct,block:Pe,dimension:ht,variant:At,formatter:Hr,datasource:Kr};function De(e,t){let r=jr[e];if(!r)throw new Error(`Invalid entity type: ${e}`);let{entities:o}=normalize(t,[r]);return {report:ue(o,"report"),dimension:ue(o,"dimension"),section:ue(o,"section"),block:ue(o,"block"),variant:ue(o,"variant"),formatter:ue(o,"formatter"),datasource:ue(o,"datasource")}}function ue(e,t){return Object.prototype.hasOwnProperty.call(e,t)?e[t]:{}}var xt=(e,t=void 0)=>{let{sid:r,bid:o,previews:n=[],query:a={}}=t||{},s,i,c={};return r?(s=r,c.activeSection=s):s=e.activeSection,n.length>0?(i=n,c.previews=i.filter(Boolean)):i=e.previews,{parsedParams:{sid:s,bid:o,previews:i,query:a},statusPayload:c}};var Qr={tree:[],reports:null,entities:{block:{},dimension:{},report:{},section:{},variant:{},formatter:{},datasource:{}},requests:{block:{},dimension:{},report:{},section:{},variant:{},formatter:{},datasource:{}}},re=createSlice({name:"records",initialState:Qr,reducers:{set:(e,t)=>{let r=t.payload;return {entities:Be(e.entities,r.entities||{}),requests:Be(e.requests,r.requests||{}),reports:r.reports||e.reports,tree:r.tree||e.tree}},setRequest:(e,t)=>{let r=t.payload;e.requests[r.type][r.key]=r;},setCreateRequest(e,t){let r=t.payload;if(e.requests[r.type][r.key]=r,r.status==="SUCCESS"){let o=Array.isArray(r.data)?r.data:[r.data],n=De(r.type,o),a=Be(e.entities,n);if(e.entities=a,r.type==="report"){let s=r.data;e.reports?e.reports.indexOf(s.id)===-1&&(e.reports=[...e.reports,s.id]):e.reports=[s.id];}else if(r.type==="dimension"){let s=r.data;e.entities.report[s.report_id].dimensions.push(s.id),e.entities.report[s.report_id].dimensions=Fe(a.report[s.report_id].dimensions,a.dimension);}else if(r.type==="variant"){let s=r.data;e.entities.dimension[s.dimension_id].variants.push(s.id);}else if(r.type==="section"&&!Array.isArray(r.data)){let s=r.data;e.entities.report[s.report_id].sections.push(s.id),e.entities.report[s.report_id].sections=Fe(a.report[s.report_id].sections,a.section);}else if(r.type==="block")if(Array.isArray(r.data)){let s=r.data,i=s[0],c=s.map(l=>l.id);e.entities.section[i.section_id].blocks.concat(c);}else {let s=r.data;e.entities.section[s.section_id].blocks.push(s.id);}}},setReadRequest(e,t){let r=t.payload;if(r.type!=="report"&&(e.requests[r.type][r.key]=r),r.status==="SUCCESS"){let o=De(r.type,r.data),n=Be(e.entities,o);e.entities=n;}},setUpdateRequest(e,t){let r=t.payload;if(e.requests[r.type][r.key]=r,r.status==="SUCCESS"){let o=Array.isArray(r.data)?r.data:[r.data],n=De(r.type,o),a,s,i;if(r.type==="block"&&!Array.isArray(r.data)){let l=e.entities.block[r.data.id].inputs,m=n.block[r.data.id].inputs;a=l.length!==m.length,a&&(i=l.length>m.length,s=i?l.filter(u=>!m.includes(u))[0]:m.filter(u=>!l.includes(u))[0]),Object.values(n.block).forEach(u=>{u.block_input&&delete n.block[u.id];});}let c=Be(e.entities,n);if(e.entities=c,r.type==="dimension"){let l=r.data;e.entities.report[l.report_id].dimensions=Fe(c.report[l.report_id].dimensions,c.dimension);}else if(r.type==="section"&&!Array.isArray(r.data)){let l=r.data;e.entities.report[l.report_id].sections=Fe(c.report[l.report_id].sections,c.section);}else if(r.type==="block"&&!Array.isArray(r.data)){let l=r.data;a&&(i?e.entities.block[s].consumers=e.entities.block[s].consumers.filter(m=>m!==l.id):e.entities.block[s].consumers.push(l.id));}}},setDeleteRequest(e,t){let r=t.payload;if(e.requests[r.type][r.key]=r,r.status==="SUCCESS"){let{id:o,parentId:n,parentType:a}=r.data;if(delete e.entities[r.type][o],a&&n!=null){let s=`${r.type}s`;Xr(e.entities[a][n][s],o);}}},removeBlocks:(e,t)=>{let r=t.payload,o={...e.entities.block};return r.forEach(n=>{delete o[n];}),{...e,entities:{...e.entities,block:o}}},addBlocks:(e,t)=>{let r=t.payload;return {...e,entities:{...e.entities,block:{...e.entities.block,...r}}}},removeDataSourceLogic:e=>{let t={...e.entities.datasource};Object.keys(t).forEach(r=>{e.entities.datasource[r].content.useProxy&&(delete e.entities.datasource[r].content.logic,delete e.entities.datasource[r].content.testUrl,delete e.entities.datasource[r].content.access);});}},extraReducers:e=>{e.addCase(HYDRATE,(t,r)=>{let o=r.payload.records,n=o.entities;t.entities=n,t.reports=Object.values(n.report).map(a=>a.id),t.requests={block:{},dimension:{},report:{},section:{},variant:{},formatter:{},datasource:{}},t.tree=o.tree;});}});function Be(e,t){return Object.fromEntries(Object.keys(e).map(r=>[r,{...e[r],...t[r]}]))}function Fe(e,t){return e.map(n=>t[n]).sort(we).map(n=>n.id)}function Xr(e,t){let r=e.indexOf(t);r>-1&&e.splice(r,1);}var de=process.env.NEXT_PUBLIC_REPORTS_LOCALE_DEFAULT||"en",qe=process.env.NEXT_PUBLIC_REPORTS_LOCALES?.split(",")||[de];qe.includes(de)||qe.push(de);var eo={localeDefault:de,locales:qe,currentLocale:de,preferredLocale:de,showToolbar:false,activeSection:null,previews:[],query:{},sectionState:{},activeEntity:{type:null,id:null},sidebarStatus:{tools:true,settings:false,reportEditor:false},isCMS:false,isRunConsumersRunning:[]},Ve=createSlice({name:"status",initialState:eo,reducers:{setStatus:(e,t)=>{Object.assign(e,t.payload);},setPreviews(e,t){e.previews=t.payload;},setCurrentLocale(e,t){e.currentLocale=t.payload;},setPreferredLocale(e,t){e.preferredLocale=t.payload;},setSectionState(e,t){e.sectionState={...e.sectionState,...t.payload};},resetSectionState(e,t){e.sectionState={...e.sectionState,[t.payload]:{}};},setActiveEntity(e,t){e.activeEntity=t.payload;},openSidebar(e,t){e.sidebarStatus={...e.sidebarStatus,[t.payload]:true};},closeSidebar(e,t){e.sidebarStatus={...e.sidebarStatus,[t.payload]:false};},toggleSidebar(e,t){e.sidebarStatus={...e.sidebarStatus,[t.payload]:!e.sidebarStatus[t.payload]};},addRunConsumersRunning(e,t){e.isRunConsumersRunning=e.isRunConsumersRunning.concat(t.payload);},removeRunConsumersRunning(e,t){e.isRunConsumersRunning=e.isRunConsumersRunning.filter(r=>!t.payload.includes(r));}},extraReducers:e=>{e.addCase(HYDRATE,(t,r)=>{t.previews=r.payload.status.previews;});}}),xe=Ve.actions;var oo={attributes:{},variables:{},status:{}},$e=createSlice({name:"variables",initialState:oo,reducers:{setVariableChange:(e,t)=>{e.attributes={...e.attributes,...t.payload.attributes},e.variables={...e.variables,...t.payload.variables},e.status={...e.status,...t.payload.status};}},extraReducers:e=>{e.addCase(HYDRATE,(t,r)=>{let o=r.payload.variables;t.attributes={...t.attributes,...o.attributes},t.status={...t.status,...o.status},t.variables={...t.variables,...o.variables};});}}),kt=$e.actions;var Lt=()=>configureStore({reducer:{[re.name]:re.reducer,[Ve.name]:Ve.reducer,[$e.name]:$e.reducer},middleware(e){return e({thunk:{extraArgument:Le("/api/cms/")}})}}),ze=createWrapper(Lt);var We={};Ar(We,{addBlockToState:()=>fn,addRunConsumersRunning:()=>ir,cloneEntity:()=>er,createEntity:()=>Xt,deleteEntity:()=>Zt,deleteQueryParam:()=>on,readEntity:()=>Oe,readEnvSecrets:()=>gn,readMember:()=>lr,readMetadata:()=>sn,readPrivateBlocks:()=>yn,readUser:()=>un,recalculateVariables:()=>pr,removeBlocksFromState:()=>mn,removeDataSourceLogic:()=>Sn,removeRunConsumersRunning:()=>cr,reportSearch:()=>en,resetSectionState:()=>ar,revalidateReport:()=>En,revalidateUrl:()=>Rn,searchMember:()=>rn,searchRegenerate:()=>tn,searchRole:()=>cn,searchUser:()=>ln,setCurrentLocale:()=>Xo,setPreferredLocale:()=>Jo,setPreviews:()=>Qo,setQueryParam:()=>nn,setSectionState:()=>sr,setStatus:()=>nr,updateEntity:()=>Jt,updateMyData:()=>dn,updateUser:()=>pn,urlProxy:()=>an,variantValidateSlug:()=>Zo});var{localeDefault:co}=Z();function W(e){return {variables:e.variables||{},query:e.query||{},locale:e.locale||co}}var fe={SINGLE:"single",MULTI:"multi"};var Ze={ALLOWED:"allowed",ALLOWED_LOGIC:"allowedLogic",IGNORE_CASCADE:"ignoreCascade"},lo={ACCESS:"access",ACCESS_LOGIC:"accessLogic"},uo={DISABLED:"disabled"},po={FALLBACK:"fallback"};var mo={IMAGE:"image",PARAGRAPH:"paragraph",SELECTOR:"selector",STAT:"stat",SUBTITLE:"subtitle",TITLE:"title",NAV:"nav",RESET_BUTTON:"reset_button",COMPARISON_BUTTON:"comparison_button",TABLE:"table",BUTTON:"button",MULTIHIERARCHY_SELECTOR:"multihierarchy_selector",FALLBACK:"fallback"},et={GENERATOR:"generator",RELATED:"related",VIZ:"visualization",SECTION_FLAG:"section_flag"},tt="logic",T={...mo,...et},It={...Ze,...lo,...po,...uo};var Eo=yo(process.env.REPORTS_LOGGING),ye=go;function go(e,t,r,o,n=void 0,a){let s={},i=[],{locale:c}=W(a);try{if(t){let l=new Proxy(console,{get(u,f){return So(f,"log","debug","info","warn","error")?(...p)=>{i.push(`${f} ${Date.now()} - ${p.map(A=>format(A)).join(" ")}`),Eo&&u[f](...p);}:u[f]}}),m;return n?m=new Function(e,"console","libs","formatters","locale","variables",r)(t,l,Ce,o,c,n):m=new Function(e,"console","libs","formatters","locale",r)(t,l,Ce,o,c),typeof m=="object"&&Object.keys(m).length>0&&Object.assign(s,m),{vars:s,error:null,log:i,output:m}}return {vars:s,error:"Invalid API Link",log:i}}catch(l){return {vars:s,error:l.message,log:i}}}function So(e,...t){return t.includes(e)}function rt(e){return e.reduce((t,r,o)=>(o?o===e.length-1&&o===1?t+=` and ${r}`:o===e.length-1?t+=`, and ${r}`:t+=`, ${r}`:t+=r,t),"")}var Re=To;function To(e,t,r,o=false){let{variables:n}=W(r);if(!e)return e;let a=/([A-z0-9]*)\{\{([^\}]+)\}\}/g;return e.replace(a,(i,c,l)=>{let m=f=>f;if(c){let f=c.replace(/^\w/g,p=>p.toLowerCase());f in t?m=t[f]:m=p=>`${c}${p}`;}let u=Array.isArray(n[l])?rt(n[l]):n[l];if(u===void 0)return o?i:"N/A";try{return m(u,Ce,t)}catch(f){return console.error(`Error using formatter ${m.name}
2
- `,`Error message: ${f.message}`),"N/A"}})}var ot=(e,t,r)=>{let{variables:o}=r,n=s=>s.allowed==="never"?false:!s.allowed||s.allowed==="always"||o[s.allowed],a={...e};return Object.keys(a).forEach(s=>{typeof a[s]=="string"?a[s]=Re(a[s],t,r):Array.isArray(a[s])?a[s]=a[s].filter(n).map(i=>typeof i=="object"?ot(i,t,r):typeof i=="string"?Re(i,t,r):i):typeof a[s]=="object"&&a[s]!==null&&!(a[s]instanceof Date)&&(a[s]=ot(a[s],t,r));}),a},He=ot;var Ot=e=>Array.isArray(e)?e.map(t=>typeof t=="string"?{allowed:"always",label:t,id:t}:{allowed:"always",label:t.id,...t}):[];var bo=(e,t,r)=>{if(!r)return false;if(e===fe.SINGLE)return r.find(n=>n.id===t);let o=Array.isArray(t)?t:t.split(",");return Array.isArray(o)&&o.every(n=>r.map(a=>a.id).includes(n))},nt=bo;function st(e,t,r,o,n=false){let{variables:a}=W(o),s=He({logic:t},r,o).logic,i=ye("variables",a,s,r,void 0,o),{vars:c,log:l,error:m}=i,u=c.type||fe.SINGLE,f=c.component||"Selector",p=c.hideLabel||"false",A=c.resetSectionVars||"false",P=c.name||"Unlabeled Selector",d=Ot(c.options||[]),N=O=>u===fe.MULTI&&!Array.isArray(O)?[O]:O,h=c.defaultValue,x;if(h&&(h=N(h),nt(u,h,d)&&(x=h)),!x){let O=d&&d[0]&&d[0].id||d[0]||"";x=N(O);}if(n&&typeof window<"u"){let O=`selector${e}id`,Q=new URLSearchParams(window.location.search),L=Object.fromEntries(Q)[O];L&&!nt(u,L,d)&&L!==void 0&&(Q.delete(O),window.history.replaceState(null,null,`?${Q.toString()}`));}return {config:{name:P,type:u,options:d,defaultValue:x,component:f,hideLabel:p,resetSectionVars:A},log:l,error:m}}function at(e,t,r){if(!e)return false;let o=Array.isArray(r)?r:r.split(",");return Array.isArray(o)&&o.every(n=>e.map(a=>`${a[`${t} ID`]}`).includes(n))}function it(e,t,r,o,n=false){let{variables:a}=W(o),s=He({logic:t},r,o).logic,i=ye("variables",a,s,r,void 0,o),{vars:c,log:l,error:m}=i;if(n&&typeof window<"u"){let f=`multihierarchySelector${e}-value`,p=`multihierarchySelector${e}-type`,A=new URLSearchParams(window.location.search),P=Object.fromEntries(A),d=P[f],N=P[p];d&&d!==void 0&&N&&N!==void 0&&!at(c.data,N,d)&&(A.delete(f),A.delete(p),window.history.replaceState(null,null,`?${A.toString()}`));}return {config:c,log:l,error:m}}var Ao=(e,t,r)=>{let o=`selector${e}id`,n=new URLSearchParams(typeof location<"u"&&location?.search?location.search:"").get(o),a=new URLSearchParams(t).get(o),s=n||a;if(r.type===fe.MULTI){let l=s?s.split(","):r.defaultValue,m=r.options.filter(u=>l.includes(u.id));return {[`selector${e}id`]:l,[`selector${e}label`]:(m||[]).map(u=>u.label)}}let i=s&&r.options.find(l=>l.id===s)?s:r.defaultValue,c=r.options.find(l=>l.id===i);return {[`selector${e}id`]:i,[`selector${e}label`]:c&&c.label||void 0}},vt=Ao;var ho=(e,t,r)=>{let o=`multihierarchySelector${e}-value`,n=`multihierarchySelector${e}-type`,a=new URLSearchParams(typeof location<"u"&&location?.search?location.search:"").get(o),s=new URLSearchParams(typeof location<"u"&&location?.search?location.search:"").get(n),i=new URLSearchParams(t).get(o),c=new URLSearchParams(t).get(n),l=a||i,m=s||c,u=l?l.split(","):r.defaultValue||[],f=m||r.defaultValueType||"",p=r.data?.filter(A=>u.includes(`${A[`${f} ID`]}`))||[];return {[`multihierarchySelector${e}id`]:u,[`multihierarchySelector${e}label`]:[...new Set((p||[]).map(A=>A[f]))],[`multihierarchySelector${e}type`]:f}},Nt=ho;var{localeDefault:Mt,locales:Co}=Z(),xo=Object.values(et),ko=(e,t=Mt)=>e&&xo.includes(e.type)?{locale:tt,locales:[tt]}:{locale:t,locales:Co},wt=(e,t=Mt)=>{if(!e)return {};let{locale:r}=ko(e,t);return e.contentByLocale?.[r]?.content};function Lo(e,t){let r=Object.values(t),o=r.filter(n=>n.shared&&n.section_id!==e).map(n=>n.id);return Object.fromEntries(r.filter(n=>n.section_id===e&&(n.inputs.length===0||n.inputs.some(a=>o.includes(a)))).map(n=>[n.id,n]))}var Ut=Lo;var Dt=(e,t)=>t&&typeof t=="string"?t.split(".").reduce((r,o)=>r[o],e):e;var Ft="SECTION_ALLOWED";function ct(e){return e.type===T.SECTION_FLAG&&e.inputs.length===0&&e.consumers.length===0}function Po(){let{publicRuntimeConfig:e}=_o(),t=e.bespoke_report_env_vars||{};return {...Object.keys(t).reduce((r,o)=>(r[`ENV_${o}`]=t[o]||"N/A",r),{})}}var Ie=Po;function Bo(){return typeof process>"u"?{}:Object.entries(process.env).filter(([e])=>e.startsWith("BESPOKE_SECRET_")).reduce((e,[t,r])=>({...e,[t.replace("BESPOKE_SECRET_","ENV_SECRET_")]:r}),{})}var qt=Bo;var ne=yo(process.env.NEXT_PUBLIC_REPORTS_DEBUG),wo=process.env.REPORTS_ORIGIN||"",Uo=process.env.NEXT_PUBLIC_REPORTS_AXIOS_RETRIES,Gt=5;try{Gt=parseInt(`${Uo||5}`,10);}catch(e){console.error("Error setting axios retries NEXT_PUBLIC_REPORTS_AXIOS_RETRIES defaults to 5",e);}Vt(Ye,{retries:Gt,retryDelay:Vt.exponentialDelay,onRetry:(e,t,r)=>{console.error("Generator request failed. Retrying... Count: ",e),console.error("URL: ",r.url),console.error(t.message);}});Ye.interceptors.request.use(e=>({...e,requestStart:Date.now()}));Ye.interceptors.response.use(e=>({...e,requestDuration:new Date().getTime()-e.config.requestStart}),e=>Promise.reject(e));var Do=(e,t,r)=>{let o=Re(e,t,r);return o.startsWith("http")||(o=`${wo}${o.startsWith("/")?"":"/"}${o}`),o},{urlProxy:Fo}=Le("/api/cms");function je(e){return e.ok!==void 0}function Ke(e){this.message=e,this.name="ApiFetchException";}var $t=process.env.NEXT_PUBLIC_REPORTS_API_FETCH_TIMEOUT||0;async function qo(e,t,r="en",o,n){let a=Date.now(),s=e,i,c=Ie(),l=qt(),m={envs:{...c,...l}},u=new URL(e),f=new URLSearchParams(u.searchParams.toString());f.has("bespoke_slugs")&&(u.searchParams.delete("bespoke_slugs"),s=u.toString());let p={datasource:void 0};o.find(h=>{if(!h.content?.pattern)return false;try{let x=new RegExp(h.content.pattern,"gm");return x.test(s)?(p.datasource=h,!0):x.test(s)}catch{return false}});let A=n?n.settings:{},P=!!(A&&A.useProxy&&A.useProxy==="true"),d=p.datasource&&typeof p.datasource.content.useProxy=="boolean"?p.datasource.content.useProxy:false,N=`${process.env.NEXT_PUBLIC_REPORTS_BASE_URL}/api/cms/url/proxy?url=${encodeURIComponent(s)}`;if(typeof window=="object"&&(P||d)){let h=await Fo({url:s,timeout:$t});if(h.ok===true)i=h.data;else throw new Ke(h?.error)}else try{let x={url:s,timeout:$t};if(p.datasource){let O=m;if(typeof window<"u")try{let L=await getSession();if(L){let C={user:L.user,status:"authenticated",isLoading:!1,update:async()=>L};O={...m,session:C};}}catch(L){console.warn("Could not retrieve user session:",L);}let k=await bt({vars:["url","libs","session"],logic:p.datasource.content.logic},O)(s);if(k.axiosConfig)x=k.axiosConfig;else throw new Ke(`AxiosConfig is missing in Data Source ${p.datasource.name} (ID: ${p.datasource.id}).`)}let z=await Ye(x);if(z.status===200)z.headers["content-type"]==="text/csv"?i=csvParse(z.data):i=z.data;else throw new Ke("No response for: "+s)}catch(h){throw new Ke(h.message)}if(f.has("bespoke_slugs")){let h=f.get("bespoke_slugs");if(h){let x=h.split(",");if(x.length===3){let[z,O,Q]=x,k=Dt(i,Q);if(k&&Array.isArray(k)){let L=Array.from(new Set(k.map(C=>`${C[O]}`).filter(C=>!["","undefined"].includes(C))));if(L.length>0){let C=L.join("").length>2e3,B=await t({mode:C?"whole":"ids",ids:C?void 0:L,all:false,locale:r,variant:[parseInt(z,10)],output:"lite",limit:L.length+1,allowNulls:true}).then(M=>{let q=[];return je(M)?M.ok&&(q=M.data.results):q=M.results,q&&Array.isArray(q)?q:[]}).catch(M=>(console.error(`Error hydrating slugs for Variant: ${z}, Key: ${O}, Accessor: ${Q}`),console.error(` Url ${e}`),n&&console.error(` From Section ${n.section_id} and Block ${n.id}`),console.error(M),[]));if(B){let M=Object.fromEntries(B.map(q=>[q.id,`/${q.variant_slug}/${q.slug}`]));k.map(q=>(q.bespoke_slug=M[q[O]]?M[q[O]]:null,q));}}}}}}return {data:i,requestDuration:Date.now()-a,finalUrl:d||P?N:s,apiDataSource:p.datasource?p.datasource:false}}function Vo(e){this.name="BlockException",this.message=e;}async function zt(e,t,r,o,n){let{locale:a,variables:s,query:i}=W(r),c=zo(e,r,s,t),l=null,m=e.contentByLocale?.logic?.content?.api,u=null,f=null,p=null,A,P;if(!c)return {outputVariables:{},renderVariables:{},status:{allowed:false,hiddenByCascade:e.id}};if(e.type===T.FALLBACK)return {outputVariables:{},renderVariables:{},status:{allowed:c,hiddenByCascade:e.id}};if(m){p=Do(m,t,r);let k=p.split("|||").filter(B=>B!==""),L=[];for(let B=0;B<k.length;B++){let M=k[B];new RegExp("^(?:[a-z+]+:)?//","i").test(p)||(M=`${process.env.NEXT_PUBLIC_REPORTS_BASE_URL}/${M}`.replace(/([^:]\/)\/+/g,"$1")),L.push(qo(M,o,a,n,e).catch(H=>{throw new Vo(` Excecution of ${e.type}-${e.id} in section ${e.section_id} in report ${s.report_name} (${s.report_id}) failed.
3
- Error fetching ${M}.
1
+ import {createSlice,configureStore}from'@reduxjs/toolkit';import {HYDRATE,createWrapper}from'next-redux-wrapper';import We from'axios';import {schema,normalize}from'normalizr';import {merge,date,closest,assign,isObject}from'@d3plus/dom';import*as Ur from'd3-array';import*as Dr from'd3-collection';import*as Fr from'd3-format';import {formatLocale}from'd3-format';import*as qr from'd3-time-format';import {titleCase,strip}from'@d3plus/text';import jr from'jsonwebtoken';import zt from'axios-retry';import bo from'yn';import {format}from'pretty-format';import Do from'toposort';import {csvParse}from'd3-dsv';import Mo from'next/config';import {getSession}from'next-auth/react';import {notifications}from'@mantine/notifications';import {produce}from'immer';import {createContext}from'react';import {useDispatch,useSelector,Provider}from'react-redux';import {jsx}from'react/jsx-runtime';import'@mantine/core';var hr=Object.defineProperty;var xr=(e,t)=>{for(var r in t)hr(e,r,{get:t[r],enumerable:true});};function Z(e,t){return e.request(t).then(r=>{let{status:o,data:n}=r;return "error"in n?{ok:false,status:o,error:n.error}:{ok:true,status:o,wrapper:n.wrapper,data:n.data}},r=>{if("isAxiosError"in r){let{status:o,data:n}=r.response||{status:500};return {ok:false,status:o,error:n?.error??r.message}}return {ok:false,status:500,error:r.message}})}function F(e,t,r){let o=typeof t=="string"?{url:t}:t;return n=>Z(e,{...o,method:"GET",params:r?r(n):n})}function $(e,t,r){let o=typeof t=="string"?{url:t}:t;return n=>Z(e,{...o,method:"POST",data:n})}function oe(e,t,r){let o=typeof t=="string"?{url:t}:t;return n=>Z(e,{...o,method:"DELETE",params:r?r(n):n})}function le(e,t){return r=>Z(e,{method:"POST",url:`images/save/${t}`,params:{prompt:r.prompt,provider:t}})}function xe(e,t){return r=>Z(e,{method:"GET",url:`images/search/${t}`,params:{prompt:r.prompt,page:r.page,provider:t}})}function gt(e,t){return ()=>Z(e,{method:"GET",url:`list/icons/${t}`,params:{provider:t}})}function Et(e,t){return r=>Z(e,{method:"GET",url:`read/icons/${t}/icon.svg`,params:{name:r.name}})}var ue=e=>({id:e}),kr=e=>{if(e.mode==="slugs"){let t=e.slugs.map(r=>[r.variantSlug,r.memberSlug].join("/")).join(",");return {...e,slugs:t}}return ["related","whole"].includes(e.mode)?{...e}:{...e,[e.mode]:e[e.mode].join(",")}};function Le(e){let t=We.create({baseURL:e});return {createBulkBlock:$(t,"create/bulk/block"),createBlock:$(t,"create/block"),createDimension:$(t,"create/dimension"),createFormatter:$(t,"create/formatter"),createReport:$(t,"create/report"),createSection:$(t,"create/section"),createVariant:$(t,"create/variant"),createDatasource:$(t,"create/datasource"),deleteBlock:oe(t,"delete/block",ue),deleteDimension:oe(t,"delete/dimension",ue),deleteFormatter:oe(t,"delete/formatter",ue),deleteReport:oe(t,"delete/report",ue),deleteSection:oe(t,"delete/section",ue),deleteVariant:oe(t,"delete/variant",ue),deleteDatasource:oe(t,"delete/datasource",ue),readBlock:F(t,"read/block"),readDimension:F(t,"read/dimension"),readFormatter:F(t,"read/formatter"),readReport:F(t,"read/report"),readSection:F(t,"read/section"),readVariant:F(t,"read/variant"),readDatasource:F(t,"read/datasource"),updateBulkBlock:$(t,"update/bulk/block"),updateBlock:$(t,"update/block"),updateDimension:$(t,"update/dimension"),updateFormatter:$(t,"update/formatter"),updateReport:$(t,"update/report"),updateSection:$(t,"update/section"),updateVariant:$(t,"update/variant"),updateDatasource:$(t,"update/datasource"),searchReport:F(t,"search/reports"),validateVariantSlug:F(t,"validate/variant"),readMember:F(t,"read/members",kr),readMemberImage:F(t,{url:"member/image",responseType:"blob"}),searchMember:F(t,"search/members"),updateMember:F(t,"update/members"),imageLocalSearch:xe(t,"local"),imageLocalSave:le(t,"local"),imageFlickrSearch:xe(t,"flickr"),imageFlickrSave:le(t,"flickr"),imageUnsplashSearch:xe(t,"unsplash"),imageUnsplashSave:le(t,"unsplash"),imageUploadSave:le(t,"upload"),imageAdobeSearch:xe(t,"adobe"),imageAdobeSave:le(t,"adobe"),imagePixabaySearch:xe(t,"pixabay"),imagePixabaySave:le(t,"pixabay"),readMetadata:F(t,"read/metadata"),regenerateSearch:$(t,"search/regenerate"),urlProxy:F(t,"url/proxy"),searchRole:F(t,"auth/search/roles"),searchUser:F(t,"auth/search/users"),readUser:F(t,"auth/read/user"),updateUser:$(t,"auth/update/user"),updateMyData:$(t,"auth/update/me"),revalidateReport:F(t,"revalidate/report"),revalidateUrl:F(t,"revalidate/url"),readPrivateBlocks:$(t,"read/blocks/private"),listTablerIcons:gt(t,"tabler"),readTablerIcon:Et(t,"tabler"),readEnvSecrets:F(t,"read/secrets")}}function Lr(e,t){return +(e<t)-+(e>t)}function we(e,t,r="ordering"){return Lr(t[r],e[r])}var Ue={"ar-SA":{separator:"",suffixes:["y","z","a","f","p","n","\xB5","m",""," \u0623\u0644\u0641"," \u0645\u0644\u064A\u0648\u0646"," \u0628\u0644\u064A\u0648\u0646"," \u062A\u0631\u064A\u0644\u064A\u0648\u0646"," \u0643\u0648\u0627\u062F\u0631\u064A\u0644\u064A\u0648\u0646"," \u0643\u0648\u064A\u0646\u062A\u064A\u0644\u064A\u0648\u0646"," \u0633\u0643\u0633\u062A\u0644\u064A\u0648\u0646","\u0633\u0628\u062A\u064A\u0644\u064A\u0648\u0646"],grouping:[3],delimiters:{thousands:",",decimal:"."},currency:["SAR ",""]},"en-GB":{separator:"",suffixes:["y","z","a","f","p","n","\xB5","m","","k","M","B","T","q","Q","Z","Y"],grouping:[3],delimiters:{thousands:",",decimal:"."},currency:["\xA3",""]},"en-US":{separator:"",suffixes:["y","z","a","f","p","n","\xB5","m","","k","M","B","T","q","Q","Z","Y"],grouping:[3],delimiters:{thousands:",",decimal:"."},currency:["$",""]},"en-SA":{separator:"",suffixes:["y","z","a","f","p","n","\xB5","m",""," thousand"," million"," billion"," trillion"," quadrillion"," quintillion"," sextillion","septillion"],grouping:[3],delimiters:{thousands:",",decimal:"."},currency:["$",""]},"es-CL":{separator:"",suffixes:["y","z","a","f","p","n","\xB5","m","","k","M","MM","B","T","Q","Z","Y"],grouping:[3],delimiters:{thousands:".",decimal:","},currency:["$",""]},"es-MX":{separator:"",suffixes:["y","z","a","f","p","n","\xB5","m","","k","M","MM","B","T","Q","Z","Y"],grouping:[3],delimiters:{thousands:",",decimal:"."},currency:["$",""]},"es-ES":{separator:"",suffixes:["y","z","a","f","p","n","\xB5","m","","k","mm","b","t","q","Q","Z","Y"],grouping:[3],delimiters:{thousands:".",decimal:","},currency:["\u20AC",""]},"et-EE":{separator:" ",suffixes:["y","z","a","f","p","n","\xB5","m","","tuhat","miljonit","miljardit","triljonit","q","Q","Z","Y"],grouping:[3],delimiters:{thousands:" ",decimal:","},currency:["","eurot"]},"fr-FR":{suffixes:["y","z","a","f","p","n","\xB5","m","","k","m","b","t","q","Q","Z","Y"],grouping:[3],delimiters:{thousands:" ",decimal:","},currency:["\u20AC",""]},"zh-CN":{separator:"",suffixes:["\u5E7A","\u4EC4","\u963F","\u98DE","\u76AE","\u7EB3","\u5FAE","\u6BEB","","\u5343","\u5146","\u5409","\u592A","\u62CD","\u827E","\u6CFD","\u5C27"],grouping:[3],delimiters:{thousands:",",decimal:"."},currency:["\xA5",""]}};function _r(e){"@swc/helpers - typeof";return e&&typeof Symbol<"u"&&e.constructor===Symbol?"symbol":typeof e}var Br=function(e,t){return parseFloat(Math.round(e*Math.pow(10,t))/Math.pow(10,t)).toFixed(t)};function Ir(e,t,r){var o=0,n=parseFloat(e.replace("\u2212","-"),10);n&&(n<0&&(n*=-1),o=1+Math.floor(1e-12+Math.log(n)/Math.LN10),o=Math.max(-24,Math.min(24,Math.floor((o-1)/3)*3)));var a=r[8+o/3];return {number:Br(a.scale(n),t),symbol:a.symbol}}function vr(e,t){var r=Math.pow(10,Math.abs(8-t)*3);return {scale:t>8?function(o){return o/r}:function(o){return o*r},symbol:e}}function Je(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"en-US",r=arguments.length>2&&arguments[2]!==void 0?arguments[2]:void 0;if(isFinite(e))e*=1;else return "N/A";var o=e<0,n=e.toString().split(".")[0].replace("-","").length,a=(typeof t>"u"?"undefined":_r(t))==="object"?t:Ue[t]||Ue["en-US"],s=a.suffixes.map(vr),i=a.delimiters.decimal||".",c=a.separator||"",l=a.delimiters.thousands||",",p=formatLocale({currency:a.currency||["$",""],decimal:i,grouping:a.grouping||[3],thousands:l}),u;if(r)u=p.format(r)(e);else if(e===0)u="0";else if(n>=3){var m=Ir(p.format(".3r")(e),2,s),d=parseFloat(m.number).toString().replace(".",i),b=m.symbol;u="".concat(d).concat(c).concat(b);}else n===3?u=p.format(",f")(e):e<1&&e>-1?u=p.format(".2g")(e):u=p.format(".3g")(e);return "".concat(o&&u.charAt(0)!=="\u2212"?"\u2212":"").concat(u).replace(/−/g,"-").replace(/(\.[0]*[1-9]*)[0]*$/g,"$1").replace(/\.[0]*$/g,"")}function et(e){let t=1+76.18009173/e-86.50532033/(e+1)+24.01409822/(e+2)-1.231739516/(e+3)+.00120858003/(e+4)-536382e-11/(e+5);return (e-.5)*Math.log(e+4.5)-(e+4.5)+Math.log(t*2.50662827465)}function St(e,t,r){let o=0,n=1,a=1,s=1,i=0,c=0,l;for(;Math.abs((a-c)/a)>1e-5;)c=a,l=-(t+i)*(t+r+i)*e/(t+2*i)/(t+2*i+1),o=a+l*o,n=s+l*n,i+=1,l=i*(r-i)*e/(t+2*i-1)/(t+2*i),a=o+l*a,s=n+l*s,o/=s,n/=s,a/=s,s=1;return a/t}function Or(e,t,r){let o,n;if(e<0)n=0;else if(e>=t)n=1;else {e=Math.floor(e);let a=r,s=e+1,i=t-e,c=s+i,l=Math.exp(et(c)-et(i)-et(s)+s*Math.log(a)+i*Math.log(1-a));a<(s+1)/(c+2)?o=l*St(a,s,i):o=1-l*St(1-a,i,s),n=1-o;}return Math.round(n*1e5)/1e5}function Mr(e){return {.99999:15.137,.99:6.635,.95:3.841,.9:2.706}[e]}function _e(e,t,r,o){let n=t/(1-t),a=0,s=1,i=0,c=0;for(;a<=e;)c+=s,a>=r&a<=o&&(i+=s),c>1e30&&(i/=1e30,c/=1e30,s/=1e30),a+=1,s=s*n*(e+1-a)/a;return i/c}function Nr(e,t,r){let o=e/t,a=(100-r*100)/2,s,i;if(e===0)s=0;else {let c=o/2,l=0,p=o,u=a/100;for(;p-l>1e-5;)_e(t,c,e,e)*.5+_e(t,c,e+1,t)>u?(p=c,c=(l+c)/2):(l=c,c=(p+c)/2);s=c;}if(e===t)i=0;else {let c=(1+o)/2,l=o,p=1,u=a/100;for(;p-l>1e-5;)_e(t,c,e,e)*.5+_e(t,c,0,e-1)<u?(p=c,c=(l+c)/2):(l=c,c=(p+c)/2);i=c;}return {lci:s,uci:i}}function wr(e,t){let r=e,o=t,n=r,a=o,s=95,i=.5,c=.5,p=(100-s)/2/100,u=n;for(;c>1e-5;)c/=2,De((1+u)*i/(1-i),u+1,1e10)+.5*De((1+u)*i/(1-i),u,u)>p?i-=c:i+=c;let m=(1+u)*i/(1-i)/a;for(i=.5,c=.5,p=(100-s)/2/100;c>1e-5;)c/=2,De((1+u)*i/(1-i),0,u-1)+.5*De((1+u)*i/(1-i),u,u)<p?i-=c:i+=c;let b=(1+u)*i/(1-i)/a;return {lci:m,uci:b}}function De(e,t,r){let o=1,n=0,a=0,s=0;for(;s<e||o>n*1e-10;)n+=o,s>=t&s<=r&&(a+=o),n>1e30&&(a/=1e30,n/=1e30,o/=1e30),s+=1,o=o*e/s;return a/n}var Tt={binomialCdf:Or,binP:_e,computeMidP:Nr,criticalValue:Mr,smr:wr};var Ce={d3:{...Ur,...Dr,...Fr,...qr},d3plus:{assign:assign,closest:closest,date:date,formatAbbreviate:Je,merge:merge,strip:strip,titleCase:titleCase},stats:Tt};var bt={jwt:jr};var ht=(e,t={})=>{let r={libs:bt,...t};function o(a){return Function("globals",...a.vars,`with (globals) { ${a.logic} }`).bind(r,r)}function n(a){if(a.vars&&a.logic)return o(a);for(let s in a)Array.isArray(a[s])?a[s]=a[s].map(i=>isObject(i)?n(i):i):isObject(a[s])&&(a[s]=n(a[s]));return a}return n(e)};var Yr=()=>{let e=process.env.NEXT_PUBLIC_REPORTS_LOCALE_DEFAULT||"en",t=process.env.NEXT_PUBLIC_REPORTS_LOCALES?.split(",")||[e];return t.includes(e)||t.push(e),{localeDefault:e,locales:t}},J=Yr;J();var Pe=new schema.Entity("block",{},{mergeStrategy(e,t){return t.block_input?e||{}:{...e,...t}}});Pe.define({consumers:[Pe],inputs:[Pe]});var xt=new schema.Entity("variant"),Ct=new schema.Entity("dimension",{variants:[xt]},{processStrategy(e){return {...e,variants:"variants"in e?e.variants:[]}}}),kt=new schema.Entity("section",{blocks:[Pe]}),Qr=new schema.Entity("report",{dimensions:[Ct],sections:[kt]},{processStrategy(e){return {...e,sections:"sections"in e?e.sections.sort(we):[]}}}),Zr=new schema.Entity("formatter"),Xr=new schema.Entity("datasource"),Jr={report:Qr,section:kt,block:Pe,dimension:Ct,variant:xt,formatter:Zr,datasource:Xr};function Fe(e,t){let r=Jr[e];if(!r)throw new Error(`Invalid entity type: ${e}`);let{entities:o}=normalize(t,[r]);return {report:pe(o,"report"),dimension:pe(o,"dimension"),section:pe(o,"section"),block:pe(o,"block"),variant:pe(o,"variant"),formatter:pe(o,"formatter"),datasource:pe(o,"datasource")}}function pe(e,t){return Object.prototype.hasOwnProperty.call(e,t)?e[t]:{}}var Lt=(e,t=void 0)=>{let{sid:r,bid:o,previews:n=[],query:a={}}=t||{},s,i,c={};return r?(s=r,c.activeSection=s):s=e.activeSection,n.length>0?(i=n,c.previews=i.filter(Boolean)):i=e.previews,{parsedParams:{sid:s,bid:o,previews:i,query:a},statusPayload:c}};var ro={tree:[],reports:null,entities:{block:{},dimension:{},report:{},section:{},variant:{},formatter:{},datasource:{}},requests:{block:{},dimension:{},report:{},section:{},variant:{},formatter:{},datasource:{}}},re=createSlice({name:"records",initialState:ro,reducers:{set:(e,t)=>{let r=t.payload;return {entities:Be(e.entities,r.entities||{}),requests:Be(e.requests,r.requests||{}),reports:r.reports||e.reports,tree:r.tree||e.tree}},setRequest:(e,t)=>{let r=t.payload;e.requests[r.type][r.key]=r;},setCreateRequest(e,t){let r=t.payload;if(e.requests[r.type][r.key]=r,r.status==="SUCCESS"){let o=Array.isArray(r.data)?r.data:[r.data],n=Fe(r.type,o),a=Be(e.entities,n);if(e.entities=a,r.type==="report"){let s=r.data;e.reports?e.reports.indexOf(s.id)===-1&&(e.reports=[...e.reports,s.id]):e.reports=[s.id];}else if(r.type==="dimension"){let s=r.data;e.entities.report[s.report_id].dimensions.push(s.id),e.entities.report[s.report_id].dimensions=qe(a.report[s.report_id].dimensions,a.dimension);}else if(r.type==="variant"){let s=r.data;e.entities.dimension[s.dimension_id].variants.push(s.id);}else if(r.type==="section"&&!Array.isArray(r.data)){let s=r.data;e.entities.report[s.report_id].sections.push(s.id),e.entities.report[s.report_id].sections=qe(a.report[s.report_id].sections,a.section);}else if(r.type==="block")if(Array.isArray(r.data)){let s=r.data,i=s[0],c=s.map(l=>l.id);e.entities.section[i.section_id].blocks.concat(c);}else {let s=r.data;e.entities.section[s.section_id].blocks.push(s.id);}}},setReadRequest(e,t){let r=t.payload;if(r.type!=="report"&&(e.requests[r.type][r.key]=r),r.status==="SUCCESS"){let o=Fe(r.type,r.data),n=Be(e.entities,o);e.entities=n;}},setUpdateRequest(e,t){let r=t.payload;if(e.requests[r.type][r.key]=r,r.status==="SUCCESS"){let o=Array.isArray(r.data)?r.data:[r.data],n=Fe(r.type,o),a,s,i;if(r.type==="block"&&!Array.isArray(r.data)){let l=e.entities.block[r.data.id].inputs,p=n.block[r.data.id].inputs;a=l.length!==p.length,a&&(i=l.length>p.length,s=i?l.filter(u=>!p.includes(u))[0]:p.filter(u=>!l.includes(u))[0]),Object.values(n.block).forEach(u=>{u.block_input&&delete n.block[u.id];});}let c=Be(e.entities,n);if(e.entities=c,r.type==="dimension"){let l=r.data;e.entities.report[l.report_id].dimensions=qe(c.report[l.report_id].dimensions,c.dimension);}else if(r.type==="section"&&!Array.isArray(r.data)){let l=r.data;e.entities.report[l.report_id].sections=qe(c.report[l.report_id].sections,c.section);}else if(r.type==="block"&&!Array.isArray(r.data)){let l=r.data;a&&(i?e.entities.block[s].consumers=e.entities.block[s].consumers.filter(p=>p!==l.id):e.entities.block[s].consumers.push(l.id));}}},setDeleteRequest(e,t){let r=t.payload;if(e.requests[r.type][r.key]=r,r.status==="SUCCESS"){let{id:o,parentId:n,parentType:a}=r.data;if(delete e.entities[r.type][o],a&&n!=null){let s=`${r.type}s`;oo(e.entities[a][n][s],o);}}},removeBlocks:(e,t)=>{let r=t.payload,o={...e.entities.block};return r.forEach(n=>{delete o[n];}),{...e,entities:{...e.entities,block:o}}},addBlocks:(e,t)=>{let r=t.payload;return {...e,entities:{...e.entities,block:{...e.entities.block,...r}}}},removeDataSourceLogic:e=>{let t={...e.entities.datasource};Object.keys(t).forEach(r=>{e.entities.datasource[r].content.useProxy&&(delete e.entities.datasource[r].content.logic,delete e.entities.datasource[r].content.testUrl,delete e.entities.datasource[r].content.access);});}},extraReducers:e=>{e.addCase(HYDRATE,(t,r)=>{let o=r.payload.records,n=o.entities;t.entities=n,t.reports=Object.values(n.report).map(a=>a.id),t.requests={block:{},dimension:{},report:{},section:{},variant:{},formatter:{},datasource:{}},t.tree=o.tree;});}});function Be(e,t){return Object.fromEntries(Object.keys(e).map(r=>[r,{...e[r],...t[r]}]))}function qe(e,t){return e.map(n=>t[n]).sort((n,a)=>typeof n.ordering=="string"&&typeof a.ordering=="string"?we(n,a):typeof n.ordering=="number"&&typeof a.ordering=="number"?n.ordering-a.ordering:String(n.ordering).localeCompare(String(a.ordering))).map(n=>n.id)}function oo(e,t){let r=e.indexOf(t);r>-1&&e.splice(r,1);}var me=process.env.NEXT_PUBLIC_REPORTS_LOCALE_DEFAULT||"en",$e=process.env.NEXT_PUBLIC_REPORTS_LOCALES?.split(",")||[me];$e.includes(me)||$e.push(me);var ao={localeDefault:me,locales:$e,currentLocale:me,preferredLocale:me,showToolbar:false,activeSection:null,previews:[],query:{},sectionState:{},activeEntity:{type:null,id:null},sidebarStatus:{tools:true,settings:false,reportEditor:false},isCMS:false,isRunConsumersRunning:[]},Ve=createSlice({name:"status",initialState:ao,reducers:{setStatus:(e,t)=>{Object.assign(e,t.payload);},setPreviews(e,t){e.previews=t.payload;},setCurrentLocale(e,t){e.currentLocale=t.payload;},setPreferredLocale(e,t){e.preferredLocale=t.payload;},setSectionState(e,t){e.sectionState={...e.sectionState,...t.payload};},resetSectionState(e,t){e.sectionState={...e.sectionState,[t.payload]:{}};},setActiveEntity(e,t){e.activeEntity=t.payload;},openSidebar(e,t){e.sidebarStatus={...e.sidebarStatus,[t.payload]:true};},closeSidebar(e,t){e.sidebarStatus={...e.sidebarStatus,[t.payload]:false};},toggleSidebar(e,t){e.sidebarStatus={...e.sidebarStatus,[t.payload]:!e.sidebarStatus[t.payload]};},addRunConsumersRunning(e,t){e.isRunConsumersRunning=e.isRunConsumersRunning.concat(t.payload);},removeRunConsumersRunning(e,t){e.isRunConsumersRunning=e.isRunConsumersRunning.filter(r=>!t.payload.includes(r));}},extraReducers:e=>{e.addCase(HYDRATE,(t,r)=>{t.previews=r.payload.status.previews;});}}),ke=Ve.actions;var lo={attributes:{},variables:{},status:{}},ze=createSlice({name:"variables",initialState:lo,reducers:{setVariableChange:(e,t)=>{e.attributes={...e.attributes,...t.payload.attributes},e.variables={...e.variables,...t.payload.variables},e.status={...e.status,...t.payload.status};}},extraReducers:e=>{e.addCase(HYDRATE,(t,r)=>{let o=r.payload.variables;t.attributes={...t.attributes,...o.attributes},t.status={...t.status,...o.status},t.variables={...t.variables,...o.variables};});}}),_t=ze.actions;var Pt=()=>configureStore({reducer:{[re.name]:re.reducer,[Ve.name]:Ve.reducer,[ze.name]:ze.reducer},middleware(e){return e({thunk:{extraArgument:Le("/api/cms/")}})}}),Ge=createWrapper(Pt);var Qe={};xr(Qe,{addBlockToState:()=>Tn,addRunConsumersRunning:()=>lr,cloneEntity:()=>rr,createEntity:()=>Jt,deleteEntity:()=>tr,deleteQueryParam:()=>un,readEntity:()=>ve,readEnvSecrets:()=>xn,readMember:()=>pr,readMetadata:()=>dn,readPrivateBlocks:()=>bn,readUser:()=>Rn,recalculateVariables:()=>mr,removeBlocksFromState:()=>Sn,removeDataSourceLogic:()=>Cn,removeRunConsumersRunning:()=>ur,reportSearch:()=>an,resetSectionState:()=>cr,revalidateReport:()=>hn,revalidateUrl:()=>An,searchMember:()=>ln,searchRegenerate:()=>cn,searchRole:()=>fn,searchUser:()=>yn,setCurrentLocale:()=>on,setPreferredLocale:()=>nn,setPreviews:()=>rn,setQueryParam:()=>pn,setSectionState:()=>ir,setStatus:()=>ar,updateEntity:()=>er,updateMyData:()=>En,updateUser:()=>gn,urlProxy:()=>mn,variantValidateSlug:()=>sn});var{localeDefault:yo}=J();function W(e){return {variables:e.variables||{},query:e.query||{},locale:e.locale||yo}}var ye={SINGLE:"single",MULTI:"multi"};var tt={ALLOWED:"allowed",ALLOWED_LOGIC:"allowedLogic",IGNORE_CASCADE:"ignoreCascade"},Ro={ACCESS:"access",ACCESS_LOGIC:"accessLogic"},go={DISABLED:"disabled"},Eo={FALLBACK:"fallback"};var So={IMAGE:"image",PARAGRAPH:"paragraph",SELECTOR:"selector",STAT:"stat",SUBTITLE:"subtitle",TITLE:"title",NAV:"nav",RESET_BUTTON:"reset_button",COMPARISON_BUTTON:"comparison_button",TABLE:"table",BUTTON:"button",MULTIHIERARCHY_SELECTOR:"multihierarchy_selector",FALLBACK:"fallback"},rt={GENERATOR:"generator",RELATED:"related",VIZ:"visualization",SECTION_FLAG:"section_flag"},ot="logic",T={...So,...rt},Ot={...tt,...Ro,...Eo,...go};var ho=bo(process.env.REPORTS_LOGGING),Re=xo;function xo(e,t,r,o,n=void 0,a){let s={},i=[],{locale:c}=W(a);try{if(t){let l=new Proxy(console,{get(u,m){return Co(m,"log","debug","info","warn","error")?(...d)=>{i.push(`${m} ${Date.now()} - ${d.map(b=>format(b)).join(" ")}`),ho&&u[m](...d);}:u[m]}}),p;return n?p=new Function(e,"console","libs","formatters","locale","variables",r)(t,l,Ce,o,c,n):p=new Function(e,"console","libs","formatters","locale",r)(t,l,Ce,o,c),typeof p=="object"&&Object.keys(p).length>0&&Object.assign(s,p),{vars:s,error:null,log:i,output:p}}return {vars:s,error:"Invalid API Link",log:i}}catch(l){return {vars:s,error:l.message,log:i}}}function Co(e,...t){return t.includes(e)}function nt(e){return e.reduce((t,r,o)=>(o?o===e.length-1&&o===1?t+=` and ${r}`:o===e.length-1?t+=`, and ${r}`:t+=`, ${r}`:t+=r,t),"")}var ge=ko;function ko(e,t,r,o=false){let{variables:n}=W(r);if(!e)return e;let a=/([A-z0-9]*)\{\{([^\}]+)\}\}/g;return e.replace(a,(i,c,l)=>{let p=m=>m;if(c){let m=c.replace(/^\w/g,d=>d.toLowerCase());m in t?p=t[m]:p=d=>`${c}${d}`;}let u=Array.isArray(n[l])?nt(n[l]):n[l];if(u===void 0)return o?i:"N/A";try{return p(u,Ce,t)}catch(m){return console.error(`Error using formatter ${p.name}
2
+ `,`Error message: ${m.message}`),"N/A"}})}var st=(e,t,r)=>{let{variables:o}=r,n=s=>s.allowed==="never"?false:!s.allowed||s.allowed==="always"||o[s.allowed],a={...e};return Object.keys(a).forEach(s=>{typeof a[s]=="string"?a[s]=ge(a[s],t,r):Array.isArray(a[s])?a[s]=a[s].filter(n).map(i=>typeof i=="object"?st(i,t,r):typeof i=="string"?ge(i,t,r):i):typeof a[s]=="object"&&a[s]!==null&&!(a[s]instanceof Date)&&(a[s]=st(a[s],t,r));}),a},Ke=st;var Mt=e=>Array.isArray(e)?e.map(t=>typeof t=="string"?{allowed:"always",label:t,id:t}:{allowed:"always",label:t.id,...t}):[];var Lo=(e,t,r)=>{if(!r)return false;if(e===ye.SINGLE)return r.find(n=>n.id===t);let o=Array.isArray(t)?t:t.split(",");return Array.isArray(o)&&o.every(n=>r.map(a=>a.id).includes(n))},at=Lo;function it(e,t,r,o,n=false){let{variables:a}=W(o),s=Ke({logic:t},r,o).logic,i=Re("variables",a,s,r,void 0,o),{vars:c,log:l,error:p}=i,u=c.type||ye.SINGLE,m=c.component||"Selector",d=c.hideLabel||"false",b=c.resetSectionVars||"false",P=c.name||"Unlabeled Selector",f=Mt(c.options||[]),M=v=>u===ye.MULTI&&!Array.isArray(v)?[v]:v,h=c.defaultValue,C;if(h&&(h=M(h),at(u,h,f)&&(C=h)),!C){let v=f&&f[0]&&f[0].id||f[0]||"";C=M(v);}if(n&&typeof window<"u"){let v=`selector${e}id`,Q=new URLSearchParams(window.location.search),L=Object.fromEntries(Q)[v];L&&!at(u,L,f)&&L!==void 0&&(Q.delete(v),window.history.replaceState(null,null,`?${Q.toString()}`));}return {config:{name:P,type:u,options:f,defaultValue:C,component:m,hideLabel:d,resetSectionVars:b},log:l,error:p}}function ct(e,t,r){if(!e)return false;let o=Array.isArray(r)?r:r.split(",");return Array.isArray(o)&&o.every(n=>e.map(a=>`${a[`${t} ID`]}`).includes(n))}function lt(e,t,r,o,n=false){let{variables:a}=W(o),s=Ke({logic:t},r,o).logic,i=Re("variables",a,s,r,void 0,o),{vars:c,log:l,error:p}=i;if(n&&typeof window<"u"){let m=`multihierarchySelector${e}-value`,d=`multihierarchySelector${e}-type`,b=new URLSearchParams(window.location.search),P=Object.fromEntries(b),f=P[m],M=P[d];f&&f!==void 0&&M&&M!==void 0&&!ct(c.data,M,f)&&(b.delete(m),b.delete(d),window.history.replaceState(null,null,`?${b.toString()}`));}return {config:c,log:l,error:p}}var _o=(e,t,r)=>{let o=`selector${e}id`,n=new URLSearchParams(typeof location<"u"&&location?.search?location.search:"").get(o),a=new URLSearchParams(t).get(o),s=n||a;if(r.type===ye.MULTI){let l=s?s.split(","):r.defaultValue,p=r.options.filter(u=>l.includes(u.id));return {[`selector${e}id`]:l,[`selector${e}label`]:(p||[]).map(u=>u.label)}}let i=s&&r.options.find(l=>l.id===s)?s:r.defaultValue,c=r.options.find(l=>l.id===i);return {[`selector${e}id`]:i,[`selector${e}label`]:c&&c.label||void 0}},Nt=_o;var Po=(e,t,r)=>{let o=`multihierarchySelector${e}-value`,n=`multihierarchySelector${e}-type`,a=new URLSearchParams(typeof location<"u"&&location?.search?location.search:"").get(o),s=new URLSearchParams(typeof location<"u"&&location?.search?location.search:"").get(n),i=new URLSearchParams(t).get(o),c=new URLSearchParams(t).get(n),l=a||i,p=s||c,u=l?l.split(","):r.defaultValue||[],m=p||r.defaultValueType||"",d=r.data?.filter(b=>u.includes(`${b[`${m} ID`]}`))||[];return {[`multihierarchySelector${e}id`]:u,[`multihierarchySelector${e}label`]:[...new Set((d||[]).map(b=>b[m]))],[`multihierarchySelector${e}type`]:m}},wt=Po;var{localeDefault:Ut,locales:Bo}=J(),Io=Object.values(rt),vo=(e,t=Ut)=>e&&Io.includes(e.type)?{locale:ot,locales:[ot]}:{locale:t,locales:Bo},Dt=(e,t=Ut)=>{if(!e)return {};let{locale:r}=vo(e,t);return e.contentByLocale?.[r]?.content};function Oo(e,t){let r=Object.values(t),o=r.filter(n=>n.shared&&n.section_id!==e).map(n=>n.id);return Object.fromEntries(r.filter(n=>n.section_id===e&&(n.inputs.length===0||n.inputs.some(a=>o.includes(a)))).map(n=>[n.id,n]))}var Ft=Oo;var qt=(e,t)=>t&&typeof t=="string"?t.split(".").reduce((r,o)=>r[o],e):e;var $t="SECTION_ALLOWED";function ut(e){return e.type===T.SECTION_FLAG&&e.inputs.length===0&&e.consumers.length===0}function No(){let{publicRuntimeConfig:e}=Mo(),t=e.bespoke_report_env_vars||{};return {...Object.keys(t).reduce((r,o)=>(r[`ENV_${o}`]=t[o]||"N/A",r),{})}}var Ie=No;function wo(){return typeof process>"u"?{}:Object.entries(process.env).filter(([e])=>e.startsWith("BESPOKE_SECRET_")).reduce((e,[t,r])=>({...e,[t.replace("BESPOKE_SECRET_","ENV_SECRET_")]:r}),{})}var Vt=wo;var ne=bo(process.env.NEXT_PUBLIC_REPORTS_DEBUG),Vo=process.env.REPORTS_ORIGIN||"",zo=process.env.NEXT_PUBLIC_REPORTS_AXIOS_RETRIES,Kt=5;try{Kt=parseInt(`${zo||5}`,10);}catch(e){console.error("Error setting axios retries NEXT_PUBLIC_REPORTS_AXIOS_RETRIES defaults to 5",e);}zt(We,{retries:Kt,retryDelay:zt.exponentialDelay,onRetry:(e,t,r)=>{console.error("Generator request failed. Retrying... Count: ",e),console.error("URL: ",r.url),console.error(t.message);}});We.interceptors.request.use(e=>({...e,requestStart:Date.now()}));We.interceptors.response.use(e=>({...e,requestDuration:new Date().getTime()-e.config.requestStart}),e=>Promise.reject(e));var Go=(e,t,r)=>{let o=ge(e,t,r);return o.startsWith("http")||(o=`${Vo}${o.startsWith("/")?"":"/"}${o}`),o},{urlProxy:Ho}=Le("/api/cms");function Ye(e){return e.ok!==void 0}function je(e){this.message=e,this.name="ApiFetchException";}var Gt=process.env.NEXT_PUBLIC_REPORTS_API_FETCH_TIMEOUT||0;async function Ko(e,t,r="en",o,n){let a=Date.now(),s=e,i,c=Ie(),l=Vt(),p={envs:{...c,...l}},u=new URL(e),m=new URLSearchParams(u.searchParams.toString());m.has("bespoke_slugs")&&(u.searchParams.delete("bespoke_slugs"),s=u.toString());let d={datasource:void 0};o.find(h=>{if(!h.content?.pattern)return false;try{let C=new RegExp(h.content.pattern,"gm");return C.test(s)?(d.datasource=h,!0):C.test(s)}catch{return false}});let b=n?n.settings:{},P=!!(b&&b.useProxy&&b.useProxy==="true"),f=d.datasource&&typeof d.datasource.content.useProxy=="boolean"?d.datasource.content.useProxy:false,M=`${process.env.NEXT_PUBLIC_REPORTS_BASE_URL}/api/cms/url/proxy?url=${encodeURIComponent(s)}`;if(typeof window=="object"&&(P||f)){let h=await Ho({url:s,timeout:Gt});if(h.ok===true)i=h.data;else throw new je(h?.error)}else try{let C={url:s,timeout:Gt};if(d.datasource){let v=p;if(typeof window<"u")try{let L=await getSession();if(L){let x={user:L.user,status:"authenticated",isLoading:!1,update:async()=>L};v={...p,session:x};}}catch(L){console.warn("Could not retrieve user session:",L);}let k=await ht({vars:["url","libs","session"],logic:d.datasource.content.logic},v)(s);if(k.axiosConfig)C=k.axiosConfig;else throw new je(`AxiosConfig is missing in Data Source ${d.datasource.name} (ID: ${d.datasource.id}).`)}let z=await We(C);if(z.status===200)z.headers["content-type"]==="text/csv"?i=csvParse(z.data):i=z.data;else throw new je("No response for: "+s)}catch(h){throw new je(h.message)}if(m.has("bespoke_slugs")){let h=m.get("bespoke_slugs");if(h){let C=h.split(",");if(C.length===3){let[z,v,Q]=C,k=qt(i,Q);if(k&&Array.isArray(k)){let L=Array.from(new Set(k.map(x=>`${x[v]}`).filter(x=>!["","undefined"].includes(x))));if(L.length>0){let x=L.join("").length>2e3,B=await t({mode:x?"whole":"ids",ids:x?void 0:L,all:false,locale:r,variant:[parseInt(z,10)],output:"lite",limit:L.length+1,allowNulls:true}).then(N=>{let q=[];return Ye(N)?N.ok&&(q=N.data.results):q=N.results,q&&Array.isArray(q)?q:[]}).catch(N=>(console.error(`Error hydrating slugs for Variant: ${z}, Key: ${v}, Accessor: ${Q}`),console.error(` Url ${e}`),n&&console.error(` From Section ${n.section_id} and Block ${n.id}`),console.error(N),[]));if(B){let N=Object.fromEntries(B.map(q=>[q.id,`/${q.variant_slug}/${q.slug}`]));k.map(q=>(q.bespoke_slug=N[q[v]]?N[q[v]]:null,q));}}}}}}return {data:i,requestDuration:Date.now()-a,finalUrl:f||P?M:s,apiDataSource:d.datasource?d.datasource:false}}function jo(e){this.name="BlockException",this.message=e;}async function Ht(e,t,r,o,n){let{locale:a,variables:s,query:i}=W(r),c=Wo(e,r,s,t),l=null,p=e.contentByLocale?.logic?.content?.api,u=null,m=null,d=null,b=null,P=null;if(!c)return {outputVariables:{},renderVariables:{},status:{allowed:false,hiddenByCascade:e.id}};if(e.type===T.FALLBACK)return {outputVariables:{},renderVariables:{},status:{allowed:c,hiddenByCascade:e.id}};if(p){d=Go(p,t,r);let k=d.split("|||").filter(B=>B!==""),L=[];for(let B=0;B<k.length;B++){let N=k[B];new RegExp("^(?:[a-z+]+:)?//","i").test(d)||(N=`${process.env.NEXT_PUBLIC_REPORTS_BASE_URL}/${N}`.replace(/([^:]\/)\/+/g,"$1")),L.push(Ko(N,o,a,n,e).catch(H=>{throw new jo(` Excecution of ${e.type}-${e.id} in section ${e.section_id} in report ${s.report_name} (${s.report_id}) failed.
3
+ Error fetching ${N}.
4
4
  Message: ${H.message}.
5
- `)}));}let C=await Promise.all(L).catch(B=>B.message);if(typeof C=="string"&&C)return {outputVariables:{},renderVariables:{},status:{error:C}};l=C.length===1?C[0].data:C.map(B=>B.data),f=C.reduce((B,M)=>B+JSON.stringify(M.data).length/1024,0),u=Math.max(...C.map(B=>B.requestDuration)),A=C.map(B=>B.apiDataSource?`${B.apiDataSource.name} (${B.apiDataSource.id})`:null),P=C.map(B=>B.finalUrl);}if(e.type===T.SELECTOR){let{config:k,log:L,error:C}=st(e.id,e.contentByLocale[a].content.logic,t,r,true);return {outputVariables:vt(e.id,i,k),renderVariables:k,status:{log:L,error:C,allowed:c}}}if(e.type===T.MULTIHIERARCHY_SELECTOR){let{config:k,log:L,error:C}=it(e.id,e.contentByLocale[a].content.logic,t,r,true);return {outputVariables:Nt(e.id,i,k),renderVariables:k,status:{log:L,error:C,allowed:c}}}if(e.type===T.VIZ)return {outputVariables:{},renderVariables:e.contentByLocale.logic.content,status:{log:[],allowed:c}};if(e.type===T.RELATED){let k=e.contentByLocale?.logic?.content?.simple?.compare||"variant",L=e.contentByLocale?.logic?.content?.simple?.limit||4,C=Object.keys(s).filter(R=>R.startsWith("report_id")).map(R=>s[R]),B=Object.keys(s).filter(R=>R.startsWith("dimension_id")).map(R=>s[R]),M=Object.keys(s).filter(R=>R.startsWith("variant_id")).map(R=>s[R]),q=Object.keys(s).filter(R=>R.startsWith("id")).map(R=>s[R]);if(!q.length)return {outputVariables:{related_reports:[]},renderVariables:{},status:{log:[],allowed:false}};let H=await Promise.all(q.map((R,S)=>o({mode:"ids",locale:a,ids:[R],output:"lite",variant:[M[S]]}))).then(R=>R.flatMap(S=>{let b=[];return je(S)?S.ok&&(b=S.data.results):b=S.results,b&&Array.isArray(b)?b:[]})).catch(R=>(console.error("Error getting related members",R),[]));if(B.length>1){let R=Object.keys(s).filter(v=>v.startsWith("variant_slug")).map(v=>s[v]),S=H.map((v,$)=>{let D={mode:"related",locale:a,related:L??4,current_ids:[v.content_id],output:"full",variant_ids:[v.variant_id]};return $===0&&(D.include_ids=[v.content_id]),D}),b=await Promise.all(S.map(v=>o(v))).then(v=>v.flatMap($=>{let D=[];return je($)?$.ok&&(D=$.data.results):D=$.results,D&&Array.isArray(D)?D:[]})).catch(v=>(console.error("Error getting related members",v),[])),ie=b.reduce((v,$)=>{let D=$.variant_slug;return v[D]||(v[D]=[]),v[D].push($),v},{}),Me=[],G=Object.keys(ie),te=[{combination:[],index:0}];for(;te.length>0;){let v=te.pop();if(!v)continue;let{combination:$,index:D}=v;if(D===G.length){Me.push($);continue}let ce=G[D],j=ie[ce];for(let Y of j)te.push({combination:[...$,Y],index:D+1});}return {outputVariables:{related_reports:Me.map(v=>{let $=v.sort((D,ce)=>R.indexOf(D.variant_slug)-R.indexOf(ce.variant_slug));return {entities:$,link:"/"+$.map(D=>`${D.variant_slug}/${D.slug}`).join("/")}})},renderVariables:{},status:{log:[],allowed:b.length>0}}}let _=H.map(R=>R.content_id),w={mode:"related",locale:a,related:L??4,current_ids:_,output:"full"};k&&(k==="report"?w.report_ids=C:k==="dimension"?w.dimension_ids=B:w.variant_ids=M);let K=await o(w).then(R=>{let S=[];return je(R)?R.ok&&(S=R.data.results):S=R.results,S&&Array.isArray(S)?S:[]}).catch(R=>(console.error("Error getting related members",R),[]));return {outputVariables:{related_reports:K.map(R=>({entities:[R],link:`/${R.variant_slug}/${R.slug}`}))},renderVariables:{},status:{log:[],allowed:K.length>0}}}let{logic:d}=wt(e,a),N=Re(d,t,r),h=ye("resp",l||{},N,t,s,r),{vars:x,error:z,log:O}=h;if(typeof x!="object")return {outputVariables:{},renderVariables:{},status:{error:"Configuration did not return an object",log:O,duration:u,responseSize:f,resp:l,api:p,allowed:c,apiFinalUrls:P,apiDataSources:A}};let Q=Object.keys(x).reduce((k,L)=>({...k,[`${e.type}${e.id}${L}`]:x[L]}),{});return {renderVariables:x,outputVariables:[T.GENERATOR,T.SECTION_FLAG].includes(e.type)?x:Q,status:{log:O,error:z,duration:u,responseSize:f,resp:l,api:p,allowed:c,apiFinalUrls:P,apiDataSources:A}}}function $o(e,t,r,o,n,a,s){return e.consumers.forEach(i=>{if(t[i]){let c=`${r}-${i}`;!o.includes(c)&&(t[i].section_id===t[r].section_id||!n)&&o.push(c),e.consumers.filter(l=>t[l]&&t[l].section_id===t[r].section_id||!n).forEach(l=>lt(l,t,o,false,a,n,s));}})}var lt=(e,t,r=[],o=true,n=true,a=true,s=[])=>{if(s.includes(e))return [];s.push(e);let i=t[e];return i&&i.inputs.length&&o&&i.inputs.forEach(c=>{let l=`${c}-${e}`;r.includes(l)||r.push(l),i.inputs.forEach(m=>lt(m,t,r,o,false,a,s));}),i&&i.consumers.length&&n&&$o(i,t,e,r,a,n,s),r},zo=(e,t,r,o)=>{let n=true;if(e&&"allowed"in e.settings&&e.settings.allowed!=="always")if(e.settings.allowed==="never")n=false;else {let a=W(t),{error:s,output:i}=ye("variables",r,e.settings.allowedLogic||"return false;",o,void 0,a);s||(n=!!i);}return n},Ht=async(e,t,r,o,n,a={},s,i="section",c)=>{let l=i==="section",m=W(n),u=m.variables,f={...a.variables??{}},p={...a.status??{}},A=new Set,P=[],d={};r?d={...d,[r]:e[r]}:t?d=(t??[]).reduce((_,{id:w})=>({..._,...Ut(w,e)}),{}):d=Object.values(e).filter(_=>ct(_)).reduce((_,w)=>({..._,[w.id]:w}),{});let N=Object.values(d).filter(_=>ct(_));if(N.length>0){ne&&console.info("%crunConsumers: calculating section flags","color:purple",N.map(y=>y.id).join(", "));let _=Object.fromEntries(await Promise.all(N.map(async y=>[y.id,await zt(y,o,{...m,variables:u,locale:u.locale},s,c).then(R=>{let{outputVariables:S,status:b}=R;if(b.error){if(typeof window>"u")throw new Error(`Run consumers (Block: ${y.id}, Section ${y.section_id}) failed with message: ${b.error}. `);p[y.id]={allowed:false,error:b.error},f[y.id]={};}return (y.consumers.length>0||[T.GENERATOR,T.SECTION_FLAG,T.RELATED].includes(y.type))&&b.allowed&&Object.keys(S).length>0?f[y.id]=S:f[y.id]={},i==="report"?(p[y.id]={allowed:b.allowed},[T.GENERATOR,T.SECTION_FLAG].includes(y.type)&&b.api&&(p[y.id].api=b.api)):p[y.id]=b,R})]))),K=Object.entries(_).filter(([,y])=>!y.outputVariables[Ft]).map(([y])=>Number(y));A=new Set(K.map(y=>e[y].section_id)),Object.values(d).filter(y=>A.has(y.section_id)).forEach(y=>{P.push(y.id),delete d[y.id];}),ne&&console.info("%crunConsumers: removing sections","color:purple",A.keys());}let h=A.size>0?Object.fromEntries(Object.entries(e).filter(([,_])=>A?.has(_.section_id)?(P.includes(_.id)||P.push(_.id),false):true)):e;if(P.length>0&&(h=Object.fromEntries(Object.entries(h).map(([_,w])=>{let K={...w,inputs:w.inputs.filter(y=>!P.includes(y)),consumers:w.consumers.filter(y=>!P.includes(y))};return [_,K]}))),!r&&!t)return {variables:{...a.variables??{},...f},status:{...a.status??{},...p}};i==="report"&&P.length>0&&P.forEach(_=>{delete f[_],delete p[_],delete e[_];}),ne&&console.info("%crunConsumers: running root blocks","color:purple",Object.keys(d));let x=Object.keys(d).reduce((_,w)=>{let K=new Date,y=lt(Number(w),h,[],!r,true,l).map(b=>b.split("-")),S=(new Date().getTime()-K.getTime())/1e3;return ne&&console.info(`%cResolved dependencies for ${w} (${S.toFixed(2)}s)`,"color:blue"),[..._,...y]},[]),z=new Date,O=Object.keys(d).reduce((_,w)=>_.includes(w)?[..._]:[w,..._],Oo(x)),k=(new Date().getTime()-z.getTime())/1e3;ne&&console.info(`%cResolved DAG (${k.toFixed(2)}s): `,"color:green",O);let L=process.env.NEXT_PUBLIC_REPORTS_MAX_CONCURRENT_QUERIES_PER_REPORT,C=parseInt(`${L||0}`,10);async function B(_,w){let K=new Map,y=[],R=async()=>y.length;for(let S of _){if(C!==0){let G=await R();for(;G>=C;)ne&&console.info("Too many pending promises, waiting...",G,y),await new Promise(te=>setTimeout(te,500)),G=await R();}let b=w[S],Me=Promise.all(b.inputs.filter(G=>_.includes(String(G))).map(G=>K.get(Number(G)))).then(async()=>{let G=b.inputs.reduce((j,Y)=>({...j,...f[Y]}),u),te=b.inputs.find(j=>(b.settings?.ignoreCascade?b.settings?.ignoreCascade:[]).includes(j)||!p[j]?false:!p[j].allowed||p[j].hiddenByCascade);if(te){p[S]={allowed:false,hiddenByCascade:p[te].hiddenByCascade||te},f[S]={},y.splice(y.indexOf(Number(S)),1);return}let ft=new Date,v;typeof window<"u"&&[T.SELECTOR,T.MULTIHIERARCHY_SELECTOR].includes(b.type)&&b.settings[It.DISABLED]?v=new Promise(j=>{j({outputVariables:f[S],status:p[S]});}):v=zt(b,o,{...m,variables:G,locale:G.locale},s,c);let $=await v.then(({outputVariables:j,status:Y})=>{if(Y.error){if(typeof window>"u")throw new Error(`Run consumers (Block: ${S}, Section ${b.section_id}) failed with message: ${Y.error}.`);p[S]={allowed:false,error:Y.error},f[S]={};}(b.consumers.length>0||[T.GENERATOR,T.SECTION_FLAG,T.RELATED].includes(b.type))&&Y.allowed&&Object.keys(j).length>0?f[S]=j:f[S]={},i==="report"?(p[S]={allowed:Y.allowed},[T.GENERATOR,T.SECTION_FLAG].includes(b.type)&&Y.api&&(p[S].api=Y.api)):p[S]=Y;}),ce=(new Date().getTime()-ft.getTime())/1e3;return ne&&console.info(`%cBlock ${b.id} resolved in ${ce.toFixed(3)}s`,ce>500?"color:red":"color:green"),p[S].duration=p[S].duration?p[S].duration:ce,y.splice(y.indexOf(Number(S)),1),$}).catch(G=>{throw y.splice(y.indexOf(Number(S)),1),G});y.push(Number(S)),K.set(Number(S),Me);}await Promise.all(Array.from(K.values()));}let M=new Date;await B(O,h);let H=(new Date().getTime()-M.getTime())/1e3;return ne&&console.info(`%cResolved Variables (${H.toFixed(2)}s), ${O.length} blocks`,"color:green"),{variables:{...a.variables??{},...f},status:{...a.status??{},...p}}};function Go(e=[]){return e.reduce((t,r,o)=>{if(r){let n=o+1;t[`id${n}`]=r.id,t[`name${n}`]=r.name,t[`slug${n}`]=r.slug,"attributes"in r&&Object.keys(r.attributes).forEach(a=>{t[`attr_${a}${n}`]=r.attributes[a];}),t[`variant_id${n}`]=r.variant_id,t[`variant_name${n}`]=r.variant_name,t[`variant_slug${n}`]=r.variant_slug,t[`dimension_id${n}`]=r.dimension_id,t[`dimension_name${n}`]=r.dimension_name,t.report_id=r.report_id,t.report_name=r.report_name;}return t},{})}var Kt=Go;function Ee(e,t,r){if(t==="createBulk"||t==="updateBulk"){let n=`${t}${jt(r)}`;return e[n]}let o=`${t}${jt(r)}`;return e[o]}function jt(e){return e[0].toUpperCase()+e.slice(1)}var J=re.actions,Xt=ve({block:se("block"),dimension:se("dimension"),formatter:se("formatter"),report:se("report"),section:se("section"),variant:se("variant"),datasource:se("datasource")}),Oe=ve({block:ae("block"),dimension:ae("dimension"),formatter:ae("formatter"),report:ae("report"),section:ae("section"),variant:ae("variant"),datasource:ae("datasource")}),Jt=ve({block:ee("block"),dimension:ee("dimension"),formatter:ee("formatter"),report:ee("report"),section:ee("section"),variant:ee("variant"),datasource:ee("datasource")}),Zt=ve({block:ge("block"),dimension:ge("dimension"),formatter:ge("formatter"),report:ge("report"),section:ge("section"),variant:ge("variant"),datasource:ge("datasource")}),er=ve({block:Wt("block"),section:Wt("section")});function ve(e){return (t,r)=>{let o=e[t];if(!o)throw new Error(`Attempting to dispatch action for invalid entity type '${t}'`);return o(r)}}function Te(e,t){return (r,o)=>{let a=o().records.requests[e][t],s=!a||a.status==="UNINITIALIZED"?"LOADING":"FETCHING";r(J.setRequest({key:t,type:e,status:s}));}}function Se(e,t,r,o){return n=>{typeof window=="object"&&notifications.show({autoClose:3e3,color:"red",id:t,message:o,title:"Error"}),n(J.setRequest({key:t,type:e,status:"FAILURE",error:{code:r,message:o}}));}}function se(e){return t=>{let r=dt(e,t);return (o,n,a)=>(o(Te(e,r)),Ee(a,"create",e)(t).then(i=>(i.ok===true?o(J.setCreateRequest({key:r,operation:"create",status:"SUCCESS",type:e,data:i.data})):o(Se(e,r,i.status,i.error)),i)))}}function jo(e){return t=>{let r=dt(e,t[0]);return (o,n,a)=>(o(Te(e,r)),Ee(a,"createBulk",e)(t).then(i=>(i.ok===true?o(J.setCreateRequest({key:r,operation:"createBulk",status:"SUCCESS",type:e,data:i.data})):o(Se(e,r,i.status,i.error)),i)))}}function Yt(e,t,r){return r.replace(new RegExp(e,"g"),t)}function Yo(e){return e.section_id!==void 0}function Wo(e){return e.report_id!==void 0}function Wt(e){return t=>{let{create:r}=t;return (o,n,a)=>se(e)(r)(o,n,a).then(async i=>{if(i.ok){let{data:c}=i,{id:l}=c,{update:m}=t,u=or(e,{id:l});if(o(Te(e,`${u}`)),e==="block"&&Yo(r)){let f=produce(m,d=>{d.id=l;}),{contentByLocale:p}=f;p&&(f=produce(f,d=>{d.id=l,d.contentByLocale=Object.keys(p).reduce((N,h)=>{let x=p?p[h]:{};return N[h]={...x,id:l},N},{});}));let P=f.inputs?.map(d=>({type:d.type,id:d.id,inputAction:{operation:"create",input:{input_id:d.id,block_id:f.id}}}));return P&&P.length>0&&Qt(e)([f,...P])(o,n,a).then(()=>ae("section")({id:f.section_id,include:true})(o,n,a).then(d=>(d.ok&&o(J.setRequest({key:u,type:e,status:"SUCCESS",data:d.data})),d))),ee(e)(f)(o,n,a).then(d=>(d.ok&&o(J.setRequest({key:u,type:e,status:"SUCCESS",data:d.data})),d))}if(e==="section"&&Wo(r)){let{id:f}=c,p=produce(m,d=>{d.id=f;}),{blocks:A}=p,P=A?.map(d=>({type:d.type,blockcol:d.blockcol,blockrow:d.blockrow,section_id:f,locales:Object.keys(d.contentByLocale).map(N=>N)}));return P&&A&&await jo("block")(P)(o,n,a).then(d=>{if(d.ok){let N=d.data,h=[],x=N.map((z,O)=>{let k={...z},L=k.id,C=A[O];C.contentByLocale&&(k.contentByLocale=Object.keys(C.contentByLocale).reduce((y,R)=>{let S=C.contentByLocale[R];return y[R]={...S,content:{...S.content},id:k.id},y},{}));let{settings:B}=C,{contentByLocale:M,id:q}=k;k.settings=B;let H={id:q,contentByLocale:M,settings:B};return C.inputs.map(y=>y.id).reduce((y,R)=>{let S=A.findIndex(b=>b.id===R);return [...y,S]},[]).map(y=>({...N[y],originalBlock:A[y]})).forEach(y=>{let{id:R,type:S,originalBlock:b}=y;if([T.SELECTOR,T.VIZ].includes(S)){if(H.contentByLocale?.logic?.content?.api){let ie=H.contentByLocale?.logic.content.api;H.contentByLocale.logic.content.api=Yt(`(selector${b.id}id)`,`selector${R}id`,ie);}if(H.contentByLocale?.logic?.content?.logic){let ie=H.contentByLocale.logic.content.logic;H.contentByLocale.logic.content.logic=Yt(`(selector${b.id}id)`,`selector${R}id`,ie);}}h.push({id:R,inputAction:{operation:"create",input:{input_id:R,block_id:L}}});}),H});return Qt("block")([...x,...h])(o,n,a)}}),ee(e)(p)(o,n,a).then(d=>(d.ok&&o(J.setRequest({key:u,type:e,status:"SUCCESS",data:d.data})),d))}return ee(e)({...m,id:c.id})(o,n,a)}})}}function ae(e){return t=>{let r=tr(e,t);return (o,n,a)=>{o(Te(e,r));let s=Ee(a,"read",e);if(typeof s!="function"){let i=`Failed to get valid RPC method for entity "${e}"`;return o(Se(e,r,500,i)),Promise.reject(new Error(i))}return s(t).then(i=>(i.ok===true?o(J.setReadRequest({key:r,operation:"read",status:"SUCCESS",type:e,data:i.data})):o(Se(e,r,i.status,i.error)),i))}}}function ee(e){return t=>{let r=mt(e,t);return (o,n,a)=>(o(Te(e,r)),Ee(a,"update",e)(t).then(i=>(i.ok===true?o(J.setUpdateRequest({key:r,operation:"update",status:"SUCCESS",type:e,data:i.data})):o(Se(e,r,i.status,i.error)),i)))}}function Qt(e){return t=>{let r=mt(e,t[0]);return (o,n,a)=>(o(Te(e,r)),Ee(a,"updateBulk",e)(t).then(i=>(i.ok===true?o(J.setUpdateRequest({key:r,operation:"updateBulk",status:"SUCCESS",type:e,data:i.data})):o(Se(e,r,i.status,i.error)),i)))}}function ge(e){return t=>{let r=rr(e,t);return (o,n,a)=>(o(Te(e,r)),Ee(a,"delete",e)(t).then(i=>{i.ok===true?o(J.setDeleteRequest({key:r,operation:"delete",status:"SUCCESS",type:e,data:i.data})):o(Se(e,r,i.status,i.error));}))}}function dt(e,t){if(e==="variant"){let r=t;return `create(variant, [${r.dimension_id}, ${r.name}])`}return `create(${e}, [${Object.keys(t)}])`}function tr(e,t={}){let r=t.id==null?null:`'${t.id}'`;return `read(${e}, ${r}, ${!!t.include})`}function mt(e,t){let{id:r,...o}=t;return `update(${e}, ${r}, [${Object.keys(o)}])`}function rr(e,t){return `delete(${e}, ${t})`}function or(e,t){let r=t.id==null?null:`'${t.id}'`;return `clone(${e}, ${r})`}var{setStatus:nr,setPreviews:Qo,setSectionState:sr,resetSectionState:ar,setCurrentLocale:Xo,setPreferredLocale:Jo,addRunConsumersRunning:ir,removeRunConsumersRunning:cr}=xe;function Zo(e,t){return async(r,o,n)=>{let a=await n.validateVariantSlug({dimension:e,slug:t});if("error"in a)throw new Error(a.error);return a.data}}function en(e){return async(t,r,o)=>{let n=await o.searchReport(e);if("error"in n)throw new Error(n.error);return n.data}}function tn(){return async(e,t,r)=>{let o=await r.regenerateSearch(void 0);if("error"in o)throw new Error(o.error);return o.data}}function lr(e){return async(t,r,o)=>{let n=await o.readMember(e);if("error"in n)throw new Error(n.error);return n.data}}function rn(e){return async(t,r,o)=>{let n=await o.searchMember(e);if(n.ok===true)return n.data;throw new Error(n.error)}}async function ur(e,t,r,o){let n=r().status,a={...n,...o},s={...n.query,...o.query};Object.keys(s).forEach(c=>s[c]===void 0&&delete s[c]);let i={...a,query:s};t(nr(i)),n.activeSection&&t(pr(e,{query:s}));}function on(e,t){return async(r,o)=>ur(e,r,o,{query:{[t]:void 0}})}function nn(e,t,r){return async(o,n)=>ur(e,o,n,{query:{[t]:r}})}function pr(e,t){return async(r,o)=>{let n=o(),{currentLocale:a}=n.status,s=n.records.entities.block,i=e.formatterFunctions[a],c=e.datasourceFunctions,{parsedParams:l,statusPayload:m}=xt(n.status,t),{sid:u,bid:f,previews:p,query:A}=l;Object.keys(m).length&&r(xe.setStatus(m));let P={...Kt(p),locale:a,...Ie()},d={variables:P,query:A,locale:a};r(xe.addRunConsumersRunning([u]));let N=n.records.entities.section[u],h=async x=>r(lr(x));try{let x=await Ht(s,N&&[N],f,i,d,void 0,h,"section",c),{variables:z,status:O}=x;r(kt.setVariableChange({attributes:P,variables:z,status:O})),r(xe.removeRunConsumersRunning([u]));}catch(x){console.error("Error in runConsumers client side: recalculateVariables",x);}}}function sn(e){return async(t,r,o)=>{let n=await o.readMetadata(e);if("error"in n)throw new Error(n.error);return n.data}}function an(e){return async(t,r,o)=>{let n=await o.urlProxy(e);if("error"in n)throw new Error(n.error);return n.data}}function cn(){return async(e,t,r)=>{let o=await r.searchRole("");if("error"in o)throw new Error(o.error);return o.data}}function ln(e){return async(t,r,o)=>{let n=await o.searchUser(e);if("error"in n)throw new Error(n.error);return n.data}}function un(e){return async(t,r,o)=>{let n=await o.readUser({user_id:e});if("error"in n)throw new Error(n.error);return n.data}}function pn({user:e}){return async(t,r,o)=>{let n=await o.updateUser(e);if("error"in n)throw new Error(n.error);return n.data}}function dn(e){return async(t,r,o)=>{let n=await o.updateMyData(e);if("error"in n)throw new Error(n.error);return n.data}}function mn(e){let{removeBlocks:t}=re.actions;return async r=>{await r(t(e));}}function fn(e){let{addBlocks:t}=re.actions;return async r=>{await r(t(e));}}function yn(e){return async(t,r,o)=>{let n=await o.readPrivateBlocks({...e,roles:[]});if("error"in n)throw new Error(n.error);return n.data}}function Rn(e){return async(t,r,o)=>{let n=await o.revalidateUrl({target:e.target});if("error"in n)throw new Error(n.error);return n.data}}function En(e){return async(t,r,o)=>{let n=await o.revalidateReport({reportId:e.reportId,profilePrefix:e.profilePrefix});if("error"in n)throw new Error(n.error);return n.data}}function gn(){return async(e,t,r)=>{let o=await r.readEnvSecrets({});if("error"in o)throw new Error(o.error);return o.data}}function Sn(){let{removeDataSourceLogic:e}=re.actions;return async t=>{await t(e());}}var {locales:bn}=Z(),An={pathSegment:"path",formatterFunctions:bn.reduce((e,t)=>({...e,[t]:{}}),{}),datasourceFunctions:[],profilePrefix:"path",siteProps:{}};createContext(An);Z();var Xe=useDispatch,Ne=useSelector;var Tr=e=>r=>{let{store:o,props:n}=ze.useWrappedStore(r);return jsx(Provider,{store:o,children:jsx(e,{...n})})};export{We as actions,ze as storeWrapper,Xe as useBespokeDispatch,Ne as useBespokeSelector,Tr as withBespokeStore};
5
+ `)}));}let x=await Promise.all(L).catch(B=>B.message);if(typeof x=="string"&&x)return {outputVariables:{},renderVariables:{},status:{error:x}};l=x.length===1?x[0].data:x.map(B=>B.data),m=x.reduce((B,N)=>B+JSON.stringify(N.data).length/1024,0),u=Math.max(...x.map(B=>B.requestDuration)),b=x.map(B=>B.apiDataSource?`${B.apiDataSource.name} (${B.apiDataSource.id})`:null),P=x.map(B=>B.finalUrl);}if(e.type===T.SELECTOR){let{config:k,log:L,error:x}=it(e.id,e.contentByLocale[a].content.logic,t,r,true);return {outputVariables:Nt(e.id,i,k),renderVariables:k,status:{log:L,error:x,allowed:c}}}if(e.type===T.MULTIHIERARCHY_SELECTOR){let{config:k,log:L,error:x}=lt(e.id,e.contentByLocale[a].content.logic,t,r,true);return {outputVariables:wt(e.id,i,k),renderVariables:k,status:{log:L,error:x,allowed:c}}}if(e.type===T.VIZ)return {outputVariables:{},renderVariables:e.contentByLocale.logic.content,status:{log:[],allowed:c}};if(e.type===T.RELATED){let k=e.contentByLocale?.logic?.content?.simple?.compare||"variant",L=e.contentByLocale?.logic?.content?.simple?.limit||4,x=Object.keys(s).filter(E=>E.startsWith("report_id")).map(E=>s[E]),B=Object.keys(s).filter(E=>E.startsWith("dimension_id")).map(E=>s[E]),N=Object.keys(s).filter(E=>E.startsWith("variant_id")).map(E=>s[E]),q=Object.keys(s).filter(E=>E.startsWith("id")).map(E=>s[E]);if(!q.length)return {outputVariables:{related_reports:[]},renderVariables:{},status:{log:[],allowed:false}};let H=await Promise.all(q.map((E,S)=>o({mode:"ids",locale:a,ids:[E],output:"lite",variant:[N[S]]}))).then(E=>E.flatMap(S=>{let A=[];return Ye(S)?S.ok&&(A=S.data.results):A=S.results,A&&Array.isArray(A)?A:[]})).catch(E=>(console.error("Error getting related members",E),[]));if(B.length>1){let E=Object.keys(s).filter(O=>O.startsWith("variant_slug")).map(O=>s[O]),S=H.map((O,V)=>{let D={mode:"related",locale:a,related:L??4,current_ids:[O.content_id],output:"full",variant_ids:[O.variant_id]};return V===0&&(D.include_ids=[O.content_id]),D}),A=await Promise.all(S.map(O=>o(O))).then(O=>O.flatMap(V=>{let D=[];return Ye(V)?V.ok&&(D=V.data.results):D=V.results,D&&Array.isArray(D)?D:[]})).catch(O=>(console.error("Error getting related members",O),[])),ie=A.reduce((O,V)=>{let D=V.variant_slug;return O[D]||(O[D]=[]),O[D].push(V),O},{}),Ne=[],G=Object.keys(ie),te=[{combination:[],index:0}];for(;te.length>0;){let O=te.pop();if(!O)continue;let{combination:V,index:D}=O;if(D===G.length){Ne.push(V);continue}let ce=G[D],j=ie[ce];for(let Y of j)te.push({combination:[...V,Y],index:D+1});}return {outputVariables:{related_reports:Ne.map(O=>{let V=O.sort((D,ce)=>E.indexOf(D.variant_slug)-E.indexOf(ce.variant_slug));return {entities:V,link:"/"+V.map(D=>`${D.variant_slug}/${D.slug}`).join("/")}})},renderVariables:{},status:{log:[],allowed:A.length>0}}}let _=H.map(E=>E.content_id),w={mode:"related",locale:a,related:L??4,current_ids:_,output:"full"};k&&(k==="report"?w.report_ids=x:k==="dimension"?w.dimension_ids=B:w.variant_ids=N);let K=await o(w).then(E=>{let S=[];return Ye(E)?E.ok&&(S=E.data.results):S=E.results,S&&Array.isArray(S)?S:[]}).catch(E=>(console.error("Error getting related members",E),[]));return {outputVariables:{related_reports:K.map(E=>({entities:[E],link:`/${E.variant_slug}/${E.slug}`}))},renderVariables:{},status:{log:[],allowed:K.length>0}}}let{logic:f}=Dt(e,a),M=ge(f,t,r),h=Re("resp",l||{},M,t,s,r),{vars:C,error:z,log:v}=h;if(typeof C!="object")return {outputVariables:{},renderVariables:{},status:{error:"Configuration did not return an object",log:v,duration:u,responseSize:m,resp:l,api:d,allowed:c,apiFinalUrls:P,apiDataSources:b}};let Q=Object.keys(C).reduce((k,L)=>({...k,[`${e.type}${e.id}${L}`]:C[L]}),{});return {renderVariables:C,outputVariables:[T.GENERATOR,T.SECTION_FLAG].includes(e.type)?C:Q,status:{log:v,error:z,duration:u,responseSize:m,resp:l,api:d,allowed:c,apiFinalUrls:P,apiDataSources:b}}}function Yo(e,t,r,o,n,a,s){return e.consumers.forEach(i=>{if(t[i]){let c=`${r}-${i}`;!o.includes(c)&&(t[i].section_id===t[r].section_id||!n)&&o.push(c),e.consumers.filter(l=>t[l]&&t[l].section_id===t[r].section_id||!n).forEach(l=>pt(l,t,o,false,a,n,s));}})}var pt=(e,t,r=[],o=true,n=true,a=true,s=[])=>{if(s.includes(e))return [];s.push(e);let i=t[e];return i&&i.inputs.length&&o&&i.inputs.forEach(c=>{let l=`${c}-${e}`;r.includes(l)||r.push(l),i.inputs.forEach(p=>pt(p,t,r,o,false,a,s));}),i&&i.consumers.length&&n&&Yo(i,t,e,r,a,n,s),r},Wo=(e,t,r,o)=>{let n=true;if(e&&"allowed"in e.settings&&e.settings.allowed!=="always")if(e.settings.allowed==="never")n=false;else {let a=W(t),{error:s,output:i}=Re("variables",r,e.settings.allowedLogic||"return false;",o,void 0,a);s||(n=!!i);}return n},jt=async(e,t,r,o,n,a={},s,i="section",c)=>{let l=i==="section",p=W(n),u=p.variables,m={...a.variables??{}},d={...a.status??{}},b=new Set,P=[],f={};r?f={...f,[r]:e[r]}:t?f=(t??[]).reduce((_,{id:w})=>({..._,...Ft(w,e)}),{}):f=Object.values(e).filter(_=>ut(_)).reduce((_,w)=>({..._,[w.id]:w}),{});let M=Object.values(f).filter(_=>ut(_));if(M.length>0){ne&&console.info("%crunConsumers: calculating section flags","color:purple",M.map(y=>y.id).join(", "));let _=Object.fromEntries(await Promise.all(M.map(async y=>[y.id,await Ht(y,o,{...p,variables:u,locale:u.locale},s,c).then(E=>{let{outputVariables:S,status:A}=E;if(A.error){if(typeof window>"u")throw new Error(`Run consumers (Block: ${y.id}, Section ${y.section_id}) failed with message: ${A.error}. `);d[y.id]={allowed:false,error:A.error},m[y.id]={};}return (y.consumers.length>0||[T.GENERATOR,T.SECTION_FLAG,T.RELATED].includes(y.type))&&A.allowed&&Object.keys(S).length>0?m[y.id]=S:m[y.id]={},i==="report"?(d[y.id]={allowed:A.allowed},[T.GENERATOR,T.SECTION_FLAG].includes(y.type)&&A.api&&(d[y.id].api=A.api)):d[y.id]=A,E})]))),K=Object.entries(_).filter(([,y])=>!y.outputVariables[$t]).map(([y])=>Number(y));b=new Set(K.map(y=>e[y].section_id)),Object.values(f).filter(y=>b.has(y.section_id)).forEach(y=>{P.push(y.id),delete f[y.id];}),ne&&console.info("%crunConsumers: removing sections","color:purple",b.keys());}let h=b.size>0?Object.fromEntries(Object.entries(e).filter(([,_])=>b?.has(_.section_id)?(P.includes(_.id)||P.push(_.id),false):true)):e;if(P.length>0&&(h=Object.fromEntries(Object.entries(h).map(([_,w])=>{let K={...w,inputs:w.inputs.filter(y=>!P.includes(y)),consumers:w.consumers.filter(y=>!P.includes(y))};return [_,K]}))),!r&&!t)return {variables:{...a.variables??{},...m},status:{...a.status??{},...d}};i==="report"&&P.length>0&&P.forEach(_=>{delete m[_],delete d[_],delete e[_];}),ne&&console.info("%crunConsumers: running root blocks","color:purple",Object.keys(f));let C=Object.keys(f).reduce((_,w)=>{let K=new Date,y=pt(Number(w),h,[],!r,true,l).map(A=>A.split("-")),S=(new Date().getTime()-K.getTime())/1e3;return ne&&console.info(`%cResolved dependencies for ${w} (${S.toFixed(2)}s)`,"color:blue"),[..._,...y]},[]),z=new Date,v=Object.keys(f).reduce((_,w)=>_.includes(w)?[..._]:[w,..._],Do(C)),k=(new Date().getTime()-z.getTime())/1e3;ne&&console.info(`%cResolved DAG (${k.toFixed(2)}s): `,"color:green",v);let L=process.env.NEXT_PUBLIC_REPORTS_MAX_CONCURRENT_QUERIES_PER_REPORT,x=parseInt(`${L||0}`,10);async function B(_,w){let K=new Map,y=[],E=async()=>y.length;for(let S of _){if(x!==0){let G=await E();for(;G>=x;)ne&&console.info("Too many pending promises, waiting...",G,y),await new Promise(te=>setTimeout(te,500)),G=await E();}let A=w[S],Ne=Promise.all(A.inputs.filter(G=>_.includes(String(G))).map(G=>K.get(Number(G)))).then(async()=>{let G=A.inputs.reduce((j,Y)=>({...j,...m[Y]}),u),te=A.inputs.find(j=>(A.settings?.ignoreCascade?A.settings?.ignoreCascade:[]).includes(j)||!d[j]?false:!d[j].allowed||d[j].hiddenByCascade);if(te){d[S]={allowed:false,hiddenByCascade:d[te].hiddenByCascade||te},m[S]={},y.splice(y.indexOf(Number(S)),1);return}let Rt=new Date,O;typeof window<"u"&&[T.SELECTOR,T.MULTIHIERARCHY_SELECTOR].includes(A.type)&&A.settings[Ot.DISABLED]?O=new Promise(j=>{j({outputVariables:m[S],status:d[S]});}):O=Ht(A,o,{...p,variables:G,locale:G.locale},s,c);let V=await O.then(({outputVariables:j,status:Y})=>{if(Y.error){if(typeof window>"u")throw new Error(`Run consumers (Block: ${S}, Section ${A.section_id}) failed with message: ${Y.error}.`);d[S]={allowed:false,error:Y.error},m[S]={};}(A.consumers.length>0||[T.GENERATOR,T.SECTION_FLAG,T.RELATED].includes(A.type))&&Y.allowed&&Object.keys(j).length>0?m[S]=j:m[S]={},i==="report"?(d[S]={allowed:Y.allowed},[T.GENERATOR,T.SECTION_FLAG].includes(A.type)&&Y.api&&(d[S].api=Y.api)):d[S]=Y;}),ce=(new Date().getTime()-Rt.getTime())/1e3;return ne&&console.info(`%cBlock ${A.id} resolved in ${ce.toFixed(3)}s`,ce>500?"color:red":"color:green"),d[S].duration=d[S].duration?d[S].duration:ce,y.splice(y.indexOf(Number(S)),1),V}).catch(G=>{throw y.splice(y.indexOf(Number(S)),1),G});y.push(Number(S)),K.set(Number(S),Ne);}await Promise.all(Array.from(K.values()));}let N=new Date;await B(v,h);let H=(new Date().getTime()-N.getTime())/1e3;return ne&&console.info(`%cResolved Variables (${H.toFixed(2)}s), ${v.length} blocks`,"color:green"),{variables:{...a.variables??{},...m},status:{...a.status??{},...d}}};function Qo(e=[]){return e.reduce((t,r,o)=>{if(r){let n=o+1;t[`id${n}`]=r.id,t[`name${n}`]=r.name,t[`slug${n}`]=r.slug,"attributes"in r&&Object.keys(r.attributes).forEach(a=>{t[`attr_${a}${n}`]=r.attributes[a];}),t[`variant_id${n}`]=r.variant_id,t[`variant_name${n}`]=r.variant_name,t[`variant_slug${n}`]=r.variant_slug,t[`dimension_id${n}`]=r.dimension_id,t[`dimension_name${n}`]=r.dimension_name,t.report_id=r.report_id,t.report_name=r.report_name;}return t},{})}var Yt=Qo;function Ee(e,t,r){if(t==="createBulk"||t==="updateBulk"){let n=`${t}${Wt(r)}`;return e[n]}let o=`${t}${Wt(r)}`;return e[o]}function Wt(e){return e[0].toUpperCase()+e.slice(1)}var X=re.actions,Jt=Oe({block:se("block"),dimension:se("dimension"),formatter:se("formatter"),report:se("report"),section:se("section"),variant:se("variant"),datasource:se("datasource")}),ve=Oe({block:ae("block"),dimension:ae("dimension"),formatter:ae("formatter"),report:ae("report"),section:ae("section"),variant:ae("variant"),datasource:ae("datasource")}),er=Oe({block:ee("block"),dimension:ee("dimension"),formatter:ee("formatter"),report:ee("report"),section:ee("section"),variant:ee("variant"),datasource:ee("datasource")}),tr=Oe({block:Se("block"),dimension:Se("dimension"),formatter:Se("formatter"),report:Se("report"),section:Se("section"),variant:Se("variant"),datasource:Se("datasource")}),rr=Oe({block:Zt("block"),section:Zt("section")});function Oe(e){return (t,r)=>{let o=e[t];if(!o)throw new Error(`Attempting to dispatch action for invalid entity type '${t}'`);return o(r)}}function be(e,t){return (r,o)=>{let a=o().records.requests[e][t],s=!a||a.status==="UNINITIALIZED"?"LOADING":"FETCHING";r(X.setRequest({key:t,type:e,status:s}));}}function Te(e,t,r,o){return n=>{typeof window=="object"&&notifications.show({autoClose:3e3,color:"red",id:t,message:o,title:"Error"}),n(X.setRequest({key:t,type:e,status:"FAILURE",error:{code:r,message:o}}));}}function se(e){return t=>{let r=ft(e,t);return (o,n,a)=>(o(be(e,r)),Ee(a,"create",e)(t).then(i=>(i.ok===true?o(X.setCreateRequest({key:r,operation:"create",status:"SUCCESS",type:e,data:i.data})):o(Te(e,r,i.status,i.error)),i)))}}function Jo(e){return t=>{let r=ft(e,t[0]);return (o,n,a)=>(o(be(e,r)),Ee(a,"createBulk",e)(t).then(i=>(i.ok===true?o(X.setCreateRequest({key:r,operation:"createBulk",status:"SUCCESS",type:e,data:i.data})):o(Te(e,r,i.status,i.error)),i)))}}function Qt(e,t,r){return r.replace(new RegExp(e,"g"),t)}function en(e){return e.section_id!==void 0}function tn(e){return e.report_id!==void 0}function Zt(e){return t=>{let{create:r}=t;return (o,n,a)=>se(e)(r)(o,n,a).then(async i=>{if(i.ok){let{data:c}=i,{id:l}=c,{update:p}=t,u=sr(e,{id:l});if(o(be(e,`${u}`)),e==="block"&&en(r)){let m=produce(p,f=>{f.id=l;}),{contentByLocale:d}=m;d&&(m=produce(m,f=>{f.id=l,f.contentByLocale=Object.keys(d).reduce((M,h)=>{let C=d?d[h]:{};return M[h]={...C,id:l},M},{});}));let P=m.inputs?.map(f=>({type:f.type,id:f.id,inputAction:{operation:"create",input:{input_id:f.id,block_id:m.id}}}));return P&&P.length>0&&Xt(e)([m,...P])(o,n,a).then(()=>ae("section")({id:m.section_id,include:true})(o,n,a).then(f=>(f.ok&&o(X.setRequest({key:u,type:e,status:"SUCCESS",data:f.data})),f))),ee(e)(m)(o,n,a).then(f=>(f.ok&&o(X.setRequest({key:u,type:e,status:"SUCCESS",data:f.data})),f))}if(e==="section"&&tn(r)){let{id:m}=c,d=produce(p,f=>{f.id=m;}),{blocks:b}=d,P=b?.map(f=>({type:f.type,blockcol:f.blockcol,blockrow:f.blockrow,section_id:m,locales:Object.keys(f.contentByLocale).map(M=>M)}));return P&&b&&await Jo("block")(P)(o,n,a).then(f=>{if(f.ok){let M=f.data,h=[],C=M.map((z,v)=>{let k={...z},L=k.id,x=b[v];x.contentByLocale&&(k.contentByLocale=Object.keys(x.contentByLocale).reduce((y,E)=>{let S=x.contentByLocale[E];return y[E]={...S,content:{...S.content},id:k.id},y},{}));let{settings:B}=x,{contentByLocale:N,id:q}=k;k.settings=B;let H={id:q,contentByLocale:N,settings:B};return x.inputs.map(y=>y.id).reduce((y,E)=>{let S=b.findIndex(A=>A.id===E);return [...y,S]},[]).map(y=>({...M[y],originalBlock:b[y]})).forEach(y=>{let{id:E,type:S,originalBlock:A}=y;if([T.SELECTOR,T.VIZ].includes(S)){if(H.contentByLocale?.logic?.content?.api){let ie=H.contentByLocale?.logic.content.api;H.contentByLocale.logic.content.api=Qt(`(selector${A.id}id)`,`selector${E}id`,ie);}if(H.contentByLocale?.logic?.content?.logic){let ie=H.contentByLocale.logic.content.logic;H.contentByLocale.logic.content.logic=Qt(`(selector${A.id}id)`,`selector${E}id`,ie);}}h.push({id:E,inputAction:{operation:"create",input:{input_id:E,block_id:L}}});}),H});return Xt("block")([...C,...h])(o,n,a)}}),ee(e)(d)(o,n,a).then(f=>(f.ok&&o(X.setRequest({key:u,type:e,status:"SUCCESS",data:f.data})),f))}return ee(e)({...p,id:c.id})(o,n,a)}})}}function ae(e){return t=>{let r=or(e,t);return (o,n,a)=>{o(be(e,r));let s=Ee(a,"read",e);if(typeof s!="function"){let i=`Failed to get valid RPC method for entity "${e}"`;return o(Te(e,r,500,i)),Promise.reject(new Error(i))}return s(t).then(i=>(i.ok===true?o(X.setReadRequest({key:r,operation:"read",status:"SUCCESS",type:e,data:i.data})):o(Te(e,r,i.status,i.error)),i))}}}function ee(e){return t=>{let r=yt(e,t);return (o,n,a)=>(o(be(e,r)),Ee(a,"update",e)(t).then(i=>(i.ok===true?o(X.setUpdateRequest({key:r,operation:"update",status:"SUCCESS",type:e,data:i.data})):o(Te(e,r,i.status,i.error)),i)))}}function Xt(e){return t=>{let r=yt(e,t[0]);return (o,n,a)=>(o(be(e,r)),Ee(a,"updateBulk",e)(t).then(i=>(i.ok===true?o(X.setUpdateRequest({key:r,operation:"updateBulk",status:"SUCCESS",type:e,data:i.data})):o(Te(e,r,i.status,i.error)),i)))}}function Se(e){return t=>{let r=nr(e,t);return (o,n,a)=>(o(be(e,r)),Ee(a,"delete",e)(t).then(i=>{i.ok===true?o(X.setDeleteRequest({key:r,operation:"delete",status:"SUCCESS",type:e,data:i.data})):o(Te(e,r,i.status,i.error));}))}}function ft(e,t){if(e==="variant"){let r=t;return `create(variant, [${r.dimension_id}, ${r.name}])`}return `create(${e}, [${Object.keys(t)}])`}function or(e,t={}){let r=t.id==null?null:`'${t.id}'`;return `read(${e}, ${r}, ${!!t.include})`}function yt(e,t){let{id:r,...o}=t;return `update(${e}, ${r}, [${Object.keys(o)}])`}function nr(e,t){return `delete(${e}, ${t})`}function sr(e,t){let r=t.id==null?null:`'${t.id}'`;return `clone(${e}, ${r})`}var{setStatus:ar,setPreviews:rn,setSectionState:ir,resetSectionState:cr,setCurrentLocale:on,setPreferredLocale:nn,addRunConsumersRunning:lr,removeRunConsumersRunning:ur}=ke;function sn(e,t){return async(r,o,n)=>{let a=await n.validateVariantSlug({dimension:e,slug:t});if("error"in a)throw new Error(a.error);return a.data}}function an(e){return async(t,r,o)=>{let n=await o.searchReport(e);if("error"in n)throw new Error(n.error);return n.data}}function cn(){return async(e,t,r)=>{let o=await r.regenerateSearch(void 0);if("error"in o)throw new Error(o.error);return o.data}}function pr(e){return async(t,r,o)=>{let n=await o.readMember(e);if("error"in n)throw new Error(n.error);return n.data}}function ln(e){return async(t,r,o)=>{let n=await o.searchMember(e);if(n.ok===true)return n.data;throw new Error(n.error)}}async function dr(e,t,r,o){let n=r().status,a={...n,...o},s={...n.query,...o.query};Object.keys(s).forEach(c=>s[c]===void 0&&delete s[c]);let i={...a,query:s};t(ar(i)),n.activeSection&&t(mr(e,{query:s}));}function un(e,t){return async(r,o)=>dr(e,r,o,{query:{[t]:void 0}})}function pn(e,t,r){return async(o,n)=>dr(e,o,n,{query:{[t]:r}})}function mr(e,t){return async(r,o)=>{let n=o(),{currentLocale:a}=n.status,s=n.records.entities.block,i=e.formatterFunctions[a],c=e.datasourceFunctions,{parsedParams:l,statusPayload:p}=Lt(n.status,t),{sid:u,bid:m,previews:d,query:b}=l;Object.keys(p).length&&r(ke.setStatus(p));let P={...Yt(d),locale:a,...Ie()},f={variables:P,query:b,locale:a};r(ke.addRunConsumersRunning([u]));let M=n.records.entities.section[u],h=async C=>r(pr(C));try{let C=await jt(s,M&&[M],m,i,f,void 0,h,"section",c),{variables:z,status:v}=C;r(_t.setVariableChange({attributes:P,variables:z,status:v})),r(ke.removeRunConsumersRunning([u]));}catch(C){console.error("Error in runConsumers client side: recalculateVariables",C);}}}function dn(e){return async(t,r,o)=>{let n=await o.readMetadata(e);if("error"in n)throw new Error(n.error);return n.data}}function mn(e){return async(t,r,o)=>{let n=await o.urlProxy(e);if("error"in n)throw new Error(n.error);return n.data}}function fn(){return async(e,t,r)=>{let o=await r.searchRole("");if("error"in o)throw new Error(o.error);return o.data}}function yn(e){return async(t,r,o)=>{let n=await o.searchUser(e);if("error"in n)throw new Error(n.error);return n.data}}function Rn(e){return async(t,r,o)=>{let n=await o.readUser({user_id:e});if("error"in n)throw new Error(n.error);return n.data}}function gn({user:e}){return async(t,r,o)=>{let n=await o.updateUser(e);if("error"in n)throw new Error(n.error);return n.data}}function En(e){return async(t,r,o)=>{let n=await o.updateMyData(e);if("error"in n)throw new Error(n.error);return n.data}}function Sn(e){let{removeBlocks:t}=re.actions;return async r=>{await r(t(e));}}function Tn(e){let{addBlocks:t}=re.actions;return async r=>{await r(t(e));}}function bn(e){return async(t,r,o)=>{let n=await o.readPrivateBlocks({...e,roles:[]});if("error"in n)throw new Error(n.error);return n.data}}function An(e){return async(t,r,o)=>{let n=await o.revalidateUrl({target:e.target});if("error"in n)throw new Error(n.error);return n.data}}function hn(e){return async(t,r,o)=>{let n=await o.revalidateReport({reportId:e.reportId,profilePrefix:e.profilePrefix});if("error"in n)throw new Error(n.error);return n.data}}function xn(){return async(e,t,r)=>{let o=await r.readEnvSecrets({});if("error"in o)throw new Error(o.error);return o.data}}function Cn(){let{removeDataSourceLogic:e}=re.actions;return async t=>{await t(e());}}var {locales:Ln}=J(),_n={pathSegment:"path",formatterFunctions:Ln.reduce((e,t)=>({...e,[t]:{}}),{}),datasourceFunctions:[],profilePrefix:"path",previewPrefix:null,siteProps:{}};createContext(_n);J();var Xe=useDispatch,Me=useSelector;var Ar=e=>r=>{let{store:o,props:n}=Ge.useWrappedStore(r);return jsx(Provider,{store:o,children:jsx(e,{...n})})};export{Qe as actions,Ge as storeWrapper,Xe as useBespokeDispatch,Me as useBespokeSelector,Ar as withBespokeStore};
package/dist/report.css CHANGED
@@ -1 +1 @@
1
- .mantine-Prism-root.cr-variable{font-size:11px;padding:0}.mantine-Prism-root.cr-variable .mantine-Prism-code{background-color:transparent!important;padding:0}.cr-variable-accordion .mantine-Accordion-item{border-bottom:0}.cr-variable-accordion .mantine-Accordion-control{padding:2px}.cr-variable-accordion .mantine-Accordion-contentInner{padding:0}.cr-variable-accordion .mantine-Accordion-icon{margin-right:4px}
1
+ .vt{position:"absolute";top:"50%";z-index:10;opacity:.55}.vt:hover{opacity:1}.vt[data-direction=left]{left:16px}.vt[data-direction=right]{right:16px}.Ht{table-layout:fixed}.It{min-height:100px;max-height:350px;overflow-x:"auto";background:red}.Jt{padding:5px!important;text-wrap:wrap}.qt{display:block}@media(min-width:1000px){.qt{display:none}}.At{display:none}@media(min-width:1000px){.At{display:block}}.Bt.Ct{font-size:11px;padding:0}.Bt.Ct .Kt{background-color:transparent!important;padding:0}.kt .Lt{border-bottom:0}.kt .Mt{padding:2px}.kt .Nt{padding:0}.kt .Ot{margin-right:4px}.zt{display:flex;gap:1rem;align-items:center;list-style-type:none}.zt[data-align=left]{justify-content:flex-start}.zt[data-align=center]{justify-content:center}.zt[data-align=right]{justify-content:flex-end}.jt{display:flex}.jt[data-align=left]{justify-content:flex-start}.jt[data-align=center]{justify-content:center}.jt[data-align=right]{justify-content:flex-end}.jt li{margin-right:1rem}.Dt{display:flex}.Dt .chart{flex:1 1 100%}.Pt{border-radius:4px;transform:translate(-50%);z-index:20}.Et{flex-direction:column}@media(min-width:62em){.Et{flex-direction:row}}.Ft{max-width:100%;min-width:unset}@media(min-width:62em){.Ft{max-width:var(--column-max-width);min-width:300px}}.Gt{position:relative}.Gt:before{content:"";position:absolute;top:.25rem;bottom:.25rem;left:calc(.875rem + var(--level) * 1.5rem);width:.0625rem;background-color:#dee2e6;z-index:0}
@@ -0,0 +1,132 @@
1
+ import * as react_jsx_runtime from 'react/jsx-runtime';
2
+ import { E as ExploreTranslations, a as ReportItemProps, R as ReportTileProps } from './Search-C-9ALKJo.mjs';
3
+ import './auth-D3PWImeZ.mjs';
4
+ import { MRT_Localization } from 'mantine-react-table';
5
+ import { ReactNode } from 'react';
6
+ import { ModalProps, AutocompleteProps } from '@mantine/core';
7
+ export { u as SearchReportItem } from './types-WI9fSG9b.mjs';
8
+ import 'next-auth';
9
+ import 'next-auth/react';
10
+ import 'sequelize';
11
+
12
+ type TranslationKeys$3 = "data_source" | "no_data_src" | "viz_source" | "error_generating" | "choose_data_src" | "original_src" | "loading" | "error_preview" | "open_in_window" | "formatted_src" | "formatted_group" | "raw_group" | "rows_preview" | "choose_format" | "processing_file" | "download" | "preview" | "copy" | "copied";
13
+ type DataTabTranslations = Record<TranslationKeys$3, string>;
14
+
15
+ type TranslationKeys$2 = "wrong_node" | "choose_area" | "choose_viz" | "choose_format" | "transparent_bg" | "processing" | "download" | "entire_section" | "source" | "viz_only";
16
+ type ImageTabTranslations = Record<TranslationKeys$2, string>;
17
+
18
+ type TranslationKeys$1 = "title" | "include_section";
19
+ type ShareTabTraslations = Record<TranslationKeys$1, string>;
20
+
21
+ interface OptionsModalTranslations {
22
+ download_title: string;
23
+ image_title: string;
24
+ share_title: string;
25
+ download_tab?: Partial<DataTabTranslations>;
26
+ image_tab?: Partial<ImageTabTranslations>;
27
+ share_tab?: Partial<ShareTabTraslations>;
28
+ }
29
+
30
+ type TranslationKeys = "image_by";
31
+ type SectionTranslations = Record<TranslationKeys, string>;
32
+
33
+ type OutlineNode = {
34
+ id: number;
35
+ order: number;
36
+ label: string;
37
+ iconProps: {
38
+ iconType: string;
39
+ icon: string;
40
+ iconSize: string;
41
+ iconVariant: string;
42
+ iconRadius: string;
43
+ };
44
+ properties: {
45
+ sectionId?: number;
46
+ titleType?: "primary" | "secondary";
47
+ [key: string]: any;
48
+ };
49
+ children: OutlineNode[];
50
+ };
51
+
52
+ interface DownloadOptionsTranslations {
53
+ export: string;
54
+ pdf: {
55
+ label: string;
56
+ desc: string;
57
+ cancel: string;
58
+ export: string;
59
+ generating: string;
60
+ selectAll: string;
61
+ deselectAll: string;
62
+ selectSectionsDescription: string;
63
+ sectionsSelected: string;
64
+ };
65
+ xlsx: {
66
+ label: string;
67
+ desc: string;
68
+ };
69
+ }
70
+ interface PdfSectionSelectorPanelProps {
71
+ translations: DownloadOptionsTranslations;
72
+ content: OutlineNode[];
73
+ selection: {
74
+ topLevelState: {
75
+ isChecked: boolean;
76
+ isIndeterminate: boolean;
77
+ };
78
+ getSelectionState: (node: OutlineNode) => {
79
+ isChecked: boolean;
80
+ isIndeterminate: boolean;
81
+ };
82
+ selectedSections: Set<number>;
83
+ };
84
+ download: {
85
+ isDownloading: boolean;
86
+ handleDownload: () => void;
87
+ };
88
+ callbacks: {
89
+ handleToggleSection: (id: number, isSelected: boolean) => void;
90
+ handleTopLevelToggle: (checked: boolean) => void;
91
+ handleSelectAll: () => void;
92
+ handleDeselectAll: () => void;
93
+ };
94
+ }
95
+
96
+ interface ReportTranslations {
97
+ "options"?: Partial<OptionsModalTranslations>;
98
+ "explore"?: Partial<ExploreTranslations>;
99
+ "sections"?: Partial<SectionTranslations>;
100
+ "export"?: Partial<DownloadOptionsTranslations>;
101
+ "table"?: Partial<MRT_Localization>;
102
+ }
103
+
104
+ interface BespokeComponentsType {
105
+ SearchResultItem?: React.ComponentType<ReportItemProps>;
106
+ ExploreCard?: React.FC<ReportTileProps>;
107
+ FallbackComponent?: React.FC<{
108
+ block: any;
109
+ }>;
110
+ PdfSectionPanel?: (state: PdfSectionSelectorPanelProps) => React.ReactElement;
111
+ SearchModalProps?: Partial<ModalProps>;
112
+ SearchFieldProps?: Partial<AutocompleteProps>;
113
+ }
114
+
115
+ interface BespokeRendererProps {
116
+ className?: string;
117
+ pathSegmentsKey: string;
118
+ translations: ReportTranslations;
119
+ buildTime: string;
120
+ components?: Partial<BespokeComponentsType>;
121
+ profilePrefix: string;
122
+ siteProps: Record<string, any>;
123
+ loader?: ReactNode;
124
+ sectionLoader?: ReactNode;
125
+ mode?: "embed";
126
+ }
127
+ /**
128
+ * React component for rendering a report
129
+ */
130
+ declare function BespokeRenderer({ className, pathSegmentsKey, translations, components, buildTime, siteProps, profilePrefix, loader, sectionLoader, mode, }: BespokeRendererProps): react_jsx_runtime.JSX.Element;
131
+
132
+ export { type BespokeComponentsType, BespokeRenderer, type BespokeRendererProps, type ReportTranslations as BespokeReportTranslations, type PdfSectionSelectorPanelProps, ReportItemProps, ReportTileProps };