{"version":3,"file":"18.js","mappings":"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","sources":["webpack:///./calcbenchApp/footnote/constants.ts","webpack:///./calcbenchApp/footnote/factHover/factHoverTooltip.ts","webpack:///./calcbenchApp/rawData/URLBuilder.ts","webpack:///./calcbenchApp/shared/calcbenchAPI/tagInfo.ts","webpack:///./calcbenchApp/shared/excelAddinProxy/calcbenchExcelAddInProxy.ts","webpack:///./calcbenchApp/shared/excelExport/excelExport.ts","webpack:///./calcbenchApp/shared/filters/formatFact.ts","webpack:///./calcbenchApp/shared/filters/formatTime.ts","webpack:///./calcbenchApp/shared/filters/formatType.ts","webpack:///./calcbenchApp/shared/utils/nameof.ts","webpack:///./calcbenchApp/footnote/factHover/factHistoryTooltip.tpl.html","webpack:///./calcbenchApp/footnote/factHover/factHoverTemplate.tpl.html"],"sourcesContent":["\r\n\r\n/**\r\n * When we do not know exactly which fact this is.\r\n * */\r\nexport const ApproximateFactClass = 'cbfactcellapprox';\r\n/**\r\n * We know which fact this is.\r\n * */\r\nexport const ExactFactClass = 'cbfactcell'\r\n\r\n\r\nexport const NonXBRLFactHoverClass = 'nonXBRLFactHover'\r\n\r\n/**\r\n * Non-XBRL fact identifier\r\n * Set in the html parsing process during data ingestion process, looks like data-cbextfactid.\r\n * \r\n * Should not be 0 but sometimes is.\r\n * */\r\nexport const NonXBRLFactIDAttribute = 'cbextfactid'\r\n\r\n/**\r\n * XBRL fact identifier\r\n * \r\n * Set in the html parsing process during data ingestion process, looks like data-cbfactid\r\n * */\r\nexport const XBRLFactIdAttribute = 'cbfactid'","import * as Mustache from 'mustache';\r\nimport 'qtip2';\r\nimport 'qtip2/dist/jquery.qtip.min.css';\r\nimport { plainToClass } from 'class-transformer';\r\nimport { Column } from 'exceljs';\r\nimport { getExcelAddInProxy } from '../../shared/excelAddinProxy/calcbenchExcelAddInProxy';\r\nimport './nonXBRLFactHover.scss';\r\nimport { XBRLTagURL } from '../../rawData/URLBuilder';\r\nimport { ICalcbenchUser } from '../../shared/calcbenchUser/CalcbenchUser';\r\nimport { FactHistoryTemplateData } from './factHistoryTemplateData';\r\nimport { TagInfo } from '../../shared/calcbenchAPI/tagInfo';\r\nimport { formatFact } from '../../shared/filters/formatFact';\r\nimport { formatTimestamp } from '../../shared/filters/formatTime';\r\nimport { PeerGroupUrlParams } from '../../shared/peerGroup/PeerGroupUrlParams';\r\nimport { XBRLElementData } from '../../shared/calcbenchAPI/ElementData';\r\nimport { addCalcbenchHeader, buildWorkbookWithSheet, saveWorkbookOrExcelInsert } from '../../shared/excelExport/excelExport';\r\nimport { nameof } from '../../shared/utils/nameof';\r\nimport { RemoteFunctions } from '../disclosureIFrame/RemoteFunctions';\r\n\r\n/**\r\n * Add the tool-tip to fact\r\n * @param $element\r\n * @param factID\r\n * @param additionalClasses\r\n * @param nonXBRLFactID\r\n * @param event\r\n * @param peerGroupURLParams\r\n * @param calcbenchUser\r\n * @param targetOrigin\r\n */\r\nexport function addFactHoverQtip(\r\n $element: JQuery,\r\n factID: number,\r\n additionalClasses: string,\r\n nonXBRLFactID: number,\r\n event: Event,\r\n peerGroupURLParams: PeerGroupUrlParams,\r\n calcbenchUser: ICalcbenchUser,\r\n targetOrigin: string = null,\r\n) {\r\n const calcbenchExcelAddInProxy = getExcelAddInProxy();\r\n const nonXBRLInsert = calcbenchExcelAddInProxy && nonXBRLFactID && $element.closest('td').length > 0;\r\n\r\n $element.qtip({\r\n content: {\r\n async text(_event, api: QTip2.Api) {\r\n let message = 'Getting fact details';\r\n let buildingToolTip: Promise = null;\r\n if (factID) {\r\n buildingToolTip = buildXBRLToolTip(calcbenchUser, factID, peerGroupURLParams, api, Boolean(calcbenchExcelAddInProxy));\r\n } else if (nonXBRLFactID) {\r\n buildingToolTip = buildToolTip_NonXBRL(nonXBRLFactID, Boolean(calcbenchExcelAddInProxy), nonXBRLInsert, api, targetOrigin);\r\n } else {\r\n message = 'No matching fact, click to search';\r\n }\r\n buildingToolTip?.then(() => addOpenDifferentPeriod(targetOrigin, nonXBRLFactID, calcbenchExcelAddInProxy));\r\n\r\n return message;\r\n },\r\n },\r\n position: {\r\n my: 'left center',\r\n at: 'right center',\r\n viewport: $('body'),\r\n adjust: {\r\n method: 'flip',\r\n resize: true,\r\n },\r\n },\r\n hide: {\r\n delay: 500,\r\n fixed: true,\r\n },\r\n style: {\r\n classes: `qtip-bootstrap factHoverToolTip ${additionalClasses || ''}`,\r\n },\r\n overwrite: false,\r\n show: {\r\n event: event.type,\r\n ready: true,\r\n delay: 750,\r\n },\r\n });\r\n}\r\n\r\nconst factHistoryHTMLtemplate = require('./factHistoryTooltip.tpl.html') as string;\r\n\r\n/**\r\n * \r\n * @param calcbenchUser\r\n * @param factID\r\n * @param peerGroupURLParams\r\n * @param api\r\n * @param inExcel\r\n */\r\nasync function buildXBRLToolTip(\r\n calcbenchUser: ICalcbenchUser,\r\n factID: number,\r\n peerGroupURLParams: PeerGroupUrlParams,\r\n api: QTip2.Api,\r\n inExcel: boolean,\r\n) {\r\n const content = await $.get('/api/XBRLFactMetaData', { fact_id: factID });\r\n const factData = content || {};\r\n const members: string[] = factData.members_list;\r\n const joinedMembers = members?.join(',');\r\n const localName = factData.local_name;\r\n if (localName) {\r\n const elementData = await $.get('/api/elementData', { elementName: localName }) as XBRLElementData;\r\n factData.documentation = elementData?.documentation;\r\n }\r\n\r\n if (members) {\r\n factData.members_list = members.map((member) => ({ member }));\r\n factData.joined_members = joinedMembers;\r\n factData.hasMembers = true;\r\n }\r\n if (calcbenchUser.isPremiumUser) {\r\n factData.rawXBRLURL = XBRLTagURL(localName, peerGroupURLParams);\r\n }\r\n\r\n factData.showPreviousYearValue = factData.year_ago_value && factData.percent_change;\r\n factData.fact_id = factID;\r\n factData.calcbenchExcelAddInProxy = inExcel;\r\n api.set('content.text', Mustache.render(require('./factHoverTemplate.tpl.html'), factData));\r\n $('.show-tag-history-in-tooltip').click(async (event) => {\r\n event.preventDefault();\r\n const historyContent = await $.get('/query/tooltip_XBRL', { fact_id: factID }) as FactHistoryTemplateData;\r\n if (historyContent) {\r\n historyContent.history.forEach((fact) => {\r\n fact.focusFact = fact.fact_id === factID;\r\n fact.fact_id_key = 'fact_id';\r\n fact.joined_members = joinedMembers;\r\n fact.local_name = localName;\r\n fact.hasMembers = Boolean(members);\r\n fact.ticker = factData.ticker;\r\n });\r\n $('.tag-history-in-tooltip').html(Mustache.render(factHistoryHTMLtemplate, historyContent));\r\n }\r\n });\r\n}\r\n\r\n/**\r\n * Build the tooltip that shows the history of the fact for documents that have been through the HTMLExtract process\r\n * @param nonXBRLFactID\r\n * @param inExcelAddIn\r\n * @param nonXBRLInsert\r\n * @param api\r\n * @param targetOrigin\r\n */\r\nasync function buildToolTip_NonXBRL(nonXBRLFactID: number,\r\n inExcelAddIn: boolean,\r\n nonXBRLInsert: boolean,\r\n api: QTip2.Api,\r\n targetOrigin: string) {\r\n const responseJSON = await $.get('/api/nonXBRLFactHistory', { fact_id: nonXBRLFactID });\r\n const history = plainToClass(TagInfo, responseJSON) as unknown as TagInfo[];\r\n const templateContent = {} as FactHistoryTemplateData;\r\n templateContent.history = history.map((fact) => ({\r\n focusFact: fact.fact_id === nonXBRLFactID,\r\n fact_id_key: 'non_xbrl_fact_id',\r\n fiscal_period: fact.fiscal_period,\r\n fiscal_year: fact.fiscal_year,\r\n date_reported: formatTimestamp(fact.date_reported),\r\n value: formatFact(fact.value, { format_type: fact.format_type }),\r\n excelFormula: fact.excel_formula,\r\n fact_id: fact.fact_id,\r\n }));\r\n templateContent.isNonXBRL = true;\r\n templateContent.calcbenchExcelAddInProxy = inExcelAddIn;\r\n templateContent.nonXBRLInsert = nonXBRLInsert;\r\n api.set('content.text', Mustache.render(factHistoryHTMLtemplate, templateContent));\r\n $('.factHistoryTooltipFact').on('click', ($event) => {\r\n const dataSet = ($event.target).dataset;\r\n const messageData = {\r\n factID: parseInt(dataSet.factid),\r\n remoteFunctionName: RemoteFunctions.insertNonXBRLFormula,\r\n };\r\n window.parent.postMessage(messageData, targetOrigin);\r\n $event.preventDefault();\r\n });\r\n\r\n $('#exportToExcel').on('click', ($event) => {\r\n $event.preventDefault()\r\n const [workbook, worksheet] = buildWorkbookWithSheet(\"NonXBRLFacts\")\r\n worksheet.columns = [\r\n { key: nameof('fiscal_period_and_year'), header: \"Fiscal Period\", width: 15 },\r\n { key: nameof('date_reported'), header: 'Date Reported', width: 15 },\r\n { key: nameof('value'), header: 'Value', width: 20 },\r\n { key: nameof('formula_cell_value'), header: 'Formula - Calcbench Excel Add-in required', width: 30 }\r\n ] as Column[]\r\n\r\n worksheet.addRows(history)\r\n worksheet.spliceRows(1, 0, ...new Array(3))\r\n addCalcbenchHeader(worksheet)\r\n\r\n saveWorkbookOrExcelInsert(workbook, \"CalcbenchNonXBRLFacts.xlsx\")\r\n\r\n });\r\n}\r\n\r\nfunction addOpenDifferentPeriod(targetOrigin: string, nonXBRLFactID: number, calcbenchExcelAddInProxy: ReturnType) {\r\n $('.openDifferentPeriod').on('click', ($event) => {\r\n const dataSet = (($event.target).dataset);\r\n const messageData = {\r\n URL: `/query/footnotes?${dataSet.factidkey}=${parseInt(dataSet.factid)}`,\r\n remoteFunctionName: RemoteFunctions.openNewTab,\r\n };\r\n window.parent.postMessage(messageData, targetOrigin);\r\n $event.preventDefault();\r\n });\r\n\r\n $('.showFactHistory').on('click', ($event) => {\r\n $('.factHistoryTable').toggle();\r\n $event.preventDefault();\r\n });\r\n\r\n if (nonXBRLFactID) {\r\n $('.insertColToExcel').on('click', ($event) => {\r\n calcbenchExcelAddInProxy.insertFormulaForFact_nonxbrl(nonXBRLFactID, true);\r\n $event.preventDefault();\r\n });\r\n }\r\n}\r\n","// This has to be a separate file because it gets imported from the iFrame stuff where we cannot reference angular\r\n\r\nimport { PeerGroupUrlParams } from \"../shared/peerGroup/PeerGroupUrlParams\";\r\n\r\nexport const URL_prefix = 'rx_'; // raw xbrl\r\nexport function XBRLTagURL(xbrlTag: string, peerGroupUrlParams: PeerGroupUrlParams) {\r\n // const params = new URLSearchParams()\r\n const pageParameters = { [`${URL_prefix}XBRLtag`]: xbrlTag }\r\n const params = new URLSearchParams({ ...pageParameters, ...peerGroupUrlParams })\r\n return `/xbrl?${params}`\r\n}","import { Type } from \"class-transformer\";\r\nimport { CellFormulaValue } from \"exceljs\";\r\nimport { FormatType } from \"../filters/formatType\";\r\n\r\n/**\r\n * Cooresponds to TagInfo in TagInfo.vb\r\n * */\r\nexport class TagInfo {\r\n fiscal_year: number\r\n\r\n fiscal_period: string\r\n\r\n fact_id: number\r\n\r\n label: string\r\n\r\n value: number\r\n\r\n indent_level: number\r\n\r\n @Type(() => Date)\r\n period_start: Date\r\n\r\n @Type(() => Date)\r\n period_end: Date\r\n\r\n extract_tag: string\r\n\r\n @Type(() => Date)\r\n date_reported: Date\r\n\r\n excel_formula: string\r\n\r\n format_type: FormatType\r\n\r\n /**\r\n * Used to build the Excel export\r\n */\r\n get formula_cell_value() {\r\n return { formula: this.excel_formula } as CellFormulaValue\r\n };\r\n\r\n /**\r\n * Used in the Excel export\r\n */\r\n get fiscal_period_and_year() {\r\n return `${this.fiscal_period}-${this.fiscal_year}`;\r\n }\r\n}","import { IMetricData } from \"../calcbenchAPI/StandardizedMetricDefinitions\";\r\nimport { PeerGroupInstance } from \"../peerGroup/peerGroupInstance\";\r\nimport { ExcelFunction } from \"./ExcelFunction\";\r\nimport { WebViewMessage } from \"./WebViewMessage\";\r\nimport { IFrameMessageData } from '../../footnote/disclosureIFrame/IFrameMessageData';\r\n\r\nlet calcbenchExcelAddInProxy: any;\r\nlet webView2;\r\nlet spreadsheetLaunchedFromWebsite: Window;\r\ntry {\r\n webView2 = (window).chrome?.webview || (window).parent?.chrome?.webview // Look on the parent in-case we are in an IFrame\r\n} catch (e) {\r\n // If we are in an iFrame trying to get the parent chrome throws an error\r\n}\r\n\r\n(window as any).launchCBSheet = () => {\r\n if (spreadsheetLaunchedFromWebsite) {\r\n if (spreadsheetLaunchedFromWebsite.closed) {\r\n spreadsheetLaunchedFromWebsite = null;\r\n } else {\r\n return false;\r\n }\r\n }\r\n spreadsheetLaunchedFromWebsite = window.open(\"http://sheet.calcbench.com\", \"cbsheetwindow\");\r\n return true\r\n}\r\n\r\n/**\r\n * Are we in the Excel Add-in?\r\n * @returns a WebView2Proxy if we are in the Excel Add-in.\r\n */\r\nexport function getExcelAddInProxy(): ExcelAddInProxy {\r\n const w: Window = window; // For some reason it can't find the proxy if we do this on one line.`\r\n\r\n calcbenchExcelAddInProxy = (w).calcbenchExcelAddInProxy;\r\n if (calcbenchExcelAddInProxy) {\r\n return new CalcbenchExcelAddInProxy();\r\n } if (webView2) {\r\n return new WebView2Proxy();\r\n } if ((w).location.href.indexOf('calcbenchsheet=true') >= 0) {\r\n return new WebView2Proxy();\r\n } if (spreadsheetLaunchedFromWebsite) {\r\n if (spreadsheetLaunchedFromWebsite.closed) {\r\n spreadsheetLaunchedFromWebsite = null;\r\n return null;\r\n } \r\n return new WebView2Proxy();\r\n } \r\n return null; \r\n}\r\n\r\nexport interface ExcelAddInProxy {\r\n insertXBRLTagFormula(XBRLtag: string, ticker: string, fiscal_year: number, fiscal_period: any, dimension_string: string, useFiscalPeriod: boolean)\r\n insertTextBlockFormula(localName: string, entity_ticker: string, fiscal_year: number, fiscal_period: any)\r\n insertWorkbook(serializedWorkbook: string)\r\n insertStandardizedMetricFormula(metric: any, ticker: any, year: any, period: any, useFiscalPeriod: any)\r\n insertTableSimple(outerHTML: string, data: IFrameMessageData)\r\n insertString(txt: string)\r\n insertFormulaForFact_nonxbrl(factID: number, fullColumn: boolean)\r\n insertFormulaForFact(factID: number, fullColumn: boolean)\r\n insertTableAllHistory(accessionID: number, networkID: number)\r\n metricSelected(metric: IMetricData)\r\n peerGroupChanged(peerGroup: PeerGroupInstance)\r\n doneChoosingCompanies()\r\n insertRawDataQueryResults(data: [])\r\n /**\r\n * \r\n * Toggle the number of companies in the selected peer group that report this metric\r\n * */\r\n showMetricReportersCounts()\r\n}\r\n\r\n\r\n/**\r\n * The WebView2 replacement for the Chromium process. This is the only one used by the Excel add-in now.\r\n * */\r\nclass WebView2Proxy implements ExcelAddInProxy {\r\n private sendMessageToExcel(m: WebViewMessage) {\r\n if (webView2) webView2.postMessage(m);\r\n if (spreadsheetLaunchedFromWebsite) {\r\n spreadsheetLaunchedFromWebsite.postMessage(m, \"*\");\r\n } else if (window.opener) {\r\n window.opener.postMessage(m, \"*\");\r\n } else if (window.parent) {\r\n window.parent.postMessage(m, \"*\");\r\n }\r\n }\r\n\r\n insertXBRLTagFormula(XBRLtag: string, ticker: string, fiscal_year: number, fiscal_period: any, dimension_string: string, useFiscalPeriod: boolean) {\r\n this.sendMessageToExcel({\r\n Function: ExcelFunction.InsertXBRLTagFormula,\r\n tagName: XBRLtag,\r\n ticker,\r\n year: fiscal_year,\r\n period: fiscal_period,\r\n dimensions: dimension_string,\r\n useFiscalPeriod\r\n })\r\n }\r\n\r\n /**\r\n * I do not think this is used anywhere. akittredge December 2020.\r\n * @param localName\r\n * @param entity_ticker\r\n * @param fiscal_year\r\n * @param fiscal_period\r\n */\r\n insertTextBlockFormula(localName: string, entity_ticker: string, fiscal_year: number, fiscal_period: any) {\r\n this.sendMessageToExcel({ Function: ExcelFunction.InsertTextBlockFormula, tagName: localName, year: fiscal_year, period: fiscal_period, ticker: entity_ticker });\r\n }\r\n\r\n insertWorkbook(serializedWorkbook: string) {\r\n this.sendMessageToExcel({ Function: ExcelFunction.InsertWorkbook, workbook: serializedWorkbook })\r\n }\r\n\r\n insertStandardizedMetricFormula(metric: any, ticker: any, year: any, period: any, useFiscalPeriod: any) {\r\n this.sendMessageToExcel({ Function: ExcelFunction.InsertStandardizedMetricFormula, ticker, year, period, useFiscalPeriod, tagName: metric })\r\n }\r\n\r\n insertTableSimple(outerHTML: string, data: IFrameMessageData) {\r\n this.sendMessageToExcel({ Function: ExcelFunction.InsertTable, HTML: outerHTML, SimpleTable: true, IncludeFormulas: data.exportFormulas })\r\n }\r\n\r\n insertTableAllHistory(accessionID: number, networkID: number) {\r\n this.sendMessageToExcel({ Function: ExcelFunction.InsertTable, AccessionID: accessionID, NetworkID: networkID, AllHistory: true })\r\n }\r\n\r\n insertString(txt: string) {\r\n this.sendMessageToExcel({ Function: ExcelFunction.InsertString, Value: txt })\r\n }\r\n\r\n insertFormulaForFact_nonxbrl(factID: number, fullColumn: boolean) {\r\n this.sendMessageToExcel({ Function: ExcelFunction.insertFormulaForFactNonXBRL, factID, fullColumn })\r\n }\r\n\r\n insertFormulaForFact(factID: number, fullColumn: boolean) {\r\n this.sendMessageToExcel({ Function: ExcelFunction.insertFormulaForFact, factID, fullColumn })\r\n }\r\n\r\n metricSelected(metric: IMetricData) {\r\n this.sendMessageToExcel({ Function: ExcelFunction.MetricSelected, Metric: metric })\r\n }\r\n\r\n peerGroupChanged(peerGroup: PeerGroupInstance) {\r\n this.sendMessageToExcel({ Function: ExcelFunction.PeerGroupSelected, EntityIDs: peerGroup.entityIDs })\r\n }\r\n\r\n doneChoosingCompanies() {\r\n this.sendMessageToExcel({ Function: ExcelFunction.DoneChoosingCompanies })\r\n }\r\n\r\n showMetricReportersCounts() {\r\n this.sendMessageToExcel({ Function: ExcelFunction.ShowMetricReportersCounts })\r\n }\r\n\r\n insertRawDataQueryResults(data: []) {\r\n this.sendMessageToExcel({ Function: ExcelFunction.InsertRawDataQueryResults, data: data })\r\n }\r\n}\r\n\r\n/**\r\n * Proxies the CEFSharp chrome based disclosure viewer, the current Add-in does not use this. akittredge august 2021\r\n * */\r\nclass CalcbenchExcelAddInProxy implements ExcelAddInProxy {\r\n showMetricReportersCounts() {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n\r\n doneChoosingCompanies(): null {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n\r\n peerGroupChanged(peerGroup: any) {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n\r\n metricSelected(metric: IMetricData) {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n\r\n insertRawDataQueryResults(data: []) {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n\r\n insertXBRLTagFormula(XBRLtag: string, ticker: string, fiscal_year: number, fiscal_period: any, dimension_string: string, useFiscalPeriod: boolean): any {\r\n calcbenchExcelAddInProxy.insertXBRLTagFormula(XBRLtag, ticker, fiscal_year, fiscal_period, dimension_string, useFiscalPeriod)\r\n }\r\n\r\n insertTextBlockFormula(localName: string, entity_ticker: string, fiscal_year: number, fiscal_period: any): void {\r\n calcbenchExcelAddInProxy.insertTextBlockFormula(localName, entity_ticker, fiscal_year, fiscal_period)\r\n }\r\n\r\n insertWorkbook(serializedWorkbook: string): any {\r\n calcbenchExcelAddInProxy.insertWorkbook(serializedWorkbook)\r\n }\r\n\r\n insertStandardizedMetricFormula(metric: any, ticker: any, year: any, period: any, useFiscalPeriod: any): void {\r\n calcbenchExcelAddInProxy.insertStandardizedMetricFormula(metric, ticker, year, period, useFiscalPeriod)\r\n }\r\n\r\n insertFormulaForFact(factID: number, fullColumn: boolean): void {\r\n calcbenchExcelAddInProxy.insertFormulaForFact(factID, fullColumn)\r\n }\r\n\r\n insertFormulaForFact_nonxbrl(factID: number, fullColumn: boolean): void {\r\n calcbenchExcelAddInProxy.insertFormulaForFact_nonxbrl(factID, fullColumn)\r\n alert(\"sent message\")\r\n }\r\n\r\n insertTableSimple(outerHTML: string, data: IFrameMessageData): void {\r\n calcbenchExcelAddInProxy.insertTable_simple(outerHTML);\r\n }\r\n\r\n insertTableAllHistory(accessionID: number, networkID: number): void {\r\n calcbenchExcelAddInProxy.insertTable_allHistory(accessionID, networkID);\r\n }\r\n\r\n insertString(txt: string) {\r\n calcbenchExcelAddInProxy.insertString(txt)\r\n }\r\n}","import downloadjs from 'downloadjs';\r\nimport { Workbook, Worksheet } from 'exceljs';\r\nimport { getExcelAddInProxy } from '../excelAddinProxy/calcbenchExcelAddInProxy';\r\nimport { formatDateObject } from '../filters/formatTime';\r\n\r\n/**\r\n * If your URL for excel exceeds this length you will get the error Removed Feature: Hyperlinks from /xl/worksheets/sheet1.xml part\r\n *\r\n * https://stackoverflow.com/questions/3893541/exceeding-max-char-limit-in-excel\r\n * */\r\nexport const MAX_EXCEL_URL_LENGTH = 255;\r\n\r\nexport const CalcbenchGoldARGB = 'FFB39926';\r\nexport const CalcbenchGoldRGB: [number, number, number] = [0xb3, 0x99, 0x26];\r\nconst MaxSheetNameLength = 30;\r\n\r\n/**\r\n * more than this you will get a corrupted sheet error\r\n * https://support.microsoft.com/en-us/office/excel-specifications-and-limits-1672b34d-7043-467e-8e27-269d656771c3?ui=en-us&rs=en-us&ad=us\r\n * */\r\nexport const MaxNumberHyperlinks = 65530;\r\n\r\n/**\r\n * Build an ExcelJS workbook and sheet\r\n * @param sheetName\r\n * @returns\r\n */\r\nexport function buildWorkbookWithSheet(sheetName: string): [Workbook, Worksheet] {\r\n const workbook = buildWorkbook();\r\n const worksheet = buildWorksheet(workbook, sheetName);\r\n return [workbook, worksheet];\r\n}\r\n\r\n/**\r\n * Add Calcbench boiler plate to sheet.\r\n * @param worksheet\r\n * @param dataTitle\r\n */\r\nexport function addCalcbenchHeader(worksheet: Worksheet, dataTitle: string = null) {\r\n worksheet.getCell('A1').value = `Exported from Calcbench: ${formatDateObject()(new Date(), '%Y-%m-%d %H:%M:%S')}`;\r\n worksheet.getCell('A2').value = {\r\n text: 'Source',\r\n hyperlink: window.location.href,\r\n };\r\n worksheet.getCell('A2').font = {\r\n color: { argb: CalcbenchGoldARGB },\r\n underline: true,\r\n };\r\n if (dataTitle) {\r\n worksheet.getCell('A3').value = dataTitle;\r\n }\r\n}\r\n\r\nexport function buildWorkbook() {\r\n const workbook = new Workbook();\r\n workbook.created = new Date();\r\n workbook.creator = 'Calcbench';\r\n return workbook;\r\n}\r\n\r\n/**\r\n * Add a worksheet to the workbook with the passed name.\r\n * @param workbook\r\n * @param sheetName\r\n * @returns Worksheet from the workbook.\r\n */\r\nexport function buildWorksheet(workbook: Workbook, sheetName: string) {\r\n let sheetNameLength = MaxSheetNameLength;\r\n while (sheetNameLength > 0) {\r\n const truncatedSheetName = sheetName.substring(0, sheetNameLength).replace(/[*?:/\\\\[\\]]/ /* Illegal Characters in worksheet names */, '');\r\n let existingSheetWithMatchingName = false;\r\n workbook.eachSheet((w, _) => existingSheetWithMatchingName = (existingSheetWithMatchingName || w.name === truncatedSheetName));\r\n if (!existingSheetWithMatchingName) {\r\n return workbook.addWorksheet(truncatedSheetName, { pageSetup: { fitToPage: true } });\r\n }\r\n sheetNameLength -= 1;\r\n }\r\n}\r\n\r\nexport async function saveWorkbook(workbook: Workbook, fileName: string) {\r\n const blob = await buildWorkbookBlob(workbook);\r\n downloadjs(blob, fileName, 'application/ms-excel');\r\n}\r\n\r\nfunction buildWorkbookBlob(workbook: Workbook) {\r\n return workbook.xlsx.writeBuffer().then((buffer) => new Blob([buffer], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' }));\r\n}\r\n\r\n/**\r\n * Save a workbook in the browser, or if we are in the Add-in insert the sheet.\r\n * @param workbook\r\n * @param fileName\r\n */\r\nexport function saveWorkbookOrExcelInsert(workbook: Workbook, fileName: string) {\r\n const excelAddInProxy = getExcelAddInProxy();\r\n if (excelAddInProxy) {\r\n workbook.xlsx.writeBuffer().then((data) => {\r\n excelAddInProxy.insertWorkbook(JSON.stringify(data));\r\n });\r\n } else {\r\n saveWorkbook(workbook, fileName);\r\n }\r\n}\r\n\r\nconst CAPITAL_A = 65;\r\n/**\r\n * https://github.com/exceljs/exceljs/issues/95\r\n * */\r\nexport function excelCoords(row: number, col: number, lockRow: boolean = false, lockCol: boolean = false) {\r\n let colStr = '';\r\n let rowStr = row.toString();\r\n while (col > 0) {\r\n colStr = toChar((col - 1) % 26) + colStr;\r\n col = Math.floor((col - 1) / 26);\r\n }\r\n if (lockRow) rowStr = `$${rowStr}`;\r\n if (lockCol) colStr = `$${colStr}`;\r\n\r\n return colStr + rowStr;\r\n}\r\n\r\nfunction toChar(n) {\r\n return String.fromCharCode(CAPITAL_A + n);\r\n}\r\n","import { FormatType } from \"./formatType\";\r\n\r\n/**\r\n * used everywhere, \r\n * \r\n * this is probably the hottest function at Calcbench\r\n * @param val\r\n * @param fact\r\n * @param options\r\n */\r\nexport function formatFact(val: any, fact: IFormatable, options: FactFormatOptions = new FactFormatOptions()): string {\r\n if (!fact) {\r\n return\r\n }\r\n const formatType = fact.format_type;\r\n\r\n if (formatType === FormatType.Text || formatType === FormatType.TextNumber) {\r\n return val || \"\";\r\n } else if (val === null) {\r\n return \"\";\r\n } else if (formatType === FormatType.Boolean) {\r\n return val ? 'True' : 'False';\r\n } else if (val === 0) {\r\n return \" - \";\r\n } else if (isNaN(val) && formatType !== FormatType.Date && formatType !== FormatType.DateNumber && formatType !== FormatType.Period) {\r\n return val\r\n }\r\n\r\n if (formatType !== FormatType.Date && formatType !== FormatType.DateNumber && formatType !== FormatType.Period) {\r\n val = Number(val);\r\n }\r\n let result = \"\";\r\n let neg = false;\r\n if (val < 0) {\r\n neg = true;\r\n val = -val;\r\n }\r\n const UOM = fact.unit_of_measure?.toUpperCase();\r\n const currencySymbol = UOM ? (CurrencyUOMToSymbol.get(UOM) || `${UOM} `) : '$'\r\n\r\n switch (formatType) {\r\n case FormatType.Currency: case FormatType.CanadianDollars: case FormatType.CNY: case FormatType.GBP: case FormatType.Euro: case FormatType.JapaneseYen:\r\n case FormatType.CurrencyNumber:\r\n if (Math.abs(val) < 100) {\r\n result = currencySymbol + val.toFixed(2)\r\n } else {\r\n result = currencySymbol + (val / options.truncationDenominator).toFixed(options.truncationDenominator > 1 ? 1 : 0)\r\n }\r\n break;\r\n case FormatType.Percent:\r\n case FormatType.PercentNumber:\r\n result = (val * 100).toFixed(2) + '%';\r\n break;\r\n case FormatType.TwoDecimalPointsCurrency:\r\n case FormatType.TwoDecimalPointsCurrencyNumber:\r\n result = `${currencySymbol}${val.toFixed(2)}`;\r\n break;\r\n case FormatType.TwoDecimalPointsNumber:\r\n case FormatType.TwoDecimalPointsNumberNumber:\r\n result = val.toFixed(2);\r\n break;\r\n case FormatType.OneDecimalPointCurrency:\r\n result = `${currencySymbol}${val.toFixed(1)}`;\r\n break;\r\n case FormatType.Number:\r\n case FormatType.NumberNumber:\r\n result = val.toFixed(0);\r\n break;\r\n case FormatType.Date:\r\n case FormatType.DateNumber:\r\n result = formatDate()(val);\r\n break;\r\n case FormatType.RawNumber:\r\n case FormatType.RawNumberNumber:\r\n result = val; //.toFixed(0);\r\n break;\r\n case FormatType.Period:\r\n result = formatPeriod(val);\r\n break;\r\n default:\r\n result = val;\r\n break;\r\n }\r\n if (formatType !== FormatType.Date && formatType !== FormatType.DateNumber && formatType !== FormatType.Period && formatType !== FormatType.RawNumber && formatType !== FormatType.RawNumberNumber) {\r\n result = addCommas(result);\r\n }\r\n\r\n if (neg) {\r\n result = `(${result})`\r\n }\r\n return result;\r\n}\r\n\r\n\r\n\r\nconst CurrencyUOMToSymbol = new Map([\r\n ['USD', '$'],\r\n ['USD/SHARES', '$'],\r\n ['EUR', '€'],\r\n ['EUR/SHARES', '€'],\r\n ['JPY', '¥'],\r\n ['JPY/SHARES', '¥'],\r\n ['GBP', '£'],\r\n ['GBP/SHARES', '£']\r\n])\r\n\r\n\r\n/**\r\n * This should really be called format date string or something\r\n * */\r\nexport function formatDate() {\r\n return function (ISODate: string) {\r\n if (!ISODate) return '';\r\n return ISODate.split('T')[0];\r\n }\r\n}\r\n\r\n\r\nfunction formatPeriod(fact) {\r\n return (fact.calendar_period === 0 ? 'Y' : ('Q' + fact.calendar_period)) + '-' + fact.calendar_year;\r\n //{{COL_FIELD.value.calendar_period === 0 ? \"Y\" : (\"Q\" + COL_FIELD.value.calendar_period)}}-{{COL_FIELD.value.calendar_year}}\r\n}\r\n\r\nfunction addCommas(nStr: string) {\r\n nStr += '';\r\n var x = nStr.split('.');\r\n var x1 = x[0];\r\n var x2 = x.length > 1 ? '.' + x[1] : '';\r\n var rgx = /(\\d+)(\\d{3})/;\r\n while (rgx.test(x1)) {\r\n x1 = x1.replace(rgx, '$1' + ',' + '$2');\r\n }\r\n return x1 + x2;\r\n}\r\n\r\n\r\n\r\n\r\nexport interface IFormatable {\r\n format_type: FormatType;\r\n unit_of_measure?: string;\r\n}\r\n\r\n\r\nexport class FactFormatOptions {\r\n truncationDenominator: number = 1\r\n}","import * as d3 from 'd3'\r\n\r\n/**\r\n * turn a Date object into a string like \"2021-11-25\"\r\n * @param date\r\n */\r\nexport function formatTimestamp(date: Date, specifier = \"%Y-%m-%d\") {\r\n if (!date) {\r\n return ''\r\n }\r\n return d3.timeFormat(specifier)(date)\r\n}\r\n\r\n\r\n/**\r\n * formats javascript dates\r\n * */\r\nexport function formatDateObject() {\r\n return formatTimestamp\r\n}","/**\r\n * After Public Enum \r\n * s from data.vb\r\n * */\r\nexport enum FormatType { //https://en.wikipedia.org/wiki/ISO_4217\r\n Error = 'error',\r\n Currency = 'currency',\r\n CurrencyNumber = 0,\r\n Text = 'text',\r\n TextNumber = -1,\r\n Percent = 'percent',\r\n PercentNumber = 1,\r\n TwoDecimalPointsCurrency = 'twoDecimalPointsCurrency',\r\n TwoDecimalPointsCurrencyNumber = 2,\r\n TwoDecimalPointsNumber = 'twoDecimalPointsNumber',\r\n OneDecimalPointCurrency = 'oneDecimalPointCurrency',\r\n TwoDecimalPointsNumberNumber = 3,\r\n Number = 'number',\r\n NumberNumber = 4,\r\n Date = 'date',\r\n DateNumber = 5,\r\n RawNumber = 'rawNumber',\r\n RawNumberNumber = 6,\r\n Boolean = 'boolean',\r\n Formula = 'formula',\r\n CanadianDollars = 'currency_cad',\r\n Euro = 'currency_eur',\r\n GBP = 'currency_gbp',\r\n JapaneseYen = 'currency_jpy',\r\n CNY = 'currency_cny',\r\n EmptyCell = 'emptyCell',\r\n Period = 'period'\r\n}\r\n\r\n","\r\n/**\r\n * Get property names in a typesafe way. \r\n * \r\n * after - https://github.com/dsherret/ts-nameof/issues/41#issuecomment-490227092\r\n * @param propertyName\r\n */\r\nexport function nameof(propertyName: keyof T): keyof T {\r\n return propertyName;\r\n}","// Module\nvar code = \"
{{label}}
{{#nonXBRLInsert}}
Click Numbers to Insert to Excel
{{/nonXBRLInsert}} {{#history}} {{/history}}
Fiscal Period Date Reported Value Add-in Formula
{{fiscal_period}}-{{fiscal_year}} {{date_reported}} {{#calcbenchExcelAddInProxy}} {{value}}{{#focusFact}}←{{/focusFact}} {{/calcbenchExcelAddInProxy}} {{^calcbenchExcelAddInProxy}} {{value}}{{#focusFact}}←{{/focusFact}} {{/calcbenchExcelAddInProxy}} {{#isNonXBRL}} {{excelFormula}} {{/isNonXBRL}} {{^isNonXBRL}} =CalcbenchXBRLTagFiscalPeriod(\\\"{{local_name}}\\\", \\\"{{ticker}}\\\", {{fiscal_year}}, \\\"{{fiscal_period}}\\\"{{#hasMembers}}, \\\"{{joined_members}}\\\"{{/hasMembers}}) {{/isNonXBRL}}
\";\n// Exports\nmodule.exports = code;","// Module\nvar code = \"
XBRL Tag
{{local_name}} {{^fasb}} Extension {{/fasb}} {{#depricated}} Deprecated {{/depricated}}

{{documentation}}

Fiscal Period
{{fiscal_year}}-{{fiscal_period}}
{{#revised}}
Revision
Revised to {{revised_value}} on {{revised_date}}
{{/revised}} {{#hasMembers}}
Dimensional Qualifications
{{#members_list}}
{{member}}
{{/members_list}} {{/hasMembers}}
Calcbench Excel Add-in Formula
=CalcbenchXBRLTagFiscalPeriod(\\\"{{local_name}}\\\", \\\"{{ticker}}\\\", {{fiscal_year}}, \\\"{{fiscal_period}}\\\"{{#hasMembers}}, \\\"{{joined_members}}\\\"{{/hasMembers}})

{{#showPreviousYearValue}} Previous year value: {{year_ago_value}}; {{percent_change}} chg. {{/showPreviousYearValue}}
Find in Previous Period Filing

{{#rawXBRLURL}} Raw XBRL Page {{/rawXBRLURL}}

Tag History

\";\n// Exports\nmodule.exports = code;"],"names":["exports","Mustache","__importStar","require","class_transformer_1","calcbenchExcelAddInProxy_1","URLBuilder_1","tagInfo_1","formatFact_1","formatTime_1","excelExport_1","nameof_1","$element","factID","additionalClasses","nonXBRLFactID","event","peerGroupURLParams","calcbenchUser","targetOrigin","calcbenchExcelAddInProxy","getExcelAddInProxy","nonXBRLInsert","closest","length","qtip","content","text","_event","api","message","buildingToolTip","inExcel","$","get","fact_id","_a","sent","members","factData","members_list","joinedMembers","join","localName","local_name","elementName","elementData","documentation","map","member","joined_members","hasMembers","isPremiumUser","rawXBRLURL","XBRLTagURL","showPreviousYearValue","year_ago_value","percent_change","set","render","click","__awaiter","_this","preventDefault","historyContent","history","forEach","fact","focusFact","fact_id_key","Boolean","ticker","html","factHistoryHTMLtemplate","buildXBRLToolTip","inExcelAddIn","responseJSON","plainToClass","TagInfo","templateContent","fiscal_period","fiscal_year","date_reported","formatTimestamp","value","formatFact","format_type","excelFormula","excel_formula","isNonXBRL","on","$event","dataSet","target","dataset","messageData","parseInt","factid","remoteFunctionName","window","parent","postMessage","buildWorkbookWithSheet","workbook","worksheet","columns","key","nameof","header","width","addRows","spliceRows","apply","__spreadArray","Array","addCalcbenchHeader","saveWorkbookOrExcelInsert","buildToolTip_NonXBRL","then","URL","concat","factidkey","toggle","insertFormulaForFact_nonxbrl","addOpenDifferentPeriod","position","my","at","viewport","adjust","method","resize","hide","delay","fixed","style","classes","overwrite","show","type","ready","xbrlTag","peerGroupUrlParams","pageParameters","URL_prefix","params","URLSearchParams","__assign","Object","defineProperty","prototype","formula","this","__decorate","Type","Date","webView2","spreadsheetLaunchedFromWebsite","chrome","webview","_c","_b","e","launchCBSheet","closed","open","w","CalcbenchExcelAddInProxy","location","href","indexOf","WebView2Proxy","sendMessageToExcel","m","opener","insertXBRLTagFormula","XBRLtag","dimension_string","useFiscalPeriod","Function","tagName","year","period","dimensions","insertTextBlockFormula","entity_ticker","insertWorkbook","serializedWorkbook","insertStandardizedMetricFormula","metric","insertTableSimple","outerHTML","data","HTML","SimpleTable","IncludeFormulas","exportFormulas","insertTableAllHistory","accessionID","networkID","AccessionID","NetworkID","AllHistory","insertString","txt","Value","fullColumn","insertFormulaForFact","metricSelected","Metric","peerGroupChanged","peerGroup","EntityIDs","entityIDs","doneChoosingCompanies","showMetricReportersCounts","insertRawDataQueryResults","Error","alert","insertTable_simple","insertTable_allHistory","downloadjs_1","__importDefault","exceljs_1","buildWorkbook","Workbook","created","creator","buildWorksheet","sheetName","sheetNameLength","truncatedSheetName","substring","replace","existingSheetWithMatchingName","eachSheet","_","name","addWorksheet","pageSetup","fitToPage","saveWorkbook","fileName","buildWorkbookBlob","blob","default","xlsx","writeBuffer","buffer","Blob","dataTitle","getCell","formatDateObject","hyperlink","font","color","argb","CalcbenchGoldARGB","underline","excelAddInProxy","JSON","stringify","row","col","lockRow","lockCol","n","colStr","rowStr","toString","String","fromCharCode","Math","floor","formatType_1","val","options","FactFormatOptions","formatType","FormatType","Text","TextNumber","isNaN","DateNumber","Period","Number","result","neg","ISODate","UOM","unit_of_measure","toUpperCase","currencySymbol","CurrencyUOMToSymbol","Currency","CanadianDollars","CNY","GBP","Euro","JapaneseYen","CurrencyNumber","abs","toFixed","truncationDenominator","Percent","PercentNumber","TwoDecimalPointsCurrency","TwoDecimalPointsCurrencyNumber","TwoDecimalPointsNumber","TwoDecimalPointsNumberNumber","OneDecimalPointCurrency","NumberNumber","split","RawNumber","RawNumberNumber","calendar_period","calendar_year","formatPeriod","nStr","x","x1","x2","rgx","test","addCommas","Map","d3","date","specifier","timeFormat","propertyName","module"],"sourceRoot":""}