greeks-live-ui 0.1.20 → 0.1.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.css +1 -1
- package/dist/index.full.min.mjs +92 -92
- package/dist/index.full.min.mjs.map +1 -1
- package/dist/index.full.mjs +328 -61
- package/dist/locale/en.min.mjs +1 -1
- package/dist/locale/en.min.mjs.map +1 -1
- package/dist/locale/en.mjs +6 -0
- package/dist/locale/zh-cn.min.mjs +1 -1
- package/dist/locale/zh-cn.min.mjs.map +1 -1
- package/dist/locale/zh-cn.mjs +6 -0
- package/dist/locale/zh-tw.min.mjs +1 -1
- package/dist/locale/zh-tw.min.mjs.map +1 -1
- package/dist/locale/zh-tw.mjs +6 -0
- package/es/components/panel-vrp/index.d.ts +59 -24
- package/es/components/panel-vrp/src/panel-vrp.d.ts +5 -0
- package/es/components/panel-vrp/src/panel-vrp.vue.d.ts +61 -24
- package/es/index.mjs +27 -27
- package/es/locale/lang/en.d.ts +6 -0
- package/es/locale/lang/zh-cn.d.ts +6 -0
- package/es/locale/lang/zh-tw.d.ts +6 -0
- package/es/packages/components/chart/index.mjs +2 -2
- package/es/packages/components/chart/src/chart.mjs +12 -86
- package/es/packages/components/chart/src/chart.mjs.map +1 -1
- package/es/packages/components/chart/src/chart2.mjs +86 -12
- package/es/packages/components/chart/src/chart2.mjs.map +1 -1
- package/es/packages/components/checkbox-group/index.mjs +2 -2
- package/es/packages/components/checkbox-group/src/checkbox-group.mjs +31 -5
- package/es/packages/components/checkbox-group/src/checkbox-group.mjs.map +1 -1
- package/es/packages/components/checkbox-group/src/checkbox-group2.mjs +5 -31
- package/es/packages/components/checkbox-group/src/checkbox-group2.mjs.map +1 -1
- package/es/packages/components/countdown/index.mjs +2 -2
- package/es/packages/components/countdown/src/countdown.mjs +53 -163
- package/es/packages/components/countdown/src/countdown.mjs.map +1 -1
- package/es/packages/components/countdown/src/countdown2.mjs +163 -53
- package/es/packages/components/countdown/src/countdown2.mjs.map +1 -1
- package/es/packages/components/currency-icon/index.mjs +2 -2
- package/es/packages/components/currency-icon/src/currency-icon.mjs +45 -8
- package/es/packages/components/currency-icon/src/currency-icon.mjs.map +1 -1
- package/es/packages/components/currency-icon/src/currency-icon2.mjs +8 -45
- package/es/packages/components/currency-icon/src/currency-icon2.mjs.map +1 -1
- package/es/packages/components/dropdown/index.mjs +2 -2
- package/es/packages/components/dropdown/src/dropdown.mjs +34 -5
- package/es/packages/components/dropdown/src/dropdown.mjs.map +1 -1
- package/es/packages/components/dropdown/src/dropdown2.mjs +5 -34
- package/es/packages/components/dropdown/src/dropdown2.mjs.map +1 -1
- package/es/packages/components/dropdown-button/index.mjs +2 -2
- package/es/packages/components/dropdown-button/src/dropdown-button.mjs +5 -39
- package/es/packages/components/dropdown-button/src/dropdown-button.mjs.map +1 -1
- package/es/packages/components/dropdown-button/src/dropdown-button2.mjs +39 -5
- package/es/packages/components/dropdown-button/src/dropdown-button2.mjs.map +1 -1
- package/es/packages/components/greeks-summary/index.mjs +2 -2
- package/es/packages/components/greeks-summary/src/greeks-summary.mjs +340 -49
- package/es/packages/components/greeks-summary/src/greeks-summary.mjs.map +1 -1
- package/es/packages/components/greeks-summary/src/greeks-summary2.mjs +49 -340
- package/es/packages/components/greeks-summary/src/greeks-summary2.mjs.map +1 -1
- package/es/packages/components/icon/index.mjs +2 -2
- package/es/packages/components/icon/src/icon.mjs +16 -54
- package/es/packages/components/icon/src/icon.mjs.map +1 -1
- package/es/packages/components/icon/src/icon2.mjs +54 -16
- package/es/packages/components/icon/src/icon2.mjs.map +1 -1
- package/es/packages/components/index.mjs +27 -27
- package/es/packages/components/input-number/index.mjs +2 -2
- package/es/packages/components/input-number/src/input-number.mjs +31 -5
- package/es/packages/components/input-number/src/input-number.mjs.map +1 -1
- package/es/packages/components/input-number/src/input-number2.mjs +5 -31
- package/es/packages/components/input-number/src/input-number2.mjs.map +1 -1
- package/es/packages/components/number-format/index.mjs +2 -2
- package/es/packages/components/number-format/src/number-format.mjs +71 -152
- package/es/packages/components/number-format/src/number-format.mjs.map +1 -1
- package/es/packages/components/number-format/src/number-format2.mjs +152 -71
- package/es/packages/components/number-format/src/number-format2.mjs.map +1 -1
- package/es/packages/components/page-turner/index.mjs +2 -2
- package/es/packages/components/page-turner/src/page-turner.mjs +12 -63
- package/es/packages/components/page-turner/src/page-turner.mjs.map +1 -1
- package/es/packages/components/page-turner/src/page-turner2.mjs +63 -12
- package/es/packages/components/page-turner/src/page-turner2.mjs.map +1 -1
- package/es/packages/components/panel/index.mjs +2 -2
- package/es/packages/components/panel/src/panel.mjs +82 -5
- package/es/packages/components/panel/src/panel.mjs.map +1 -1
- package/es/packages/components/panel/src/panel2.mjs +5 -82
- package/es/packages/components/panel/src/panel2.mjs.map +1 -1
- package/es/packages/components/panel-atm-iv/index.mjs +2 -2
- package/es/packages/components/panel-atm-iv/src/panel-atm-iv.mjs +21 -1064
- package/es/packages/components/panel-atm-iv/src/panel-atm-iv.mjs.map +1 -1
- package/es/packages/components/panel-atm-iv/src/panel-atm-iv2.mjs +1064 -21
- package/es/packages/components/panel-atm-iv/src/panel-atm-iv2.mjs.map +1 -1
- package/es/packages/components/panel-gex-by-expiry/index.mjs +2 -2
- package/es/packages/components/panel-gex-by-expiry/src/panel-gex-by-expiry.mjs +22 -554
- package/es/packages/components/panel-gex-by-expiry/src/panel-gex-by-expiry.mjs.map +1 -1
- package/es/packages/components/panel-gex-by-expiry/src/panel-gex-by-expiry2.mjs +554 -22
- package/es/packages/components/panel-gex-by-expiry/src/panel-gex-by-expiry2.mjs.map +1 -1
- package/es/packages/components/panel-implied-volatility-surface/index.mjs +2 -2
- package/es/packages/components/panel-implied-volatility-surface/src/panel-implied-volatility-surface.mjs +22 -332
- package/es/packages/components/panel-implied-volatility-surface/src/panel-implied-volatility-surface.mjs.map +1 -1
- package/es/packages/components/panel-implied-volatility-surface/src/panel-implied-volatility-surface2.mjs +332 -22
- package/es/packages/components/panel-implied-volatility-surface/src/panel-implied-volatility-surface2.mjs.map +1 -1
- package/es/packages/components/panel-max-pain-price/index.mjs +2 -2
- package/es/packages/components/panel-max-pain-price/src/panel-max-pain-price.mjs +369 -22
- package/es/packages/components/panel-max-pain-price/src/panel-max-pain-price.mjs.map +1 -1
- package/es/packages/components/panel-max-pain-price/src/panel-max-pain-price2.mjs +22 -369
- package/es/packages/components/panel-max-pain-price/src/panel-max-pain-price2.mjs.map +1 -1
- package/es/packages/components/panel-option-flow/index.mjs +2 -2
- package/es/packages/components/panel-option-flow/src/panel-option-flow.mjs +448 -22
- package/es/packages/components/panel-option-flow/src/panel-option-flow.mjs.map +1 -1
- package/es/packages/components/panel-option-flow/src/panel-option-flow2.mjs +22 -448
- package/es/packages/components/panel-option-flow/src/panel-option-flow2.mjs.map +1 -1
- package/es/packages/components/panel-option-trade-volume/index.mjs +2 -2
- package/es/packages/components/panel-option-trade-volume/src/panel-option-trade-volume.mjs +22 -523
- package/es/packages/components/panel-option-trade-volume/src/panel-option-trade-volume.mjs.map +1 -1
- package/es/packages/components/panel-option-trade-volume/src/panel-option-trade-volume2.mjs +523 -22
- package/es/packages/components/panel-option-trade-volume/src/panel-option-trade-volume2.mjs.map +1 -1
- package/es/packages/components/panel-rv-calc/index.mjs +2 -2
- package/es/packages/components/panel-rv-calc/src/panel-rv-calc.mjs +8 -507
- package/es/packages/components/panel-rv-calc/src/panel-rv-calc.mjs.map +1 -1
- package/es/packages/components/panel-rv-calc/src/panel-rv-calc2.mjs +507 -8
- package/es/packages/components/panel-rv-calc/src/panel-rv-calc2.mjs.map +1 -1
- package/es/packages/components/panel-sabr-calibrated-parameters/index.mjs +2 -2
- package/es/packages/components/panel-sabr-calibrated-parameters/src/panel-sabr-calibrated-parameters.mjs +256 -25
- package/es/packages/components/panel-sabr-calibrated-parameters/src/panel-sabr-calibrated-parameters.mjs.map +1 -1
- package/es/packages/components/panel-sabr-calibrated-parameters/src/panel-sabr-calibrated-parameters2.mjs +25 -256
- package/es/packages/components/panel-sabr-calibrated-parameters/src/panel-sabr-calibrated-parameters2.mjs.map +1 -1
- package/es/packages/components/panel-spots-etf-net-inflow/index.mjs +2 -2
- package/es/packages/components/panel-spots-etf-net-inflow/src/panel-spots-etf-net-inflow.mjs +624 -21
- package/es/packages/components/panel-spots-etf-net-inflow/src/panel-spots-etf-net-inflow.mjs.map +1 -1
- package/es/packages/components/panel-spots-etf-net-inflow/src/panel-spots-etf-net-inflow2.mjs +21 -624
- package/es/packages/components/panel-spots-etf-net-inflow/src/panel-spots-etf-net-inflow2.mjs.map +1 -1
- package/es/packages/components/panel-vrp/src/panel-vrp.mjs.map +1 -1
- package/es/packages/components/panel-vrp/src/panel-vrp2.mjs +322 -61
- package/es/packages/components/panel-vrp/src/panel-vrp2.mjs.map +1 -1
- package/es/packages/components/pro-badge/index.mjs +2 -2
- package/es/packages/components/pro-badge/src/pro-badge.mjs +90 -5
- package/es/packages/components/pro-badge/src/pro-badge.mjs.map +1 -1
- package/es/packages/components/pro-badge/src/pro-badge2.mjs +5 -90
- package/es/packages/components/pro-badge/src/pro-badge2.mjs.map +1 -1
- package/es/packages/components/progress/index.mjs +2 -2
- package/es/packages/components/progress/src/progress.mjs +45 -12
- package/es/packages/components/progress/src/progress.mjs.map +1 -1
- package/es/packages/components/progress/src/progress2.mjs +12 -45
- package/es/packages/components/progress/src/progress2.mjs.map +1 -1
- package/es/packages/components/radio/index.mjs +2 -2
- package/es/packages/components/radio/src/radio-button.mjs +1 -1
- package/es/packages/components/radio/src/radio-group.mjs +1 -1
- package/es/packages/components/radio/src/radio.mjs +31 -5
- package/es/packages/components/radio/src/radio.mjs.map +1 -1
- package/es/packages/components/radio/src/radio2.mjs +5 -31
- package/es/packages/components/radio/src/radio2.mjs.map +1 -1
- package/es/packages/components/select/index.mjs +2 -2
- package/es/packages/components/select/src/option.mjs +1 -1
- package/es/packages/components/select/src/select.mjs +10 -41
- package/es/packages/components/select/src/select.mjs.map +1 -1
- package/es/packages/components/select/src/select2.mjs +41 -10
- package/es/packages/components/select/src/select2.mjs.map +1 -1
- package/es/packages/components/spin/index.mjs +2 -2
- package/es/packages/components/spin/src/spin.mjs +31 -5
- package/es/packages/components/spin/src/spin.mjs.map +1 -1
- package/es/packages/components/spin/src/spin2.mjs +5 -31
- package/es/packages/components/spin/src/spin2.mjs.map +1 -1
- package/es/packages/components/tag/index.mjs +2 -2
- package/es/packages/components/tag/src/tag.mjs +112 -28
- package/es/packages/components/tag/src/tag.mjs.map +1 -1
- package/es/packages/components/tag/src/tag2.mjs +28 -112
- package/es/packages/components/tag/src/tag2.mjs.map +1 -1
- package/es/packages/locale/lang/en.mjs +6 -0
- package/es/packages/locale/lang/en.mjs.map +1 -1
- package/es/packages/locale/lang/zh-cn.mjs +6 -0
- package/es/packages/locale/lang/zh-cn.mjs.map +1 -1
- package/es/packages/locale/lang/zh-tw.mjs +6 -0
- package/es/packages/locale/lang/zh-tw.mjs.map +1 -1
- package/lib/components/panel-vrp/index.d.ts +59 -24
- package/lib/components/panel-vrp/src/panel-vrp.d.ts +5 -0
- package/lib/components/panel-vrp/src/panel-vrp.vue.d.ts +61 -24
- package/lib/index.js +23 -23
- package/lib/locale/lang/en.d.ts +6 -0
- package/lib/locale/lang/zh-cn.d.ts +6 -0
- package/lib/locale/lang/zh-tw.d.ts +6 -0
- package/lib/packages/components/chart/index.js +2 -2
- package/lib/packages/components/chart/src/chart.js +13 -90
- package/lib/packages/components/chart/src/chart.js.map +1 -1
- package/lib/packages/components/chart/src/chart2.js +90 -13
- package/lib/packages/components/chart/src/chart2.js.map +1 -1
- package/lib/packages/components/chart-table/index.js +2 -2
- package/lib/packages/components/chart-table/src/chart-table.js +16 -145
- package/lib/packages/components/chart-table/src/chart-table.js.map +1 -1
- package/lib/packages/components/chart-table/src/chart-table2.js +145 -16
- package/lib/packages/components/chart-table/src/chart-table2.js.map +1 -1
- package/lib/packages/components/checkbox-group/index.js +2 -2
- package/lib/packages/components/checkbox-group/src/checkbox-group.js +31 -6
- package/lib/packages/components/checkbox-group/src/checkbox-group.js.map +1 -1
- package/lib/packages/components/checkbox-group/src/checkbox-group2.js +6 -31
- package/lib/packages/components/checkbox-group/src/checkbox-group2.js.map +1 -1
- package/lib/packages/components/currency-radio-group/index.js +2 -2
- package/lib/packages/components/currency-radio-group/src/currency-radio-group.js +57 -19
- package/lib/packages/components/currency-radio-group/src/currency-radio-group.js.map +1 -1
- package/lib/packages/components/currency-radio-group/src/currency-radio-group2.js +19 -57
- package/lib/packages/components/currency-radio-group/src/currency-radio-group2.js.map +1 -1
- package/lib/packages/components/direction-tag/index.js +2 -2
- package/lib/packages/components/direction-tag/src/direction-tag.js +72 -15
- package/lib/packages/components/direction-tag/src/direction-tag.js.map +1 -1
- package/lib/packages/components/direction-tag/src/direction-tag2.js +15 -72
- package/lib/packages/components/direction-tag/src/direction-tag2.js.map +1 -1
- package/lib/packages/components/dropdown/index.js +2 -2
- package/lib/packages/components/dropdown/src/dropdown.js +6 -34
- package/lib/packages/components/dropdown/src/dropdown.js.map +1 -1
- package/lib/packages/components/dropdown/src/dropdown2.js +34 -6
- package/lib/packages/components/dropdown/src/dropdown2.js.map +1 -1
- package/lib/packages/components/dropdown-button/index.js +2 -2
- package/lib/packages/components/dropdown-button/src/dropdown-button.js +39 -6
- package/lib/packages/components/dropdown-button/src/dropdown-button.js.map +1 -1
- package/lib/packages/components/dropdown-button/src/dropdown-button2.js +6 -39
- package/lib/packages/components/dropdown-button/src/dropdown-button2.js.map +1 -1
- package/lib/packages/components/greeks-summary/index.js +2 -2
- package/lib/packages/components/greeks-summary/src/greeks-summary.js +50 -340
- package/lib/packages/components/greeks-summary/src/greeks-summary.js.map +1 -1
- package/lib/packages/components/greeks-summary/src/greeks-summary2.js +340 -50
- package/lib/packages/components/greeks-summary/src/greeks-summary2.js.map +1 -1
- package/lib/packages/components/index.js +23 -23
- package/lib/packages/components/input-number/index.js +2 -2
- package/lib/packages/components/input-number/src/input-number.js +31 -6
- package/lib/packages/components/input-number/src/input-number.js.map +1 -1
- package/lib/packages/components/input-number/src/input-number2.js +6 -31
- package/lib/packages/components/input-number/src/input-number2.js.map +1 -1
- package/lib/packages/components/page-turner/index.js +2 -2
- package/lib/packages/components/page-turner/src/page-turner.js +13 -63
- package/lib/packages/components/page-turner/src/page-turner.js.map +1 -1
- package/lib/packages/components/page-turner/src/page-turner2.js +63 -13
- package/lib/packages/components/page-turner/src/page-turner2.js.map +1 -1
- package/lib/packages/components/panel-gex-by-expiry/index.js +2 -2
- package/lib/packages/components/panel-gex-by-expiry/src/panel-gex-by-expiry.js +23 -558
- package/lib/packages/components/panel-gex-by-expiry/src/panel-gex-by-expiry.js.map +1 -1
- package/lib/packages/components/panel-gex-by-expiry/src/panel-gex-by-expiry2.js +558 -23
- package/lib/packages/components/panel-gex-by-expiry/src/panel-gex-by-expiry2.js.map +1 -1
- package/lib/packages/components/panel-option-open-interest/index.js +2 -2
- package/lib/packages/components/panel-option-open-interest/src/panel-option-open-interest.js +23 -474
- package/lib/packages/components/panel-option-open-interest/src/panel-option-open-interest.js.map +1 -1
- package/lib/packages/components/panel-option-open-interest/src/panel-option-open-interest2.js +474 -23
- package/lib/packages/components/panel-option-open-interest/src/panel-option-open-interest2.js.map +1 -1
- package/lib/packages/components/panel-option-skew-table/index.js +2 -2
- package/lib/packages/components/panel-option-skew-table/src/panel-option-skew-table.js +22 -265
- package/lib/packages/components/panel-option-skew-table/src/panel-option-skew-table.js.map +1 -1
- package/lib/packages/components/panel-option-skew-table/src/panel-option-skew-table2.js +265 -22
- package/lib/packages/components/panel-option-skew-table/src/panel-option-skew-table2.js.map +1 -1
- package/lib/packages/components/panel-sabr-calibrated-parameters/index.js +2 -2
- package/lib/packages/components/panel-sabr-calibrated-parameters/src/panel-sabr-calibrated-parameters.js +26 -256
- package/lib/packages/components/panel-sabr-calibrated-parameters/src/panel-sabr-calibrated-parameters.js.map +1 -1
- package/lib/packages/components/panel-sabr-calibrated-parameters/src/panel-sabr-calibrated-parameters2.js +256 -26
- package/lib/packages/components/panel-sabr-calibrated-parameters/src/panel-sabr-calibrated-parameters2.js.map +1 -1
- package/lib/packages/components/panel-sabr-iv-curve/index.js +2 -2
- package/lib/packages/components/panel-sabr-iv-curve/src/panel-sabr-iv-curve.js +26 -585
- package/lib/packages/components/panel-sabr-iv-curve/src/panel-sabr-iv-curve.js.map +1 -1
- package/lib/packages/components/panel-sabr-iv-curve/src/panel-sabr-iv-curve2.js +585 -26
- package/lib/packages/components/panel-sabr-iv-curve/src/panel-sabr-iv-curve2.js.map +1 -1
- package/lib/packages/components/panel-vol-fly/index.js +2 -2
- package/lib/packages/components/panel-vol-fly/src/panel-vol-fly.js +758 -22
- package/lib/packages/components/panel-vol-fly/src/panel-vol-fly.js.map +1 -1
- package/lib/packages/components/panel-vol-fly/src/panel-vol-fly2.js +22 -758
- package/lib/packages/components/panel-vol-fly/src/panel-vol-fly2.js.map +1 -1
- package/lib/packages/components/panel-volatility-term-structure/index.js +2 -2
- package/lib/packages/components/panel-volatility-term-structure/src/panel-volatility-term-structure.js +589 -23
- package/lib/packages/components/panel-volatility-term-structure/src/panel-volatility-term-structure.js.map +1 -1
- package/lib/packages/components/panel-volatility-term-structure/src/panel-volatility-term-structure2.js +23 -589
- package/lib/packages/components/panel-volatility-term-structure/src/panel-volatility-term-structure2.js.map +1 -1
- package/lib/packages/components/panel-vrp/index.js +2 -2
- package/lib/packages/components/panel-vrp/src/panel-vrp.js +739 -23
- package/lib/packages/components/panel-vrp/src/panel-vrp.js.map +1 -1
- package/lib/packages/components/panel-vrp/src/panel-vrp2.js +23 -478
- package/lib/packages/components/panel-vrp/src/panel-vrp2.js.map +1 -1
- package/lib/packages/components/popover/index.js +2 -2
- package/lib/packages/components/popover/src/popover.js +34 -88
- package/lib/packages/components/popover/src/popover.js.map +1 -1
- package/lib/packages/components/popover/src/popover2.js +88 -34
- package/lib/packages/components/popover/src/popover2.js.map +1 -1
- package/lib/packages/components/pro-badge/index.js +2 -2
- package/lib/packages/components/pro-badge/src/pro-badge.js +90 -6
- package/lib/packages/components/pro-badge/src/pro-badge.js.map +1 -1
- package/lib/packages/components/pro-badge/src/pro-badge2.js +6 -90
- package/lib/packages/components/pro-badge/src/pro-badge2.js.map +1 -1
- package/lib/packages/components/select/index.js +2 -2
- package/lib/packages/components/select/src/option.js +1 -1
- package/lib/packages/components/select/src/select.js +15 -41
- package/lib/packages/components/select/src/select.js.map +1 -1
- package/lib/packages/components/select/src/select2.js +41 -15
- package/lib/packages/components/select/src/select2.js.map +1 -1
- package/lib/packages/components/spin/index.js +2 -2
- package/lib/packages/components/spin/src/spin.js +31 -6
- package/lib/packages/components/spin/src/spin.js.map +1 -1
- package/lib/packages/components/spin/src/spin2.js +6 -31
- package/lib/packages/components/spin/src/spin2.js.map +1 -1
- package/lib/packages/components/toggle-button/index.js +2 -2
- package/lib/packages/components/toggle-button/src/toggle-button.js +17 -95
- package/lib/packages/components/toggle-button/src/toggle-button.js.map +1 -1
- package/lib/packages/components/toggle-button/src/toggle-button2.js +95 -17
- package/lib/packages/components/toggle-button/src/toggle-button2.js.map +1 -1
- package/lib/packages/locale/lang/en.js +6 -0
- package/lib/packages/locale/lang/en.js.map +1 -1
- package/lib/packages/locale/lang/zh-cn.js +6 -0
- package/lib/packages/locale/lang/zh-cn.js.map +1 -1
- package/lib/packages/locale/lang/zh-tw.js +6 -0
- package/lib/packages/locale/lang/zh-tw.js.map +1 -1
- package/package.json +2 -2
- package/theme-chalk/g-panel-vrp.css +1 -0
- package/theme-chalk/index.css +1 -1
- package/theme-chalk/src/panel-vrp.scss +72 -2
- package/web-types.json +1 -1
|
@@ -1,32 +1,263 @@
|
|
|
1
|
+
import { Table } from 'ant-design-vue/es';
|
|
2
|
+
import { defineComponent, reactive, computed, watch, onMounted, resolveComponent, openBlock, createElementBlock, normalizeClass, unref, createVNode, isRef, withCtx, createTextVNode, toDisplayString, createElementVNode, renderSlot } from 'vue';
|
|
3
|
+
import { GProBadge } from '../../pro-badge/index.mjs';
|
|
4
|
+
import '../../../hooks/index.mjs';
|
|
1
5
|
import '../../../utils/index.mjs';
|
|
2
|
-
import {
|
|
6
|
+
import { panelSabrCalibratedParametersProps, panelSabrCalibratedParametersEmits } from './panel-sabr-calibrated-parameters2.mjs';
|
|
7
|
+
import _export_sfc from '../../../../_virtual/plugin-vue_export-helper.mjs';
|
|
8
|
+
import { useNamespace } from '../../../hooks/use-namespace/index.mjs';
|
|
9
|
+
import { useLocale } from '../../../hooks/use-locale/index.mjs';
|
|
10
|
+
import { useDeviceType } from '../../../hooks/use-device-type/index.mjs';
|
|
11
|
+
import { thousandthFormat, parseExpiryToDate, showEndDateTime } from '../../../utils/chartHelp.mjs';
|
|
12
|
+
import { getSabrPreviewSnapshotTs, buildSabrCalibratedParametersPreviewRows } from '../../../utils/sabrPreview.mjs';
|
|
13
|
+
import { getSabrCalibratedParameters } from '../../../utils/dataLab.mjs';
|
|
3
14
|
|
|
4
|
-
const
|
|
5
|
-
|
|
6
|
-
|
|
15
|
+
const _hoisted_1 = ["innerHTML"];
|
|
16
|
+
const _hoisted_2 = { class: "period-controls" };
|
|
17
|
+
const _hoisted_3 = { class: "selector-label h5-hide" };
|
|
18
|
+
const _hoisted_4 = { class: "period-range" };
|
|
19
|
+
const __default__ = {
|
|
20
|
+
name: "GPanelSabrCalibratedParameters"
|
|
7
21
|
};
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
22
|
+
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
23
|
+
...__default__,
|
|
24
|
+
props: panelSabrCalibratedParametersProps,
|
|
25
|
+
emits: panelSabrCalibratedParametersEmits,
|
|
26
|
+
setup(__props, { emit: emits }) {
|
|
27
|
+
const props = __props;
|
|
28
|
+
const ns = useNamespace("panel-sabr-calibrated-parameters");
|
|
29
|
+
const { t } = useLocale();
|
|
30
|
+
const { isMobile } = useDeviceType();
|
|
31
|
+
const state = reactive({
|
|
32
|
+
loadingFlag: false,
|
|
33
|
+
exchange: "deribit",
|
|
34
|
+
currency: "BTC",
|
|
35
|
+
snapshotTs: 0,
|
|
36
|
+
snapshotTimeDisplay: "-",
|
|
37
|
+
rows: []
|
|
38
|
+
});
|
|
39
|
+
const currency = computed({
|
|
40
|
+
get: () => "BTC",
|
|
41
|
+
set: (newVal) => {
|
|
42
|
+
emits("update:currency", newVal);
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
const exchange = computed({
|
|
46
|
+
get: () => "deribit",
|
|
47
|
+
set: (newVal) => {
|
|
48
|
+
emits("update:exchange", newVal);
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
const currencyList = [{ value: "BTC", label: "BTC", icon: "currency_btc" }];
|
|
52
|
+
const formatRmse = (value) => Number(value || 0).toFixed(1);
|
|
53
|
+
const formatForward = (value) => thousandthFormat(Number(value || 0), 2);
|
|
54
|
+
const formatAtmIv = (value) => `${Number(value || 0).toFixed(2)}%`;
|
|
55
|
+
const formatParam = (value) => Number(value || 0).toFixed(4);
|
|
56
|
+
const formatPoints = (value) => thousandthFormat(Math.round(Number(value || 0)), 0);
|
|
57
|
+
const columns = computed(() => [
|
|
58
|
+
{
|
|
59
|
+
title: t("message.expiry"),
|
|
60
|
+
dataIndex: "expiry",
|
|
61
|
+
key: "expiry",
|
|
62
|
+
align: "left",
|
|
63
|
+
fixed: "left",
|
|
64
|
+
width: 100
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
title: "RMSE (bps)",
|
|
68
|
+
dataIndex: "rmse_bps",
|
|
69
|
+
key: "rmse_bps",
|
|
70
|
+
align: "center",
|
|
71
|
+
width: 100
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
title: "Forward",
|
|
75
|
+
dataIndex: "forward",
|
|
76
|
+
key: "forward",
|
|
77
|
+
align: "center",
|
|
78
|
+
width: 120
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
title: "ATM IV (%)",
|
|
82
|
+
dataIndex: "atm_iv",
|
|
83
|
+
key: "atm_iv",
|
|
84
|
+
align: "center",
|
|
85
|
+
width: 100
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
title: "Alpha",
|
|
89
|
+
dataIndex: "alpha",
|
|
90
|
+
key: "alpha",
|
|
91
|
+
align: "center",
|
|
92
|
+
width: 110
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
title: "Rho",
|
|
96
|
+
dataIndex: "rho",
|
|
97
|
+
key: "rho",
|
|
98
|
+
align: "center",
|
|
99
|
+
width: 110
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
title: "Nu (v)",
|
|
103
|
+
dataIndex: "nu",
|
|
104
|
+
key: "nu",
|
|
105
|
+
align: "center",
|
|
106
|
+
width: 110
|
|
107
|
+
},
|
|
108
|
+
{
|
|
109
|
+
title: "Points",
|
|
110
|
+
dataIndex: "points",
|
|
111
|
+
key: "points",
|
|
112
|
+
align: "center",
|
|
113
|
+
width: 100
|
|
114
|
+
}
|
|
115
|
+
]);
|
|
116
|
+
const tableData = computed(
|
|
117
|
+
() => [...state.rows].sort(
|
|
118
|
+
(a, b) => parseExpiryToDate(a.expiry).getTime() - parseExpiryToDate(b.expiry).getTime()
|
|
119
|
+
).map((item) => ({
|
|
120
|
+
key: item.expiry,
|
|
121
|
+
expiry: item.expiry,
|
|
122
|
+
rmse_bps: formatRmse(item.rmse_bps),
|
|
123
|
+
forward: formatForward(item.forward),
|
|
124
|
+
atm_iv: formatAtmIv(item.atm_iv),
|
|
125
|
+
alpha: formatParam(item.alpha),
|
|
126
|
+
rho: formatParam(item.rho),
|
|
127
|
+
nu: formatParam(item.nu),
|
|
128
|
+
points: formatPoints(item.points)
|
|
129
|
+
}))
|
|
130
|
+
);
|
|
131
|
+
const applyPreviewData = () => {
|
|
132
|
+
state.exchange = "deribit";
|
|
133
|
+
state.snapshotTs = getSabrPreviewSnapshotTs();
|
|
134
|
+
state.rows = buildSabrCalibratedParametersPreviewRows();
|
|
135
|
+
state.snapshotTimeDisplay = showEndDateTime(state.snapshotTs);
|
|
136
|
+
state.loadingFlag = false;
|
|
137
|
+
};
|
|
138
|
+
const fetchData = () => {
|
|
139
|
+
if (props.previewMode) {
|
|
140
|
+
applyPreviewData();
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
state.loadingFlag = true;
|
|
144
|
+
state.exchange = "deribit";
|
|
145
|
+
getSabrCalibratedParameters({
|
|
146
|
+
currency: "BTC",
|
|
147
|
+
exchange: "deribit"
|
|
148
|
+
}).then((res) => {
|
|
149
|
+
if (res && res.code === 200 && res.data) {
|
|
150
|
+
state.snapshotTs = Number(res.data.ts || 0);
|
|
151
|
+
state.rows = Array.isArray(res.data.expiries) ? res.data.expiries : [];
|
|
152
|
+
} else {
|
|
153
|
+
state.snapshotTs = 0;
|
|
154
|
+
state.rows = [];
|
|
155
|
+
}
|
|
156
|
+
state.snapshotTimeDisplay = state.snapshotTs > 0 ? showEndDateTime(state.snapshotTs) : "-";
|
|
157
|
+
}).finally(() => {
|
|
158
|
+
state.loadingFlag = false;
|
|
159
|
+
});
|
|
160
|
+
};
|
|
161
|
+
watch(
|
|
162
|
+
() => props.previewMode,
|
|
163
|
+
(locked, wasLocked) => {
|
|
164
|
+
if (locked) {
|
|
165
|
+
applyPreviewData();
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
if (wasLocked === true) {
|
|
169
|
+
fetchData();
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
);
|
|
173
|
+
onMounted(() => {
|
|
174
|
+
if (props.previewMode) {
|
|
175
|
+
applyPreviewData();
|
|
176
|
+
} else {
|
|
177
|
+
fetchData();
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
return (_ctx, _cache) => {
|
|
181
|
+
const _component_g_icon = resolveComponent("g-icon");
|
|
182
|
+
const _component_g_tooltip = resolveComponent("g-tooltip");
|
|
183
|
+
const _component_a_table = Table;
|
|
184
|
+
const _component_g_chart_panel = resolveComponent("g-chart-panel");
|
|
185
|
+
return openBlock(), createElementBlock(
|
|
186
|
+
"div",
|
|
187
|
+
{
|
|
188
|
+
class: normalizeClass([unref(ns).b()])
|
|
189
|
+
},
|
|
190
|
+
[
|
|
191
|
+
createVNode(_component_g_chart_panel, {
|
|
192
|
+
currency: unref(currency),
|
|
193
|
+
"onUpdate:currency": _cache[0] || (_cache[0] = ($event) => isRef(currency) ? currency.value = $event : null),
|
|
194
|
+
exchange: unref(exchange),
|
|
195
|
+
"onUpdate:exchange": _cache[1] || (_cache[1] = ($event) => isRef(exchange) ? exchange.value = $event : null),
|
|
196
|
+
loading: state.loadingFlag,
|
|
197
|
+
showExchangeSelector: false,
|
|
198
|
+
showCurrencySelector: false,
|
|
199
|
+
currencyList,
|
|
200
|
+
"content-locked": props.previewMode,
|
|
201
|
+
onRefresh: fetchData
|
|
202
|
+
}, {
|
|
203
|
+
title: withCtx(() => [
|
|
204
|
+
createTextVNode(
|
|
205
|
+
toDisplayString(unref(t)("message.sabrCalibratedParameters")) + " ",
|
|
206
|
+
1
|
|
207
|
+
),
|
|
208
|
+
createVNode(_component_g_tooltip, { placement: "bottom" }, {
|
|
209
|
+
title: withCtx(() => [
|
|
210
|
+
createElementVNode("div", {
|
|
211
|
+
class: "greeks-panel-tip",
|
|
212
|
+
innerHTML: unref(t)("message.sabrCalibratedParametersTips")
|
|
213
|
+
}, null, 8, _hoisted_1)
|
|
214
|
+
]),
|
|
215
|
+
default: withCtx(() => [
|
|
216
|
+
createVNode(_component_g_icon, { name: "info_question_circle" })
|
|
217
|
+
]),
|
|
218
|
+
_: 1
|
|
219
|
+
}),
|
|
220
|
+
createVNode(unref(GProBadge))
|
|
221
|
+
]),
|
|
222
|
+
tool: withCtx(() => [
|
|
223
|
+
createElementVNode("div", _hoisted_2, [
|
|
224
|
+
createElementVNode(
|
|
225
|
+
"span",
|
|
226
|
+
_hoisted_3,
|
|
227
|
+
toDisplayString(unref(t)("message.time")),
|
|
228
|
+
1
|
|
229
|
+
),
|
|
230
|
+
createElementVNode(
|
|
231
|
+
"span",
|
|
232
|
+
_hoisted_4,
|
|
233
|
+
toDisplayString(state.snapshotTimeDisplay),
|
|
234
|
+
1
|
|
235
|
+
)
|
|
236
|
+
])
|
|
237
|
+
]),
|
|
238
|
+
body: withCtx(() => [
|
|
239
|
+
createVNode(_component_a_table, {
|
|
240
|
+
columns: unref(columns),
|
|
241
|
+
dataSource: unref(tableData),
|
|
242
|
+
size: "small",
|
|
243
|
+
pagination: false,
|
|
244
|
+
scroll: { x: 920 },
|
|
245
|
+
class: "sabr-table",
|
|
246
|
+
sticky: { offsetHeader: 0 }
|
|
247
|
+
}, null, 8, ["columns", "dataSource"])
|
|
248
|
+
]),
|
|
249
|
+
"content-locked-overlay": withCtx(() => [
|
|
250
|
+
renderSlot(_ctx.$slots, "content-locked-overlay")
|
|
251
|
+
]),
|
|
252
|
+
_: 3
|
|
253
|
+
}, 8, ["currency", "exchange", "loading", "content-locked"])
|
|
254
|
+
],
|
|
255
|
+
2
|
|
256
|
+
);
|
|
257
|
+
};
|
|
28
258
|
}
|
|
29
259
|
});
|
|
260
|
+
var PanelSabrCalibratedParameters = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "/Users/luobowen/Desktop/greeks/greeks-live-ui/packages/components/panel-sabr-calibrated-parameters/src/panel-sabr-calibrated-parameters.vue"]]);
|
|
30
261
|
|
|
31
|
-
export {
|
|
262
|
+
export { PanelSabrCalibratedParameters as default };
|
|
32
263
|
//# sourceMappingURL=panel-sabr-calibrated-parameters.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"panel-sabr-calibrated-parameters.mjs","sources":["../../../../../../../packages/components/panel-sabr-calibrated-parameters/src/panel-sabr-calibrated-parameters.ts"],"sourcesContent":["import { buildProps } from '@greeks-live-ui/utils'\nimport type PanelSabrCalibratedParameters from './panel-sabr-calibrated-parameters.vue'\nimport type { ExtractPropTypes } from 'vue'\n\nexport const panelSabrCalibratedParametersEmits = {\n 'update:currency': (currency: string) => true,\n 'update:exchange': (exchange: string) => true,\n}\nexport type PanelSabrCalibratedParametersEmits = typeof panelSabrCalibratedParametersEmits\n\nexport const panelSabrCalibratedParametersProps = buildProps({\n defaultCurrency: {\n type: String,\n required: false,\n },\n defaultExchange: {\n type: String,\n required: false,\n },\n currency: {\n type: String,\n required: false,\n },\n exchange: {\n type: String,\n required: false,\n },\n previewMode: {\n type: Boolean,\n default: false,\n },\n})\nexport type PanelSabrCalibratedParametersProps = ExtractPropTypes<typeof panelSabrCalibratedParametersProps>\nexport type PanelSabrCalibratedParametersInstance = InstanceType<typeof PanelSabrCalibratedParameters>\n"],"names":[],"mappings":";;;AAIO,MAAM,kCAAqC,GAAA;AAAA,EAChD,iBAAA,EAAmB,CAAC,QAAqB,KAAA,IAAA;AAAA,EACzC,iBAAA,EAAmB,CAAC,QAAqB,KAAA,IAAA;AAC3C,EAAA;AAGO,MAAM,qCAAqC,UAAW,CAAA;AAAA,EAC3D,eAAiB,EAAA;AAAA,IACf,IAAM,EAAA,MAAA;AAAA,IACN,QAAU,EAAA,KAAA;AAAA,GACZ;AAAA,EACA,eAAiB,EAAA;AAAA,IACf,IAAM,EAAA,MAAA;AAAA,IACN,QAAU,EAAA,KAAA;AAAA,GACZ;AAAA,EACA,QAAU,EAAA;AAAA,IACR,IAAM,EAAA,MAAA;AAAA,IACN,QAAU,EAAA,KAAA;AAAA,GACZ;AAAA,EACA,QAAU,EAAA;AAAA,IACR,IAAM,EAAA,MAAA;AAAA,IACN,QAAU,EAAA,KAAA;AAAA,GACZ;AAAA,EACA,WAAa,EAAA;AAAA,IACX,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,KAAA;AAAA,GACX;AACF,CAAC;;;;"}
|
|
1
|
+
{"version":3,"file":"panel-sabr-calibrated-parameters.mjs","sources":["../../../../../../../packages/components/panel-sabr-calibrated-parameters/src/panel-sabr-calibrated-parameters.vue"],"sourcesContent":["<template>\n <div :class=\"[ns.b()]\">\n <g-chart-panel\n v-model:currency=\"currency\"\n v-model:exchange=\"exchange\"\n :loading=\"state.loadingFlag\"\n :showExchangeSelector=\"false\"\n :showCurrencySelector=\"false\"\n :currencyList=\"currencyList\"\n :content-locked=\"props.previewMode\"\n @refresh=\"fetchData\"\n >\n <template #title>\n {{ t('message.sabrCalibratedParameters') }}\n <g-tooltip placement=\"bottom\">\n <g-icon name=\"info_question_circle\" />\n <template #title>\n <div\n class=\"greeks-panel-tip\"\n v-html=\"t('message.sabrCalibratedParametersTips')\"\n ></div>\n </template>\n </g-tooltip>\n <g-pro-badge />\n </template>\n\n <template #tool>\n <div class=\"period-controls\">\n <span class=\"selector-label h5-hide\">{{ t('message.time') }}</span>\n <span class=\"period-range\">{{ state.snapshotTimeDisplay }}</span>\n </div>\n </template>\n\n <template #body>\n <a-table\n :columns=\"columns\"\n :dataSource=\"tableData\"\n size=\"small\"\n :pagination=\"false\"\n :scroll=\"{ x: 920 }\"\n class=\"sabr-table\"\n :sticky=\"{ offsetHeader: 0 }\"\n />\n </template>\n\n <template #content-locked-overlay>\n <slot name=\"content-locked-overlay\" />\n </template>\n </g-chart-panel>\n </div>\n</template>\n<script lang=\"ts\" setup>\nimport { GProBadge } from '@greeks-live-ui/components/pro-badge';\nimport { useDeviceType, useLocale, useNamespace } from '@greeks-live-ui/hooks';\nimport { computed, onMounted, reactive, watch } from 'vue';\nimport {\n buildSabrCalibratedParametersPreviewRows,\n getSabrCalibratedParameters,\n getSabrPreviewSnapshotTs,\n ISabrCalibratedParametersExpiryItem,\n} from '@greeks-live-ui/utils';\nimport {\n parseExpiryToDate,\n showEndDateTime,\n thousandthFormat,\n} from '@greeks-live-ui/utils';\nimport {\n panelSabrCalibratedParametersEmits,\n panelSabrCalibratedParametersProps,\n} from './panel-sabr-calibrated-parameters';\n\ndefineOptions({\n name: 'GPanelSabrCalibratedParameters',\n});\n\nconst ns = useNamespace('panel-sabr-calibrated-parameters');\nconst props = defineProps(panelSabrCalibratedParametersProps);\nconst emits = defineEmits(panelSabrCalibratedParametersEmits);\nconst { t } = useLocale();\nconst { isMobile } = useDeviceType();\n\nconst state = reactive({\n loadingFlag: false,\n exchange: 'deribit',\n currency: 'BTC',\n snapshotTs: 0,\n snapshotTimeDisplay: '-',\n rows: [] as ISabrCalibratedParametersExpiryItem[],\n});\n\nconst currency = computed({\n get: () => 'BTC',\n set: (newVal) => {\n emits('update:currency', newVal);\n },\n});\n\nconst exchange = computed({\n get: () => 'deribit',\n set: (newVal) => {\n emits('update:exchange', newVal);\n },\n});\n\nconst currencyList = [{ value: 'BTC', label: 'BTC', icon: 'currency_btc' }];\n\nconst formatRmse = (value: number) => Number(value || 0).toFixed(1);\nconst formatForward = (value: number) =>\n thousandthFormat(Number(value || 0), 2);\nconst formatAtmIv = (value: number) => `${Number(value || 0).toFixed(2)}%`;\nconst formatParam = (value: number) => Number(value || 0).toFixed(4);\nconst formatPoints = (value: number) =>\n thousandthFormat(Math.round(Number(value || 0)), 0);\n\nconst columns = computed(() => [\n {\n title: t('message.expiry'),\n dataIndex: 'expiry',\n key: 'expiry',\n align: 'left',\n fixed: 'left',\n width: 100,\n },\n {\n title: 'RMSE (bps)',\n dataIndex: 'rmse_bps',\n key: 'rmse_bps',\n align: 'center',\n width: 100,\n },\n {\n title: 'Forward',\n dataIndex: 'forward',\n key: 'forward',\n align: 'center',\n width: 120,\n },\n {\n title: 'ATM IV (%)',\n dataIndex: 'atm_iv',\n key: 'atm_iv',\n align: 'center',\n width: 100,\n },\n {\n title: 'Alpha',\n dataIndex: 'alpha',\n key: 'alpha',\n align: 'center',\n width: 110,\n },\n {\n title: 'Rho',\n dataIndex: 'rho',\n key: 'rho',\n align: 'center',\n width: 110,\n },\n {\n title: 'Nu (v)',\n dataIndex: 'nu',\n key: 'nu',\n align: 'center',\n width: 110,\n },\n {\n title: 'Points',\n dataIndex: 'points',\n key: 'points',\n align: 'center',\n width: 100,\n },\n]);\n\nconst tableData = computed(() =>\n [...state.rows]\n .sort(\n (a, b) =>\n parseExpiryToDate(a.expiry).getTime() -\n parseExpiryToDate(b.expiry).getTime()\n )\n .map((item) => ({\n key: item.expiry,\n expiry: item.expiry,\n rmse_bps: formatRmse(item.rmse_bps),\n forward: formatForward(item.forward),\n atm_iv: formatAtmIv(item.atm_iv),\n alpha: formatParam(item.alpha),\n rho: formatParam(item.rho),\n nu: formatParam(item.nu),\n points: formatPoints(item.points),\n }))\n);\n\nconst applyPreviewData = () => {\n state.exchange = 'deribit';\n state.snapshotTs = getSabrPreviewSnapshotTs();\n state.rows = buildSabrCalibratedParametersPreviewRows();\n state.snapshotTimeDisplay = showEndDateTime(state.snapshotTs);\n state.loadingFlag = false;\n};\n\nconst fetchData = () => {\n if (props.previewMode) {\n applyPreviewData();\n return;\n }\n state.loadingFlag = true;\n state.exchange = 'deribit';\n getSabrCalibratedParameters({\n currency: 'BTC',\n exchange: 'deribit',\n })\n .then((res) => {\n if (res && res.code === 200 && res.data) {\n state.snapshotTs = Number(res.data.ts || 0);\n state.rows = Array.isArray(res.data.expiries) ? res.data.expiries : [];\n } else {\n state.snapshotTs = 0;\n state.rows = [];\n }\n state.snapshotTimeDisplay =\n state.snapshotTs > 0 ? showEndDateTime(state.snapshotTs) : '-';\n })\n .finally(() => {\n state.loadingFlag = false;\n });\n};\n\nwatch(\n () => props.previewMode,\n (locked, wasLocked) => {\n if (locked) {\n applyPreviewData();\n return;\n }\n if (wasLocked === true) {\n fetchData();\n }\n }\n);\n\nonMounted(() => {\n if (props.previewMode) {\n applyPreviewData();\n } else {\n fetchData();\n }\n});\n</script>\n"],"names":[],"mappings":"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"}
|
|
@@ -1,263 +1,32 @@
|
|
|
1
|
-
import { Table } from 'ant-design-vue/es';
|
|
2
|
-
import { defineComponent, reactive, computed, watch, onMounted, resolveComponent, openBlock, createElementBlock, normalizeClass, unref, createVNode, isRef, withCtx, createTextVNode, toDisplayString, createElementVNode, renderSlot } from 'vue';
|
|
3
|
-
import { GProBadge } from '../../pro-badge/index.mjs';
|
|
4
|
-
import '../../../hooks/index.mjs';
|
|
5
1
|
import '../../../utils/index.mjs';
|
|
6
|
-
import {
|
|
7
|
-
import _export_sfc from '../../../../_virtual/plugin-vue_export-helper.mjs';
|
|
8
|
-
import { useNamespace } from '../../../hooks/use-namespace/index.mjs';
|
|
9
|
-
import { useLocale } from '../../../hooks/use-locale/index.mjs';
|
|
10
|
-
import { useDeviceType } from '../../../hooks/use-device-type/index.mjs';
|
|
11
|
-
import { thousandthFormat, parseExpiryToDate, showEndDateTime } from '../../../utils/chartHelp.mjs';
|
|
12
|
-
import { getSabrPreviewSnapshotTs, buildSabrCalibratedParametersPreviewRows } from '../../../utils/sabrPreview.mjs';
|
|
13
|
-
import { getSabrCalibratedParameters } from '../../../utils/dataLab.mjs';
|
|
2
|
+
import { buildProps } from '../../../utils/vue/props/runtime.mjs';
|
|
14
3
|
|
|
15
|
-
const
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
const _hoisted_4 = { class: "period-range" };
|
|
19
|
-
const __default__ = {
|
|
20
|
-
name: "GPanelSabrCalibratedParameters"
|
|
4
|
+
const panelSabrCalibratedParametersEmits = {
|
|
5
|
+
"update:currency": (currency) => true,
|
|
6
|
+
"update:exchange": (exchange) => true
|
|
21
7
|
};
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
emits("update:currency", newVal);
|
|
43
|
-
}
|
|
44
|
-
});
|
|
45
|
-
const exchange = computed({
|
|
46
|
-
get: () => "deribit",
|
|
47
|
-
set: (newVal) => {
|
|
48
|
-
emits("update:exchange", newVal);
|
|
49
|
-
}
|
|
50
|
-
});
|
|
51
|
-
const currencyList = [{ value: "BTC", label: "BTC", icon: "currency_btc" }];
|
|
52
|
-
const formatRmse = (value) => Number(value || 0).toFixed(1);
|
|
53
|
-
const formatForward = (value) => thousandthFormat(Number(value || 0), 2);
|
|
54
|
-
const formatAtmIv = (value) => `${Number(value || 0).toFixed(2)}%`;
|
|
55
|
-
const formatParam = (value) => Number(value || 0).toFixed(4);
|
|
56
|
-
const formatPoints = (value) => thousandthFormat(Math.round(Number(value || 0)), 0);
|
|
57
|
-
const columns = computed(() => [
|
|
58
|
-
{
|
|
59
|
-
title: t("message.expiry"),
|
|
60
|
-
dataIndex: "expiry",
|
|
61
|
-
key: "expiry",
|
|
62
|
-
align: "left",
|
|
63
|
-
fixed: "left",
|
|
64
|
-
width: 100
|
|
65
|
-
},
|
|
66
|
-
{
|
|
67
|
-
title: "RMSE (bps)",
|
|
68
|
-
dataIndex: "rmse_bps",
|
|
69
|
-
key: "rmse_bps",
|
|
70
|
-
align: "center",
|
|
71
|
-
width: 100
|
|
72
|
-
},
|
|
73
|
-
{
|
|
74
|
-
title: "Forward",
|
|
75
|
-
dataIndex: "forward",
|
|
76
|
-
key: "forward",
|
|
77
|
-
align: "center",
|
|
78
|
-
width: 120
|
|
79
|
-
},
|
|
80
|
-
{
|
|
81
|
-
title: "ATM IV (%)",
|
|
82
|
-
dataIndex: "atm_iv",
|
|
83
|
-
key: "atm_iv",
|
|
84
|
-
align: "center",
|
|
85
|
-
width: 100
|
|
86
|
-
},
|
|
87
|
-
{
|
|
88
|
-
title: "Alpha",
|
|
89
|
-
dataIndex: "alpha",
|
|
90
|
-
key: "alpha",
|
|
91
|
-
align: "center",
|
|
92
|
-
width: 110
|
|
93
|
-
},
|
|
94
|
-
{
|
|
95
|
-
title: "Rho",
|
|
96
|
-
dataIndex: "rho",
|
|
97
|
-
key: "rho",
|
|
98
|
-
align: "center",
|
|
99
|
-
width: 110
|
|
100
|
-
},
|
|
101
|
-
{
|
|
102
|
-
title: "Nu (v)",
|
|
103
|
-
dataIndex: "nu",
|
|
104
|
-
key: "nu",
|
|
105
|
-
align: "center",
|
|
106
|
-
width: 110
|
|
107
|
-
},
|
|
108
|
-
{
|
|
109
|
-
title: "Points",
|
|
110
|
-
dataIndex: "points",
|
|
111
|
-
key: "points",
|
|
112
|
-
align: "center",
|
|
113
|
-
width: 100
|
|
114
|
-
}
|
|
115
|
-
]);
|
|
116
|
-
const tableData = computed(
|
|
117
|
-
() => [...state.rows].sort(
|
|
118
|
-
(a, b) => parseExpiryToDate(a.expiry).getTime() - parseExpiryToDate(b.expiry).getTime()
|
|
119
|
-
).map((item) => ({
|
|
120
|
-
key: item.expiry,
|
|
121
|
-
expiry: item.expiry,
|
|
122
|
-
rmse_bps: formatRmse(item.rmse_bps),
|
|
123
|
-
forward: formatForward(item.forward),
|
|
124
|
-
atm_iv: formatAtmIv(item.atm_iv),
|
|
125
|
-
alpha: formatParam(item.alpha),
|
|
126
|
-
rho: formatParam(item.rho),
|
|
127
|
-
nu: formatParam(item.nu),
|
|
128
|
-
points: formatPoints(item.points)
|
|
129
|
-
}))
|
|
130
|
-
);
|
|
131
|
-
const applyPreviewData = () => {
|
|
132
|
-
state.exchange = "deribit";
|
|
133
|
-
state.snapshotTs = getSabrPreviewSnapshotTs();
|
|
134
|
-
state.rows = buildSabrCalibratedParametersPreviewRows();
|
|
135
|
-
state.snapshotTimeDisplay = showEndDateTime(state.snapshotTs);
|
|
136
|
-
state.loadingFlag = false;
|
|
137
|
-
};
|
|
138
|
-
const fetchData = () => {
|
|
139
|
-
if (props.previewMode) {
|
|
140
|
-
applyPreviewData();
|
|
141
|
-
return;
|
|
142
|
-
}
|
|
143
|
-
state.loadingFlag = true;
|
|
144
|
-
state.exchange = "deribit";
|
|
145
|
-
getSabrCalibratedParameters({
|
|
146
|
-
currency: "BTC",
|
|
147
|
-
exchange: "deribit"
|
|
148
|
-
}).then((res) => {
|
|
149
|
-
if (res && res.code === 200 && res.data) {
|
|
150
|
-
state.snapshotTs = Number(res.data.ts || 0);
|
|
151
|
-
state.rows = Array.isArray(res.data.expiries) ? res.data.expiries : [];
|
|
152
|
-
} else {
|
|
153
|
-
state.snapshotTs = 0;
|
|
154
|
-
state.rows = [];
|
|
155
|
-
}
|
|
156
|
-
state.snapshotTimeDisplay = state.snapshotTs > 0 ? showEndDateTime(state.snapshotTs) : "-";
|
|
157
|
-
}).finally(() => {
|
|
158
|
-
state.loadingFlag = false;
|
|
159
|
-
});
|
|
160
|
-
};
|
|
161
|
-
watch(
|
|
162
|
-
() => props.previewMode,
|
|
163
|
-
(locked, wasLocked) => {
|
|
164
|
-
if (locked) {
|
|
165
|
-
applyPreviewData();
|
|
166
|
-
return;
|
|
167
|
-
}
|
|
168
|
-
if (wasLocked === true) {
|
|
169
|
-
fetchData();
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
);
|
|
173
|
-
onMounted(() => {
|
|
174
|
-
if (props.previewMode) {
|
|
175
|
-
applyPreviewData();
|
|
176
|
-
} else {
|
|
177
|
-
fetchData();
|
|
178
|
-
}
|
|
179
|
-
});
|
|
180
|
-
return (_ctx, _cache) => {
|
|
181
|
-
const _component_g_icon = resolveComponent("g-icon");
|
|
182
|
-
const _component_g_tooltip = resolveComponent("g-tooltip");
|
|
183
|
-
const _component_a_table = Table;
|
|
184
|
-
const _component_g_chart_panel = resolveComponent("g-chart-panel");
|
|
185
|
-
return openBlock(), createElementBlock(
|
|
186
|
-
"div",
|
|
187
|
-
{
|
|
188
|
-
class: normalizeClass([unref(ns).b()])
|
|
189
|
-
},
|
|
190
|
-
[
|
|
191
|
-
createVNode(_component_g_chart_panel, {
|
|
192
|
-
currency: unref(currency),
|
|
193
|
-
"onUpdate:currency": _cache[0] || (_cache[0] = ($event) => isRef(currency) ? currency.value = $event : null),
|
|
194
|
-
exchange: unref(exchange),
|
|
195
|
-
"onUpdate:exchange": _cache[1] || (_cache[1] = ($event) => isRef(exchange) ? exchange.value = $event : null),
|
|
196
|
-
loading: state.loadingFlag,
|
|
197
|
-
showExchangeSelector: false,
|
|
198
|
-
showCurrencySelector: false,
|
|
199
|
-
currencyList,
|
|
200
|
-
"content-locked": props.previewMode,
|
|
201
|
-
onRefresh: fetchData
|
|
202
|
-
}, {
|
|
203
|
-
title: withCtx(() => [
|
|
204
|
-
createTextVNode(
|
|
205
|
-
toDisplayString(unref(t)("message.sabrCalibratedParameters")) + " ",
|
|
206
|
-
1
|
|
207
|
-
),
|
|
208
|
-
createVNode(_component_g_tooltip, { placement: "bottom" }, {
|
|
209
|
-
title: withCtx(() => [
|
|
210
|
-
createElementVNode("div", {
|
|
211
|
-
class: "greeks-panel-tip",
|
|
212
|
-
innerHTML: unref(t)("message.sabrCalibratedParametersTips")
|
|
213
|
-
}, null, 8, _hoisted_1)
|
|
214
|
-
]),
|
|
215
|
-
default: withCtx(() => [
|
|
216
|
-
createVNode(_component_g_icon, { name: "info_question_circle" })
|
|
217
|
-
]),
|
|
218
|
-
_: 1
|
|
219
|
-
}),
|
|
220
|
-
createVNode(unref(GProBadge))
|
|
221
|
-
]),
|
|
222
|
-
tool: withCtx(() => [
|
|
223
|
-
createElementVNode("div", _hoisted_2, [
|
|
224
|
-
createElementVNode(
|
|
225
|
-
"span",
|
|
226
|
-
_hoisted_3,
|
|
227
|
-
toDisplayString(unref(t)("message.time")),
|
|
228
|
-
1
|
|
229
|
-
),
|
|
230
|
-
createElementVNode(
|
|
231
|
-
"span",
|
|
232
|
-
_hoisted_4,
|
|
233
|
-
toDisplayString(state.snapshotTimeDisplay),
|
|
234
|
-
1
|
|
235
|
-
)
|
|
236
|
-
])
|
|
237
|
-
]),
|
|
238
|
-
body: withCtx(() => [
|
|
239
|
-
createVNode(_component_a_table, {
|
|
240
|
-
columns: unref(columns),
|
|
241
|
-
dataSource: unref(tableData),
|
|
242
|
-
size: "small",
|
|
243
|
-
pagination: false,
|
|
244
|
-
scroll: { x: 920 },
|
|
245
|
-
class: "sabr-table",
|
|
246
|
-
sticky: { offsetHeader: 0 }
|
|
247
|
-
}, null, 8, ["columns", "dataSource"])
|
|
248
|
-
]),
|
|
249
|
-
"content-locked-overlay": withCtx(() => [
|
|
250
|
-
renderSlot(_ctx.$slots, "content-locked-overlay")
|
|
251
|
-
]),
|
|
252
|
-
_: 3
|
|
253
|
-
}, 8, ["currency", "exchange", "loading", "content-locked"])
|
|
254
|
-
],
|
|
255
|
-
2
|
|
256
|
-
);
|
|
257
|
-
};
|
|
8
|
+
const panelSabrCalibratedParametersProps = buildProps({
|
|
9
|
+
defaultCurrency: {
|
|
10
|
+
type: String,
|
|
11
|
+
required: false
|
|
12
|
+
},
|
|
13
|
+
defaultExchange: {
|
|
14
|
+
type: String,
|
|
15
|
+
required: false
|
|
16
|
+
},
|
|
17
|
+
currency: {
|
|
18
|
+
type: String,
|
|
19
|
+
required: false
|
|
20
|
+
},
|
|
21
|
+
exchange: {
|
|
22
|
+
type: String,
|
|
23
|
+
required: false
|
|
24
|
+
},
|
|
25
|
+
previewMode: {
|
|
26
|
+
type: Boolean,
|
|
27
|
+
default: false
|
|
258
28
|
}
|
|
259
29
|
});
|
|
260
|
-
var PanelSabrCalibratedParameters = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "/Users/luobowen/Desktop/greeks/greeks-live-ui/packages/components/panel-sabr-calibrated-parameters/src/panel-sabr-calibrated-parameters.vue"]]);
|
|
261
30
|
|
|
262
|
-
export {
|
|
31
|
+
export { panelSabrCalibratedParametersEmits, panelSabrCalibratedParametersProps };
|
|
263
32
|
//# sourceMappingURL=panel-sabr-calibrated-parameters2.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"panel-sabr-calibrated-parameters2.mjs","sources":["../../../../../../../packages/components/panel-sabr-calibrated-parameters/src/panel-sabr-calibrated-parameters.vue"],"sourcesContent":["<template>\n <div :class=\"[ns.b()]\">\n <g-chart-panel\n v-model:currency=\"currency\"\n v-model:exchange=\"exchange\"\n :loading=\"state.loadingFlag\"\n :showExchangeSelector=\"false\"\n :showCurrencySelector=\"false\"\n :currencyList=\"currencyList\"\n :content-locked=\"props.previewMode\"\n @refresh=\"fetchData\"\n >\n <template #title>\n {{ t('message.sabrCalibratedParameters') }}\n <g-tooltip placement=\"bottom\">\n <g-icon name=\"info_question_circle\" />\n <template #title>\n <div\n class=\"greeks-panel-tip\"\n v-html=\"t('message.sabrCalibratedParametersTips')\"\n ></div>\n </template>\n </g-tooltip>\n <g-pro-badge />\n </template>\n\n <template #tool>\n <div class=\"period-controls\">\n <span class=\"selector-label h5-hide\">{{ t('message.time') }}</span>\n <span class=\"period-range\">{{ state.snapshotTimeDisplay }}</span>\n </div>\n </template>\n\n <template #body>\n <a-table\n :columns=\"columns\"\n :dataSource=\"tableData\"\n size=\"small\"\n :pagination=\"false\"\n :scroll=\"{ x: 920 }\"\n class=\"sabr-table\"\n :sticky=\"{ offsetHeader: 0 }\"\n />\n </template>\n\n <template #content-locked-overlay>\n <slot name=\"content-locked-overlay\" />\n </template>\n </g-chart-panel>\n </div>\n</template>\n<script lang=\"ts\" setup>\nimport { GProBadge } from '@greeks-live-ui/components/pro-badge';\nimport { useDeviceType, useLocale, useNamespace } from '@greeks-live-ui/hooks';\nimport { computed, onMounted, reactive, watch } from 'vue';\nimport {\n buildSabrCalibratedParametersPreviewRows,\n getSabrCalibratedParameters,\n getSabrPreviewSnapshotTs,\n ISabrCalibratedParametersExpiryItem,\n} from '@greeks-live-ui/utils';\nimport {\n parseExpiryToDate,\n showEndDateTime,\n thousandthFormat,\n} from '@greeks-live-ui/utils';\nimport {\n panelSabrCalibratedParametersEmits,\n panelSabrCalibratedParametersProps,\n} from './panel-sabr-calibrated-parameters';\n\ndefineOptions({\n name: 'GPanelSabrCalibratedParameters',\n});\n\nconst ns = useNamespace('panel-sabr-calibrated-parameters');\nconst props = defineProps(panelSabrCalibratedParametersProps);\nconst emits = defineEmits(panelSabrCalibratedParametersEmits);\nconst { t } = useLocale();\nconst { isMobile } = useDeviceType();\n\nconst state = reactive({\n loadingFlag: false,\n exchange: 'deribit',\n currency: 'BTC',\n snapshotTs: 0,\n snapshotTimeDisplay: '-',\n rows: [] as ISabrCalibratedParametersExpiryItem[],\n});\n\nconst currency = computed({\n get: () => 'BTC',\n set: (newVal) => {\n emits('update:currency', newVal);\n },\n});\n\nconst exchange = computed({\n get: () => 'deribit',\n set: (newVal) => {\n emits('update:exchange', newVal);\n },\n});\n\nconst currencyList = [{ value: 'BTC', label: 'BTC', icon: 'currency_btc' }];\n\nconst formatRmse = (value: number) => Number(value || 0).toFixed(1);\nconst formatForward = (value: number) =>\n thousandthFormat(Number(value || 0), 2);\nconst formatAtmIv = (value: number) => `${Number(value || 0).toFixed(2)}%`;\nconst formatParam = (value: number) => Number(value || 0).toFixed(4);\nconst formatPoints = (value: number) =>\n thousandthFormat(Math.round(Number(value || 0)), 0);\n\nconst columns = computed(() => [\n {\n title: t('message.expiry'),\n dataIndex: 'expiry',\n key: 'expiry',\n align: 'left',\n fixed: 'left',\n width: 100,\n },\n {\n title: 'RMSE (bps)',\n dataIndex: 'rmse_bps',\n key: 'rmse_bps',\n align: 'center',\n width: 100,\n },\n {\n title: 'Forward',\n dataIndex: 'forward',\n key: 'forward',\n align: 'center',\n width: 120,\n },\n {\n title: 'ATM IV (%)',\n dataIndex: 'atm_iv',\n key: 'atm_iv',\n align: 'center',\n width: 100,\n },\n {\n title: 'Alpha',\n dataIndex: 'alpha',\n key: 'alpha',\n align: 'center',\n width: 110,\n },\n {\n title: 'Rho',\n dataIndex: 'rho',\n key: 'rho',\n align: 'center',\n width: 110,\n },\n {\n title: 'Nu (v)',\n dataIndex: 'nu',\n key: 'nu',\n align: 'center',\n width: 110,\n },\n {\n title: 'Points',\n dataIndex: 'points',\n key: 'points',\n align: 'center',\n width: 100,\n },\n]);\n\nconst tableData = computed(() =>\n [...state.rows]\n .sort(\n (a, b) =>\n parseExpiryToDate(a.expiry).getTime() -\n parseExpiryToDate(b.expiry).getTime()\n )\n .map((item) => ({\n key: item.expiry,\n expiry: item.expiry,\n rmse_bps: formatRmse(item.rmse_bps),\n forward: formatForward(item.forward),\n atm_iv: formatAtmIv(item.atm_iv),\n alpha: formatParam(item.alpha),\n rho: formatParam(item.rho),\n nu: formatParam(item.nu),\n points: formatPoints(item.points),\n }))\n);\n\nconst applyPreviewData = () => {\n state.exchange = 'deribit';\n state.snapshotTs = getSabrPreviewSnapshotTs();\n state.rows = buildSabrCalibratedParametersPreviewRows();\n state.snapshotTimeDisplay = showEndDateTime(state.snapshotTs);\n state.loadingFlag = false;\n};\n\nconst fetchData = () => {\n if (props.previewMode) {\n applyPreviewData();\n return;\n }\n state.loadingFlag = true;\n state.exchange = 'deribit';\n getSabrCalibratedParameters({\n currency: 'BTC',\n exchange: 'deribit',\n })\n .then((res) => {\n if (res && res.code === 200 && res.data) {\n state.snapshotTs = Number(res.data.ts || 0);\n state.rows = Array.isArray(res.data.expiries) ? res.data.expiries : [];\n } else {\n state.snapshotTs = 0;\n state.rows = [];\n }\n state.snapshotTimeDisplay =\n state.snapshotTs > 0 ? showEndDateTime(state.snapshotTs) : '-';\n })\n .finally(() => {\n state.loadingFlag = false;\n });\n};\n\nwatch(\n () => props.previewMode,\n (locked, wasLocked) => {\n if (locked) {\n applyPreviewData();\n return;\n }\n if (wasLocked === true) {\n fetchData();\n }\n }\n);\n\nonMounted(() => {\n if (props.previewMode) {\n applyPreviewData();\n } else {\n fetchData();\n }\n});\n</script>\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"panel-sabr-calibrated-parameters2.mjs","sources":["../../../../../../../packages/components/panel-sabr-calibrated-parameters/src/panel-sabr-calibrated-parameters.ts"],"sourcesContent":["import { buildProps } from '@greeks-live-ui/utils'\nimport type PanelSabrCalibratedParameters from './panel-sabr-calibrated-parameters.vue'\nimport type { ExtractPropTypes } from 'vue'\n\nexport const panelSabrCalibratedParametersEmits = {\n 'update:currency': (currency: string) => true,\n 'update:exchange': (exchange: string) => true,\n}\nexport type PanelSabrCalibratedParametersEmits = typeof panelSabrCalibratedParametersEmits\n\nexport const panelSabrCalibratedParametersProps = buildProps({\n defaultCurrency: {\n type: String,\n required: false,\n },\n defaultExchange: {\n type: String,\n required: false,\n },\n currency: {\n type: String,\n required: false,\n },\n exchange: {\n type: String,\n required: false,\n },\n previewMode: {\n type: Boolean,\n default: false,\n },\n})\nexport type PanelSabrCalibratedParametersProps = ExtractPropTypes<typeof panelSabrCalibratedParametersProps>\nexport type PanelSabrCalibratedParametersInstance = InstanceType<typeof PanelSabrCalibratedParameters>\n"],"names":[],"mappings":";;;AAIO,MAAM,kCAAqC,GAAA;AAAA,EAChD,iBAAA,EAAmB,CAAC,QAAqB,KAAA,IAAA;AAAA,EACzC,iBAAA,EAAmB,CAAC,QAAqB,KAAA,IAAA;AAC3C,EAAA;AAGO,MAAM,qCAAqC,UAAW,CAAA;AAAA,EAC3D,eAAiB,EAAA;AAAA,IACf,IAAM,EAAA,MAAA;AAAA,IACN,QAAU,EAAA,KAAA;AAAA,GACZ;AAAA,EACA,eAAiB,EAAA;AAAA,IACf,IAAM,EAAA,MAAA;AAAA,IACN,QAAU,EAAA,KAAA;AAAA,GACZ;AAAA,EACA,QAAU,EAAA;AAAA,IACR,IAAM,EAAA,MAAA;AAAA,IACN,QAAU,EAAA,KAAA;AAAA,GACZ;AAAA,EACA,QAAU,EAAA;AAAA,IACR,IAAM,EAAA,MAAA;AAAA,IACN,QAAU,EAAA,KAAA;AAAA,GACZ;AAAA,EACA,WAAa,EAAA;AAAA,IACX,IAAM,EAAA,OAAA;AAAA,IACN,OAAS,EAAA,KAAA;AAAA,GACX;AACF,CAAC;;;;"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import '../../utils/index.mjs';
|
|
2
|
-
import PanelSpotsEtfNetInflow from './src/panel-spots-etf-net-
|
|
3
|
-
export { panelSpotsEtfNetInflowEmits, panelSpotsEtfNetInflowProps } from './src/panel-spots-etf-net-
|
|
2
|
+
import PanelSpotsEtfNetInflow from './src/panel-spots-etf-net-inflow.mjs';
|
|
3
|
+
export { panelSpotsEtfNetInflowEmits, panelSpotsEtfNetInflowProps } from './src/panel-spots-etf-net-inflow2.mjs';
|
|
4
4
|
import { withInstall } from '../../utils/vue/install.mjs';
|
|
5
5
|
|
|
6
6
|
const GPanelSpotsEtfNetInflow = withInstall(PanelSpotsEtfNetInflow);
|