{"version":3,"file":"types-DhvOgfXa.cjs","sources":["../../sdk-data/dist/dimensional-model/jaql-element.js","../src/analytics-composer/types.ts"],"sourcesContent":["import { createAttributeHelper, createCalculatedMeasureHelper, createMeasureHelper, getGranularityFromJaql, getSortType, } from '../utils.js';\r\nimport { DimensionalElement } from './base.js';\r\nimport { MetadataTypes, } from './types.js';\r\n/**\r\n * This implementation wraps metadata for a JAQL query. The metadata could be\r\n * for a dimension, measure, or filter. We do little to no interpretation of\r\n * the JAQL as it is designed to be \"passed through\" to the query execution\r\n * step.\r\n *\r\n * This will typically be used for JAQL metadata that is coming from a Sisense\r\n * instance and is assumed to be correct (e.g. dashboard widget, NLQ\r\n * suggestion).\r\n *\r\n * @param item - the metadata item in a JAQL query\r\n * @param type - the data type of the dimension\r\n * @internal\r\n */\r\nexport class JaqlElement extends DimensionalElement {\r\n    constructor(item, type) {\r\n        var _a;\r\n        super((_a = item.jaql.title) !== null && _a !== void 0 ? _a : '', type);\r\n        /**\r\n         * @internal\r\n         */\r\n        this.__serializable = 'JaqlElement';\r\n        this.expression = (item.jaql.dim || item.jaql.formula);\r\n        this.metadataItem = item;\r\n        if (item.jaql.agg) {\r\n            this.aggregation = item.jaql.agg;\r\n        }\r\n        else {\r\n            delete this.aggregation;\r\n        }\r\n        if (item.jaql.formula) {\r\n            this.formula = item.jaql.formula;\r\n        }\r\n        else {\r\n            delete this.formula;\r\n        }\r\n        if (item.jaql.sort) {\r\n            this.sortType = getSortType(item.jaql.sort);\r\n        }\r\n        else {\r\n            delete this.sortType;\r\n        }\r\n        this.skipValidation = true;\r\n    }\r\n    get id() {\r\n        return this.expression;\r\n    }\r\n    jaql(nested) {\r\n        return nested === true ? this.metadataItem.jaql : this.metadataItem;\r\n    }\r\n    /**\r\n     * Gets a serializable representation of the element\r\n     */\r\n    serialize() {\r\n        const result = super.serialize();\r\n        result.metadataItem = this.metadataItem;\r\n        result.type = this.type;\r\n        return result;\r\n    }\r\n}\r\nconst toMetadataType = {\r\n    text: MetadataTypes.TextAttribute,\r\n    numeric: MetadataTypes.NumericAttribute,\r\n    datetime: MetadataTypes.DateLevel,\r\n};\r\n/**\r\n * @internal\r\n */\r\nexport const isJaqlElement = (v) => {\r\n    return v && v.__serializable === 'JaqlElement';\r\n};\r\n/**\r\n * Create a JaqlElement from a MetadataItem\r\n *\r\n * @param item - the metadata item in a JAQL query\r\n * @returns a JaqlElement\r\n * @internal\r\n */\r\nexport function createJaqlElement(item) {\r\n    var _a;\r\n    // TODO: measures with a \"formula\" may not have a datatype. force this to be numeric because aggregations\r\n    // will always be of type number. check if there is a more correct way to do this\r\n    return new JaqlElement(item, (_a = toMetadataType[item.jaql.datatype]) !== null && _a !== void 0 ? _a : 'numeric');\r\n}\r\n/**\r\n * Create a DimensionalElement from a MetadataItem\r\n *\r\n * @param item - the metadata item in a JAQL query\r\n * @returns a DimensionalElement\r\n * @internal\r\n */\r\nexport function createDimensionalElementFromMetadataItem(item) {\r\n    const { jaql } = item;\r\n    // calculated measure\r\n    if (jaql.formula) {\r\n        return createCalculatedMeasureHelper(jaql);\r\n    }\r\n    const granularity = getGranularityFromJaql(jaql);\r\n    // measure\r\n    if ('agg' in jaql && jaql.dim && jaql.datatype) {\r\n        return createMeasureHelper({\r\n            expression: jaql.dim,\r\n            dataType: jaql.datatype,\r\n            agg: jaql.agg || '',\r\n            granularity: granularity,\r\n            format: undefined,\r\n            sort: jaql.sort,\r\n            title: jaql.title,\r\n            dataSource: jaql.datasource,\r\n        });\r\n    }\r\n    // attribute\r\n    if (jaql.dim && jaql.datatype) {\r\n        return createAttributeHelper({\r\n            expression: jaql.dim,\r\n            dataType: jaql.datatype,\r\n            granularity: granularity,\r\n            sort: jaql.sort,\r\n            title: jaql.title,\r\n            panel: item.panel,\r\n            dataSource: jaql.datasource,\r\n        });\r\n    }\r\n    // fall back to createJaqlElement\r\n    return createJaqlElement(item);\r\n}\r\n//# sourceMappingURL=jaql-element.js.map","import { WidgetProps, ChartWidgetProps, PivotTableWidgetProps } from '@/props';\r\nimport { ChartDataOptions, ChartStyleOptions } from '@/types';\r\nimport { ExecuteQueryParams, ExecutePivotQueryParams } from '@/query-execution';\r\nimport { JSONArray, MetadataItem } from '@sisense/sdk-data';\r\nimport { DynamicChartType } from '../chart-options-processor/translations/types.js';\r\nimport { AnyColumn } from '@/chart-data-options/types.js';\r\nimport { DashboardProps } from '@/dashboard/types.js';\r\n\r\ntype Stringify<T> = {\r\n  [K in keyof T as `${K & string}String`]: string;\r\n};\r\n\r\ntype ExtraWidgetCodeProps = {\r\n  componentString: string;\r\n  extraImportsString: string;\r\n  idString?: string;\r\n  widgetTypeString?: 'chart' | 'pivot' | 'text' | 'custom';\r\n};\r\n\r\n/** @internal */\r\nexport type KeysOfUnion<T> = T extends T ? keyof T : never;\r\n/** @internal */\r\nexport type AllPossibleChartOptionKeys = KeysOfUnion<ChartDataOptions>;\r\n/** @internal */\r\nexport type AxesMappingKey = Exclude<AllPossibleChartOptionKeys, 'seriesToColorMap'>;\r\n/** @internal */\r\nexport type AxesMapping = Partial<Record<AxesMappingKey, Array<AnyColumn>>>;\r\n\r\n/** @internal */\r\nexport interface ChartRecommendations {\r\n  chartFamily: string;\r\n  chartType: string;\r\n  axesMapping: AxesMapping;\r\n  styleOptions?: ChartStyleOptions;\r\n}\r\n\r\n/**\r\n * Expanded Query Model that is based on NlqResponseData.\r\n * It contains expanded JAQL and chart recommendations returned from the chat response.\r\n *\r\n * @internal\r\n */\r\nexport interface ExpandedQueryModel {\r\n  /** @internal */\r\n  chartRecommendations: ChartRecommendations | {};\r\n  /** @internal */\r\n  jaql: {\r\n    datasource: {\r\n      id?: string;\r\n      type?: 'elasticube' | 'live';\r\n      title: string;\r\n    };\r\n    metadata: MetadataItem[];\r\n  };\r\n  /** @internal */\r\n  queryTitle: string;\r\n}\r\n\r\n/**\r\n * Empty Expanded Query Model\r\n *\r\n * Used as a default value for ExpandedQueryModel\r\n *\r\n * @internal\r\n */\r\nexport const EMPTY_EXPANDED_QUERY_MODEL: ExpandedQueryModel = {\r\n  jaql: { datasource: { title: '', type: 'elasticube' }, metadata: [] },\r\n  queryTitle: '',\r\n  chartRecommendations: {},\r\n};\r\n\r\n/**\r\n * Simple Chart Recommendations\r\n *\r\n * @internal\r\n */\r\nexport interface SimpleChartRecommendations {\r\n  chartType: string;\r\n  dataOptions: AxesMapping;\r\n  styleOptions: ChartStyleOptions;\r\n}\r\n\r\n/**\r\n * Simple Query Model that is a simplified version of ExpandedQueryModel.\r\n *\r\n * It removes any JAQL syntax or information that already exists in the schema.\r\n * Also, any parameters that have a default do not need to be specified.\r\n *\r\n * Users manipulates this model via the query in YAML format.\r\n *\r\n * QueryTranslator is responsible for translating this query model to ExpandedWidgetModel.\r\n *\r\n * @internal\r\n */\r\nexport interface SimpleQueryModel {\r\n  /**\r\n   * The data model or perspective title.\r\n   */\r\n  model: string;\r\n  metadata: MetadataItem[];\r\n  chart: SimpleChartRecommendations | {};\r\n  /**\r\n   * Title of the query\r\n   */\r\n  queryTitle: string;\r\n}\r\n\r\n/**\r\n * Empty Simple Query Model\r\n *\r\n * Used as a default value for SimpleQueryModel\r\n *\r\n * @internal\r\n */\r\nexport const EMPTY_SIMPLE_QUERY_MODEL: SimpleQueryModel = {\r\n  model: '',\r\n  metadata: [],\r\n  chart: {},\r\n  queryTitle: '',\r\n};\r\n\r\n/**\r\n * UI Framework\r\n *\r\n * @internal\r\n */\r\nexport type UiFramework = 'react' | 'vue' | 'angular';\r\n\r\n/**\r\n * Code Template Key\r\n *\r\n * @internal\r\n */\r\nexport type CodeTemplateKey =\r\n  | 'baseChartTmpl'\r\n  | 'chartTmpl'\r\n  | 'chartWidgetTmpl'\r\n  | 'chartWidgetPropsTmpl'\r\n  | 'widgetByIdTmpl'\r\n  | 'executeQueryByWidgetIdTmpl'\r\n  | 'executeQueryTmpl'\r\n  | 'executePivotQueryTmpl'\r\n  | 'pivotTableWidgetTmpl'\r\n  | 'pivotTableWidgetPropsTmpl'\r\n  | 'dashboardByIdTmpl'\r\n  | 'dashboardTmpl';\r\n\r\n/**\r\n * Code Templates\r\n *\r\n * @internal\r\n */\r\nexport type CodeTemplates = {\r\n  [key in UiFramework]: { [key in CodeTemplateKey]: string };\r\n};\r\n\r\n/**\r\n * Code Placeholder Map\r\n *\r\n * @internal\r\n */\r\nexport type CodePlaceholderMap = Record<string, string>;\r\n\r\n/**\r\n * Base Code Config\r\n *\r\n * @internal\r\n */\r\nexport type BaseCodeConfig = { uiFramework?: UiFramework };\r\n\r\n/** TYPES FOR WIDGET CODE */\r\n\r\n/**\r\n * Widget Code Config\r\n *\r\n * @internal\r\n */\r\nexport type WidgetCodeConfig = BaseCodeConfig & { includeChart?: boolean };\r\n\r\n/**\r\n * Client-side Widget Code Params\r\n *\r\n * @internal\r\n */\r\nexport type ClientSideWidgetCodeParams = BaseCodeConfig & {\r\n  widgetProps: WidgetProps;\r\n};\r\n\r\n/**\r\n * By ID Widget Code Params\r\n *\r\n * @internal\r\n */\r\nexport type ByIdWidgetCodeParams = WidgetCodeConfig & {\r\n  dashboardOid: string;\r\n  widgetOid: string;\r\n  chartType: DynamicChartType;\r\n};\r\n\r\n/**\r\n * Widget Code Params\r\n *\r\n * @internal\r\n */\r\nexport type WidgetCodeParams = ClientSideWidgetCodeParams | ByIdWidgetCodeParams;\r\n\r\n/**\r\n * Check if widget code params is for client-side code\r\n *\r\n * @internal\r\n */\r\nexport const isClientSideWidgetCodeParams = (\r\n  params: WidgetCodeParams,\r\n): params is ClientSideWidgetCodeParams => {\r\n  return 'widgetProps' in params;\r\n};\r\n\r\n/**\r\n * Check if widget code params is for by ID code\r\n *\r\n * @internal\r\n */\r\nexport const isByIdWidgetCodeParams = (\r\n  params: WidgetCodeParams,\r\n): params is ByIdWidgetCodeParams => {\r\n  return 'dashboardOid' in params && 'widgetOid' in params;\r\n};\r\n\r\n/**\r\n * Widget Props Config\r\n *\r\n * @internal\r\n */\r\nexport type WidgetPropsConfig = { useCustomizedStyleOptions?: boolean };\r\n\r\n/**\r\n * Execute Query Code Params\r\n *\r\n * @internal\r\n */\r\nexport type ExecuteQueryCodeParams = BaseCodeConfig & {\r\n  queryParams: ExecuteQueryParams;\r\n};\r\n\r\n/**\r\n * Execute Pivot Query Code Params\r\n *\r\n * @internal\r\n */\r\nexport type ExecutePivotQueryCodeParams = BaseCodeConfig & {\r\n  pivotQueryParams: ExecutePivotQueryParams;\r\n};\r\n\r\n/**\r\n * Execute Query Code Props\r\n *\r\n * @internal\r\n */\r\nexport type ExecuteQueryCodeProps = Stringify<ExecuteQueryParams> & { extraImportsString: string };\r\n\r\n/**\r\n * @internal\r\n */\r\nexport type ExecutePivotQueryCodeProps = Stringify<ExecutePivotQueryParams> & {\r\n  extraImportsString: string;\r\n};\r\n\r\n/**\r\n * Chart Widget Code Props\r\n *\r\n * @internal\r\n */\r\nexport type ChartWidgetCodeProps = Stringify<ChartWidgetProps> & ExtraWidgetCodeProps;\r\n\r\n/**\r\n * Pivot Table Widget Code Props\r\n *\r\n * @internal\r\n */\r\nexport type PivotTableWidgetCodeProps = Stringify<PivotTableWidgetProps> & ExtraWidgetCodeProps;\r\n\r\n/**\r\n * Template Key by Widget Type\r\n *\r\n * @internal\r\n */\r\nexport type TemplateKeyMapByWidgetType = {\r\n  chart: CodeTemplateKey;\r\n  pivot: CodeTemplateKey;\r\n  text?: CodeTemplateKey;\r\n  custom?: CodeTemplateKey;\r\n};\r\n\r\n/** TYPE FOR DASHBOARD CODE */\r\n\r\n/**\r\n * Dashboard Code Config\r\n *\r\n * @internal\r\n */\r\nexport type DashboardCodeConfig = BaseCodeConfig;\r\n\r\n/**\r\n * Client-side Dashboard Code Params\r\n *\r\n * @internal\r\n */\r\nexport type ClientSideDashboardCodeParams = BaseCodeConfig & {\r\n  dashboardProps: DashboardProps;\r\n};\r\n\r\n/**\r\n * By ID Dashboard Code Params\r\n *\r\n * @internal\r\n */\r\nexport type ByIdDashboardCodeParams = DashboardCodeConfig & {\r\n  dashboardOid: string;\r\n};\r\n\r\n/**\r\n * Dashboard Code Params\r\n *\r\n * @internal\r\n */\r\nexport type DashboardCodeParams = ClientSideDashboardCodeParams | ByIdDashboardCodeParams;\r\n\r\n/**\r\n * Check if dashboard code params is for client-side code\r\n *\r\n * @internal\r\n */\r\nexport const isClientSideDashboardCodeParams = (\r\n  params: DashboardCodeParams,\r\n): params is ClientSideDashboardCodeParams => {\r\n  return 'dashboardProps' in params;\r\n};\r\n\r\n/**\r\n * Check if dashboard code params is for by ID code\r\n *\r\n * @internal\r\n */\r\nexport const isByIdDashboardCodeParams = (\r\n  params: DashboardCodeParams,\r\n): params is ByIdDashboardCodeParams => {\r\n  return 'dashboardOid' in params;\r\n};\r\n\r\n/**\r\n * Dashboard Code Props\r\n *\r\n * @internal\r\n */\r\nexport type DashboardCodeProps = Stringify<DashboardProps> & ExtraWidgetCodeProps;\r\n\r\n/**\r\n * @internal\r\n */\r\nexport type NormalizedField = {\r\n  name: string;\r\n  dataType: string;\r\n  expression: string;\r\n  description?: string;\r\n};\r\n\r\n/**\r\n * @internal\r\n */\r\nexport type NormalizedTable = {\r\n  name: string;\r\n  columns: NormalizedField[];\r\n};\r\n\r\n/**\r\n * Response JSON generated by the new NLQ API.\r\n *\r\n * @internal\r\n */\r\nexport type NlqResponseJSON = {\r\n  dimensions: JSONArray;\r\n  measures: JSONArray;\r\n  filters: JSONArray;\r\n  highlights?: JSONArray;\r\n};\r\n\r\n/**\r\n * Represents the result of a translation operation that can either succeed with data or fail with errors.\r\n *\r\n * @internal\r\n */\r\nexport type NlqTranslationResult<T> =\r\n  | { success: true; data: T }\r\n  | { success: false; errors: string[] };\r\n"],"names":["JaqlElement","DimensionalElement","item","type","_a","getSortType","nested","result","toMetadataType","MetadataTypes","isJaqlElement","v","createJaqlElement","createDimensionalElementFromMetadataItem","jaql","createCalculatedMeasureHelper","granularity","getGranularityFromJaql","createMeasureHelper","createAttributeHelper","EMPTY_EXPANDED_QUERY_MODEL","datasource","title","metadata","queryTitle","chartRecommendations","EMPTY_SIMPLE_QUERY_MODEL","model","chart","isClientSideWidgetCodeParams","params","isByIdWidgetCodeParams","isClientSideDashboardCodeParams","isByIdDashboardCodeParams"],"mappings":"6DAiBO,MAAMA,UAAoBC,EAAAA,kBAAmB,CAChD,YAAYC,EAAMC,EAAM,CACpB,IAAIC,EACJ,OAAOA,EAAKF,EAAK,KAAK,SAAW,MAAQE,IAAO,OAASA,EAAK,GAAID,CAAI,EAItE,KAAK,eAAiB,cACtB,KAAK,WAAcD,EAAK,KAAK,KAAOA,EAAK,KAAK,QAC9C,KAAK,aAAeA,EAChBA,EAAK,KAAK,IACV,KAAK,YAAcA,EAAK,KAAK,IAG7B,OAAO,KAAK,YAEZA,EAAK,KAAK,QACV,KAAK,QAAUA,EAAK,KAAK,QAGzB,OAAO,KAAK,QAEZA,EAAK,KAAK,KACV,KAAK,SAAWG,EAAW,YAACH,EAAK,KAAK,IAAI,EAG1C,OAAO,KAAK,SAEhB,KAAK,eAAiB,EACzB,CACD,IAAI,IAAK,CACL,OAAO,KAAK,UACf,CACD,KAAKI,EAAQ,CACT,OAAOA,IAAW,GAAO,KAAK,aAAa,KAAO,KAAK,YAC1D,CAID,WAAY,CACR,MAAMC,EAAS,MAAM,YACrB,OAAAA,EAAO,aAAe,KAAK,aAC3BA,EAAO,KAAO,KAAK,KACZA,CACV,CACL,CACA,MAAMC,EAAiB,CACnB,KAAMC,EAAa,cAAC,cACpB,QAASA,EAAa,cAAC,iBACvB,SAAUA,EAAa,cAAC,SAC5B,EAIaC,EAAiBC,GACnBA,GAAKA,EAAE,iBAAmB,cAS9B,SAASC,EAAkBV,EAAM,CACpC,IAAIE,EAGJ,OAAO,IAAIJ,EAAYE,GAAOE,EAAKI,EAAeN,EAAK,KAAK,QAAQ,KAAO,MAAQE,IAAO,OAASA,EAAK,SAAS,CACrH,CAQO,SAASS,EAAyCX,EAAM,CAC3D,KAAM,CAAE,KAAAY,CAAM,EAAGZ,EAEjB,GAAIY,EAAK,QACL,OAAOC,EAAAA,8BAA8BD,CAAI,EAE7C,MAAME,EAAcC,yBAAuBH,CAAI,EAE/C,MAAI,QAASA,GAAQA,EAAK,KAAOA,EAAK,SAC3BI,sBAAoB,CACvB,WAAYJ,EAAK,IACjB,SAAUA,EAAK,SACf,IAAKA,EAAK,KAAO,GACjB,YAAaE,EACb,OAAQ,OACR,KAAMF,EAAK,KACX,MAAOA,EAAK,MACZ,WAAYA,EAAK,UAC7B,CAAS,EAGDA,EAAK,KAAOA,EAAK,SACVK,wBAAsB,CACzB,WAAYL,EAAK,IACjB,SAAUA,EAAK,SACf,YAAaE,EACb,KAAMF,EAAK,KACX,MAAOA,EAAK,MACZ,MAAOZ,EAAK,MACZ,WAAYY,EAAK,UAC7B,CAAS,EAGEF,EAAkBV,CAAI,CACjC,CC/DO,MAAMkB,EAAiD,CAC5DN,KAAM,CAAEO,WAAY,CAAEC,MAAO,GAAInB,KAAM,YAAa,EAAGoB,SAAU,CAAA,CAAG,EACpEC,WAAY,GACZC,qBAAsB,CAAA,CACxB,EA6CaC,EAA6C,CACxDC,MAAO,GACPJ,SAAU,CAAE,EACZK,MAAO,CAAC,EACRJ,WAAY,EACd,EA4FaK,EACXC,GAEO,gBAAiBA,EAQbC,EACXD,GAEO,iBAAkBA,GAAU,cAAeA,EA2GvCE,EACXF,GAEO,mBAAoBA,EAQhBG,EACXH,GAEO,iBAAkBA"}