{"version":3,"file":"358.bundle.js","mappings":"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","sources":["webpack://vaneckreact/./ReactUS/blocks/Tooltips.tsx","webpack://vaneckreact/./ReactUS/Components/BitcoinCalculatorBlock/UserInputForm.tsx","webpack://vaneckreact/./ReactUS/Components/BitcoinCalculatorBlock/Graph.tsx","webpack://vaneckreact/./ReactUS/Components/BitcoinCalculatorBlock/BitcoinCalculatorInnerBlock.tsx","webpack://vaneckreact/./ReactUS/Components/BitcoinCalculatorBlock/BitcoinCalculatorBlock.tsx","webpack://vaneckreact/./ReactUS/Components/BitcoinCalculatorBlock/useBitcoinCalculatorBlock.tsx","webpack://vaneckreact/./ReactUS/core/customHooks/useAutoScollUp.tsx","webpack://vaneckreact/./ReactUS/services/fetchDataService.tsx"],"sourcesContent":["import HTMLReactParser from \"html-react-parser\";\r\nimport React, { useEffect, useRef } from \"react\";\r\n\r\nconst isTouchDevice = \"ontouchstart\" in window || navigator.maxTouchPoints > 0;\r\n\r\nexport type TooltipItem = {\r\n  Heading?: string;\r\n  Text: string;\r\n};\r\n\r\ndeclare global {\r\n  interface Window {\r\n    $: Function | any;\r\n    clearTooltips?: Function[]\r\n  }\r\n}\r\n\r\nexport const Tooltip = ({ tooltipItem }: { tooltipItem: TooltipItem }) => {\r\n  const { Text, Heading } = tooltipItem;\r\n  const tooltipIconRef = useRef<HTMLSpanElement | null>(null);\r\n  const tooltipContentRef = useRef<HTMLDivElement | null>(null);\r\n\r\n  useEffect(() => {\r\n    if (tooltipIconRef.current && tooltipContentRef.current) {\r\n      const $ele = window.$(tooltipIconRef.current),\r\n        content = tooltipContentRef.current.innerHTML;\r\n\r\n      const containerElements = $ele.closest(\".popover-root-container\");\r\n      const containerElement =\r\n        containerElements.length > 0 ? containerElements[0] : \"body\";\r\n\r\n      const trigger = isTouchDevice ? \"click\" : \"hover\";\r\n\r\n      $ele.popover({\r\n        html: true,\r\n        trigger: trigger,\r\n        container: containerElement,\r\n        content: function () {\r\n          return content;\r\n        },\r\n        popperConfig: {\r\n          placement: \"right\",\r\n        },\r\n      });\r\n\r\n      const clickEventListener = (e: MouseEvent) => {\r\n        $ele.popover(\"hide\");\r\n        document.removeEventListener(\"click\", clickEventListener);\r\n      };\r\n      if (isTouchDevice) {\r\n        $ele.on(\"shown.bs.popover\", () => {\r\n          document.addEventListener(\"click\", clickEventListener);\r\n        });\r\n\r\n        $ele.on(\"hidden.bs.popover\", () => {\r\n          document.removeEventListener(\"click\", clickEventListener);\r\n        });\r\n      }\r\n\r\n    }\r\n  }, []);\r\n\r\n  return (\r\n    <>\r\n      <TootipIcon ref={tooltipIconRef} />\r\n      <div\r\n        className=\"subscription-tooltip-content\"\r\n        ref={tooltipContentRef}\r\n        style={{ display: \"none\" }}\r\n      >\r\n        <div className=\"fund-explorer-block w-100\">\r\n          {Heading && <h5>{HTMLReactParser(Heading)}</h5>}\r\n          {HTMLReactParser(Text)}\r\n        </div>\r\n      </div>\r\n    </>\r\n  );\r\n};\r\n\r\nconst TootipIcon = React.forwardRef<HTMLSpanElement>((props, ref) => {\r\n  return (\r\n    <span ref={ref} className=\"more-info-icon-svg\">\r\n      <svg\r\n        width=\"15px\"\r\n        height=\"15px\"\r\n        viewBox=\"0 0 15 15\"\r\n        version=\"1.1\"\r\n        xmlns=\"http://www.w3.org/2000/svg\"\r\n      >\r\n        <g\r\n          id=\"Fund-Explorer\"\r\n          stroke=\"none\"\r\n          strokeWidth=\"1\"\r\n          fill=\"none\"\r\n          fillRule=\"evenodd\"\r\n        >\r\n          <g\r\n            id=\"Utility_Screener_Default\"\r\n            transform=\"translate(-353.000000, -570.000000)\"\r\n          >\r\n            <g\r\n              id=\"More-Info-Icon\"\r\n              transform=\"translate(353.000000, 570.000000)\"\r\n            >\r\n              <circle\r\n                id=\"Oval\"\r\n                stroke=\"#17468F\"\r\n                strokeWidth=\"1.25\"\r\n                cx=\"7.5\"\r\n                cy=\"7.5\"\r\n                r=\"6.875\"\r\n              ></circle>\r\n              <path\r\n                d=\"M7.50549316,5.35949707 C8.27087402,5.35949707 8.65356445,5.04455566 8.65356445,4.41467285 C8.65356445,4.09973145 8.56201172,3.86169434 8.37890625,3.70056152 C8.19580078,3.53942871 7.90466309,3.4588623 7.50549316,3.4588623 C7.10632324,3.4588623 6.8170166,3.53759766 6.63757324,3.69506836 C6.45812988,3.85253906 6.3684082,4.09240723 6.3684082,4.41467285 C6.3684082,5.04455566 6.74743652,5.35949707 7.50549316,5.35949707 Z M8.57116699,11.9637451 L8.57116699,5.96374512 L6.42333984,5.96374512 L6.42333984,11.9637451 L8.57116699,11.9637451 Z\"\r\n                id=\"i\"\r\n                fill=\"#17468F\"\r\n                fillRule=\"nonzero\"\r\n                transform=\"translate(7.510986, 7.711304) scale(-1, 1) translate(-7.510986, -7.711304) \"\r\n              ></path>\r\n            </g>\r\n          </g>\r\n        </g>\r\n      </svg>\r\n    </span>\r\n  );\r\n});\r\n","import { useState } from \"react\";\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faEquals, faXmark } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { Tooltip } from \"../../blocks/Tooltips\";\r\nimport { BitcoinCalculatorViewModel } from \"./useBitcoinCalculatorBlock\";\r\nimport { IUserInputs, MappedSelectInputs } from \"./BitcoinCalculatorInnerBlock\";\r\n\r\ninterface InputOptions {\r\n    debtGrowthRate: number[];\r\n    acquisitionPrice: number[];\r\n    bitcoinGrowthRate: number[];\r\n    acquiredBitcoin: number[];\r\n}\r\n\r\ninterface InputStatus {\r\n    debtGrowthRate: boolean;\r\n    acquisitionPrice: boolean;\r\n    bitcoinGrowthRate: boolean;\r\n    acquiredBitcoin: boolean;\r\n}\r\n\r\ninterface ResetDropdownText {\r\n    [key: string]: string;\r\n}[]\r\n\r\nconst UserInputForm = (props: { handleCalculation: (inputs: IUserInputs) => void, viewModel: BitcoinCalculatorViewModel, inputDetails: MappedSelectInputs, initialInputs: IUserInputs }) => {\r\n    const { handleCalculation, viewModel, inputDetails, initialInputs } = props;\r\n\r\n    let initialInputStatus: InputStatus = {\r\n        debtGrowthRate: false,\r\n        acquisitionPrice: false,\r\n        bitcoinGrowthRate: false,\r\n        acquiredBitcoin: false\r\n    };\r\n\r\n    const [inputs, setInputs] = useState<IUserInputs>(initialInputs);\r\n\r\n    const [inputStatus, setInputStatus] = useState<InputStatus>(initialInputStatus);\r\n    const isFormActive = Object.values(inputStatus).some((value) => value);\r\n\r\n    let inputOptions: InputOptions = {\r\n        debtGrowthRate: [],\r\n        acquisitionPrice: [],\r\n        bitcoinGrowthRate: [],\r\n        acquiredBitcoin: []\r\n    };\r\n    for (let i = inputDetails.DebtCAGR.StartValue; i <= inputDetails.DebtCAGR.EndValue; i += inputDetails.DebtCAGR.Interval) { inputOptions.debtGrowthRate.push(Math.round(i * 10) / 1000) };\r\n    for (let i = inputDetails.BTCAcquisitionPrice.StartValue; i <= inputDetails.BTCAcquisitionPrice.EndValue; i += inputDetails.BTCAcquisitionPrice.Interval) { inputOptions.acquisitionPrice.push(i) };\r\n    for (let i = inputDetails.BTCCAGR.StartValue; i <= inputDetails.BTCCAGR.EndValue; i += inputDetails.BTCCAGR.Interval) { inputOptions.bitcoinGrowthRate.push(Math.round(i * 10) / 1000) };\r\n    for (let i = inputDetails.TotalAcquiredBTC.StartValue; i <= inputDetails.TotalAcquiredBTC.EndValue; i += inputDetails.TotalAcquiredBTC.Interval) { inputOptions.acquiredBitcoin.push(i) };\r\n\r\n    let debtGrowthPlTxt = inputDetails.DebtCAGR.PlaceholderText;\r\n    let acqPricePlTxt = inputDetails.BTCAcquisitionPrice.PlaceholderText;\r\n    let btcGrowthPlTxt = inputDetails.BTCCAGR.PlaceholderText;\r\n    let acqBtcPlTxt = inputDetails.TotalAcquiredBTC.PlaceholderText;\r\n\r\n    const resetDropdownText: ResetDropdownText = {\r\n        debtGrowthRateButton: `${initialInputs.debtGrowthRate * 100}%${debtGrowthPlTxt && `<span class=\"text-util-md text-muted\" > ${debtGrowthPlTxt}</span>`}`,\r\n        acquisitionPriceButton: `$${initialInputs.acquisitionPrice / 1000}K${acqPricePlTxt && `<span class=\"text-util-md text-muted\" > ${acqPricePlTxt}</span>`}`,\r\n        bitcoinGrowthRateButton: `${initialInputs.bitcoinGrowthRate * 100}%${btcGrowthPlTxt && `<span class=\"text-util-md text-muted\" > ${btcGrowthPlTxt}</span>`}`,\r\n        acquiredBitcoinButton: `${initialInputs.acquiredBitcoin / 1000000}M${acqBtcPlTxt && `<span class=\"text-util-md text-muted\" > ${acqBtcPlTxt}</span>`}`,     \r\n    };\r\n\r\n    const handleDropdownClick = (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => {\r\n        const target = e.target as HTMLButtonElement;\r\n\r\n        // Replace dropdown button text and value with text and value of the clicked button\r\n        (document.querySelectorAll(`#${target.dataset.targetButton}`)[0] as HTMLButtonElement).dataset.value = target.value;\r\n        document.querySelectorAll(`#${target.dataset.targetButton} .dropdown__label`)[0].innerHTML = target.textContent as string;\r\n\r\n        // Update input state\r\n        setInputs({ ...inputs, [target.name]: parseFloat(target.value) });\r\n        setInputStatus({ ...inputStatus, [target.name]: true });\r\n    };\r\n\r\n    const handleSubmit = (e: React.MouseEvent) => {\r\n        e.preventDefault();\r\n        handleCalculation(inputs);\r\n    };\r\n\r\n    const handleReset = (e: React.MouseEvent) => {\r\n        e.preventDefault();\r\n        //Reset dropdown text\r\n        document.querySelectorAll(`#bitcoin-calculator .dropdown__button`).forEach((element: Element) => {\r\n            element.querySelectorAll(\".dropdown__label\")[0].innerHTML = resetDropdownText[element.id];\r\n        });\r\n\r\n        //Reset input state\r\n        setInputs(initialInputs);\r\n        handleCalculation(initialInputs);\r\n    };\r\n\r\n    const debt2049 = (viewModel.StartingUSDebtValue * 1000000000000 * (1 + inputs.debtGrowthRate) ** 24) / 1000000000000;\r\n\r\n    let years: number[] = [];\r\n    for (let i = 2025; i < 2050; i++) { years.push(i); }\r\n\r\n    let acquiredBtc = inputs.acquiredBitcoin;\r\n    let btcPrice2025 = inputs.acquisitionPrice;\r\n    let btcGrowth = inputs.bitcoinGrowthRate;\r\n    let btcCosts: number[] = [];\r\n    for (let i = 0; i < 5; i++) { btcCosts.push(acquiredBtc * 0.2 * btcPrice2025 * (1 + btcGrowth) ** i / 1000000000); }\r\n    for (let i = btcCosts.length; i < years.length; i++) { btcCosts.push(0); }\r\n\r\n    let cumulativeBal = [btcCosts[0]];\r\n    for (let i = 1; i < years.length; i++) { cumulativeBal.push(cumulativeBal[i - 1] * (1 + btcGrowth) + btcCosts[i]); }\r\n\r\n    let btcTreasury = years.map((el, i) => cumulativeBal[i] / 1000);\r\n    let btcTreasury2049 = btcTreasury[btcTreasury.length - 1];\r\n    let reservePer2049 = Math.round(btcTreasury2049 * 100 / debt2049);\r\n\r\n    return (\r\n        <form id=\"bitcoin-calculator\">\r\n            <section>\r\n                <div className=\"form-group-wrapper\" >\r\n                    <div>\r\n                        <h2 className=\"d-none d-md-block\">{viewModel.DebtFormHeading}</h2>\r\n                        <h3 className=\"d-md-none\">{viewModel.DebtFormHeading}</h3>\r\n                    </div>\r\n                    <div className=\"debt-form-wrapper\">\r\n                        <div className=\"form-operator-wrapper\">\r\n                            <div className=\"form-element-wrapper form-element-wrapper-input\">\r\n                                <div className=\"element-label text-util-md\">{viewModel.StartingUSDebtLabel} {<Tooltip tooltipItem={{ Text: viewModel.StartingUSDebtTooltipText }} />}</div>\r\n                                <div className=\"h2\">${viewModel.StartingUSDebtValue} Trillion USD</div>\r\n                            </div>\r\n                            <div className=\"form-operator\"><FontAwesomeIcon icon={faXmark} size=\"2xl\" /></div>\r\n                        </div>\r\n                        <div className=\"form-operator-wrapper\">\r\n                            <div className=\"form-element-wrapper\">\r\n                                <div className=\"element-label text-util-md\">{inputDetails.DebtCAGR.InputLabel} {<Tooltip tooltipItem={{ Text: inputDetails.DebtCAGR.TooltipText }} />}</div>\r\n                                <DropDownSelect name={\"debtGrowthRate\"} value={initialInputs.debtGrowthRate} prefix=\"\" suffix={\"%\"} multiplierBug={false} displayMultiplier={100} displayDivider={null} placeholderText={debtGrowthPlTxt} selected={inputs.debtGrowthRate} options={inputOptions.debtGrowthRate} handleDropdownClick={handleDropdownClick} />\r\n                            </div>\r\n                            <div className=\"form-operator\"><FontAwesomeIcon icon={faEquals} size=\"2xl\" /></div>\r\n                        </div>\r\n{/*                        <div className=\"form-operator-wrapper-output\">     */}                      \r\n                            <div className=\"form-element-wrapper form-element-wrapper-output\">\r\n                            <div className=\"element-label text-util-md\">{viewModel.USDebtOutputLabel} {<Tooltip tooltipItem={{ Text: viewModel.USDebtOutputTooltipText }} />}</div>\r\n                                <div className=\"h2\">${debt2049 >= 1 ? `${debt2049.toLocaleString(\"en-US\", { maximumFractionDigits: 0 })} Trillion` : `${(debt2049*1000).toLocaleString(\"en-US\", { maximumFractionDigits: 0 }) } Billion`} USD</div>\r\n                            </div>\r\n{/*                        </div>*/}\r\n                    </div>\r\n                </div>\r\n                <div className=\"form-group-wrapper\">\r\n                    <div>\r\n                        <h2 className=\"d-none d-md-block\">{viewModel.BitcoinFormHeading}</h2>\r\n                        <h3 className=\"d-md-none\">{viewModel.BitcoinFormHeading}</h3>\r\n                    </div>\r\n                    <div className=\"btc-form-wrapper\">\r\n                        <div className=\"form-operator-wrapper\">\r\n                            <div className=\"form-element-wrapper\">\r\n                                <div className=\"element-label text-util-md\">{inputDetails.BTCAcquisitionPrice.InputLabel} {<Tooltip tooltipItem={{ Text: inputDetails.BTCAcquisitionPrice.TooltipText }} />}</div>\r\n                                <DropDownSelect name={\"acquisitionPrice\"} value={initialInputs.acquisitionPrice} prefix={\"$\"} suffix={\"K\"} multiplierBug={false} displayMultiplier={null} displayDivider={1000} placeholderText={acqPricePlTxt} selected={inputs.acquisitionPrice} options={inputOptions.acquisitionPrice} handleDropdownClick={handleDropdownClick} />\r\n                            </div>\r\n                            <div className=\"form-operator\"><FontAwesomeIcon icon={faXmark} size=\"2xl\" /></div>\r\n                        </div>\r\n                        <div className=\"form-operator-wrapper\">                            \r\n                            <div className=\"form-element-wrapper\">\r\n                                <div className=\"element-label text-util-md\">{inputDetails.BTCCAGR.InputLabel} {<Tooltip tooltipItem={{ Text: inputDetails.BTCCAGR.TooltipText }} />}</div>\r\n                                <DropDownSelect name={\"bitcoinGrowthRate\"} value={initialInputs.bitcoinGrowthRate} prefix={\"\"} suffix={\"%\"} multiplierBug={true} displayMultiplier={100} displayDivider={null} placeholderText={btcGrowthPlTxt} selected={inputs.bitcoinGrowthRate} options={inputOptions.bitcoinGrowthRate} handleDropdownClick={handleDropdownClick} />                          \r\n                            </div>\r\n                            <div className=\"form-operator\"><FontAwesomeIcon icon={faXmark} size=\"2xl\" /></div>\r\n                        </div>\r\n                        <div className=\"form-operator-wrapper\">                          \r\n                            <div className=\"form-element-wrapper\">\r\n                                <div className=\"element-label text-util-md\">{inputDetails.TotalAcquiredBTC.InputLabel} {<Tooltip tooltipItem={{ Text: inputDetails.TotalAcquiredBTC.TooltipText }} />}</div>\r\n                                <DropDownSelect name={\"acquiredBitcoin\"} value={initialInputs.acquiredBitcoin} prefix={\"\"} suffix={\"M\"} multiplierBug={false} displayMultiplier={null} displayDivider={1000000} placeholderText={acqBtcPlTxt} selected={inputs.acquiredBitcoin} options={inputOptions.acquiredBitcoin} handleDropdownClick={handleDropdownClick} />                                \r\n                            </div>\r\n                            <div className=\"form-operator\"><FontAwesomeIcon icon={faEquals} size=\"2xl\" /></div>\r\n                        </div>\r\n                        <div className=\"form-operator-wrapper-output\">\r\n                            <div className=\"form-element-wrapper form-element-wrapper-output border-primary\">\r\n                                <div className=\"btc-output-one border-primary\">\r\n                                    <div className=\"element-label text-util-md\">{viewModel.BTCTreasuryOutputLabel} {<Tooltip tooltipItem={{ Text: viewModel.BTCTreasuryOutputTooltipText }} />}</div>\r\n                                    <div className=\"h2\">${btcTreasury2049 >= 1 ? `${btcTreasury2049.toLocaleString(\"en-US\", { maximumFractionDigits: 0 })} Trillion` : `${(btcTreasury2049 * 1000).toLocaleString(\"en-US\", { maximumFractionDigits: 0 })} Billion`} USD</div>\r\n                                </div>\r\n                                <div className=\"btc-output-two\">\r\n                                    <div className=\"element-label text-util-md\">{viewModel.PercentageOfDebtLabel}</div>\r\n                                    <div className=\"h2\">{reservePer2049}%</div>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div className=\"form-button-wrapper\" >\r\n                    <button onClick={handleSubmit} data-ve-event=\"btc calculator engagement\" data-ve-category=\"bitcoin calculator\" data-ve-action=\"click|bitcoin|visualize-results\" type=\"button\" className={`btn ${isFormActive ? \"btn-primary\" : \"btn-inactive\"}`} disabled={!isFormActive}>{viewModel.SubmitButtonText}</button>\r\n                    <button onClick={handleReset} data-ve-event=\"btc calculator engagement\" data-ve-category=\"bitcoin calculator\" data-ve-action=\"click|bitcoin|reset\" type=\"button\" className={`btn ${isFormActive ? \"btn-dark\" : \"btn-inactive\"}`} disabled={!isFormActive}>{viewModel.ResetButtonText}</button>\r\n                </div>\r\n            </section>\r\n        </form>\r\n    );\r\n};\r\n\r\nexport default UserInputForm;\r\n\r\nconst DropDownSelect = (props: { name: string, value: number, prefix: string, suffix: string, multiplierBug: boolean, displayMultiplier: number | null, displayDivider: number | null, placeholderText: string, selected: number, options: number[], handleDropdownClick: (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void }) => {\r\n    const { name, value, prefix, suffix, multiplierBug, displayMultiplier, displayDivider, placeholderText, selected, options, handleDropdownClick } = props;\r\n\r\n    const displayValue = (value: number) => {\r\n        return displayMultiplier ? multiplierBug ? Math.round(value * displayMultiplier * 10) / 10  : value * displayMultiplier : displayDivider ? value / displayDivider : value\r\n    }\r\n\r\n    let gtmName = \"\";\r\n\r\n    switch (name) {\r\n        case \"debtGrowthRate\":\r\n            gtmName = \"us debt|annual-compound-interest\";\r\n            break;\r\n        case \"acquisitionPrice\":\r\n            gtmName = \"treasury|acquisition-price\";\r\n            break;\r\n        case \"bitcoinGrowthRate\":\r\n            gtmName = \"treasury|annual-compound-interest\";\r\n            break;\r\n        case \"acquiredBitcoin\":\r\n            gtmName = \"treasury|btc-acquired\";\r\n            break;\r\n        default:\r\n            gtmName = \"\";\r\n    } \r\n\r\n    return <div className=\"dropdown\">\r\n        <button id={`${name}Button`} className=\"dropdown__button text-util-sm mb-3 dropdown__button-default\" type=\"button\" aria-haspopup=\"true\" aria-expanded=\"false\" data-value={value} data-toggle=\"dropdown\">\r\n            <span className=\"dropdown__label\">{prefix}{displayValue(value)}{suffix}\r\n                {placeholderText && <span className=\"text-util-md text-muted\"> {placeholderText}</span>}\r\n            </span>\r\n            <svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"chevron-down\" className=\"svg-inline--fa fa-chevron-down fa-w-16 fa-2x dropdown__icon dropdown__icon-default\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 18 18\"><path fill=\"currentColor\" d=\"M2.26 4.88a.75.75 0 00-.54.21.75.75 0 000 1.07l6.75 6.75a.75.75 0 001.06 0l6.75-6.75a.75.75 0 000-1.07.75.75 0 00-1.06 0L9 11.31 2.78 5.1a.75.75 0 00-.52-.21z\"></path></svg>\r\n        </button>\r\n        <div className=\"dropdown-menu dropdown__menu text-util-sm\" role=\"menu\">\r\n            {options.map((option, key) => {\r\n                return <button key={key} onClick={handleDropdownClick} data-target-button={`${name}Button`} name={name} data-ve-event=\"btc calculator engagement\" data-ve-category=\"bitcoin calculator\" data-ve-action={`click|bitcoin|${gtmName}-${prefix}${displayValue(option)}${suffix}`} className={`dropdown-item dropdown__item text-util-sm ${selected === option ? \"selected\" : \"\"}`} role=\"menuitem\" type=\"button\" value={option}>{prefix}{displayValue(option)}{suffix}</button>\r\n            })}\r\n        </div>\r\n    </div>\r\n}","import Highcharts from \"highcharts\";\r\nimport { useEffect } from \"react\";\r\nimport { BitcoinCalculatorViewModel } from \"./useBitcoinCalculatorBlock\";\r\nimport { CustomJQueryElement } from \"./BitcoinCalculatorInnerBlock\";\r\n\r\nexport interface IGraphData  {\r\n    Years: number[];\r\n    USDebt: number[];\r\n    BTCTreasuryValue: number[];\r\n    PercentageofDebt: number[];\r\n}\r\n\r\ninterface CustomSeries extends Highcharts.Series {\r\n    tooltipOptions?: { valuePrefix: string, valueSuffix: string; valueDecimals: number; }\r\n}\r\n\r\ndeclare global {\r\n    interface Window {\r\n        BitcoinCalculatorBlockChart: Highcharts.Chart\r\n    }\r\n}\r\n\r\nconst Graph = (props: { data: IGraphData | null, viewModel: BitcoinCalculatorViewModel }) => {\r\n    const { data, viewModel } = props;\r\n\r\n    let chartContainer = \"debt-bitcoin-reserve-chart\";\r\n\r\n    Highcharts.setOptions({\r\n        lang: {\r\n            decimalPoint: \".\",\r\n            thousandsSep: \",\",\r\n        },\r\n    });\r\n\r\n    var dataColor = \"#000\";\r\n    var shadedColor = \"#141414\";\r\n    var gridLineColor = \"#B8B8B8\";\r\n\r\n    let isLogarithmic = data?.PercentageofDebt.some((percent) =>  percent > 50 );\r\n\r\n    let chartOptions: Highcharts.Options = {\r\n        chart: {\r\n            backgroundColor: 'transparent',\r\n        },\r\n        exporting: { enabled: false },\r\n        title: { text: undefined },\r\n        xAxis: {\r\n            title: {\r\n                text: viewModel.XAxisText\r\n            },\r\n            labels: {\r\n                style: {\r\n                    fontFamily: \"Open Sans, Arial\",\r\n                    color: dataColor,\r\n                    fontSize: \"15px\",\r\n                    fontWeight: \"bold\",\r\n                    fontStyle: \"normal\"\r\n                },\r\n                autoRotation: [-90],\r\n            },\r\n            lineColor: gridLineColor,\r\n            tickInterval: 1,\r\n        },\r\n        yAxis: [{\r\n            title: {\r\n                text: viewModel.LeftYAxisText,\r\n                style: {\r\n                    fontFamily: \"Open Sans, Arial\",\r\n                    color: dataColor,\r\n                    fontSize: \"15px\",\r\n                    fontWeight: \"bold\",\r\n                    fontStyle: \"normal\",\r\n                    textAlign: \"center\"\r\n                }\r\n            },\r\n            gridLineColor: gridLineColor,\r\n            gridLineWidth: 1,\r\n            labels: {\r\n                enabled: true,\r\n                style: {\r\n                    fontFamily: \"Open Sans, Arial\",\r\n                    color: dataColor,\r\n                    fontSize: \"15px\",\r\n                    fontWeight: \"bold\",\r\n                    fontStyle: \"normal\"\r\n                },\r\n                format: \"{value:,.0f}\"\r\n            },\r\n        },\r\n        {\r\n            title: {\r\n                text: viewModel.RightYAxisText,\r\n                style: {\r\n                    fontFamily: \"Open Sans, Arial\",\r\n                    color: dataColor,\r\n                    fontSize: \"15px\",\r\n                    fontWeight: \"bold\",\r\n                    fontStyle: \"normal\",\r\n                    textAlign: \"center\"\r\n                }\r\n            },\r\n            gridLineColor: gridLineColor,\r\n            gridLineWidth: 0.5,\r\n            opposite: true,\r\n            labels: {\r\n                enabled: true,\r\n                style: {\r\n                    fontFamily: \"Open Sans, Arial\",\r\n                    color: dataColor,\r\n                    fontSize: \"15px\",\r\n                    fontWeight: \"bold\",\r\n                    fontStyle: \"normal\"\r\n                },\r\n                //format: \"{value:,.0f}\",\r\n                formatter: function() {\r\n                    return `${this.value.toLocaleString(\"en-US\", { minimumSignificantDigits: 1 })}`\r\n                }\r\n            },\r\n            type: isLogarithmic ? 'logarithmic' : 'linear',\r\n            tickInterval: isLogarithmic ? 1 : undefined,\r\n            max: isLogarithmic ? undefined : 100,\r\n        }],\r\n        legend: {\r\n            enabled: true,\r\n            align: \"center\",\r\n            verticalAlign: \"bottom\",\r\n            itemMarginBottom: 10,\r\n            x: 0,\r\n            symbolRadius: 2,\r\n            itemStyle: {\r\n                fontFamily: \"Open Sans, Arial\",\r\n                color: shadedColor,\r\n                fontSize: \"15px\",\r\n                fontWeight: \"bold\",\r\n                fontStyle: \"normal\"\r\n            },\r\n            itemHoverStyle: { color: dataColor },\r\n        },\r\n        credits: {\r\n            enabled: false\r\n        },\r\n        responsive: {\r\n            rules: [\r\n                {\r\n                    condition: {\r\n                        maxWidth: 410\r\n                    },\r\n                    chartOptions: {\r\n                        legend: {\r\n                            itemStyle: {\r\n                                fontSize: \"12px\",\r\n                                textOverflow: \"undefined\",\r\n                            }\r\n                        },\r\n                        xAxis: {\r\n                            labels: {\r\n                                style: {\r\n                                    fontSize: \"12px\",\r\n                                }\r\n                            }\r\n                        },\r\n                        yAxis: [{\r\n                            title: {\r\n                                style: {\r\n                                    fontSize: \"12px\",\r\n                                }\r\n                            },\r\n                            labels: {\r\n                                style: {\r\n                                    fontSize: \"12px\",\r\n                                }\r\n                            }\r\n                        },\r\n                        {\r\n                            title: {\r\n                                style: {\r\n                                    fontSize: \"12px\",\r\n                                }\r\n                            },\r\n                            labels: {\r\n                                style: {\r\n                                    fontSize: \"12px\",\r\n                                }\r\n                            }\r\n                        }]\r\n                    }\r\n                }\r\n            ]\r\n        },\r\n        series: viewModel.ChartSeries.map((series) => {\r\n            return {\r\n                type: series.ChartType,\r\n                yAxis: series.RightYAxis ? 1 : 0,\r\n                data: data?.Years.map((year, index) => {\r\n                    let dataSeries = series.Series.replaceAll(\" \", \"\") as keyof IGraphData;\r\n/*                    if (index == data.Years.length - 1) {\r\n                        let pointFormat = series.Series.replaceAll(\" \", \"\") == \"PercentageofDebt\" ? \"{point.y:.1f}%\" : data[dataSeries][index] >= 1 ? \"${point.y:.1f}T\" : \"${point.y:.1f}B\";\r\n                        return {\r\n                            x: year, y: data[dataSeries][index], dataLabels: { enabled: true, format: `{series.name}: ${pointFormat}`, useHtml: true }\r\n                        } \r\n                    }*/\r\n                    return [year, data[dataSeries][index]]\r\n                }),\r\n                name: series.SeriesName,\r\n                color: series.SeriesColor,\r\n                tooltip: {\r\n                    //pointFormat: series.TooltipFormat,\r\n                    valuePrefix: series.TooltipPrefix,\r\n                    valueSuffix: series.TooltipSuffix,\r\n                    valueDecimals: series.TooltipDecimals,\r\n                }\r\n            }\r\n        }) as Highcharts.SeriesOptionsType[],\r\n        tooltip: {\r\n            formatter: function (this, tooltip) {\r\n                let tooltipPointWithSuffix = \"\";\r\n                let pointFormatter = (point: number, decimals?: number) => {\r\n                    if (decimals != undefined) { return point.toLocaleString(\"en-US\", { maximumFractionDigits: decimals, minimumFractionDigits: decimals })};\r\n\r\n                    return point.toLocaleString(\"en-US\", { maximumFractionDigits: (this.series as CustomSeries).tooltipOptions?.valueDecimals, minimumFractionDigits: (this.series as CustomSeries).tooltipOptions?.valueDecimals });\r\n                };\r\n\r\n                if (this.point.y) { tooltipPointWithSuffix = this.series.name.includes(\"% of Debt\") ? `${pointFormatter(this.point.y)}` : this.point.y >= 1 ? `${pointFormatter(this.point.y)}T` : `${pointFormatter(this.point.y*1000, 0)}B`; }\r\n\r\n                return `${this.point.series.name}: ${(this.series as CustomSeries).tooltipOptions?.valuePrefix}${tooltipPointWithSuffix}${(this.series as CustomSeries).tooltipOptions?.valueSuffix}`\r\n            }\r\n        },\r\n        plotOptions: {\r\n            column: {\r\n                dataLabels: {\r\n                    useHTML: true\r\n                }\r\n            },\r\n            line: {\r\n                dataLabels: {\r\n                    useHTML: true\r\n                }\r\n            }\r\n        }\r\n    };\r\n\r\n    useEffect(() => {\r\n        const chart = Highcharts.chart(chartContainer, chartOptions);\r\n\r\n        window.BitcoinCalculatorBlockChart = chart;\r\n\r\n\r\n        let debtGrowthRate = (document.getElementById(`debtGrowthRateButton`) as HTMLButtonElement)?.dataset.value;\r\n        let acquisitionPrice = (document.getElementById(`acquisitionPriceButton`) as HTMLButtonElement)?.dataset.value;\r\n        let bitcoinGrowthRate = (document.getElementById(`bitcoinGrowthRateButton`) as HTMLButtonElement)?.dataset.value;\r\n        let acquiredBitcoin = (document.getElementById(`acquiredBitcoinButton`) as HTMLButtonElement)?.dataset.value;\r\n\r\n\r\n        $('.share-widget__action.copy-results').each(function () {\r\n            const $button = $(this) as CustomJQueryElement;\r\n            const defaultTitle = 'Copy Link To Your Results';\r\n\r\n            $button.tooltip({\r\n                title: defaultTitle,\r\n                placement: 'bottom',\r\n                trigger: 'hover'\r\n            });\r\n        });\r\n\r\n        $(document).on('click', '.share-widget__action.copy-results', function (e) {\r\n            const $button = $(this) as CustomJQueryElement;\r\n            const urlString = $(location).attr('href') ?? \"\";\r\n            const url = new URL(urlString);\r\n            url.searchParams.set('debtCAGR', `${debtGrowthRate}`);\r\n            url.searchParams.set('btcPrice', `${acquisitionPrice}`);\r\n            url.searchParams.set('btcCAGR', `${bitcoinGrowthRate}`);\r\n            url.searchParams.set('btcAcq', `${acquiredBitcoin}`);\r\n\r\n            navigator.clipboard.writeText(url.toString()).then(() => {\r\n                $button.tooltip('dispose');\r\n                $button.tooltip({\r\n                    title: 'URL copied',\r\n                    placement: 'top',\r\n                    trigger: 'manual'\r\n                });\r\n\r\n                $button.tooltip('show');\r\n\r\n                setTimeout(() => {\r\n                    $button.tooltip('hide');\r\n                    $button.tooltip('dispose');\r\n\r\n                    $button.tooltip({\r\n                        title: 'Copy Link To Your Results',\r\n                        placement: 'bottom',\r\n                        trigger: 'hover'\r\n                    });\r\n                }, 2000);\r\n            });\r\n        });\r\n\r\n        return () => {\r\n            chart.destroy();\r\n        }\r\n    }, [data]);\r\n\r\n    return <>\r\n        <div className=\"data-label-desktop d-none d-lg-flex mb-5\">\r\n            {viewModel.FinalPointsDataLabelTitle && <div><strong>{viewModel.FinalPointsDataLabelTitle}</strong></div>}\r\n            {data && viewModel.ChartSeries.map((series, index) => {\r\n                let dataSeries = series.Series.replaceAll(\" \", \"\") as keyof IGraphData;\r\n                let finalPoint = data[dataSeries][data.Years.length - 1];\r\n                let pointFormatter = (point: number, decimals?: number) => {\r\n                    if (decimals != undefined) { return point.toLocaleString(\"en-US\", { maximumFractionDigits: decimals, minimumFractionDigits: decimals }) }\r\n\r\n                    return point.toLocaleString(\"en-US\", { maximumFractionDigits: 1, minimumFractionDigits: 1 })\r\n                };\r\n\r\n                let pointWithSuffix = series.Series.replaceAll(\" \", \"\") == \"PercentageofDebt\" ? `${pointFormatter(finalPoint)}` : data[dataSeries][data.Years.length - 1] >= 1 ? `${pointFormatter(finalPoint)}T` : `${pointFormatter(finalPoint * 1000, 0)}B`;\r\n\r\n                return <div key={index} className=\"data-label-output\">{series.SeriesName}: <strong>{series.TooltipPrefix}{pointWithSuffix}{series.TooltipSuffix}</strong></div>\r\n\r\n            })}\r\n            <button className=\"share-widget__action share-widget__action-inverted mb-0 text-util-md copy-results\" type=\"button\" role=\"menuitem\" data-original-title=\"\" title=\"\">\r\n                <svg width=\"40\" height=\"40\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className=\"share-widget__action-icon\">\r\n                    <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M25.5286 31H6.47139C3.44962 31 1 28.5504 1 25.5286V6.47139C1 3.44962 3.44962 1 6.47139 1H25.5286C28.5504 1 31 3.44962 31 6.47139V25.5286C31 28.5504 28.5504 31 25.5286 31Z\" stroke=\"#001E6D\" strokeWidth=\"2\"></path>\r\n                    <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M10.0748 16.7538C8.80961 17.9942 8.80961 20.0058 10.0748 21.2462C11.34 22.4865 13.3919 22.4865 14.6571 21.2462L16.3265 19.6094C16.7209 19.2228 17.3603 19.2228 17.7547 19.6094C18.1491 19.9961 18.1491 20.6229 17.7547 21.0096L16.0852 22.6463C14.0313 24.6599 10.7006 24.6599 8.64666 22.6463C6.5927 20.6326 6.5927 17.3674 8.64666 15.3537L10.3161 13.717C10.7105 13.3304 11.3499 13.3304 11.7443 13.717C12.1387 14.1036 12.1387 14.7305 11.7443 15.1171L10.0748 16.7538ZM12.359 19.3534C11.9646 18.9668 11.9646 18.34 12.359 17.9533L18.0158 12.4075C18.4102 12.0209 19.0496 12.0209 19.444 12.4075C19.8384 12.7941 19.8384 13.421 19.444 13.8076L13.7871 19.3535C13.3928 19.7401 12.7533 19.7401 12.359 19.3534ZM13.6945 10.405C13.3001 10.7916 13.3001 11.4185 13.6945 11.8051C14.0888 12.1917 14.7282 12.1917 15.1226 11.8051L16.7921 10.1684C18.0573 8.92802 20.1091 8.92802 21.3743 10.1684C22.6396 11.4088 22.6396 13.4203 21.3743 14.6607L19.7049 16.2974C19.3105 16.6841 19.3105 17.3109 19.7049 17.6976C20.0992 18.0842 20.7387 18.0842 21.133 17.6976L22.8025 16.0608C24.8565 14.0472 24.8565 10.7819 22.8025 8.76826C20.7486 6.75462 17.4179 6.75462 15.3639 8.76826L13.6945 10.405Z\" fill=\"#fff\"></path>\r\n                </svg>\r\n            </button>\r\n        </div>\r\n        <div className=\"data-label-mobile d-lg-none mb-5\">\r\n            <div>\r\n                {viewModel.FinalPointsDataLabelTitle && <div><strong>{viewModel.FinalPointsDataLabelTitle}</strong></div>}\r\n                {data && viewModel.ChartSeries.map((series, index) => {\r\n                    let dataSeries = series.Series.replaceAll(\" \", \"\") as keyof IGraphData;\r\n                    let finalPoint = data[dataSeries][data.Years.length - 1];\r\n                    let pointFormatter = (point: number, decimals?: number) => {\r\n                        if (decimals != undefined) { return point.toLocaleString(\"en-US\", { maximumFractionDigits: decimals, minimumFractionDigits: decimals }) }\r\n\r\n                        return point.toLocaleString(\"en-US\", { maximumFractionDigits: 1, minimumFractionDigits: 1 })\r\n                    };\r\n\r\n                    let pointWithSuffix = series.Series.replaceAll(\" \", \"\") == \"PercentageofDebt\" ? `${pointFormatter(finalPoint)}` : data[dataSeries][data.Years.length - 1] >= 1 ? `${pointFormatter(finalPoint)}T` : `${pointFormatter(finalPoint * 1000, 0)}B`;\r\n\r\n                    return <div key={index}>{series.SeriesName}: <strong>{series.TooltipPrefix}{pointWithSuffix}{series.TooltipSuffix}</strong></div>\r\n\r\n                })}\r\n            </div>\r\n            <div>\r\n                <button className=\"share-widget__action share-widget__action-inverted mb-0 text-util-md copy-results\" type=\"button\" role=\"menuitem\" data-original-title=\"\" title=\"\">\r\n                    <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className=\"share-widget__action-icon\">\r\n                        <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M25.5286 31H6.47139C3.44962 31 1 28.5504 1 25.5286V6.47139C1 3.44962 3.44962 1 6.47139 1H25.5286C28.5504 1 31 3.44962 31 6.47139V25.5286C31 28.5504 28.5504 31 25.5286 31Z\" stroke=\"#001E6D\" strokeWidth=\"2\"></path>\r\n                        <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M10.0748 16.7538C8.80961 17.9942 8.80961 20.0058 10.0748 21.2462C11.34 22.4865 13.3919 22.4865 14.6571 21.2462L16.3265 19.6094C16.7209 19.2228 17.3603 19.2228 17.7547 19.6094C18.1491 19.9961 18.1491 20.6229 17.7547 21.0096L16.0852 22.6463C14.0313 24.6599 10.7006 24.6599 8.64666 22.6463C6.5927 20.6326 6.5927 17.3674 8.64666 15.3537L10.3161 13.717C10.7105 13.3304 11.3499 13.3304 11.7443 13.717C12.1387 14.1036 12.1387 14.7305 11.7443 15.1171L10.0748 16.7538ZM12.359 19.3534C11.9646 18.9668 11.9646 18.34 12.359 17.9533L18.0158 12.4075C18.4102 12.0209 19.0496 12.0209 19.444 12.4075C19.8384 12.7941 19.8384 13.421 19.444 13.8076L13.7871 19.3535C13.3928 19.7401 12.7533 19.7401 12.359 19.3534ZM13.6945 10.405C13.3001 10.7916 13.3001 11.4185 13.6945 11.8051C14.0888 12.1917 14.7282 12.1917 15.1226 11.8051L16.7921 10.1684C18.0573 8.92802 20.1091 8.92802 21.3743 10.1684C22.6396 11.4088 22.6396 13.4203 21.3743 14.6607L19.7049 16.2974C19.3105 16.6841 19.3105 17.3109 19.7049 17.6976C20.0992 18.0842 20.7387 18.0842 21.133 17.6976L22.8025 16.0608C24.8565 14.0472 24.8565 10.7819 22.8025 8.76826C20.7486 6.75462 17.4179 6.75462 15.3639 8.76826L13.6945 10.405Z\" fill=\"#fff\"></path>\r\n                    </svg>\r\n                </button>\r\n            </div>\r\n        </div>\r\n        <div className=\"chart-container\">\r\n            <div id={chartContainer}>\r\n            </div>\r\n        </div>\r\n    </>;\r\n};\r\n\r\nexport default Graph;","import { useEffect, useState } from \"react\";\r\nimport UserInputForm from \"./UserInputForm\";\r\nimport Graph, { IGraphData } from \"./Graph\";\r\nimport { BitcoinCalculatorViewModel, IBitcoinCalculatorBlockProps, SelectInput } from \"./useBitcoinCalculatorBlock\";\r\nimport HTMLReactParser from \"html-react-parser\";\r\n\r\nexport interface MappedSelectInputs {\r\n    DebtCAGR: SelectInput;\r\n    BTCAcquisitionPrice: SelectInput;\r\n    BTCCAGR: SelectInput;\r\n    TotalAcquiredBTC: SelectInput;\r\n}\r\n\r\nexport interface IUserInputs {\r\n    debtGrowthRate: number;\r\n    acquisitionPrice: number;\r\n    bitcoinGrowthRate: number;\r\n    acquiredBitcoin: number;\r\n}\r\n\r\nexport interface CustomJQueryElement extends JQuery<any> {\r\n    tooltip: Function;\r\n}\r\n\r\nconst BitcoinCalculatorInnerBlock = (props: { bitcoinCalculator: BitcoinCalculatorViewModel, bitcoinCalculatorBlockProps: IBitcoinCalculatorBlockProps }) => {\r\n    const { bitcoinCalculator, bitcoinCalculatorBlockProps } = props;\r\n    const { ContainerCssClass, CssClass, Title, EyebrowText, Text, ChartTitle, Disclosure, BottomText } = bitcoinCalculatorBlockProps;\r\n\r\n    const [graphData, setGraphData] = useState<IGraphData | null>(null);\r\n\r\n    const handleCalculation = (inputs: IUserInputs) => {\r\n        let years: number[] = [];\r\n        for (let i = 2025; i < 2050; i++) { years.push(i); }\r\n\r\n        let debt = [bitcoinCalculator.StartingUSDebtValue]; // in Trillions\r\n        let debtGrowth = inputs.debtGrowthRate;\r\n        for (let i = 1; i < years.length; i++) { debt.push((debt[0] * 10 ** 12 * (1 + debtGrowth) ** i) / 10 ** 12); }\r\n\r\n        let acquiredBtc = inputs.acquiredBitcoin;\r\n        let btcPrice2025 = inputs.acquisitionPrice;\r\n        let btcGrowth = inputs.bitcoinGrowthRate;\r\n        let btcCosts: number[] = [];\r\n        for (let i = 0; i < 5; i++) { btcCosts.push(acquiredBtc * 0.2 * btcPrice2025 * (1 + btcGrowth) ** i / 1000000000); }\r\n        for (let i = btcCosts.length; i < years.length; i++) { btcCosts.push(0); }\r\n\r\n        let cumulativeBal = [btcCosts[0]];\r\n        for (let i = 1; i < years.length; i++) { cumulativeBal.push(cumulativeBal[i - 1] * (1 + btcGrowth) + btcCosts[i]); }\r\n\r\n        let btcTreasury = years.map((el, i) => cumulativeBal[i] / 1000);\r\n        let reserveDebtPer = years.map((el, i) => btcTreasury[i] * 100 / debt[i]);\r\n\r\n        let results: IGraphData = {\r\n            Years: years,\r\n            USDebt: debt,\r\n            BTCTreasuryValue: btcTreasury,\r\n            PercentageofDebt: reserveDebtPer\r\n        };\r\n\r\n        setGraphData(results);\r\n    }\r\n\r\n    //Extract SelectInputs details from viewModel\r\n    let inputDetails: MappedSelectInputs = {\r\n        DebtCAGR: bitcoinCalculator.SelectInputs[0],\r\n        BTCAcquisitionPrice: bitcoinCalculator.SelectInputs[0],\r\n        BTCCAGR: bitcoinCalculator.SelectInputs[0],\r\n        TotalAcquiredBTC: bitcoinCalculator.SelectInputs[0]\r\n    };\r\n\r\n    bitcoinCalculator.SelectInputs.forEach((select) => {\r\n        inputDetails[select.InputType.replaceAll(\" \",\"\") as keyof MappedSelectInputs] = select;\r\n    });\r\n\r\n    const urlParams = new URLSearchParams(window.location.search);\r\n\r\n    let initialInputs: IUserInputs = {\r\n        debtGrowthRate: urlParams.get('debtCAGR') ? Number(urlParams.get('debtCAGR')) : inputDetails.DebtCAGR.PlaceholderValue / 100,\r\n        acquisitionPrice: urlParams.get('btcPrice') ? Number(urlParams.get('btcPrice')) : inputDetails.BTCAcquisitionPrice.PlaceholderValue,\r\n        bitcoinGrowthRate: urlParams.get('btcCAGR') ? Number(urlParams.get('btcCAGR')) : inputDetails.BTCCAGR.PlaceholderValue / 100,\r\n        acquiredBitcoin: urlParams.get('btcAcq') ? Number(urlParams.get('btcAcq')) : inputDetails.TotalAcquiredBTC.PlaceholderValue\r\n    };\r\n\r\n    function sanitiseURL(url: string) {\r\n        url = url ? url : window.location.href;\r\n        const splitURL = url.split(\"?\");\r\n\r\n        //if the url does not have a query string\r\n        if (splitURL.length == 1) return url;\r\n\r\n        const safeURL = splitURL[0];\r\n\r\n        return safeURL;\r\n    }\r\n\r\n    const loadTwitterBlock = () => {\r\n        const twitterBlocks = $('#twitter');\r\n        if (twitterBlocks) {\r\n            twitterBlocks.each(function () {\r\n                var createdUrl = sanitiseURL(window.location.href);\r\n                var text = $(this).data(\"text\");\r\n                var composedUrl = \"https://twitter.com/intent/tweet?text=\" + encodeURIComponent(text) + \"&url=\" + createdUrl;\r\n                $(this).attr(\"href\", composedUrl);\r\n            })\r\n        }\r\n    }\r\n\r\n    const loadLinkedInUrl = () => {\r\n        const linkedInBlocks = $('.share-widget__menu-inner #linkedin');\r\n        if (linkedInBlocks) {\r\n            linkedInBlocks.each(function () {\r\n                var composedUrl = \"https://www.linkedin.com/cws/share?url=\" + sanitiseURL(window.location.href)\r\n                $(this).attr(\"href\", composedUrl);\r\n            });\r\n        }\r\n    }\r\n\r\n    const loadFacebookUrl = () => {\r\n        // Facebook Url\r\n        $(\".share-widget\").each(function () {\r\n            const url = sanitiseURL(window.location.href);\r\n            const facebook = $(\".share-widget #facebook\");\r\n\r\n            facebook.attr({\r\n                href: `https://www.facebook.com/sharer.php?u=${url}`,\r\n                target: \"_blank\",\r\n            });\r\n        });\r\n    };\r\n\r\n    const handlePrint = () => {\r\n        window.BitcoinCalculatorBlockChart?.setSize(600, 400, false);\r\n\r\n        //setTimeout(() => {\r\n            window.print();\r\n\r\n            window.BitcoinCalculatorBlockChart?.setSize(null, null, false);\r\n        //}, 10);\r\n    }\r\n\r\n    useEffect(() => {\r\n        handleCalculation(initialInputs);\r\n\r\n        loadTwitterBlock();\r\n        loadLinkedInUrl();\r\n        loadFacebookUrl();\r\n\r\n        $('.share-widget__action.copy, .share-widget__action.print').each(function () {\r\n            const $button = $(this) as CustomJQueryElement;\r\n            const defaultTitle = $button.hasClass('copy') ? 'Share' : 'Print';\r\n\r\n            $button.tooltip({\r\n                title: defaultTitle,\r\n                placement: 'bottom',\r\n                trigger: 'hover'\r\n            });\r\n        });\r\n\r\n        $(document).on('click', '.share-widget__action.copy', function (e) {\r\n            const $button = $(this) as CustomJQueryElement;\r\n            const url = $(location).attr('href') ?? \"\";\r\n\r\n            navigator.clipboard.writeText(url).then(() => {\r\n                $button.tooltip('dispose');\r\n                $button.tooltip({\r\n                    title: 'URL copied',\r\n                    placement: 'top',\r\n                    trigger: 'manual'\r\n                });\r\n\r\n                $button.tooltip('show');\r\n\r\n                setTimeout(() => {\r\n                    $button.tooltip('hide');\r\n                    $button.tooltip('dispose');\r\n\r\n                    $button.tooltip({\r\n                        title: 'Share',\r\n                        placement: 'bottom',\r\n                        trigger: 'hover'\r\n                    });\r\n                }, 2000);\r\n            });\r\n        });\r\n    }, []);\r\n\r\n    return <>\r\n        <div className={`bitcoin-reserve-tool ${ContainerCssClass}`}>\r\n            {Title && <section className=\"mb-4\">\r\n                <div className=\"text-hero\">\r\n                    <div className=\"d-flex align-items-start justify-content-between flex-sm-row flex-column\">\r\n                        <div className=\"mb-sm-0 mb-2\">\r\n                            <h1 className=\"mb-0 mr-2\">{Title}</h1>\r\n                        </div>\r\n                    </div>\r\n                    {EyebrowText && <div className=\"border-bottom py-3 text-util-md\">{EyebrowText}</div>}\r\n                    <div className=\"d-flex flex-column flex-xl-row align-items-xl-end \">\r\n                        {Text && <div className=\"text-hero__body text-dark\">\r\n                            {HTMLReactParser(Text)}\r\n                        </div>}\r\n                        <div className=\"mt-3 text-hero__widgets d-flex flex-row align-items-center\">\r\n                            <div className=\"text-hero__share-widget no-print\">\r\n                                <div className=\"share-widget widget dropdown\">\r\n                                    <button data-ve-gtm=\"socialmedia-icon\" aria-expanded=\"false\" aria-haspopup=\"true\" className=\"share-widget__toggle-button dropdown-toggle d-flex flex-column align-items-center px-2 py-2\" data-toggle=\"dropdown\" id=\"share-widget-button\" type=\"button\" data-display=\"static\">\r\n                                        <svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"far\" data-icon=\"share-rounded\" className=\"svg-inline--fa fa-share-rounded fa-w-16 fa-2x share-widget__toggle-button-icon\" role=\"img\" xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\">\r\n                                            <path fill=\"currentColor\" d=\"M 16.205063,6.0033369 C 15.527108,6.0432059 14.920498,6.3541371 14.468709,6.8057955 14.01692,7.2574539 13.7059,7.8638907 13.66602,8.5416498 c -0.01167,0.1982693 0.05864,0.401645 0.09917,0.6041822 l -3.160243,1.578729 a 0.71849121,0.71828458 0 0 0 -0.07297,-0.08604 0.71849121,0.71828458 0 0 0 -0.239497,-0.158995 C 9.7553238,10.042054 9.1360249,9.8013965 8.5430273,9.8360586 7.8652288,9.8756772 7.2585018,10.185268 6.8066735,10.636647 c -0.4518281,0.451378 -0.7625799,1.058278 -0.8026893,1.735854 -0.040109,0.677575 0.2223191,1.409633 0.8008183,1.988376 0.5784992,0.578741 1.3111497,0.842078 1.9889483,0.802458 0.6777986,-0.03962 1.2845252,-0.349209 1.7363542,-0.800588 0.02729,-0.02725 0.02242,-0.07638 0.04865,-0.104749 l 3.236952,1.619881 c -0.02562,0.121423 -0.142215,0.198515 -0.149685,0.325473 -0.03988,0.677759 0.223825,1.411549 0.802689,1.990246 0.578886,0.578515 1.312957,0.842443 1.990819,0.802459 0.677863,-0.03999 1.284705,-0.350781 1.736353,-0.802459 0.45165,-0.451678 0.761065,-1.058172 0.800819,-1.735854 0.03466,-0.590905 -0.205424,-1.209204 -0.639906,-1.745206 -9.01e-4,-0.0012 -9.58e-4,-0.0026 -0.0019,-0.0037 a 0.71849121,0.71828458 0 0 0 -0.159042,-0.241299 c -3.92e-4,-3.93e-4 -0.0014,3.93e-4 -0.0019,0 a 0.71849121,0.71828458 0 0 0 -0.0037,-0.0037 0.71849121,0.71828458 0 0 0 -0.233884,-0.153383 c -0.537584,-0.43775 -1.15796,-0.680228 -1.751321,-0.645334 -0.677955,0.03987 -1.284566,0.3508 -1.736354,0.802459 -0.02769,0.02768 -0.02205,0.0778 -0.04865,0.10662 L 11.18122,12.954319 c 0.02595,-0.122181 0.143991,-0.199539 0.151557,-0.327343 0.01186,-0.20042 -0.05768,-0.405052 -0.09917,-0.609793 l 3.169532,-1.584412 c 0.02827,0.03075 0.03552,0.06918 0.06549,0.09914 0.578703,0.578537 1.313034,0.842316 1.990818,0.802458 0.677786,-0.03986 1.282815,-0.35092 1.734483,-0.802458 0.451669,-0.451539 0.76282,-1.0582648 0.80269,-1.7358544 0.03484,-0.5907199 -0.205677,-1.2074089 -0.639824,-1.743349 A 0.71849121,0.71828458 0 0 0 18.195881,6.8057955 c -0.0034,-0.0034 -0.0079,-0.0041 -0.01123,-0.00748 A 0.71849121,0.71828458 0 0 0 17.963869,6.6524117 C 17.424883,6.2108552 16.800878,5.9682989 16.205063,6.0033369 Z m 0.0842,1.4346987 c 0.280513,-0.016495 0.562658,0.061823 0.885016,0.3815885 a 0.71849121,0.71828458 0 0 0 0.0037,0.00375 c 0.32468,0.3245843 0.400162,0.6065234 0.38357,0.8885021 -0.01659,0.2819785 -0.157701,0.5785252 -0.38357,0.804329 -0.225868,0.2258036 -0.5225,0.3668722 -0.80456,0.3834592 C 16.09136,9.9162516 15.80934,9.8407913 15.48466,9.5162052 15.159822,9.1914602 15.084489,8.9079797 15.101091,8.6258316 15.117691,8.3436835 15.258672,8.0474259 15.48466,7.8215025 15.710649,7.5955792 16.006992,7.4546403 16.289221,7.4380433 Z M 8.6272255,11.268886 c 0.2820655,-0.01649 0.5641947,0.05875 0.8887586,0.383459 0.324564,0.324701 0.4002612,0.608402 0.3835695,0.890374 -0.016691,0.281973 -0.1576209,0.578605 -0.3835695,0.804329 -0.2259484,0.225724 -0.524366,0.366972 -0.8064314,0.383459 -0.2820656,0.0165 -0.5641948,-0.05875 -0.8887587,-0.383459 -0.3245639,-0.324699 -0.4002611,-0.608401 -0.3835695,-0.890373 0.016692,-0.281973 0.157621,-0.578606 0.3835695,-0.80433 0.2259484,-0.225723 0.524366,-0.366971 0.8064315,-0.383459 z m 7.6620355,3.830851 c 0.281013,-0.01652 0.563806,0.06037 0.886887,0.381588 a 0.71849121,0.71828458 0 0 0 0.0019,0.0019 c 0.324816,0.324609 0.401988,0.608308 0.385441,0.890374 -0.01655,0.282067 -0.157681,0.578426 -0.383569,0.804329 -0.225889,0.225904 -0.52242,0.366818 -0.804561,0.383459 -0.282142,0.01665 -0.565814,-0.05885 -0.89063,-0.383459 -0.324839,-0.324744 -0.400171,-0.608226 -0.383569,-0.890373 0.0166,-0.282148 0.15758,-0.578406 0.383569,-0.80433 0.225988,-0.225923 0.522332,-0.366862 0.804561,-0.383459 z M 12.5,0 C 5.6051499,2.9303084e-8 6.1536543e-7,5.6051504 0,12.5 0,19.39485 5.6051494,25 12.5,25 19.394851,25 25,19.39485 25,12.5 24.999999,5.6051503 19.39485,0 12.5,0 Z m 0,1.4707031 c 6.100084,0 11.029296,4.9292131 11.029297,11.0292969 0,6.100084 -4.929212,11.029297 -11.029297,11.029297 C 6.3999152,23.529297 1.4707031,18.600084 1.4707031,12.5 1.4707037,6.3999162 6.3999156,1.4707032 12.5,1.4707031 Z\">\r\n                                            </path>\r\n                                        </svg>\r\n                                    </button>\r\n                                    <div role=\"menu\" className=\"share-widget__menu widget-menu dropdown-menu focusable-menu widget-menu-right\" aria-labelledby=\"share-widget-button\">\r\n                                        <div className=\"share-widget__menu-inner\">\r\n                                            <div className=\"share-widget__menu-header justify-content-center\">\r\n                                                <span className=\"text-util-md\">Share</span>\r\n                                            </div>\r\n                                            <ul className=\"mb-0 list-unstyled\">\r\n                                                <li className=\"mb-0 text-util-md\">\r\n                                                    <a id=\"twitter\" role=\"menuitem\" data-text={Title} data-author=\"\" className=\"share-widget__action share-Link\" href=\"\" rel=\"noreferrer noopener\" target=\"_blank\">\r\n                                                        <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className=\"share-widget__action-icon\">\r\n                                                            <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M25.5286 31H6.47139C3.44962 31 1 28.5504 1 25.5286V6.47139C1 3.44962 3.44962 1 6.47139 1H25.5286C28.5504 1 31 3.44962 31 6.47139V25.5286C31 28.5504 28.5504 31 25.5286 31Z\" stroke=\"#001E6D\" strokeWidth=\"2\"></path>\r\n                                                            <path d=\"M19.3701 14.5721L26.6241 6.73608H23.7741L18.0981 12.8681L13.5081 6.73608H6.79412L14.3841 16.8821L6.62012 25.2641H9.47012L15.6561 18.5801L20.6541 25.2641H27.3681L19.3701 14.5721ZM12.4581 8.83008L23.1801 23.1641H21.7041L10.9821 8.83008H12.4581Z\" fill=\"#001E6D\"></path>\r\n                                                        </svg>\r\n                                                        <span className=\"sr-only\">\r\n                                                            This link opens a new window\r\n                                                        </span>\r\n                                                    </a>\r\n                                                </li>\r\n                                                <li className=\"mb-0 text-util-md\">\r\n                                                    <a id=\"linkedin\" role=\"menuitem\" className=\"share-widget__action share-Link\" href=\"\" rel=\"noreferrer noopener\" target=\"_blank\">\r\n                                                        <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className=\"share-widget__action-icon\">\r\n                                                            <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M25.5286 31H6.47139C3.44962 31 1 28.5504 1 25.5286V6.47139C1 3.44962 3.44962 1 6.47139 1H25.5286C28.5504 1 31 3.44962 31 6.47139V25.5286C31 28.5504 28.5504 31 25.5286 31Z\" stroke=\"#001E6D\" strokeWidth=\"2\"></path>\r\n                                                            <path d=\"M23.217 24.53C22.2605 24.53 21.4779 23.7561 21.4779 22.7909V17.3128C21.4779 16.1128 20.504 15.1389 19.3041 15.1389C18.1041 15.1389 17.1302 16.1128 17.1302 17.3128V22.7909C17.1302 23.7561 16.3476 24.53 15.3911 24.53C14.4346 24.53 13.652 23.7561 13.652 22.7909V17.3128C13.652 14.1998 16.1911 11.6607 19.3041 11.6607C22.417 11.6607 24.9561 14.1998 24.9561 17.3128V22.7909C24.9561 23.7561 24.1735 24.53 23.217 24.53ZM9.13038 24.53C8.17389 24.53 7.39129 23.7561 7.39129 22.7909V13.3998C7.39129 12.4346 8.17389 11.6607 9.13038 11.6607C10.0869 11.6607 10.8695 12.4346 10.8695 13.3998V22.7909C10.8695 23.7561 10.0869 24.53 9.13038 24.53ZM9.13038 10.2521C7.9565 10.2521 7 9.29558 7 8.12169C7 7.56518 7.21739 7.02606 7.61738 6.62607C8.01737 6.21739 8.55648 6 9.13038 6C10.3043 6 11.2608 6.9565 11.2608 8.13039C11.2608 9.30427 10.3043 10.2608 9.13038 10.2608V10.2521Z\" fill=\"#001E6D\"></path>\r\n                                                        </svg>\r\n                                                        <span className=\"sr-only\">\r\n                                                            This link opens a new window\r\n                                                        </span>\r\n                                                    </a>\r\n                                                </li>\r\n                                                <li className=\"mb-0 text-util-md\">\r\n                                                    <a className=\"share-widget__action share-Link\" href=\"\" id=\"facebook\" role=\"menuitem\" target=\"_blank\">\r\n                                                        <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className=\"share-widget__action-icon\">\r\n                                                            <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M25.5286 31H6.47139C3.44962 31 1 28.5504 1 25.5286V6.47139C1 3.44962 3.44962 1 6.47139 1H25.5286C28.5504 1 31 3.44962 31 6.47139V25.5286C31 28.5504 28.5504 31 25.5286 31Z\" stroke=\"#001E6D\" strokeWidth=\"2\"></path>\r\n                                                            <path d=\"M17.8872 31V20.8333H16.604C15.7218 20.8333 15 20.0917 15 19.1667C15 18.2417 15.7218 17.5 16.604 17.5H17.8872V16.0917C17.8872 12.7333 20.5177 10 23.7498 10H25.2656C26.1478 10 26.8696 10.7417 26.8696 11.6667C26.8696 12.5917 26.1478 13.3333 25.2656 13.3333H23.7498C22.2821 13.3333 21.0952 14.5667 21.0952 16.0917V17.5H25.2656C26.1478 17.5 26.8696 18.2417 26.8696 19.1667C26.8696 20.0917 26.1478 20.8333 25.2656 20.8333H21.0952V31H17.8872Z\" fill=\"#001E6D\"></path>\r\n                                                        </svg>\r\n                                                        <span className=\"sr-only\">\r\n                                                            This link opens a new window\r\n                                                        </span>\r\n                                                    </a>\r\n                                                </li>\r\n                                                <li className=\"mb-0 text-util-md\">\r\n                                                    <button className=\"share-widget__action mb-0 text-util-md copy\" type=\"button\" role=\"menuitem\" data-original-title=\"\" title=\"\">\r\n                                                        <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className=\"share-widget__action-icon\">\r\n                                                            <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M25.5286 31H6.47139C3.44962 31 1 28.5504 1 25.5286V6.47139C1 3.44962 3.44962 1 6.47139 1H25.5286C28.5504 1 31 3.44962 31 6.47139V25.5286C31 28.5504 28.5504 31 25.5286 31Z\" stroke=\"#001E6D\" strokeWidth=\"2\"></path>\r\n                                                            <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M10.0748 16.7538C8.80961 17.9942 8.80961 20.0058 10.0748 21.2462C11.34 22.4865 13.3919 22.4865 14.6571 21.2462L16.3265 19.6094C16.7209 19.2228 17.3603 19.2228 17.7547 19.6094C18.1491 19.9961 18.1491 20.6229 17.7547 21.0096L16.0852 22.6463C14.0313 24.6599 10.7006 24.6599 8.64666 22.6463C6.5927 20.6326 6.5927 17.3674 8.64666 15.3537L10.3161 13.717C10.7105 13.3304 11.3499 13.3304 11.7443 13.717C12.1387 14.1036 12.1387 14.7305 11.7443 15.1171L10.0748 16.7538ZM12.359 19.3534C11.9646 18.9668 11.9646 18.34 12.359 17.9533L18.0158 12.4075C18.4102 12.0209 19.0496 12.0209 19.444 12.4075C19.8384 12.7941 19.8384 13.421 19.444 13.8076L13.7871 19.3535C13.3928 19.7401 12.7533 19.7401 12.359 19.3534ZM13.6945 10.405C13.3001 10.7916 13.3001 11.4185 13.6945 11.8051C14.0888 12.1917 14.7282 12.1917 15.1226 11.8051L16.7921 10.1684C18.0573 8.92802 20.1091 8.92802 21.3743 10.1684C22.6396 11.4088 22.6396 13.4203 21.3743 14.6607L19.7049 16.2974C19.3105 16.6841 19.3105 17.3109 19.7049 17.6976C20.0992 18.0842 20.7387 18.0842 21.133 17.6976L22.8025 16.0608C24.8565 14.0472 24.8565 10.7819 22.8025 8.76826C20.7486 6.75462 17.4179 6.75462 15.3639 8.76826L13.6945 10.405Z\" fill=\"#001E6D\"></path>\r\n                                                        </svg>\r\n                                                    </button>\r\n                                                </li>\r\n                                                <li className=\"mb-0 text-util-md\">\r\n                                                    <button className=\"share-widget__action mb-0 text-util-md print\" type=\"button\" role=\"menuitem\" data-original-title=\"\" title=\"\" onClick={handlePrint}>\r\n                                                        <svg width=\"32\" height=\"32\" viewBox=\"0 0 32 32\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\" className=\"share-widget__action-icon\">\r\n                                                            <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M25.5286 31H6.47139C3.44962 31 1 28.5504 1 25.5286V6.47139C1 3.44962 3.44962 1 6.47139 1H25.5286C28.5504 1 31 3.44962 31 6.47139V25.5286C31 28.5504 28.5504 31 25.5286 31Z\" stroke=\"#001E6D\" strokeWidth=\"2\"></path>\r\n                                                            <path fillRule=\"evenodd\" clipRule=\"evenodd\" d=\"M12 6C10.8957 6 10 6.89572 10 8V11H9C7.34272 11 6 12.3427 6 14V19C6 20.6573 7.34272 22 9 22H10V24C10 25.1043 10.8957 26 12 26H20C21.1043 26 22 25.1043 22 24V22H23C24.6573 22 26 20.6573 26 19V14C26 12.3427 24.6573 11 23 11H22V8C22 6.89572 21.1043 6 20 6H12ZM12 24V21V18.8H20V21V24H12ZM22 17.8V20H23C23.5527 20 24 19.5527 24 19V14C24 13.4473 23.5527 13 23 13H21H11H9C8.44728 13 8 13.4473 8 14V19C8 19.5527 8.44728 20 9 20H10V17.8C10 17.2478 10.4477 16.8 11 16.8H21C21.5523 16.8 22 17.2478 22 17.8ZM20 11V8H12V11H20ZM11 14C10.4477 14 10 14.4477 10 15C10 15.5523 10.4477 16 11 16H12C12.5523 16 13 15.5523 13 15C13 14.4477 12.5523 14 12 14H11Z\" fill=\"#001E6D\"></path>\r\n                                                        </svg>\r\n                                                    </button>\r\n                                                </li>\r\n                                            </ul>\r\n                                        </div>\r\n                                    </div>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </section>}\r\n            <UserInputForm handleCalculation={handleCalculation} viewModel={bitcoinCalculator} inputDetails={inputDetails} initialInputs={initialInputs} />\r\n            {ChartTitle && <div className=\"mt-5 mb-3 d-flex align-items-center justify-content-between\">\r\n                <div className=\"mb-sm-0 mb-2\">\r\n                    <h3 className=\"mb-0 mr-2\">{ChartTitle}</h3>\r\n                </div>\r\n                <div>\r\n                    <img alt=\"VanEck\" className=\"d-inline-block align-bottom\" src=\"/static/corp/images/logo-blue.svg\" height=\"36\" width=\"150\" />\r\n                </div>\r\n            </div>}\r\n            <Graph data={graphData} viewModel={bitcoinCalculator} />\r\n            {Disclosure && HTMLReactParser(Disclosure)}\r\n            {BottomText && HTMLReactParser(BottomText)}\r\n        </div>\r\n    </>\r\n};\r\n\r\nexport default BitcoinCalculatorInnerBlock;","import { useState, useEffect } from \"react\";\r\nimport useAutoScrollUp from \"../../core/customHooks/useAutoScollUp\";\r\nimport { BitcoinCalculatorViewModel, IBitcoinCalculatorBlockProps, useBitcoinCalculatorBlock } from \"./useBitcoinCalculatorBlock\";\r\nimport BitcoinCalculatorInnerBlock from \"./BitcoinCalculatorInnerBlock\";\r\nimport \"./BitcoinCalculatorBlock.scss\";\r\n\r\nexport interface BitcoinCalculatorBlockInterface extends ComponentInterface { }\r\n\r\nconst BitcoinCalculatorBlock = (props: BitcoinCalculatorBlockInterface) => {\r\n    const element = props.rootElement;\r\n    const blockID = element.dataset.blockid as unknown as number;\r\n    const pageID = element.dataset.pageid as unknown as number;\r\n\r\n    const [markup, setMarkup] = useState(<div className=\"component-loading\">Loading Data...</div>)\r\n    const [bitcoinCalculator, setBitcoinCalculator] = useState<BitcoinCalculatorViewModel | null>(null);\r\n    const [bitcoinCalculatorBlockProps, setBitcoinCalculatorBlockProps] = useState<IBitcoinCalculatorBlockProps | null>(null);\r\n\r\n    useAutoScrollUp(element);\r\n\r\n    useEffect(() => {\r\n        (async () => {\r\n            if (isNaN(blockID)) setMarkup(<p>Error: BlockID not found.</p>);\r\n\r\n            const bitcoinCalculatorBlockData = await useBitcoinCalculatorBlock({ blockID, pageID, element, setMarkup, setBitcoinCalculator, setBitcoinCalculatorBlockProps });\r\n            if (!bitcoinCalculatorBlockData) return console.error(`An error occured while loading block: ${blockID}`);\r\n        })();\r\n\r\n    }, [blockID]);\r\n\r\n    return (<>\r\n        {markup}\r\n        {bitcoinCalculator && bitcoinCalculatorBlockProps && <BitcoinCalculatorInnerBlock bitcoinCalculator={bitcoinCalculator} bitcoinCalculatorBlockProps={bitcoinCalculatorBlockProps} />}\r\n    </>);\r\n};\r\n\r\n\r\nexport default BitcoinCalculatorBlock;","import { fetchBlockData } from \"../../services/fetchDataService\";\r\n\r\nexport interface IBitcoinCalculatorBlockProps {\r\n    ContainerCssClass: string;\r\n    CssClass: string;\r\n    Title: string;\r\n    EyebrowText: string;\r\n    Text: string;\r\n    ChartTitle: string;\r\n    Disclosure: string;\r\n    BottomText: string;\r\n}\r\n\r\nexport interface ChartSeries {\r\n    Series: string;\r\n    ChartType: string;\r\n    SeriesName: string;\r\n    SeriesColor: string;\r\n    RightYAxis: boolean;\r\n    TooltipPrefix: string;\r\n    TooltipSuffix: string;\r\n    TooltipDecimals: number;\r\n}\r\n\r\nexport interface SelectInput {\r\n    InputType: string;\r\n    InputLabel: string;\r\n    TooltipText: string;\r\n    StartValue: number;\r\n    EndValue: number;\r\n    Interval: number;\r\n    PlaceholderValue: number;\r\n    PlaceholderText: string;\r\n}\r\n\r\nexport interface BitcoinCalculatorViewModel {\r\n    ContainerCssClass: string;\r\n    CssClass: string;\r\n    Title: string;\r\n    EyebrowText: string;\r\n    Text: string;\r\n    DebtFormHeading: string;\r\n    StartingUSDebtLabel: string;\r\n    StartingUSDebtValue: number;\r\n    StartingUSDebtTooltipText: string;\r\n    SelectInputs: SelectInput[];\r\n    USDebtOutputLabel: string;\r\n    USDebtOutputTooltipText: string;\r\n    BitcoinFormHeading: string;\r\n    BTCTreasuryOutputLabel: string;\r\n    BTCTreasuryOutputTooltipText: string;\r\n    PercentageOfDebtLabel: string;\r\n    SubmitButtonText: string;\r\n    ResetButtonText: string;\r\n    ChartTitle: string;\r\n    XAxisText: string;\r\n    LeftYAxisText: string;\r\n    RightYAxisText: string;\r\n    FinalPointsDataLabelTitle: string;\r\n    ChartSeries: ChartSeries[];\r\n    Disclosure: string;\r\n    BottomText: string;\r\n}\r\n\r\nexport interface BitcoinCalculatorBlockResponse {\r\n    data: BitcoinCalculatorViewModel,\r\n    blockid: number\r\n}\r\n\r\nexport interface BitcoinCalculatorBlockDataOptions {\r\n    blockID: number;\r\n    pageID: number;\r\n    element: HTMLElement;\r\n    setMarkup: Function;\r\n    setBitcoinCalculator: Function;\r\n    setBitcoinCalculatorBlockProps: Function;\r\n}\r\n\r\nexport async function useBitcoinCalculatorBlock({ blockID, pageID, element, setMarkup, setBitcoinCalculator, setBitcoinCalculatorBlockProps }: BitcoinCalculatorBlockDataOptions) {\r\n    const response: BitcoinCalculatorBlockResponse = await fetchBlockData({\r\n        url: `/Main/BitcoinCalculatorBlock/GetContent/?blockid=${blockID}&pageid=${pageID}`,\r\n        isJson: true,\r\n        setMarkup: setMarkup,\r\n    });\r\n\r\n    const bitcoinCalculator = (response.data) ?? null;\r\n\r\n    const bitcoinCalculatorBlockProps: IBitcoinCalculatorBlockProps = {\r\n        ContainerCssClass: response.data?.ContainerCssClass ?? \"\",\r\n        CssClass: response.data?.CssClass ?? \"\",\r\n        Title: response.data?.Title ?? \"\",\r\n        EyebrowText: response.data?.EyebrowText ?? \"\",\r\n        Text: response.data?.Text ?? \"\",\r\n        ChartTitle: response.data?.ChartTitle ?? \"\",\r\n        Disclosure: response.data?.Disclosure ?? \"\",\r\n        BottomText: response.data?.BottomText ?? \"\"\r\n    }\r\n    setBitcoinCalculator(bitcoinCalculator);\r\n    setBitcoinCalculatorBlockProps(bitcoinCalculatorBlockProps);\r\n\r\n    setMarkup(null);\r\n    return response.data ?? null\r\n}","import { useState, useEffect, useLayoutEffect } from \"react\";\r\n\r\n/**\r\n * When a component is rendered above the viewport, it results in the current scroll position being offset by the height difference.\r\n * This custom hook will adjust for the height of the component before every paint.\r\n * @param {HTMLElement} element\r\n */\r\nfunction useAutoScrollUp(element: HTMLElement) {\r\n  const [height, setHeight] = useState(0);\r\n\r\n  useEffect(() => {\r\n    element && setHeight(element.getBoundingClientRect()?.height);\r\n  }, [element]);\r\n\r\n  useLayoutEffect(() => {\r\n    if (!element || !height) return;\r\n    const elemBoundingRect = element.getBoundingClientRect();\r\n    const newHeight = elemBoundingRect.height;\r\n    const heightIncrease = newHeight - height;\r\n\r\n    //compensate scrolling only if elem above viewport (scrolling up)\r\n    if (elemBoundingRect.top < 50) {\r\n      window.scrollBy(0, heightIncrease);\r\n    }\r\n\r\n    setHeight((height) => height + heightIncrease);\r\n  });\r\n}\r\n\r\nexport default useAutoScrollUp;","import React from \"react\";\r\n\r\nexport interface FetchBlockDataInterface {\r\n  url: string,\r\n  isJson?: Boolean,\r\n  setMarkup?: Function | null\r\n}\r\n\r\ndeclare global {\r\n  interface Window {\r\n      reactlang: string | null | undefined;\r\n      reactctr: string | null | undefined;\r\n      isapiepieditmode: string | null | undefined;\r\n      isapilatestversionpreview: string | null | undefined;\r\n      epiprojectid: string | null | undefined;\r\n  }\r\n}\r\n\r\nwindow.reactlang = document.getElementsByTagName(\"ve-language\")[0]?.innerHTML;\r\nwindow.reactctr = document.getElementsByTagName(\"ve-country\")[0]?.innerHTML;\r\nwindow.isapiepieditmode = document.getElementsByTagName(\"ve-is-epi-edit-mode\")[0]?.innerHTML;\r\nwindow.isapilatestversionpreview = document.getElementsByTagName(\"ve-is-latest-version-preview\")[0]?.innerHTML;\r\nwindow.epiprojectid = document.getElementsByTagName(\"ve-epi-project-id\")[0]?.innerHTML;\r\n\r\n/**\r\n * Fetches data for a given API endpoint. Expects any get parameters to be encoded in the url.\r\n * If JSON is expected, returns the JSON object. If not returns the result object.\r\n * @param {FetchBlockDataInterface} options\r\n * @returns {any|Response}\r\n */\r\nexport async function fetchBlockData({ url, isJson = true, setMarkup = null }: FetchBlockDataInterface): Promise<any | Response> {\r\n\r\n  try {\r\n    let additionalParams = window.isapiepieditmode || window.isapilatestversionpreview\r\n      ? `&epieditmode=${window.isapiepieditmode}&latest=${window.isapilatestversionpreview}`\r\n      : '';\r\n    if(window.epiprojectid){\r\n        additionalParams += `&epiprojects=${window.epiprojectid}`;\r\n    }\r\n    const request = await fetch(`${url}${url.indexOf('?') !== -1 ? '&' : '?'}reactlang=${window.reactlang}&reactctr=${window.reactctr}${additionalParams}`);\r\n    const response: Response|any = isJson ? await request.json() : request;\r\n    \r\n    return response;\r\n  } catch (err) {\r\n      console.log(`Error while fetching block data! URL: ${url}`);\r\n\r\n      typeof (setMarkup) === \"function\" && setMarkup(\r\n        <div className=\"component-load-failed\">An error occured when loading data.</div>\r\n      );\r\n\r\n    throw new Error(err as string);\r\n  }\r\n}"],"names":["isTouchDevice","window","navigator","maxTouchPoints","Tooltip","tooltipItem","Text","Heading","tooltipIconRef","useRef","tooltipContentRef","useEffect","current","$ele","$","content","innerHTML","containerElements","closest","containerElement","length","trigger","popover","html","container","popperConfig","placement","clickEventListener","e","document","removeEventListener","on","addEventListener","TootipIcon","ref","className","style","display","props","width","height","viewBox","version","xmlns","id","stroke","strokeWidth","fill","fillRule","transform","cx","cy","r","d","handleCalculation","viewModel","inputDetails","initialInputs","inputs","setInputs","useState","inputStatus","setInputStatus","debtGrowthRate","acquisitionPrice","bitcoinGrowthRate","acquiredBitcoin","isFormActive","Object","values","some","value","inputOptions","i","DebtCAGR","StartValue","EndValue","Interval","push","Math","round","BTCAcquisitionPrice","BTCCAGR","TotalAcquiredBTC","debtGrowthPlTxt","PlaceholderText","acqPricePlTxt","btcGrowthPlTxt","acqBtcPlTxt","resetDropdownText","debtGrowthRateButton","acquisitionPriceButton","bitcoinGrowthRateButton","acquiredBitcoinButton","handleDropdownClick","target","querySelectorAll","dataset","targetButton","textContent","name","parseFloat","debt2049","StartingUSDebtValue","years","acquiredBtc","btcPrice2025","btcGrowth","btcCosts","cumulativeBal","btcTreasury","map","el","btcTreasury2049","reservePer2049","DebtFormHeading","StartingUSDebtLabel","StartingUSDebtTooltipText","icon","size","InputLabel","TooltipText","DropDownSelect","prefix","suffix","multiplierBug","displayMultiplier","displayDivider","placeholderText","selected","options","USDebtOutputLabel","USDebtOutputTooltipText","toLocaleString","maximumFractionDigits","BitcoinFormHeading","BTCTreasuryOutputLabel","BTCTreasuryOutputTooltipText","PercentageOfDebtLabel","onClick","preventDefault","type","disabled","SubmitButtonText","forEach","element","ResetButtonText","displayValue","gtmName","focusable","role","option","key","data","chartContainer","lang","decimalPoint","thousandsSep","dataColor","gridLineColor","isLogarithmic","PercentageofDebt","percent","chartOptions","chart","backgroundColor","exporting","enabled","title","text","undefined","xAxis","XAxisText","labels","fontFamily","color","fontSize","fontWeight","fontStyle","autoRotation","lineColor","tickInterval","yAxis","LeftYAxisText","textAlign","gridLineWidth","format","RightYAxisText","opposite","formatter","this","minimumSignificantDigits","max","legend","align","verticalAlign","itemMarginBottom","x","symbolRadius","itemStyle","itemHoverStyle","credits","responsive","rules","condition","maxWidth","textOverflow","series","ChartSeries","ChartType","RightYAxis","Years","year","index","dataSeries","Series","replaceAll","SeriesName","SeriesColor","tooltip","valuePrefix","TooltipPrefix","valueSuffix","TooltipSuffix","valueDecimals","TooltipDecimals","tooltipPointWithSuffix","pointFormatter","point","decimals","minimumFractionDigits","tooltipOptions","y","includes","plotOptions","column","dataLabels","useHTML","line","BitcoinCalculatorBlockChart","getElementById","each","$button","urlString","location","attr","url","URL","searchParams","set","clipboard","writeText","toString","then","setTimeout","destroy","FinalPointsDataLabelTitle","finalPoint","pointWithSuffix","clipRule","bitcoinCalculator","bitcoinCalculatorBlockProps","ContainerCssClass","CssClass","Title","EyebrowText","ChartTitle","Disclosure","BottomText","graphData","setGraphData","debt","debtGrowth","reserveDebtPer","USDebt","BTCTreasuryValue","SelectInputs","select","InputType","urlParams","URLSearchParams","search","get","Number","PlaceholderValue","sanitiseURL","splitURL","href","split","loadTwitterBlock","twitterBlocks","createdUrl","composedUrl","encodeURIComponent","loadLinkedInUrl","linkedInBlocks","defaultTitle","hasClass","rel","setSize","print","alt","src","rootElement","blockID","blockid","pageID","pageid","markup","setMarkup","setBitcoinCalculator","setBitcoinCalculatorBlockProps","isNaN","bitcoinCalculatorBlockData","async","response","isJson","useBitcoinCalculatorBlock","console","error","setHeight","getBoundingClientRect","useLayoutEffect","elemBoundingRect","heightIncrease","top","scrollBy","fetchBlockData","additionalParams","isapiepieditmode","isapilatestversionpreview","epiprojectid","request","fetch","indexOf","reactlang","reactctr","json","err","log","Error","getElementsByTagName"],"sourceRoot":""}