@luzmo/analytics-components-kit 1.0.9-beta.11 → 1.0.9-beta.12
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/components/add-to-dashboard/index.cjs +1 -1
- package/components/add-to-dashboard/index.js +1 -1
- package/components/{add-to-dashboard-nYUaDghN.cjs → add-to-dashboard-D11b-HS7.cjs} +1 -1
- package/components/{add-to-dashboard-BY70QBzE.js → add-to-dashboard-KLYGiqKE.js} +4 -4
- package/components/ai-chat/ai-chat-events.d.ts +5 -1
- package/components/ai-chat/ai-chat.d.ts +36 -1
- package/components/ai-chat/helpers/assistant-message-feedback.d.ts +26 -0
- package/components/ai-chat/index.cjs +1 -1
- package/components/ai-chat/index.d.ts +1 -1
- package/components/ai-chat/index.js +2 -2
- package/components/ai-chat/session/ai-chat-session.d.ts +8 -1
- package/components/ai-chat/stream/chunk-extractors.d.ts +8 -0
- package/components/ai-chat/stream/index.d.ts +1 -1
- package/components/ai-chat/stream/types.d.ts +6 -0
- package/components/ai-chat-C0XZ_pvG.cjs +393 -0
- package/components/{ai-chat-DmDtBF47.js → ai-chat-CYrWJ8Wa.js} +873 -734
- package/components/ai-interaction-textarea/index.cjs +1 -1
- package/components/ai-interaction-textarea/index.js +1 -1
- package/components/{ai-interaction-textarea-6ECwAdeT.js → ai-interaction-textarea-CT698Pph.js} +5 -5
- package/components/{ai-interaction-textarea-CRyyTj_B.cjs → ai-interaction-textarea-Da1ErRHy.cjs} +1 -1
- package/components/{area-chart-positioning.config-CoCdjr2E.cjs → area-chart-positioning.config-DWLy-uS1.cjs} +1 -1
- package/components/{area-chart-positioning.config-o-uJPEr5.js → area-chart-positioning.config-Dpi4gakJ.js} +1 -1
- package/components/{bar-chart-positioning.config-fsB82756.cjs → bar-chart-positioning.config-B3U1-22D.cjs} +1 -1
- package/components/{bar-chart-positioning.config-CZgrS6lc.js → bar-chart-positioning.config-DDv8hNyi.js} +1 -1
- package/components/{base-BmvsQ-s1.cjs → base-BdkFbMZR.cjs} +1 -1
- package/components/{base-CrpOMVeU.js → base-Cvcpdy0h.js} +1 -1
- package/components/{box-plot-positioning.config-CDq460FI.js → box-plot-positioning.config-1BuF6Gjj.js} +1 -1
- package/components/{box-plot-positioning.config-BMfGGDfe.cjs → box-plot-positioning.config-lfqDTCdY.cjs} +1 -1
- package/components/{bubble-chart-positioning.config-C9MmTtTX.cjs → bubble-chart-positioning.config-DVBuVeSs.cjs} +1 -1
- package/components/{bubble-chart-positioning.config-DWfz4tud.js → bubble-chart-positioning.config-V8KfvCkY.js} +1 -1
- package/components/{bullet-chart-positioning.config-BwHPM5ui.cjs → bullet-chart-positioning.config-CtlmKdzp.cjs} +1 -1
- package/components/{bullet-chart-positioning.config-DmSlVIjL.js → bullet-chart-positioning.config-IrK6KYbE.js} +1 -1
- package/components/{choropleth-map-positioning.config-cjBzi_Db.js → choropleth-map-positioning.config-BSb0ig5Y.js} +1 -1
- package/components/{choropleth-map-positioning.config-C0m6zzD3.cjs → choropleth-map-positioning.config-ahRkoZNv.cjs} +1 -1
- package/components/{circle-pack-chart-positioning.config-BAFFQSHe.cjs → circle-pack-chart-positioning.config-CS1dbWgR.cjs} +1 -1
- package/components/{circle-pack-chart-positioning.config-CY2rLb57.js → circle-pack-chart-positioning.config-DfQztqxL.js} +1 -1
- package/components/{circular-gauge-positioning.config-6pZUNxYa.js → circular-gauge-positioning.config-1HH3Rw2L.js} +1 -1
- package/components/{circular-gauge-positioning.config-BfWAjAY2.cjs → circular-gauge-positioning.config-BeLsxbow.cjs} +1 -1
- package/components/{column-chart-positioning.config-xgRuA_l5.cjs → column-chart-positioning.config-CLZuZiVa.cjs} +1 -1
- package/components/{column-chart-positioning.config-hrAvNd7T.js → column-chart-positioning.config-DVeVPtzS.js} +1 -1
- package/components/{combination-chart-positioning.config-BI8HroaG.js → combination-chart-positioning.config-BPXqur2s.js} +1 -1
- package/components/{combination-chart-positioning.config-D0TU4hge.cjs → combination-chart-positioning.config-DKNRMoZN.cjs} +1 -1
- package/components/{conditional-number-positioning.config-CWaDhMLA.js → conditional-number-positioning.config-BWJAnFTq.js} +1 -1
- package/components/{conditional-number-positioning.config-B_yISWne.cjs → conditional-number-positioning.config-HXcO-Ej5.cjs} +1 -1
- package/components/data-field/index.cjs +1 -1
- package/components/data-field/index.js +1 -1
- package/components/{data-field-D4YFqg1H.js → data-field-BMeV_pUL.js} +3 -3
- package/components/{data-field-Hi-ITTzx.cjs → data-field-C204ZKd3.cjs} +1 -1
- package/components/data-field-level/index.cjs +1 -1
- package/components/data-field-level/index.js +1 -1
- package/components/{data-field-level-BWQPtFP5.cjs → data-field-level-Cv4Vgi_o.cjs} +1 -1
- package/components/{data-field-level-CB5GtdU5.js → data-field-level-Dpta9m5I.js} +2 -2
- package/components/data-field-panel/index.cjs +1 -1
- package/components/data-field-panel/index.js +1 -1
- package/components/{data-field-panel-64HoViNT.js → data-field-panel-Beg-fx10.js} +3 -3
- package/components/{data-field-panel-DzKwmQi_.cjs → data-field-panel-D71J7_IE.cjs} +1 -1
- package/components/data-fields-select/data-fields-select.d.ts +2 -0
- package/components/data-fields-select/index.cjs +1 -1
- package/components/data-fields-select/index.js +1 -1
- package/components/{data-fields-select-BOwoWq0j.js → data-fields-select-BKoQMwZd.js} +4 -1
- package/components/{data-fields-select-DXv6PQHG.cjs → data-fields-select-CBTGcYRL.cjs} +1 -1
- package/components/dataset-selector-list/index.cjs +1 -1
- package/components/dataset-selector-list/index.js +1 -1
- package/components/{dataset-selector-list-_AL1-GWw.cjs → dataset-selector-list-D9ZmjTyU.cjs} +1 -1
- package/components/{dataset-selector-list-DFC2bvn0.js → dataset-selector-list-DFMfknD5.js} +1 -1
- package/components/dataset-selector-row/index.cjs +1 -1
- package/components/dataset-selector-row/index.js +1 -1
- package/components/{dataset-selector-row-By2ko-Rd.cjs → dataset-selector-row-Bq_yYpb9.cjs} +1 -1
- package/components/{dataset-selector-row-DC6mrVyF.js → dataset-selector-row-DFPwXde5.js} +5 -5
- package/components/{de-Yl3kqB03.js → de-DPhR2zPG.js} +4 -0
- package/components/de-DUAXVtRS.cjs +20 -0
- package/components/display-settings/index.cjs +1 -1
- package/components/display-settings/index.js +1 -1
- package/components/display-settings-BkbdgMvh.cjs +143 -0
- package/components/{display-settings-BsCKV9ae.js → display-settings-MnSyqIog.js} +17 -16
- package/components/display-settings-binning/index.cjs +1 -1
- package/components/display-settings-binning/index.js +1 -1
- package/components/{display-settings-binning-CkrbhPVB.js → display-settings-binning-BQYxWvFI.js} +3 -3
- package/components/{display-settings-binning-BdtxayZT.cjs → display-settings-binning-DqcCzBrG.cjs} +1 -1
- package/components/display-settings-datetime/index.cjs +1 -1
- package/components/display-settings-datetime/index.js +1 -1
- package/components/{display-settings-datetime-CpFyrcGk.cjs → display-settings-datetime-9WraOyqr.cjs} +1 -1
- package/components/{display-settings-datetime-mVh5Tjrx.js → display-settings-datetime-D5UwdwAI.js} +3 -3
- package/components/display-settings-grand-totals/index.cjs +1 -1
- package/components/display-settings-grand-totals/index.js +1 -1
- package/components/{display-settings-grand-totals-D7unOEKl.js → display-settings-grand-totals-DYSVU-9G.js} +3 -3
- package/components/{display-settings-grand-totals-CwOGoE06.cjs → display-settings-grand-totals-w2Zbxwt4.cjs} +1 -1
- package/components/display-settings-numeric/index.cjs +1 -1
- package/components/display-settings-numeric/index.js +1 -1
- package/components/{display-settings-numeric-DhiXPU3f.cjs → display-settings-numeric-DGyMDswg.cjs} +1 -1
- package/components/{display-settings-numeric-DDZyFNFF.js → display-settings-numeric-YOsAAqyJ.js} +4 -4
- package/components/display-settings-period-over-period/index.cjs +1 -1
- package/components/display-settings-period-over-period/index.js +1 -1
- package/components/{display-settings-period-over-period-Hd172SzT.js → display-settings-period-over-period-CYwQ6KQI.js} +3 -3
- package/components/{display-settings-period-over-period-BNFjbgP0.cjs → display-settings-period-over-period-zme6yEAi.cjs} +1 -1
- package/components/{donut-chart-positioning.config-B2CrxOig.js → donut-chart-positioning.config-ovPyzL2x.js} +1 -1
- package/components/{donut-chart-positioning.config-DQb53kWI.cjs → donut-chart-positioning.config-xwoqdu-c.cjs} +1 -1
- package/components/{es-Ctf1SIsp.js → es-C9faREu_.js} +4 -0
- package/components/es-DKP3YRmv.cjs +20 -0
- package/components/{evolution-number-positioning.config-BdH8pv6_.js → evolution-number-positioning.config-B-H5aEXI.js} +1 -1
- package/components/{evolution-number-positioning.config-BzBsGcD4.cjs → evolution-number-positioning.config-CfcajD4B.cjs} +1 -1
- package/components/filter-expression-picker/index.cjs +1 -1
- package/components/filter-expression-picker/index.js +1 -1
- package/components/{filter-expression-picker-Bn_jAdQX.cjs → filter-expression-picker-BBZ7KHqG.cjs} +1 -1
- package/components/{filter-expression-picker-Cjr8xWxy.js → filter-expression-picker-kLhzHUEW.js} +1 -1
- package/components/filter-item/index.cjs +1 -1
- package/components/filter-item/index.js +1 -1
- package/components/{filter-item-D6y8eCmG.js → filter-item-Dgh9nHGz.js} +6 -6
- package/components/{filter-item-CHJDVOju.cjs → filter-item-DnYGrUzZ.cjs} +1 -1
- package/components/filter-parameter-picker/index.cjs +1 -1
- package/components/filter-parameter-picker/index.js +1 -1
- package/components/{filter-parameter-picker-C955tF0T.js → filter-parameter-picker-DhTMuymq.js} +3 -3
- package/components/{filter-parameter-picker-jyrh3POQ.cjs → filter-parameter-picker-UwSmMkoB.cjs} +1 -1
- package/components/filter-value-picker/index.cjs +1 -1
- package/components/filter-value-picker/index.js +1 -1
- package/components/{filter-value-picker-DmWiNLZH.cjs → filter-value-picker-CPuUfjLo.cjs} +1 -1
- package/components/{filter-value-picker-B8nA8hTV.js → filter-value-picker-Ch4k6xIK.js} +4 -4
- package/components/filter-value-picker-datetime/index.cjs +1 -1
- package/components/filter-value-picker-datetime/index.js +1 -1
- package/components/{filter-value-picker-datetime-U4XWKSFx.cjs → filter-value-picker-datetime-BHtjVhx1.cjs} +1 -1
- package/components/{filter-value-picker-datetime-BAhXn1BS.js → filter-value-picker-datetime-hTOIBHMi.js} +1 -1
- package/components/filter-value-picker-hierarchy/index.cjs +1 -1
- package/components/filter-value-picker-hierarchy/index.js +1 -1
- package/components/{filter-value-picker-hierarchy-CUPz5Ggs.js → filter-value-picker-hierarchy-Bu1OiV4T.js} +2 -2
- package/components/{filter-value-picker-hierarchy-1ya1_rS3.cjs → filter-value-picker-hierarchy-CTZQfWEJ.cjs} +1 -1
- package/components/filter-value-picker-numeric/index.cjs +1 -1
- package/components/filter-value-picker-numeric/index.js +1 -1
- package/components/{filter-value-picker-numeric-DrHdHj31.cjs → filter-value-picker-numeric-BOY9I-y3.cjs} +1 -1
- package/components/{filter-value-picker-numeric-D8mLaxzj.js → filter-value-picker-numeric-tstYPaES.js} +1 -1
- package/components/filters/index.cjs +1 -1
- package/components/filters/index.js +1 -1
- package/components/filters-B_43Qb_P.cjs +199 -0
- package/components/{filters-Byy8HE19.js → filters-ESeCEQPQ.js} +4 -4
- package/components/formula/index.cjs +1 -1
- package/components/formula/index.js +1 -1
- package/components/{formula-D_ipR6d1.js → formula--lmxX7EE.js} +2 -2
- package/components/{formula-C6dPJyKm.cjs → formula-CC33nJ0T.cjs} +1 -1
- package/components/{formula-codemirror-CdlIly66.js → formula-codemirror-CD2ejhzw.js} +6 -6
- package/components/{formula-codemirror-C1UFMf6i.cjs → formula-codemirror-za5kEnKc.cjs} +1 -1
- package/components/{formula-display-store-B0ifmvCi.cjs → formula-display-store-B1qQtQbU.cjs} +1 -1
- package/components/{formula-display-store-CfObcBCd.js → formula-display-store-dxzteJ_B.js} +3 -3
- package/components/formula-editor/index.cjs +1 -1
- package/components/formula-editor/index.js +3 -3
- package/components/{formula-editor-B9ikCsLK.cjs → formula-editor-BDckEUnh.cjs} +1 -1
- package/components/{formula-editor-DJ-0AVCl.js → formula-editor-DNduncPi.js} +6 -6
- package/components/formula-field/index.cjs +1 -1
- package/components/formula-field/index.js +1 -1
- package/components/{formula-field-CNqn6Xbh.cjs → formula-field-Cs7SaL-J.cjs} +1 -1
- package/components/{formula-field-Bq-RYt0H.js → formula-field-dSYKahSQ.js} +1 -1
- package/components/{formula-input-base-Dple-9bo.js → formula-input-base-CzMOxMBx.js} +1 -1
- package/components/{formula-input-base-KSmmN1uI.cjs → formula-input-base-DCI3s_eW.cjs} +1 -1
- package/components/fr-BNVUrX6D.cjs +20 -0
- package/components/{fr-zWhjQv4B.js → fr-Dfp7e-Vj.js} +4 -0
- package/components/{funnel-chart-positioning.config-DleNZIG-.cjs → funnel-chart-positioning.config-2mR2EyN4.cjs} +1 -1
- package/components/{funnel-chart-positioning.config-DgRle8n1.js → funnel-chart-positioning.config-Bth5tggl.js} +1 -1
- package/components/{get-dataset-name-trrlomzY.js → get-dataset-name-CSvAYeJM.js} +1 -1
- package/components/{get-dataset-name-3UfKdy0m.cjs → get-dataset-name-DhYRY3e-.cjs} +1 -1
- package/components/{groupings-B55Oba6e.js → groupings-14w1cCc3.js} +1 -1
- package/components/{groupings-DEpTt8DV.cjs → groupings-DxuknvWu.cjs} +1 -1
- package/components/{heat-map-positioning.config-BTabq_f9.js → heat-map-positioning.config-B4bGYbFk.js} +1 -1
- package/components/{heat-map-positioning.config-DCB3Eagz.cjs → heat-map-positioning.config-CwcQrF53.cjs} +1 -1
- package/components/{heat-table-positioning.config-pK8Wn1dw.js → heat-table-positioning.config-BXCOZwaN.js} +1 -1
- package/components/{heat-table-positioning.config-Dnu133l4.cjs → heat-table-positioning.config-D8UNVnTk.cjs} +1 -1
- package/components/{hexbin-map-positioning.config-DjYp-lX8.js → hexbin-map-positioning.config-B-WZWfLq.js} +1 -1
- package/components/{hexbin-map-positioning.config-IqRt8f29.cjs → hexbin-map-positioning.config-Dn-bgQZ8.cjs} +1 -1
- package/components/index.cjs +1 -1
- package/components/index.js +55 -55
- package/components/interactive-viz-item/index.cjs +1 -1
- package/components/interactive-viz-item/index.js +1 -1
- package/components/{interactive-viz-item-D6lWVMHb.js → interactive-viz-item-CMxReAvq.js} +3 -3
- package/components/{interactive-viz-item-CM-LoEa5.cjs → interactive-viz-item-CQz2XYj8.cjs} +1 -1
- package/components/item-grid/index.cjs +1 -1
- package/components/item-grid/index.js +2 -2
- package/components/{item-grid-CbXKsQm4.js → item-grid-BYqUrmJa.js} +2 -2
- package/components/{item-grid-DTishUCb.cjs → item-grid-DKpxUsMo.cjs} +1 -1
- package/components/item-grid-item-actions-menu/index.cjs +1 -1
- package/components/item-grid-item-actions-menu/index.js +1 -1
- package/components/{item-grid-item-actions-menu-B7ylgTwO.js → item-grid-item-actions-menu-D3WeDgxI.js} +2 -2
- package/components/item-grid-item-actions-menu-Dhv9sTNi.cjs +52 -0
- package/components/item-option/index.cjs +1 -1
- package/components/item-option/index.js +1 -1
- package/components/{item-option-BTSV33ft.cjs → item-option-BWGwUzLt.cjs} +1 -1
- package/components/{item-option-BUju6ZE1.js → item-option-DYXzQ13_.js} +1 -1
- package/components/item-option-action-button-group/index.cjs +1 -1
- package/components/item-option-action-button-group/index.js +1 -1
- package/components/{item-option-action-button-group-DnTBh3R4.js → item-option-action-button-group-B3PD2K1l.js} +2 -2
- package/components/{item-option-action-button-group-CuDeyDRi.cjs → item-option-action-button-group-Bc26loDM.cjs} +1 -1
- package/components/{item-option-base-C6RQH9M8.cjs → item-option-base-B6axTng-.cjs} +1 -1
- package/components/{item-option-base-BIDIiNfI.js → item-option-base-BJdtApx5.js} +2 -2
- package/components/item-option-color-palette-picker/index.cjs +1 -1
- package/components/item-option-color-palette-picker/index.js +1 -1
- package/components/{item-option-color-palette-picker-DbsqP2zA.js → item-option-color-palette-picker-BxIWdQLy.js} +1 -1
- package/components/{item-option-color-palette-picker-DsG-wxGB.cjs → item-option-color-palette-picker-C1t_nY1O.cjs} +1 -1
- package/components/item-option-color-picker/index.cjs +1 -1
- package/components/item-option-color-picker/index.js +1 -1
- package/components/{item-option-color-picker-BUN5YK-t.cjs → item-option-color-picker-1BzUBXz-.cjs} +1 -1
- package/components/{item-option-color-picker-CKGUj3cW.js → item-option-color-picker-9DEx5w-z.js} +1 -1
- package/components/item-option-color-range/index.cjs +1 -1
- package/components/item-option-color-range/index.js +1 -1
- package/components/{item-option-color-range-BN81ePAI.cjs → item-option-color-range-B_gmxlEl.cjs} +1 -1
- package/components/{item-option-color-range-dMehrwqA.js → item-option-color-range-DBtnzfJa.js} +2 -2
- package/components/item-option-guidelines/index.cjs +1 -1
- package/components/item-option-guidelines/index.js +1 -1
- package/components/{item-option-guidelines-Bn1HSCgL.js → item-option-guidelines-DhuU5VZu.js} +4 -4
- package/components/item-option-guidelines-Dv4EoY3s.cjs +135 -0
- package/components/item-option-multi-language-field/index.cjs +1 -1
- package/components/item-option-multi-language-field/index.js +1 -1
- package/components/{item-option-multi-language-field-BFgbOzMM.js → item-option-multi-language-field-BoXUM6-u.js} +1 -1
- package/components/{item-option-multi-language-field-Du609wC_.cjs → item-option-multi-language-field-C_eP2I2u.cjs} +1 -1
- package/components/item-option-number-field/index.cjs +1 -1
- package/components/item-option-number-field/index.js +1 -1
- package/components/{item-option-number-field-CDcf6_4D.js → item-option-number-field-BrEXkjWl.js} +1 -1
- package/components/{item-option-number-field-CVAtj0UX.cjs → item-option-number-field-kXpCE4FI.cjs} +1 -1
- package/components/item-option-panel/index.cjs +1 -1
- package/components/item-option-panel/index.js +1 -1
- package/components/{item-option-panel-0iHLl9-q.cjs → item-option-panel-CB338Rgo.cjs} +1 -1
- package/components/{item-option-panel-DUlIB6qj.js → item-option-panel-CUoozNxD.js} +2 -2
- package/components/item-option-picker/index.cjs +1 -1
- package/components/item-option-picker/index.js +1 -1
- package/components/{item-option-picker-Dkc3nd3x.cjs → item-option-picker-BvT4ITzX.cjs} +1 -1
- package/components/{item-option-picker-ClKAGpgs.js → item-option-picker-fKn763j4.js} +1 -1
- package/components/item-option-position-picker/index.cjs +1 -1
- package/components/item-option-position-picker/index.js +1 -1
- package/components/{item-option-position-picker-O8PpyiRv.js → item-option-position-picker-D7smHuW7.js} +1 -1
- package/components/{item-option-position-picker-qCKh0Mfs.cjs → item-option-position-picker-D96vKNTF.cjs} +1 -1
- package/components/item-option-positions-number-field/index.cjs +1 -1
- package/components/item-option-positions-number-field/index.js +1 -1
- package/components/{item-option-positions-number-field-CBx4uQ39.js → item-option-positions-number-field-BPEATH4R.js} +1 -1
- package/components/{item-option-positions-number-field-Dfe4ufnF.cjs → item-option-positions-number-field-C4IOForB.cjs} +1 -1
- package/components/item-option-radio-button-group/index.cjs +1 -1
- package/components/item-option-radio-button-group/index.js +1 -1
- package/components/{item-option-radio-button-group-B5OVbLRg.cjs → item-option-radio-button-group-Bb-Rc5nv.cjs} +1 -1
- package/components/{item-option-radio-button-group-J_ZusHOP.js → item-option-radio-button-group-DQ0knjcY.js} +2 -2
- package/components/item-option-slider/index.cjs +1 -1
- package/components/item-option-slider/index.js +1 -1
- package/components/{item-option-slider-V9z4qqyE.js → item-option-slider-BuA7tdbc.js} +1 -1
- package/components/{item-option-slider-BDAEs7Fk.cjs → item-option-slider-CLqtmYAE.cjs} +1 -1
- package/components/item-option-switch/index.cjs +1 -1
- package/components/item-option-switch/index.js +1 -1
- package/components/{item-option-switch-BA4ifIHK.js → item-option-switch-CvzS-KN9.js} +1 -1
- package/components/{item-option-switch-Bzy2VRLg.cjs → item-option-switch-DtRz_zTM.cjs} +1 -1
- package/components/item-option-text-field/index.cjs +1 -1
- package/components/item-option-text-field/index.js +1 -1
- package/components/{item-option-text-field-Cf0khC48.js → item-option-text-field-CW3R8voC.js} +1 -1
- package/components/{item-option-text-field-C-sTkUre.cjs → item-option-text-field-D1NFqoms.cjs} +1 -1
- package/components/item-slot-drop/index.cjs +1 -1
- package/components/item-slot-drop/index.js +1 -1
- package/components/{item-slot-drop-DrJRtG7b.cjs → item-slot-drop-B7JmgKMJ.cjs} +1 -1
- package/components/{item-slot-drop-D2VDgqYS.js → item-slot-drop-DaTJ-Gym.js} +6 -6
- package/components/item-slot-drop-panel/index.cjs +1 -1
- package/components/item-slot-drop-panel/index.js +1 -1
- package/components/{item-slot-drop-panel-CCCOwtYM.js → item-slot-drop-panel-0wUkaWiM.js} +39 -39
- package/components/{item-slot-drop-panel-CFerKcdH.cjs → item-slot-drop-panel-CdCEWBGb.cjs} +1 -1
- package/components/item-slot-picker/index.cjs +1 -1
- package/components/item-slot-picker/index.js +1 -1
- package/components/item-slot-picker/item-slot-picker.d.ts +8 -2
- package/components/{item-slot-picker-BdfYcBKT.js → item-slot-picker-BiHy7QX1.js} +142 -121
- package/components/{item-slot-picker-aqePvZ9B.cjs → item-slot-picker-BvrK1U4h.cjs} +42 -47
- package/components/item-slot-picker-panel/index.cjs +1 -1
- package/components/item-slot-picker-panel/index.js +1 -1
- package/components/item-slot-picker-panel/item-slot-picker-panel.d.ts +1 -1
- package/components/{item-slot-picker-panel-DC3i7XZP.js → item-slot-picker-panel-BmlCimZ9.js} +5 -5
- package/components/{item-slot-picker-panel-dU6NywBo.cjs → item-slot-picker-panel-CeT847QM.cjs} +2 -2
- package/components/{line-chart-positioning.config-DX5mLAP7.cjs → line-chart-positioning.config-DaDYXk9Z.cjs} +1 -1
- package/components/{line-chart-positioning.config-BW19v66B.js → line-chart-positioning.config-Imvzv3EC.js} +1 -1
- package/components/{localized-mixin-CYMFnS-n.js → localized-mixin-BLUbrY_Z.js} +1 -1
- package/components/{localized-mixin-Bt25Frg1.cjs → localized-mixin-DceE4W-d.cjs} +1 -1
- package/components/{marker-map-positioning.config-C0V5LZG-.cjs → marker-map-positioning.config-BGDRklk5.cjs} +1 -1
- package/components/{marker-map-positioning.config-BJGwlWKz.js → marker-map-positioning.config-DouILqTQ.js} +1 -1
- package/components/nl-BFAURMxk.cjs +20 -0
- package/components/{nl-TUFktGm6.js → nl-Cs2_7YBI.js} +4 -0
- package/components/{ohlc-chart-positioning.config-CFvbZzCR.js → ohlc-chart-positioning.config-Bcpj8NAt.js} +1 -1
- package/components/{ohlc-chart-positioning.config-Bu1_IBVK.cjs → ohlc-chart-positioning.config-CHJbhqWA.cjs} +1 -1
- package/components/{parallel-coordinates-plot-positioning.config-Bc3qCyxq.js → parallel-coordinates-plot-positioning.config-BRPawZLg.js} +1 -1
- package/components/{parallel-coordinates-plot-positioning.config-EJz1XA1k.cjs → parallel-coordinates-plot-positioning.config-CnyUP9E-.cjs} +1 -1
- package/components/{pivot-table-positioning.config-Bay8gxV-.js → pivot-table-positioning.config-8rROPmIw.js} +1 -1
- package/components/{pivot-table-positioning.config-CMzGb-BR.cjs → pivot-table-positioning.config-BvD825Uc.cjs} +1 -1
- package/components/{pyramid-chart-positioning.config-BUSeYxYH.js → pyramid-chart-positioning.config-CqL_Z0Ok.js} +1 -1
- package/components/{pyramid-chart-positioning.config-CrU2vKM-.cjs → pyramid-chart-positioning.config-DKd65Pdf.cjs} +1 -1
- package/components/{radar-chart-positioning.config-DOLpdn-d.js → radar-chart-positioning.config-CpYbMIeY.js} +1 -1
- package/components/{radar-chart-positioning.config-BEzqTXyr.cjs → radar-chart-positioning.config-oPyZCdrF.cjs} +1 -1
- package/components/{route-map-positioning.config-BgjizdWh.cjs → route-map-positioning.config-BCOVbseo.cjs} +1 -1
- package/components/{route-map-positioning.config-Brg6_eCi.js → route-map-positioning.config-DPspLTzr.js} +1 -1
- package/components/{sankey-diagram-positioning.config-DJlWiNYL.js → sankey-diagram-positioning.config-BVNDJhvU.js} +1 -1
- package/components/{sankey-diagram-positioning.config-vccTz1pG.cjs → sankey-diagram-positioning.config-Da0e_DAS.cjs} +1 -1
- package/components/{scatter-plot-positioning.config-BKqPHMrS.js → scatter-plot-positioning.config-DMZuAjXU.js} +1 -1
- package/components/{scatter-plot-positioning.config-D7uFFBVZ.cjs → scatter-plot-positioning.config-vR2_9XYh.cjs} +1 -1
- package/components/{set-locale-s-1X7Jce.js → set-locale-B9greCq4.js} +4 -4
- package/components/{set-locale-Bgz1WNGE.cjs → set-locale-BkbSlaQk.cjs} +1 -1
- package/components/{slicer-filter-positioning.config-D1kR4xly.cjs → slicer-filter-positioning.config-Byf9Q8gT.cjs} +1 -1
- package/components/{slicer-filter-positioning.config-Gl9jhO_G.js → slicer-filter-positioning.config-CzzuCQDP.js} +1 -1
- package/components/slot-menu/index.cjs +1 -1
- package/components/slot-menu/index.js +1 -1
- package/components/{slot-menu-Dw53Y-iu.js → slot-menu-BAtOYWxs.js} +3 -3
- package/components/{slot-menu-CAhxaK5-.cjs → slot-menu-C_iIcdDw.cjs} +1 -1
- package/components/slot-menu-list/index.cjs +1 -1
- package/components/slot-menu-list/index.js +1 -1
- package/components/{slot-menu-list-5NsRo9XD.js → slot-menu-list-DoRLtT2d.js} +1 -1
- package/components/{slot-menu-list-CUsmYkiV.cjs → slot-menu-list-K4_pghrC.cjs} +1 -1
- package/components/{speedometer-chart-positioning.config-fa90zZdb.cjs → speedometer-chart-positioning.config-DfnWIx7U.cjs} +1 -1
- package/components/{speedometer-chart-positioning.config-VBLrLNmO.js → speedometer-chart-positioning.config-DsCodDVP.js} +1 -1
- package/components/{spike-map-positioning.config-DrxdeFsj.cjs → spike-map-positioning.config-DPbVWLF7.cjs} +1 -1
- package/components/{spike-map-positioning.config-oYjk3n9a.js → spike-map-positioning.config-sSSQuxIm.js} +1 -1
- package/components/{strip-plot-positioning.config-lMn33cM4.js → strip-plot-positioning.config-C01KV7Er.js} +1 -1
- package/components/{strip-plot-positioning.config-Bx_fqmEj.cjs → strip-plot-positioning.config-Czz4B-U5.cjs} +1 -1
- package/components/{sunburst-chart-positioning.config-C-We-zZF.js → sunburst-chart-positioning.config-C4u-zAIV.js} +1 -1
- package/components/{sunburst-chart-positioning.config-D-GRWmyF.cjs → sunburst-chart-positioning.config-g8eXAhP4.cjs} +1 -1
- package/components/{symbol-map-positioning.config-B0sLlLzK.cjs → symbol-map-positioning.config-Be2wvwUD.cjs} +1 -1
- package/components/{symbol-map-positioning.config-_TJSfpVj.js → symbol-map-positioning.config-CRZwvQS5.js} +1 -1
- package/components/{treemap-chart-positioning.config-CO05Gv7X.cjs → treemap-chart-positioning.config-CvMw2lMe.cjs} +1 -1
- package/components/{treemap-chart-positioning.config-DAdvoS2I.js → treemap-chart-positioning.config-Dq1nuvca.js} +1 -1
- package/components/utils/base.cjs +1 -1
- package/components/utils/base.js +2 -2
- package/components/{utils-CGJh0jrq.cjs → utils-Bkykodi1.cjs} +1 -1
- package/components/{utils-Dk4dM9xv.js → utils-C3-82TMs.js} +1 -1
- package/components/utils.cjs +1 -1
- package/components/utils.js +2 -2
- package/components/{venn-diagram-positioning.config-DKXWVaUI.cjs → venn-diagram-positioning.config-CJbmXy8r.cjs} +1 -1
- package/components/{venn-diagram-positioning.config-DUwmPQ1A.js → venn-diagram-positioning.config-DoYvs8k_.js} +1 -1
- package/components/{wordcloud-chart-positioning.config-CgbB_SI0.cjs → wordcloud-chart-positioning.config-BYz4mqOF.cjs} +1 -1
- package/components/{wordcloud-chart-positioning.config-qK5_CF7v.js → wordcloud-chart-positioning.config-C5gc4v7C.js} +1 -1
- package/custom-elements.json +180 -5
- package/package.json +1 -1
- package/react/components/ai-chat.component.ts +5 -2
- package/react/esm/components/ai-chat.component.d.ts +3 -1
- package/react/esm/components/ai-chat.component.js +3 -1
- package/react/luzmo-stub.d.ts +1 -0
- package/react/package.json +2 -2
- package/standalone/chunks/{add-to-dashboard-BrWieRxp.js → add-to-dashboard-BitIAbse.js} +1 -1
- package/standalone/chunks/{base-CLcNr-fQ.js → base-DetXzglI.js} +1 -1
- package/standalone/chunks/de-DasXCtPF.js +2 -0
- package/standalone/chunks/{display-settings-binning-B_lKObyP.js → display-settings-binning-D7udCQZB.js} +1 -1
- package/standalone/chunks/{display-settings-datetime-CTmJyEOX.js → display-settings-datetime-DoDqA4cJ.js} +1 -1
- package/standalone/chunks/{display-settings-grand-totals-IjcbBoyZ.js → display-settings-grand-totals-LZT2gYJu.js} +1 -1
- package/standalone/chunks/{display-settings-numeric-D9hvRtfN.js → display-settings-numeric-7Vq_f1D0.js} +1 -1
- package/standalone/chunks/{display-settings-period-over-period-Dnstsyqe.js → display-settings-period-over-period-CBjYIyKC.js} +1 -1
- package/standalone/chunks/es-cQV58zLc.js +2 -0
- package/standalone/chunks/{filters-CBmZhipt.js → filters-CF1JZIC1.js} +1 -1
- package/standalone/chunks/{formula-codemirror-D2F6Aj2h.js → formula-codemirror-DSKNnuLg.js} +1 -1
- package/standalone/chunks/fr-DzRE2NaZ.js +2 -0
- package/standalone/chunks/{item-option-action-button-group-BZyiRTfe.js → item-option-action-button-group-CM3q7mFJ.js} +1 -1
- package/standalone/chunks/{item-option-base-Bk5qxdcQ.js → item-option-base-BoBGd2zN.js} +1 -1
- package/standalone/chunks/{item-option-color-palette-picker-O8kT0i8p.js → item-option-color-palette-picker-BTGLKRU6.js} +1 -1
- package/standalone/chunks/{item-option-color-picker-CUTCc_yN.js → item-option-color-picker-WIaAaoWa.js} +1 -1
- package/standalone/chunks/{item-option-color-range-DsKPvjLj.js → item-option-color-range-DP8KXyD7.js} +1 -1
- package/standalone/chunks/{item-option-guidelines-CZyvhgtN.js → item-option-guidelines-CvvRU02d.js} +1 -1
- package/standalone/chunks/{item-option-multi-language-field-DlC-cCD7.js → item-option-multi-language-field-DOc_5pUa.js} +1 -1
- package/standalone/chunks/{item-option-number-field-BW9VpN9_.js → item-option-number-field-fj7jIBZ4.js} +1 -1
- package/standalone/chunks/{item-option-panel-BXA3sIYG.js → item-option-panel-C1GmQ9SW.js} +2 -2
- package/standalone/chunks/{item-option-picker-B2KmO7a6.js → item-option-picker-D0d0BXk7.js} +1 -1
- package/standalone/chunks/{item-option-position-picker-C9C9SKDD.js → item-option-position-picker-BpYLyMS7.js} +1 -1
- package/standalone/chunks/{item-option-positions-number-field-C2ahVlxe.js → item-option-positions-number-field-p6ghB0uD.js} +1 -1
- package/standalone/chunks/{item-option-radio-button-group-2q3doUXH.js → item-option-radio-button-group-DinqecBS.js} +1 -1
- package/standalone/chunks/{item-option-slider-C7TT3CqL.js → item-option-slider--YXct33p.js} +1 -1
- package/standalone/chunks/{item-option-switch-CZR2_Bs9.js → item-option-switch-BRuMJhT2.js} +1 -1
- package/standalone/chunks/{item-option-text-field-DBUOD_fv.js → item-option-text-field-Cvu0fi5x.js} +1 -1
- package/standalone/chunks/{item-slot-picker-panel-CTePASjI.js → item-slot-picker-panel-4ATGR7nP.js} +58 -62
- package/standalone/chunks/{load-data-fields-for-datasets-CPf_Q7p4.js → load-data-fields-for-datasets-DWys6Xqn.js} +1 -1
- package/standalone/chunks/{load-formula-codemirror-CA7NW4Zq.js → load-formula-codemirror-BP6dGYyV.js} +1 -1
- package/standalone/chunks/{localized-mixin-DN2aV3CC.js → localized-mixin-D3GVo182.js} +1 -1
- package/standalone/chunks/nl-Bzvdbvjs.js +2 -0
- package/standalone/interactive-viz-item.js +1 -1
- package/standalone/item-grid.js +1 -1
- package/standalone/manifest.json +33 -33
- package/types/ai-chat.types.d.ts +39 -2
- package/components/ai-chat-DfuJOWao.cjs +0 -338
- package/components/de-CjQMTFtl.cjs +0 -20
- package/components/display-settings-B2V_F_CU.cjs +0 -142
- package/components/es-DmmTP7D0.cjs +0 -20
- package/components/filters-C8xz8DV-.cjs +0 -199
- package/components/fr-DKDPLLAZ.cjs +0 -20
- package/components/item-grid-item-actions-menu-C3BUxZJc.cjs +0 -52
- package/components/item-option-guidelines-CmPaMdqb.cjs +0 -135
- package/components/nl-BrjaaktE.cjs +0 -20
- package/standalone/chunks/de-BtQ1ecN1.js +0 -2
- package/standalone/chunks/es-CAWreooi.js +0 -2
- package/standalone/chunks/fr-BG0nQk8g.js +0 -2
- package/standalone/chunks/nl-BXPduS2Q.js +0 -2
|
@@ -17,4 +17,4 @@
|
|
|
17
17
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
18
18
|
* SOFTWARE.
|
|
19
19
|
* */
|
|
20
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../add-to-dashboard-
|
|
20
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../add-to-dashboard-D11b-HS7.cjs");Object.defineProperty(exports,"LuzmoAddToDashboard",{enumerable:!0,get:function(){return e.t}}),exports.createDashboardActions=e.n;
|
|
@@ -17,5 +17,5 @@
|
|
|
17
17
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
18
18
|
* SOFTWARE.
|
|
19
19
|
* */
|
|
20
|
-
import { n as e, t } from "../add-to-dashboard-
|
|
20
|
+
import { n as e, t } from "../add-to-dashboard-KLYGiqKE.js";
|
|
21
21
|
export { t as LuzmoAddToDashboard, e as createDashboardActions };
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
18
18
|
* SOFTWARE.
|
|
19
19
|
* */
|
|
20
|
-
require("./tokens-BWMfo_w4.cjs");const e=require("./base-BmvsQ-s1.cjs"),t=require("./decorate-DCJt-2rt.cjs"),n=require("./localized-mixin-Bt25Frg1.cjs"),r=require("./data-broker-Cb-Fq9xy.cjs"),i=require("./localize-D3i4Epy_.cjs"),a=require("./chart-helpers-ufZ6VbXs.cjs");let o=require("@luzmo/icons");require("@luzmo/lucero/button"),require("@luzmo/lucero/icon"),require("@luzmo/lucero/overlay"),require("@luzmo/lucero/popover");let s=require("lit"),c=require("lit/decorators.js"),l=require("@lit/localize");require("@luzmo/lucero/action-button"),require("@luzmo/lucero/tooltip"),require("@luzmo/lucero/progress-circle"),require("@luzmo/lucero/checkbox"),require("@luzmo/lucero/divider"),require("@luzmo/lucero/field-group"),require("@luzmo/lucero/menu"),require("@luzmo/lucero/notice"),require("@luzmo/lucero/search");let u=require("lit/directives/if-defined.js");var d=`:host{align-items:flex-end;gap:var(--luzmo-spacing-2);font-family:var(--luzmo-font-family);flex-direction:column;display:inline-flex}.trigger-spinner{--luzmo-progress-circle-size:var(--luzmo-icon-size-xs)}.trigger-chevron{margin-inline-start:var(--luzmo-spacing-1)}.picker{gap:var(--luzmo-spacing-3);width:var(--luzmo-add-to-dashboard-picker-width,var(--add-to-dashboard-picker-width));max-width:90vw;padding:var(--luzmo-spacing-2);color:var(--luzmo-font-color);font-size:var(--luzmo-font-size-s);flex-direction:column;display:flex}luzmo-search{width:100%}.list{max-height:var(--luzmo-add-to-dashboard-list-max-height,var(--add-to-dashboard-list-max-height));flex-direction:column;display:flex;overflow-y:auto}.menu{--luzmo-menu-max-height:none;flex:none;width:100%;overflow:visible}.create-row{--luzmo-menu-item-label-icon-color-default:var(--luzmo-primary)}.thumbnail{object-fit:cover;border:var(--luzmo-border-width) solid var(--luzmo-border-color);border-radius:var(--luzmo-border-radius);width:2.75rem;height:2rem}.drill-in{color:var(--luzmo-font-color-extra-dimmed)}.header{align-items:center;gap:var(--luzmo-spacing-2);display:flex}.header-title{font-weight:var(--luzmo-font-weight-bold);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.empty{align-items:center;gap:var(--luzmo-spacing-3);padding:var(--luzmo-spacing-4);text-align:center;flex-direction:column;display:flex}.loading{padding:var(--luzmo-spacing-3);justify-content:center;display:flex}.screen-modes{gap:var(--luzmo-spacing-2);flex-direction:column;display:flex}.screen-mode{align-items:center;gap:var(--luzmo-spacing-2);display:flex}.screen-mode-size{color:var(--luzmo-font-color-extra-dimmed)}.footer{justify-content:flex-end;display:flex}.status{justify-content:flex-end;width:0;min-width:100%;display:flex}.status:empty{display:none}.alert{flex:none;inline-size:max-content}.alert-body{align-items:center;gap:var(--luzmo-spacing-3);block-size:1lh;min-inline-size:0;display:flex}.alert-text{min-inline-size:0;font-weight:var(--luzmo-font-weight-semibold);white-space:pre;display:flex}.alert-name{min-inline-size:0;font-weight:var(--luzmo-font-weight-bold);text-overflow:ellipsis;white-space:nowrap;unicode-bidi:plaintext;overflow:hidden}.alert-open{flex:none}:host{--add-to-dashboard-picker-width:18rem;--add-to-dashboard-list-max-height:16rem}`,f=`0.1.104`,p=`0.1.0`,m=[`id`,`name`,`contents`,`modified_at`,`is_variant`,`original_id`],h=new Set([`designer`,`owner`]),g=`flag_dashboard_variants`,_=[`desktop`,`tablet`,`mobile`];async function v(e,t,n){let r=[],i=t,a=0;for(let t of e){let e=n-r.length,o=await t(i,Math.max(e,1));e>0&&r.push(...o.rows.slice(0,e)),i=Math.max(0,i-o.count),a+=o.count}return{rows:r,total:a}}async function y(e){let t=await e.fetchApi(`/user`,{action:`get`,version:p,find:{where:{id:`me`},attributes:[`id`,`flags`]}});return{id:t.rows?.[0]?.id??``,flags:t.rows?.[0]?.flags??[]}}async function b(e,t){return(await e.fetchApi(`/authorization`,{action:`get`,version:p,find:{where:{id:t}}})).rows?.[0]}async function x(e,t,n){let r={...t,where:{...t.where,type:`dashboard`}},i=await e.fetchApi(`/securable`,{action:`get`,version:p,find:r},{signal:n});return{rows:i.rows??[],count:i.count??i.rows?.length??0}}function S(e){let t={modifyIds:new Set,useOnlyIds:new Set};for(let n of e?.access?.dashboards??[])n.rights?.Modify?t.modifyIds.add(n.id):n.rights?.Use&&t.useOnlyIds.add(n.id);return t}function C(){return{version:f,syncScreenModes:!0,views:_.map(e=>({screenModus:e,options:{theme:{id:`default`}},filterGroups:[],items:[]})),timezone:{type:`fixed`,id:`UTC`}}}function w(e){return e?{search:{match_types:[`name`,`description`],keyphrase:e,securable_types:[`dashboard`]}}:{}}function T(e,t){return{include:[{model:`User`,as:`allUsers`,attributes:[],required:!0,where:{id:e,...Object.fromEntries(Object.entries(t).map(([e,t])=>[`securableAccessRight.${e}`,t]))}}]}}async function E(e){let t=new r.t({apiUrl:e.apiUrl,authKey:e.authKey,authToken:e.authToken,skipNetworkListeners:!0}),[n,a]=await Promise.all([y(t),b(t,e.authKey)]),o=S(a),s=a?.type!==`embed`||h.has(a.role??``),c=!!n.id&&n.flags.includes(g),l=[...o.modifyIds,...c?o.useOnlyIds:[]],u=l.length>0?{id:{notIn:l}}:{},d=(t,n=!1)=>{let r=[...new Set((t.contents?.views??[]).map(e=>e.screenModus))];return{id:t.id,name:i.t(t.name??{},e.language),syncScreenModes:t.contents?.syncScreenModes!==!1,screenModes:r.length>0?r:[`desktop`],...n?{requiresVariant:n}:{}}},f,_=(e,n)=>async(r,i)=>{if(l.length===0)return{count:0,rows:[]};let a=r>0&&f?.search===e?f.rows:void 0;return a||(a=(await x(t,{where:{is_variant:!1,archived_at:null,id:{in:l}},attributes:m,...w(e)},n)).rows.map(e=>d(e,!o.modifyIds.has(e.id))).sort((e,t)=>e.name.localeCompare(t.name)),f={search:e,rows:a}),{count:a.length,rows:a.slice(r,r+i)}},E=(e,r,i,a)=>async(o,s)=>{let c=await x(t,{where:{is_variant:!1,archived_at:null,...u},attributes:m,...T(n.id,i),...w(e),limit:s,offset:o,order:[[`modified_at`,`desc`]]},r);return{count:c.count,rows:c.rows.map(e=>d(e,a))}},D=async(e,n,r,i)=>{await t.fetchApi(`/securable`,{action:`update`,version:p,id:e,properties:{append_item:{item:n,...r?.length?{screenModes:r}:{}}}},{signal:i})},O=async(e,n,r)=>{try{await D(e.id,n,r)}catch(n){throw await t.fetchApi(`/securable`,{action:`delete`,version:p,id:e.id}).catch(()=>void 0),n}},k=async(e,n)=>await t.fetchApi(`/securable`,{action:`create`,version:p,properties:{...e,type:`dashboard`},associations:n});return{async list(e,t){return n.id?await v([_(e.search,t.signal),...c?[E(e.search,t.signal,{flagUse:!0,flagModify:!1},!0)]:[],E(e.search,t.signal,{flagModify:!0},!1)],e.offset,e.limit):{rows:[],total:0}},async add(e,t,n,r){await D(e.id,t,n.screenModes,r.signal)},...s?{async create(t,n){let r=await k({name:n.name?{[e.language]:n.name}:{},contents:C()});return await O(r,t,void 0),d(r)}}:{},...c?{async listVariants(e,r){return(await x(t,{where:{is_variant:!0,original_id:e.id,archived_at:null},attributes:m,...T(n.id,{flagModify:!0}),order:[[`modified_at`,`desc`]]},r.signal)).rows.map(e=>d(e))}}:{},...c&&s?{async addToVariant(n,r,i){let a=(await x(t,{where:{id:n.id},attributes:[`id`,`name`,`contents`]})).rows[0];if(!a?.contents)throw Error(`The dashboard was not found.`);let o=a.name??{},s=await k({name:i.name?{...o,[e.language]:i.name}:o,contents:a.contents},[{role:`original`,id:n.id}]);return await O(s,r,i.screenModes),d({...s,contents:s.contents??a.contents})}}:{}}}function D(e){let{theme:t,...n}=e.options??{};return{...a.o(e),options:n}}function O(e,t){let n=new Set(e),r=e.length+1;for(;n.has(t(r));)r+=1;return r}var k=20,A=300,j=8,M=48,N=`__luzmo-new-dashboard`,P=`__luzmo-new-variant`,F=new Map,I=0,L=class extends n.t(e.n(e.i,{validSizes:Object.values(e.t)})){constructor(...e){super(...e),this.chart=null,this.dashboardActions=null,this.authKey=``,this.authToken=``,this.apiUrl=`https://api.luzmo.com`,this.placement=`bottom-end`,this.disabled=!1,this._open=!1,this._actions=null,this._step=`list`,this._rows=[],this._hasMore=!1,this._loading=!1,this._listFailed=!1,this._original=null,this._variants=[],this._variantsLoading=!1,this._variantsFailed=!1,this._pending=null,this._screenModes=[],this._saving=!1,this._status=null,this._triggerId=`add-to-dashboard-trigger-${++I}`,this._search=``,this._actionsGeneration=0,this._reloadOnUpdate=!1}static get styles(){let e=super.styles??[];return[...Array.isArray(e)?e:[e],(0,s.unsafeCSS)(d)]}get _hasSource(){return!!this.dashboardActions||!!(this.authKey&&this.authToken)}connectedCallback(){super.connectedCallback(),this._status&&this._startFittingAlert()}disconnectedCallback(){super.disconnectedCallback(),this._handleClosed(),this._actionsGeneration+=1,this._saveAbort?.abort(),this._stopFittingAlert()}willUpdate(e){super.willUpdate(e),(e.has(`dashboardActions`)||e.has(`authKey`)||e.has(`authToken`)||e.has(`apiUrl`)||e.has(`language`))&&(this._actions=null,this._actionsGeneration+=1,this._open&&(this._listAbort?.abort(),this._variantsAbort?.abort(),this._step=`list`,this._original=null,this._pending=null,this._rows=[],this._open=this._hasSource,this._reloadOnUpdate=this._hasSource)),e.has(`disabled`)&&this.disabled&&(this._open=!1),e.has(`chart`)&&!this.chart&&this._handleClosed()}updated(e){super.updated(e),this._reloadOnUpdate&&(this._reloadOnUpdate=!1,this._loadList()),e.has(`_step`)&&this._open&&this._focusStep(),e.has(`_status`)&&(this._status?this._startFittingAlert():this._stopFittingAlert())}get _alertContainer(){let e=this.getRootNode();return this.parentElement??(e instanceof ShadowRoot?e.host:null)}_startFittingAlert(){this._fitAlert();let e=this._alertContainer;this._alertResizeObserver||!e||(this._alertResizeObserver=new ResizeObserver(()=>this._fitAlert()),this._alertResizeObserver.observe(this),this._alertResizeObserver.observe(e))}_stopFittingAlert(){this._alertResizeObserver?.disconnect(),this._alertResizeObserver=void 0}_fitAlert(){let e=this._noticeElement,t=this._alertContainer;if(!e||!t)return;let n=this.getBoundingClientRect(),r=t.getBoundingClientRect(),i=Number.parseFloat(getComputedStyle(t).paddingInlineStart)||0,a=(this.isLTR?n.right-r.left:r.right-n.left)-i;e.style.setProperty(`--luzmo-notice-max-inline-size`,`${Math.max(0,a)}px`)}async _resolveActions(){if(this.dashboardActions)return this.dashboardActions;let e={apiUrl:this.apiUrl,authKey:this.authKey,authToken:this.authToken,language:this.language},t=JSON.stringify(e),n=F.get(t);return n||(F.clear(),n=E(e),F.set(t,n),n.catch(()=>F.delete(t))),await n}_dispatch(e,t){let n=new CustomEvent(e,{detail:t,bubbles:!0,composed:!0});this.dispatchEvent(n)}_displayName(e){return e.name.trim()||(0,l.msg)(`Untitled dashboard`,{desc:`Fallback name of a dashboard without a name`})}_variantName(e,t){return(0,l.msg)(l.str`${this._displayName(e)} (variant ${t})`,{desc:`Name of a new dashboard variant`})}_screenModeChoices(){return[{name:`mobile`,label:(0,l.msg)(`Smartphone`,{desc:`Screen mode name`}),size:`< 768px`,icon:o.luzmoMobile},{name:`tablet`,label:(0,l.msg)(`Tablet`,{desc:`Screen mode name`}),size:`≥ 768px`,icon:o.luzmoTablet},{name:`desktop`,label:(0,l.msg)(`Desktop`,{desc:`Screen mode name`}),size:`≥ 1200px`,icon:o.luzmoLaptop},{name:`largeScreen`,label:(0,l.msg)(`Large screen`,{desc:`Screen mode name`}),size:`≥ 1600px`,icon:o.luzmoDesktop},{name:`fixed`,label:(0,l.msg)(`Fixed width`,{desc:`Screen mode name`}),icon:o.luzmoArrowsHorizontal}]}async _handleOpened(e){e.target===e.currentTarget&&(this._open=!0,this._step=`list`,this._search=``,this._original=null,this._pending=null,this._rows=[],await this.updateComplete,this._searchElement?.focus(),await this._loadList())}async _loadList(){let e=this._actionsGeneration;this._loading=!0,this._listFailed=!1;try{let t=this._actions??await this._resolveActions();if(e!==this._actionsGeneration)return;this._actions=t}catch(t){if(!this.isConnected||e!==this._actionsGeneration)return;console.error(`Failed to resolve the add to dashboard actions:`,t),this._loading=!1,this._listFailed=!0;return}!this.isConnected||!this._open||await this._loadPage(!1)}_handleClosed(e){e&&e.target!==e.currentTarget||(this._open=!1,clearTimeout(this._searchTimer),this._listAbort?.abort(),this._variantsAbort?.abort())}async _loadPage(e){let t=this._actions;if(!t)return;this._listAbort?.abort();let n=new AbortController;this._listAbort=n,this._loading=!0,this._listFailed=!1,e||(this._rows=[]);try{let e=await t.list({search:this._search,offset:this._rows.length,limit:k},{signal:n.signal});if(n.signal.aborted)return;this._rows=[...this._rows,...e.rows],this._hasMore=e.total===void 0?e.rows.length===k:this._rows.length<e.total}catch(e){if(n.signal.aborted)return;console.error(`Failed to load dashboards:`,e),this._listFailed=!0}finally{n.signal.aborted||(this._loading=!1)}}_handleSearchInput(e){this._search=String(e.target?.value??``),clearTimeout(this._searchTimer),this._searchTimer=setTimeout(()=>void this._loadPage(!1),A)}_handleListScroll(e){let t=e.target;this._hasMore&&!this._loading&&t.scrollHeight-t.scrollTop-t.clientHeight<=M&&this._loadPage(!0)}_menuValue(e){return e.stopPropagation(),e.target.value??``}_handleListChange(e){let t=this._menuValue(e);if(t===N){this._actions?.create&&this._save({kind:`create`});return}let n=this._rows.find(e=>e.id===t);if(n){if(n.requiresVariant){this._original=n,this._step=`variants`,this._loadVariants();return}this._selectTarget({kind:`add`,dashboard:n,isVariant:!1},n)}}_handleVariantChange(e){let t=this._menuValue(e),n=this._original;if(!n)return;if(t===P){if(!this._actions?.addToVariant)return;let e=this._variants.map(e=>this._displayName(e)),t=this._variantName(n,O(e,e=>this._variantName(n,e)));this._selectTarget({kind:`variant`,original:n,name:t},n);return}let r=this._variants.find(e=>e.id===t);r&&this._selectTarget({kind:`add`,dashboard:r,isVariant:!0},r)}_selectTarget(e,t){if(t.syncScreenModes!==!1||!t.screenModes?.length){this._save(e);return}this._pending=e,this._screenModes=[...t.screenModes??[]],this._step=`screenModes`}async _loadVariants(){let e=this._actions,t=this._original;if(this._variantsAbort?.abort(),this._variants=[],this._variantsLoading=!1,this._variantsFailed=!1,!e?.listVariants||!t)return;let n=new AbortController;this._variantsAbort=n,this._variantsLoading=!0;try{let r=await e.listVariants(t,{signal:n.signal});n.signal.aborted||(this._variants=r)}catch(e){n.signal.aborted||(console.error(`Failed to load dashboard variants:`,e),this._variantsFailed=!0)}finally{n.signal.aborted||(this._variantsLoading=!1)}}_handleBack(){this._step===`screenModes`&&this._original?this._step=`variants`:(this._step=`list`,this._original=null),this._pending=null}_toggleScreenMode(e){this._screenModes=this._screenModes.includes(e)?this._screenModes.filter(t=>t!==e):[...this._screenModes,e]}_handleConfirmScreenModes(){this._pending&&this._screenModes.length>0&&this._save(this._pending,{screenModes:[...this._screenModes]})}async _save(e,t={}){let n=this._actions;if(!n||!this.chart||this._saving)return;this._open=!1,this._saving=!0,this._setStatus(null),this._saveAbort=new AbortController;let r=D(this.chart),i={signal:this._saveAbort.signal};try{let a;if(e.kind===`create`&&n.create)a=await n.create(r,t,i);else if(e.kind===`variant`&&n.addToVariant)a=await n.addToVariant(e.original,r,{...t,name:e.name},i);else if(e.kind===`add`)a=await n.add(e.dashboard,r,t,i)||e.dashboard;else return;if(i.signal.aborted)return;this._setStatus({kind:`success`,dashboard:a,isVariant:e.kind===`variant`||e.kind===`add`&&e.isVariant,openDashboard:n.openDashboard?.bind(n)}),this._dispatch(`luzmo-chart-added`,{dashboard:a})}catch(e){if(i.signal.aborted)return;console.error(`Failed to add the chart to a dashboard:`,e),this._setStatus({kind:`error`}),this._dispatch(`luzmo-chart-add-failed`,{error:e})}finally{this._saving=!1}await this.updateComplete,this.isConnected&&this._isFocusLost()&&this._focusTrigger()}_setStatus(e){this._status=e}_focusTrigger(){this._triggerElement?.focus()}_isFocusLost(){return!document.activeElement||document.activeElement===document.body}async _handleNoticeClose(e){e.stopPropagation();let t=e.currentTarget.matches(`:focus-within`);this._setStatus(null),await this.updateComplete,t&&this._isFocusLost()&&this._focusTrigger()}async _focusStep(){let e=this._step===`list`?this._searchElement:this._backElement;await e?.updateComplete,e?.focus()}_renderRow(e){return s.html`
|
|
20
|
+
require("./tokens-BWMfo_w4.cjs");const e=require("./base-BdkFbMZR.cjs"),t=require("./decorate-DCJt-2rt.cjs"),n=require("./localized-mixin-DceE4W-d.cjs"),r=require("./data-broker-Cb-Fq9xy.cjs"),i=require("./localize-D3i4Epy_.cjs"),a=require("./chart-helpers-ufZ6VbXs.cjs");let o=require("@luzmo/icons");require("@luzmo/lucero/action-button"),require("@luzmo/lucero/button"),require("@luzmo/lucero/icon"),require("@luzmo/lucero/overlay"),require("@luzmo/lucero/popover"),require("@luzmo/lucero/tooltip");let s=require("lit"),c=require("lit/decorators.js"),l=require("@lit/localize");require("@luzmo/lucero/progress-circle"),require("@luzmo/lucero/checkbox"),require("@luzmo/lucero/divider"),require("@luzmo/lucero/field-group"),require("@luzmo/lucero/menu"),require("@luzmo/lucero/notice"),require("@luzmo/lucero/search");let u=require("lit/directives/if-defined.js");var d=`:host{align-items:flex-end;gap:var(--luzmo-spacing-2);font-family:var(--luzmo-font-family);flex-direction:column;display:inline-flex}.trigger-spinner{--luzmo-progress-circle-size:var(--luzmo-icon-size-xs)}.trigger-chevron{margin-inline-start:var(--luzmo-spacing-1)}.picker{gap:var(--luzmo-spacing-3);width:var(--luzmo-add-to-dashboard-picker-width,var(--add-to-dashboard-picker-width));max-width:90vw;padding:var(--luzmo-spacing-2);color:var(--luzmo-font-color);font-size:var(--luzmo-font-size-s);flex-direction:column;display:flex}luzmo-search{width:100%}.list{max-height:var(--luzmo-add-to-dashboard-list-max-height,var(--add-to-dashboard-list-max-height));flex-direction:column;display:flex;overflow-y:auto}.menu{--luzmo-menu-max-height:none;flex:none;width:100%;overflow:visible}.create-row{--luzmo-menu-item-label-icon-color-default:var(--luzmo-primary)}.thumbnail{object-fit:cover;border:var(--luzmo-border-width) solid var(--luzmo-border-color);border-radius:var(--luzmo-border-radius);width:2.75rem;height:2rem}.drill-in{color:var(--luzmo-font-color-extra-dimmed)}.header{align-items:center;gap:var(--luzmo-spacing-2);display:flex}.header-title{font-weight:var(--luzmo-font-weight-bold);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.empty{align-items:center;gap:var(--luzmo-spacing-3);padding:var(--luzmo-spacing-4);text-align:center;flex-direction:column;display:flex}.loading{padding:var(--luzmo-spacing-3);justify-content:center;display:flex}.screen-modes{gap:var(--luzmo-spacing-2);flex-direction:column;display:flex}.screen-mode{align-items:center;gap:var(--luzmo-spacing-2);display:flex}.screen-mode-size{color:var(--luzmo-font-color-extra-dimmed)}.footer{justify-content:flex-end;display:flex}.status{justify-content:flex-end;width:0;min-width:100%;display:flex}.status:empty{display:none}.alert{flex:none;inline-size:max-content}.alert-body{align-items:center;gap:var(--luzmo-spacing-3);block-size:1lh;min-inline-size:0;display:flex}.alert-text{min-inline-size:0;font-weight:var(--luzmo-font-weight-semibold);white-space:pre;display:flex}.alert-name{min-inline-size:0;font-weight:var(--luzmo-font-weight-bold);text-overflow:ellipsis;white-space:nowrap;unicode-bidi:plaintext;overflow:hidden}.alert-open{flex:none}:host{--add-to-dashboard-picker-width:18rem;--add-to-dashboard-list-max-height:16rem}`,f=`0.1.104`,p=`0.1.0`,m=[`id`,`name`,`contents`,`modified_at`,`is_variant`,`original_id`],h=new Set([`designer`,`owner`]),g=`flag_dashboard_variants`,_=[`desktop`,`tablet`,`mobile`];async function v(e,t,n){let r=[],i=t,a=0;for(let t of e){let e=n-r.length,o=await t(i,Math.max(e,1));e>0&&r.push(...o.rows.slice(0,e)),i=Math.max(0,i-o.count),a+=o.count}return{rows:r,total:a}}async function y(e){let t=await e.fetchApi(`/user`,{action:`get`,version:p,find:{where:{id:`me`},attributes:[`id`,`flags`]}});return{id:t.rows?.[0]?.id??``,flags:t.rows?.[0]?.flags??[]}}async function b(e,t){return(await e.fetchApi(`/authorization`,{action:`get`,version:p,find:{where:{id:t}}})).rows?.[0]}async function x(e,t,n){let r={...t,where:{...t.where,type:`dashboard`}},i=await e.fetchApi(`/securable`,{action:`get`,version:p,find:r},{signal:n});return{rows:i.rows??[],count:i.count??i.rows?.length??0}}function S(e){let t={modifyIds:new Set,useOnlyIds:new Set};for(let n of e?.access?.dashboards??[])n.rights?.Modify?t.modifyIds.add(n.id):n.rights?.Use&&t.useOnlyIds.add(n.id);return t}function C(){return{version:f,syncScreenModes:!0,views:_.map(e=>({screenModus:e,options:{theme:{id:`default`}},filterGroups:[],items:[]})),timezone:{type:`fixed`,id:`UTC`}}}function w(e){return e?{search:{match_types:[`name`,`description`],keyphrase:e,securable_types:[`dashboard`]}}:{}}function T(e,t){return{include:[{model:`User`,as:`allUsers`,attributes:[],required:!0,where:{id:e,...Object.fromEntries(Object.entries(t).map(([e,t])=>[`securableAccessRight.${e}`,t]))}}]}}async function E(e){let t=new r.t({apiUrl:e.apiUrl,authKey:e.authKey,authToken:e.authToken,skipNetworkListeners:!0}),[n,a]=await Promise.all([y(t),b(t,e.authKey)]),o=S(a),s=a?.type!==`embed`||h.has(a.role??``),c=!!n.id&&n.flags.includes(g),l=[...o.modifyIds,...c?o.useOnlyIds:[]],u=l.length>0?{id:{notIn:l}}:{},d=(t,n=!1)=>{let r=[...new Set((t.contents?.views??[]).map(e=>e.screenModus))];return{id:t.id,name:i.t(t.name??{},e.language),syncScreenModes:t.contents?.syncScreenModes!==!1,screenModes:r.length>0?r:[`desktop`],...n?{requiresVariant:n}:{}}},f,_=(e,n)=>async(r,i)=>{if(l.length===0)return{count:0,rows:[]};let a=r>0&&f?.search===e?f.rows:void 0;return a||(a=(await x(t,{where:{is_variant:!1,archived_at:null,id:{in:l}},attributes:m,...w(e)},n)).rows.map(e=>d(e,!o.modifyIds.has(e.id))).sort((e,t)=>e.name.localeCompare(t.name)),f={search:e,rows:a}),{count:a.length,rows:a.slice(r,r+i)}},E=(e,r,i,a)=>async(o,s)=>{let c=await x(t,{where:{is_variant:!1,archived_at:null,...u},attributes:m,...T(n.id,i),...w(e),limit:s,offset:o,order:[[`modified_at`,`desc`]]},r);return{count:c.count,rows:c.rows.map(e=>d(e,a))}},D=async(e,n,r,i)=>{await t.fetchApi(`/securable`,{action:`update`,version:p,id:e,properties:{append_item:{item:n,...r?.length?{screenModes:r}:{}}}},{signal:i})},O=async(e,n,r)=>{try{await D(e.id,n,r)}catch(n){throw await t.fetchApi(`/securable`,{action:`delete`,version:p,id:e.id}).catch(()=>void 0),n}},k=async(e,n)=>await t.fetchApi(`/securable`,{action:`create`,version:p,properties:{...e,type:`dashboard`},associations:n});return{async list(e,t){return n.id?await v([_(e.search,t.signal),...c?[E(e.search,t.signal,{flagUse:!0,flagModify:!1},!0)]:[],E(e.search,t.signal,{flagModify:!0},!1)],e.offset,e.limit):{rows:[],total:0}},async add(e,t,n,r){await D(e.id,t,n.screenModes,r.signal)},...s?{async create(t,n){let r=await k({name:n.name?{[e.language]:n.name}:{},contents:C()});return await O(r,t,void 0),d(r)}}:{},...c?{async listVariants(e,r){return(await x(t,{where:{is_variant:!0,original_id:e.id,archived_at:null},attributes:m,...T(n.id,{flagModify:!0}),order:[[`modified_at`,`desc`]]},r.signal)).rows.map(e=>d(e))}}:{},...c&&s?{async addToVariant(n,r,i){let a=(await x(t,{where:{id:n.id},attributes:[`id`,`name`,`contents`]})).rows[0];if(!a?.contents)throw Error(`The dashboard was not found.`);let o=a.name??{},s=await k({name:i.name?{...o,[e.language]:i.name}:o,contents:a.contents},[{role:`original`,id:n.id}]);return await O(s,r,i.screenModes),d({...s,contents:s.contents??a.contents})}}:{}}}function D(e){let{theme:t,...n}=e.options??{};return{...a.o(e),options:n}}function O(e,t){let n=new Set(e),r=e.length+1;for(;n.has(t(r));)r+=1;return r}var k=20,A=300,j=8,M=48,N=`__luzmo-new-dashboard`,P=`__luzmo-new-variant`,F=new Map,I=0,L=class extends n.t(e.n(e.i,{validSizes:Object.values(e.t)})){constructor(...e){super(...e),this.chart=null,this.dashboardActions=null,this.authKey=``,this.authToken=``,this.apiUrl=`https://api.luzmo.com`,this.placement=`bottom-end`,this.disabled=!1,this._open=!1,this._actions=null,this._step=`list`,this._rows=[],this._hasMore=!1,this._loading=!1,this._listFailed=!1,this._original=null,this._variants=[],this._variantsLoading=!1,this._variantsFailed=!1,this._pending=null,this._screenModes=[],this._saving=!1,this._status=null,this._triggerId=`add-to-dashboard-trigger-${++I}`,this._search=``,this._actionsGeneration=0,this._reloadOnUpdate=!1}static get styles(){let e=super.styles??[];return[...Array.isArray(e)?e:[e],(0,s.unsafeCSS)(d)]}get _hasSource(){return!!this.dashboardActions||!!(this.authKey&&this.authToken)}connectedCallback(){super.connectedCallback(),this._status&&this._startFittingAlert()}disconnectedCallback(){super.disconnectedCallback(),this._handleClosed(),this._actionsGeneration+=1,this._saveAbort?.abort(),this._stopFittingAlert()}willUpdate(e){super.willUpdate(e),(e.has(`dashboardActions`)||e.has(`authKey`)||e.has(`authToken`)||e.has(`apiUrl`)||e.has(`language`))&&(this._actions=null,this._actionsGeneration+=1,this._open&&(this._listAbort?.abort(),this._variantsAbort?.abort(),this._step=`list`,this._original=null,this._pending=null,this._rows=[],this._open=this._hasSource,this._reloadOnUpdate=this._hasSource)),e.has(`disabled`)&&this.disabled&&(this._open=!1),e.has(`chart`)&&!this.chart&&this._handleClosed()}updated(e){super.updated(e),this._reloadOnUpdate&&(this._reloadOnUpdate=!1,this._loadList()),e.has(`_step`)&&this._open&&this._focusStep(),e.has(`_status`)&&(this._status?this._startFittingAlert():this._stopFittingAlert())}get _alertContainer(){let e=this.getRootNode();return this.parentElement??(e instanceof ShadowRoot?e.host:null)}_startFittingAlert(){this._fitAlert();let e=this._alertContainer;this._alertResizeObserver||!e||(this._alertResizeObserver=new ResizeObserver(()=>this._fitAlert()),this._alertResizeObserver.observe(this),this._alertResizeObserver.observe(e))}_stopFittingAlert(){this._alertResizeObserver?.disconnect(),this._alertResizeObserver=void 0}_fitAlert(){let e=this._noticeElement,t=this._alertContainer;if(!e||!t)return;let n=this.getBoundingClientRect(),r=t.getBoundingClientRect(),i=Number.parseFloat(getComputedStyle(t).paddingInlineStart)||0,a=(this.isLTR?n.right-r.left:r.right-n.left)-i;e.style.setProperty(`--luzmo-notice-max-inline-size`,`${Math.max(0,a)}px`)}async _resolveActions(){if(this.dashboardActions)return this.dashboardActions;let e={apiUrl:this.apiUrl,authKey:this.authKey,authToken:this.authToken,language:this.language},t=JSON.stringify(e),n=F.get(t);return n||(F.clear(),n=E(e),F.set(t,n),n.catch(()=>F.delete(t))),await n}_dispatch(e,t){let n=new CustomEvent(e,{detail:t,bubbles:!0,composed:!0});this.dispatchEvent(n)}_displayName(e){return e.name.trim()||(0,l.msg)(`Untitled dashboard`,{desc:`Fallback name of a dashboard without a name`})}_variantName(e,t){return(0,l.msg)(l.str`${this._displayName(e)} (variant ${t})`,{desc:`Name of a new dashboard variant`})}_screenModeChoices(){return[{name:`mobile`,label:(0,l.msg)(`Smartphone`,{desc:`Screen mode name`}),size:`< 768px`,icon:o.luzmoMobile},{name:`tablet`,label:(0,l.msg)(`Tablet`,{desc:`Screen mode name`}),size:`≥ 768px`,icon:o.luzmoTablet},{name:`desktop`,label:(0,l.msg)(`Desktop`,{desc:`Screen mode name`}),size:`≥ 1200px`,icon:o.luzmoLaptop},{name:`largeScreen`,label:(0,l.msg)(`Large screen`,{desc:`Screen mode name`}),size:`≥ 1600px`,icon:o.luzmoDesktop},{name:`fixed`,label:(0,l.msg)(`Fixed width`,{desc:`Screen mode name`}),icon:o.luzmoArrowsHorizontal}]}async _handleOpened(e){e.target===e.currentTarget&&(this._open=!0,this._step=`list`,this._search=``,this._original=null,this._pending=null,this._rows=[],await this.updateComplete,this._searchElement?.focus(),await this._loadList())}async _loadList(){let e=this._actionsGeneration;this._loading=!0,this._listFailed=!1;try{let t=this._actions??await this._resolveActions();if(e!==this._actionsGeneration)return;this._actions=t}catch(t){if(!this.isConnected||e!==this._actionsGeneration)return;console.error(`Failed to resolve the add to dashboard actions:`,t),this._loading=!1,this._listFailed=!0;return}!this.isConnected||!this._open||await this._loadPage(!1)}_handleClosed(e){e&&e.target!==e.currentTarget||(this._open=!1,clearTimeout(this._searchTimer),this._listAbort?.abort(),this._variantsAbort?.abort())}async _loadPage(e){let t=this._actions;if(!t)return;this._listAbort?.abort();let n=new AbortController;this._listAbort=n,this._loading=!0,this._listFailed=!1,e||(this._rows=[]);try{let e=await t.list({search:this._search,offset:this._rows.length,limit:k},{signal:n.signal});if(n.signal.aborted)return;this._rows=[...this._rows,...e.rows],this._hasMore=e.total===void 0?e.rows.length===k:this._rows.length<e.total}catch(e){if(n.signal.aborted)return;console.error(`Failed to load dashboards:`,e),this._listFailed=!0}finally{n.signal.aborted||(this._loading=!1)}}_handleSearchInput(e){this._search=String(e.target?.value??``),clearTimeout(this._searchTimer),this._searchTimer=setTimeout(()=>void this._loadPage(!1),A)}_handleListScroll(e){let t=e.target;this._hasMore&&!this._loading&&t.scrollHeight-t.scrollTop-t.clientHeight<=M&&this._loadPage(!0)}_menuValue(e){return e.stopPropagation(),e.target.value??``}_handleListChange(e){let t=this._menuValue(e);if(t===N){this._actions?.create&&this._save({kind:`create`});return}let n=this._rows.find(e=>e.id===t);if(n){if(n.requiresVariant){this._original=n,this._step=`variants`,this._loadVariants();return}this._selectTarget({kind:`add`,dashboard:n,isVariant:!1},n)}}_handleVariantChange(e){let t=this._menuValue(e),n=this._original;if(!n)return;if(t===P){if(!this._actions?.addToVariant)return;let e=this._variants.map(e=>this._displayName(e)),t=this._variantName(n,O(e,e=>this._variantName(n,e)));this._selectTarget({kind:`variant`,original:n,name:t},n);return}let r=this._variants.find(e=>e.id===t);r&&this._selectTarget({kind:`add`,dashboard:r,isVariant:!0},r)}_selectTarget(e,t){if(t.syncScreenModes!==!1||!t.screenModes?.length){this._save(e);return}this._pending=e,this._screenModes=[...t.screenModes??[]],this._step=`screenModes`}async _loadVariants(){let e=this._actions,t=this._original;if(this._variantsAbort?.abort(),this._variants=[],this._variantsLoading=!1,this._variantsFailed=!1,!e?.listVariants||!t)return;let n=new AbortController;this._variantsAbort=n,this._variantsLoading=!0;try{let r=await e.listVariants(t,{signal:n.signal});n.signal.aborted||(this._variants=r)}catch(e){n.signal.aborted||(console.error(`Failed to load dashboard variants:`,e),this._variantsFailed=!0)}finally{n.signal.aborted||(this._variantsLoading=!1)}}_handleBack(){this._step===`screenModes`&&this._original?this._step=`variants`:(this._step=`list`,this._original=null),this._pending=null}_toggleScreenMode(e){this._screenModes=this._screenModes.includes(e)?this._screenModes.filter(t=>t!==e):[...this._screenModes,e]}_handleConfirmScreenModes(){this._pending&&this._screenModes.length>0&&this._save(this._pending,{screenModes:[...this._screenModes]})}async _save(e,t={}){let n=this._actions;if(!n||!this.chart||this._saving)return;this._open=!1,this._saving=!0,this._setStatus(null),this._saveAbort=new AbortController;let r=D(this.chart),i={signal:this._saveAbort.signal};try{let a;if(e.kind===`create`&&n.create)a=await n.create(r,t,i);else if(e.kind===`variant`&&n.addToVariant)a=await n.addToVariant(e.original,r,{...t,name:e.name},i);else if(e.kind===`add`)a=await n.add(e.dashboard,r,t,i)||e.dashboard;else return;if(i.signal.aborted)return;this._setStatus({kind:`success`,dashboard:a,isVariant:e.kind===`variant`||e.kind===`add`&&e.isVariant,openDashboard:n.openDashboard?.bind(n)}),this._dispatch(`luzmo-chart-added`,{dashboard:a})}catch(e){if(i.signal.aborted)return;console.error(`Failed to add the chart to a dashboard:`,e),this._setStatus({kind:`error`}),this._dispatch(`luzmo-chart-add-failed`,{error:e})}finally{this._saving=!1}await this.updateComplete,this.isConnected&&this._isFocusLost()&&this._focusTrigger()}_setStatus(e){this._status=e}_focusTrigger(){this._triggerElement?.focus()}_isFocusLost(){return!document.activeElement||document.activeElement===document.body}async _handleNoticeClose(e){e.stopPropagation();let t=e.currentTarget.matches(`:focus-within`);this._setStatus(null),await this.updateComplete,t&&this._isFocusLost()&&this._focusTrigger()}async _focusStep(){let e=this._step===`list`?this._searchElement:this._backElement;await e?.updateComplete,e?.focus()}_renderRow(e){return s.html`
|
|
21
21
|
<luzmo-menu-item value=${e.id} no-wrap ?disabled=${this._saving}>
|
|
22
22
|
${e.thumbnailUrl?s.html`<img slot="icon" class="thumbnail" alt="" src=${e.thumbnailUrl} />`:s.nothing}
|
|
23
23
|
${this._displayName(e)}
|
|
@@ -18,22 +18,22 @@
|
|
|
18
18
|
* SOFTWARE.
|
|
19
19
|
* */
|
|
20
20
|
import "./tokens-Ov1pCR4Y.js";
|
|
21
|
-
import { i as e, n as t, t as n } from "./base-
|
|
21
|
+
import { i as e, n as t, t as n } from "./base-Cvcpdy0h.js";
|
|
22
22
|
import { t as r } from "./decorate-DyMgX_Uh.js";
|
|
23
|
-
import { t as i } from "./localized-mixin-
|
|
23
|
+
import { t as i } from "./localized-mixin-BLUbrY_Z.js";
|
|
24
24
|
import { t as a } from "./data-broker-DNfq_8Lg.js";
|
|
25
25
|
import { t as o } from "./localize-BT7REYBY.js";
|
|
26
26
|
import { o as s } from "./chart-helpers-DQS2iqSd.js";
|
|
27
27
|
import { luzmoAlertOutline as c, luzmoAngleDown as l, luzmoAngleLeft as u, luzmoAngleRight as d, luzmoArrowLeft as f, luzmoArrowRight as p, luzmoArrowsHorizontal as m, luzmoCheckCircleOutline as h, luzmoDesktop as g, luzmoLaptop as _, luzmoLink as v, luzmoMobile as ee, luzmoPlus as y, luzmoTablet as te } from "@luzmo/icons";
|
|
28
|
+
import "@luzmo/lucero/action-button";
|
|
28
29
|
import "@luzmo/lucero/button";
|
|
29
30
|
import "@luzmo/lucero/icon";
|
|
30
31
|
import "@luzmo/lucero/overlay";
|
|
31
32
|
import "@luzmo/lucero/popover";
|
|
33
|
+
import "@luzmo/lucero/tooltip";
|
|
32
34
|
import { html as b, nothing as x, unsafeCSS as S } from "lit";
|
|
33
35
|
import { property as C, query as w, state as T } from "lit/decorators.js";
|
|
34
36
|
import { localized as E, msg as D, str as O } from "@lit/localize";
|
|
35
|
-
import "@luzmo/lucero/action-button";
|
|
36
|
-
import "@luzmo/lucero/tooltip";
|
|
37
37
|
import "@luzmo/lucero/progress-circle";
|
|
38
38
|
import "@luzmo/lucero/checkbox";
|
|
39
39
|
import "@luzmo/lucero/divider";
|
|
@@ -9,7 +9,11 @@ export interface AiChatStepBase {
|
|
|
9
9
|
agent: AiPromptAgent;
|
|
10
10
|
/** Current conversation id, or `null` before the backend assigns one. */
|
|
11
11
|
conversationId: string | null;
|
|
12
|
-
/**
|
|
12
|
+
/**
|
|
13
|
+
* Backend message id, resolved like `ChatMessage.apiMessageId`: the modern `assistant_message_id` from this chunk
|
|
14
|
+
* or earlier in the stream, else the chunk's legacy camelCase `messageId` (a persisted *user* message id in the
|
|
15
|
+
* deprecated backend, not an assistant id).
|
|
16
|
+
*/
|
|
13
17
|
messageId?: string;
|
|
14
18
|
/** Always present — the original stream chunk that produced this step. */
|
|
15
19
|
raw: Record<string, unknown>;
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
import '@luzmo/lucero/action-button';
|
|
1
2
|
import '@luzmo/lucero/button';
|
|
2
3
|
import '@luzmo/lucero/chat-message';
|
|
3
4
|
import '@luzmo/lucero/icon';
|
|
4
5
|
import '@luzmo/lucero/overlay';
|
|
5
6
|
import '@luzmo/lucero/popover';
|
|
6
7
|
import '@luzmo/lucero/progress-steps';
|
|
8
|
+
import '@luzmo/lucero/tooltip';
|
|
7
9
|
import { LuzmoElement } from '../../utils/base/index.js';
|
|
8
10
|
import { type PropertyValues, TemplateResult } from 'lit';
|
|
9
11
|
import type { ChatMessage, Dataset, LuzmoChart } from '../../types';
|
|
@@ -30,9 +32,11 @@ declare const LuzmoAiChat_base: typeof LuzmoElement & {
|
|
|
30
32
|
* @fires {CustomEvent<AiChatDatasetsChangedEventDetail>} luzmo-datasets-changed - Fired when the selected datasets change
|
|
31
33
|
* @fires {CustomEvent<AiChatConversationIdChangedEventDetail>} luzmo-conversation-id-changed - Fired when the conversation ID is updated from the API
|
|
32
34
|
* @fires {CustomEvent<AssistantMessageActionEventDetail>} luzmo-assistant-message-action - Fired when a built-in assistant message action is activated (after confirmation when `confirm` is set)
|
|
35
|
+
* @fires {CustomEvent<AssistantMessageFeedbackEventDetail>} luzmo-assistant-message-feedback - Fired once when the user selects, switches or clears a thumbs rating, after the session holds the new rating. Not fired for programmatic updates.
|
|
33
36
|
* @fires {CustomEvent<void>} luzmo-stop - Fired when an in-flight prompt is stopped
|
|
34
37
|
*
|
|
35
38
|
* @attr size - Size of the chat: `s`, `m` (default), `l` or `xl`. Scales messages, progress steps, questions, the empty state and the prompt input together.
|
|
39
|
+
* @attr show-assistant-message-feedback - When present, shows thumbs up/down feedback buttons below each completed assistant message without `hideFeedback`.
|
|
36
40
|
*
|
|
37
41
|
* Custom actions beyond built-in `ChatMessage.actions` buttons can be projected via the
|
|
38
42
|
* `assistant-message-actions` light-DOM slot on the latest assistant message.
|
|
@@ -74,7 +78,7 @@ declare const LuzmoAiChat_base: typeof LuzmoElement & {
|
|
|
74
78
|
* @property {string} --luzmo-ai-chat-markdown-border-color - Border color for blockquotes, horizontal rules, and tables
|
|
75
79
|
* @property {string} --luzmo-ai-chat-markdown-table-header-background - Background of markdown table header cells
|
|
76
80
|
* @property {string} --luzmo-ai-chat-assistant-message-actions-gap - Gap between controls in the assistant message actions footer
|
|
77
|
-
* @property {string} --luzmo-ai-chat-assistant-message-actions-margin-top - Top spacing above the assistant message actions
|
|
81
|
+
* @property {string} --luzmo-ai-chat-assistant-message-actions-margin-top - Top spacing above the assistant message feedback and actions row
|
|
78
82
|
* @property {string} --luzmo-ai-chat-assistant-message-actions-color - Text color for assistant message actions footer content (default: `--luzmo-font-color-extra-dimmed`)
|
|
79
83
|
* @property {string} --luzmo-ai-chat-assistant-message-actions-font-style - Font style for plain text in the assistant message actions footer (default: `italic`)
|
|
80
84
|
* @property {string} --luzmo-ai-chat-assistant-message-font-family - Font family shared by assistant messages and their actions footer
|
|
@@ -110,6 +114,11 @@ export declare class LuzmoAiChat extends LuzmoAiChat_base {
|
|
|
110
114
|
* When true, shows context menu (3 dots) on assistant messages
|
|
111
115
|
*/
|
|
112
116
|
showAssistantContextMenu: boolean;
|
|
117
|
+
/**
|
|
118
|
+
* When true, shows thumbs up/down feedback buttons below each completed assistant message.
|
|
119
|
+
* A message with `hideFeedback: true` hides its buttons; the selected rating is kept in `ChatMessage.feedback`.
|
|
120
|
+
*/
|
|
121
|
+
showAssistantMessageFeedback: boolean;
|
|
113
122
|
/**
|
|
114
123
|
* Auth key for DataBroker authentication
|
|
115
124
|
*/
|
|
@@ -287,7 +296,11 @@ export declare class LuzmoAiChat extends LuzmoAiChat_base {
|
|
|
287
296
|
private _assistantMessageActionsSlotHasContent;
|
|
288
297
|
private _pendingAssistantMessageAction;
|
|
289
298
|
private _shouldFocusAssistantMessageActionConfirm;
|
|
299
|
+
/** Message wrapper whose feedback row held focus before an update, so focus can move on if the row is removed. */
|
|
300
|
+
private _focusedFeedbackWrapper;
|
|
290
301
|
private _lastProcessedInitialPrompt;
|
|
302
|
+
/** Session state of the previous render request, to tell feedback-only updates apart from new content. */
|
|
303
|
+
private _lastNotifiedState;
|
|
291
304
|
private readonly _session;
|
|
292
305
|
/** Active {@link AiChatSession} (host or auto-created). Null until first bind or action. */
|
|
293
306
|
get session(): AiChatSession | null;
|
|
@@ -341,9 +354,31 @@ export declare class LuzmoAiChat extends LuzmoAiChat_base {
|
|
|
341
354
|
private _confirmAssistantMessageAction;
|
|
342
355
|
private _handleAssistantMessageActionConfirmKeydown;
|
|
343
356
|
private _focusPendingAssistantMessageActionConfirm;
|
|
357
|
+
/**
|
|
358
|
+
* Hiding feedback (per message or globally) removes the row that held focus. Move focus to the same message's
|
|
359
|
+
* first enabled action, otherwise the prompt, without scrolling the transcript. Focus that moved elsewhere stays.
|
|
360
|
+
*/
|
|
361
|
+
private _restoreFocusFromRemovedFeedback;
|
|
362
|
+
/**
|
|
363
|
+
* Focuses the first enabled, focusable control in the message's actions footer, in rendered order: built-in actions
|
|
364
|
+
* (or the confirmation controls), then controls assigned to the `assistant-message-actions` slot and their descendants.
|
|
365
|
+
*/
|
|
366
|
+
private _focusFirstAssistantMessageAction;
|
|
367
|
+
/**
|
|
368
|
+
* An action with an icon renders as a quiet icon-only button named and tooltipped by its label. Undo without an icon
|
|
369
|
+
* gets the rotate-left icon; any other action without one keeps its readable label rather than an invented icon.
|
|
370
|
+
*/
|
|
344
371
|
private _renderBuiltInAssistantMessageAction;
|
|
345
372
|
private _renderAssistantMessageActionConfirm;
|
|
346
373
|
private _renderAssistantMessageActions;
|
|
374
|
+
/**
|
|
375
|
+
* One compact row inside the message holds the thumbs, then the actions, so Undo sits right after them. The row stays
|
|
376
|
+
* mounted while empty so the latest message's slot keeps receiving `slotchange`; it only takes space when it has
|
|
377
|
+
* visible content.
|
|
378
|
+
*/
|
|
379
|
+
private _renderAssistantMessageFooter;
|
|
380
|
+
private _handleAssistantMessageFeedback;
|
|
381
|
+
private _renderAssistantMessageFeedback;
|
|
347
382
|
private _renderRestoreMenu;
|
|
348
383
|
private _renderMessages;
|
|
349
384
|
private _handleElicitationSubmit;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import '@luzmo/lucero/action-button';
|
|
2
|
+
import '@luzmo/lucero/icon';
|
|
3
|
+
import type { ElementSize } from '../../../utils/base/index.js';
|
|
4
|
+
import { type TemplateResult } from 'lit';
|
|
5
|
+
import type { AssistantMessageFeedbackRating } from '../../../types';
|
|
6
|
+
import type { AiChatSessionState } from '../session/ai-chat-session-types';
|
|
7
|
+
export interface AssistantMessageFeedbackMarkupArgs {
|
|
8
|
+
/** Id of the hidden group label, unique within the chat's shadow root. */
|
|
9
|
+
labelId: string;
|
|
10
|
+
rating: AssistantMessageFeedbackRating;
|
|
11
|
+
size: ElementSize;
|
|
12
|
+
disabled: boolean;
|
|
13
|
+
onRate: (clicked: 1 | -1) => void;
|
|
14
|
+
}
|
|
15
|
+
/** Clicking the selected thumb clears the rating; clicking the other thumb switches to it. */
|
|
16
|
+
export declare function nextAssistantMessageFeedbackRating(current: AssistantMessageFeedbackRating | undefined, clicked: 1 | -1): AssistantMessageFeedbackRating;
|
|
17
|
+
/**
|
|
18
|
+
* True when the only change between two session states is a message's `feedback` or `hideFeedback`.
|
|
19
|
+
* Such updates re-render the transcript but must not scroll it, so rating an older reply keeps the viewport.
|
|
20
|
+
*/
|
|
21
|
+
export declare function isAssistantMessageFeedbackOnlyChange(previous: AiChatSessionState | null, next: AiChatSessionState): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Thumbs up/down toggle buttons for an assistant message. The chat owns the rating: each button's own toggle is
|
|
24
|
+
* reverted and its native `change` kept inside the chat, so `luzmo-assistant-message-feedback` is the only notification.
|
|
25
|
+
*/
|
|
26
|
+
export declare function assistantMessageFeedbackMarkup({ labelId, rating, size, disabled, onRate }: AssistantMessageFeedbackMarkupArgs): TemplateResult;
|
|
@@ -17,4 +17,4 @@
|
|
|
17
17
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
18
18
|
* SOFTWARE.
|
|
19
19
|
* */
|
|
20
|
-
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../ai-interaction-textarea-
|
|
20
|
+
Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});const e=require("../ai-interaction-textarea-Da1ErRHy.cjs"),t=require("../ai-chat-C0XZ_pvG.cjs");exports.AI_PROMPT_ACCEPTED_IMAGE_MIME_TYPES=e.c,exports.AI_PROMPT_MAX_ATTACHMENTS=e.l,exports.AiChatSession=t.i,exports.AiChatSessionController=t.r,exports.LuzmoAiChat=t.n,exports.LuzmoAiChatEmptyState=t.D,exports.assertValidAiPromptAttachmentFiles=e.u,exports.assertValidAiPromptAttachmentUrls=e.d,exports.blobToBase64=e.n,exports.buildAiDictationRequest=e.r,exports.buildAiPromptDeleteRequest=t._,exports.buildAiPromptProperties=t.v,exports.buildAiPromptRequest=t.y,exports.buildAnalystAiPromptProperties=t.b,exports.buildCustomItemAiPromptProperties=t.x,exports.buildDashboardAiPromptProperties=t.S,exports.buildItemAiPromptProperties=t.C,exports.buildSavedAgentAiPromptProperties=t.w,exports.chartToItemAsset=t.T,exports.createAiChatSession=t.a,exports.createInitialProgress=t.f,exports.createInitialStreamState=t.o,exports.createStreamHandler=t.s,exports.extractChartFromChunk=t.u,exports.extractDashboardFromChunk=t.d,exports.fetchStreamingResponse=t.m,exports.getAgentStreamDefinition=t.c,exports.getAiDictationUrl=e.i,exports.getAiPromptUrl=t.E,exports.getUploadUrl=e.o,exports.hasProgressChunk=t.p,exports.isAiPromptAcceptedImageFile=e.f,exports.isAiPromptAcceptedImageMimeType=e.p,exports.isAiPromptAcceptedImageUrl=e.m,exports.isRecognizedStep=t.t,exports.parseStreamLine=t.h,exports.processStreamChunk=t.l,exports.readNdjsonStream=t.g,exports.streamAiDictation=e.a,exports.uploadAiPromptImages=e.s;
|
|
@@ -4,7 +4,7 @@ declare global {
|
|
|
4
4
|
'luzmo-ai-chat': LuzmoAiChat;
|
|
5
5
|
}
|
|
6
6
|
}
|
|
7
|
-
export type { ProgressTreeNode, AssistantMessageAction, AssistantMessageActionConfirmVariant, AssistantMessageActionEventDetail, ChatMessageElicitation, AiChatMessageSentEventDetail, AiChatDatasetsChangedEventDetail, AiChatConversationIdChangedEventDetail } from '../../types/ai-chat.types';
|
|
7
|
+
export type { ProgressTreeNode, AssistantMessageAction, AssistantMessageActionConfirmVariant, AssistantMessageActionEventDetail, AssistantMessageFeedbackEventDetail, AssistantMessageFeedbackRating, ChatMessageElicitation, AiChatMessageSentEventDetail, AiChatDatasetsChangedEventDetail, AiChatConversationIdChangedEventDetail } from '../../types/ai-chat.types';
|
|
8
8
|
export type { PromptBoxAttachment, PromptBoxFileIcons } from '../ai-interaction-textarea';
|
|
9
9
|
export { isRecognizedStep } from './ai-chat-events';
|
|
10
10
|
export type { AiChatCompleteEvent, AiChatRecognizedStepType, AiChatStepBase, AiChatStepEvent, RecognizedStepEvent, UnknownStepEvent } from './ai-chat-events';
|
|
@@ -17,6 +17,6 @@
|
|
|
17
17
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
18
18
|
* SOFTWARE.
|
|
19
19
|
* */
|
|
20
|
-
import { a as e, c as t, d as n, f as r, i, l as a, m as o, n as s, o as c, p as l, r as u, s as d, u as f } from "../ai-interaction-textarea-
|
|
21
|
-
import { C as p, D as m, E as h, S as g, T as _, _ as v, a as y, b, c as x, d as S, f as C, g as w, h as T, i as E, l as D, m as O, n as k, o as A, p as j, r as M, s as N, t as P, u as F, v as I, w as L, x as R, y as z } from "../ai-chat-
|
|
20
|
+
import { a as e, c as t, d as n, f as r, i, l as a, m as o, n as s, o as c, p as l, r as u, s as d, u as f } from "../ai-interaction-textarea-CT698Pph.js";
|
|
21
|
+
import { C as p, D as m, E as h, S as g, T as _, _ as v, a as y, b, c as x, d as S, f as C, g as w, h as T, i as E, l as D, m as O, n as k, o as A, p as j, r as M, s as N, t as P, u as F, v as I, w as L, x as R, y as z } from "../ai-chat-CYrWJ8Wa.js";
|
|
22
22
|
export { t as AI_PROMPT_ACCEPTED_IMAGE_MIME_TYPES, a as AI_PROMPT_MAX_ATTACHMENTS, E as AiChatSession, M as AiChatSessionController, k as LuzmoAiChat, m as LuzmoAiChatEmptyState, f as assertValidAiPromptAttachmentFiles, n as assertValidAiPromptAttachmentUrls, s as blobToBase64, u as buildAiDictationRequest, v as buildAiPromptDeleteRequest, I as buildAiPromptProperties, z as buildAiPromptRequest, b as buildAnalystAiPromptProperties, R as buildCustomItemAiPromptProperties, g as buildDashboardAiPromptProperties, p as buildItemAiPromptProperties, L as buildSavedAgentAiPromptProperties, _ as chartToItemAsset, y as createAiChatSession, C as createInitialProgress, A as createInitialStreamState, N as createStreamHandler, F as extractChartFromChunk, S as extractDashboardFromChunk, O as fetchStreamingResponse, x as getAgentStreamDefinition, i as getAiDictationUrl, h as getAiPromptUrl, c as getUploadUrl, j as hasProgressChunk, r as isAiPromptAcceptedImageFile, l as isAiPromptAcceptedImageMimeType, o as isAiPromptAcceptedImageUrl, P as isRecognizedStep, T as parseStreamLine, D as processStreamChunk, w as readNdjsonStream, e as streamAiDictation, d as uploadAiPromptImages };
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { PromptBoxAttachment } from '@luzmo/lucero';
|
|
2
|
-
import type { Dataset } from '../../../types';
|
|
2
|
+
import type { AssistantMessageFeedbackRating, Dataset } from '../../../types';
|
|
3
3
|
import type { AiPromptCreateBody, AiPromptDeleteBody, LuzmoPromptSubmittedEventDetail } from '../ai-prompt-types';
|
|
4
4
|
import type { AiChatAgentConfig } from '../types';
|
|
5
5
|
import type { AiChatSessionCallbacks, AiChatSessionConfig, AiChatSessionRestoreParams, AiChatSessionRestoreResult, AiChatSessionState, AiChatSessionSubmitParams } from './ai-chat-session-types';
|
|
@@ -87,6 +87,13 @@ export declare class AiChatSession {
|
|
|
87
87
|
* the send is aborted or superseded before the request goes out; the answer is cleared again then.
|
|
88
88
|
*/
|
|
89
89
|
answerElicitation(messageId: string, answer: string, params?: Omit<AiChatSessionSubmitParams, 'prompt'>): Promise<boolean>;
|
|
90
|
+
/**
|
|
91
|
+
* Select, switch or clear the thumbs rating of an assistant message (`0` clears it). Use it to restore a saved
|
|
92
|
+
* rating or roll back a failed save; it never fires `luzmo-assistant-message-feedback`.
|
|
93
|
+
* Returns `false` without changing state for an unknown id, a user message, the in-flight reply, an invalid
|
|
94
|
+
* rating, or a rating that is already set (omitted counts as `0`).
|
|
95
|
+
*/
|
|
96
|
+
setMessageFeedback(messageId: string, rating: AssistantMessageFeedbackRating): boolean;
|
|
90
97
|
/** Item agent only — restore conversation to a prior API message. */
|
|
91
98
|
restore(params: AiChatSessionRestoreParams): Promise<AiChatSessionRestoreResult>;
|
|
92
99
|
buildRestoreRequest(restoreToMessageId: string): AiPromptDeleteBody;
|
|
@@ -20,6 +20,14 @@ export declare function extractStreamText(chunk: Record<string, unknown>): strin
|
|
|
20
20
|
export declare function extractResultAssistantText(chunk: Record<string, unknown>): string;
|
|
21
21
|
export declare function isStreamDone(chunk: Record<string, unknown>): boolean;
|
|
22
22
|
export declare function applyConversationId(chunk: Record<string, unknown>, ctx: StreamHandlerContext): void;
|
|
23
|
+
/**
|
|
24
|
+
* Explicit backend id of the assistant message, from modern `/aiprompt` streams.
|
|
25
|
+
*
|
|
26
|
+
* Only `assistant_message_id` qualifies. `user_message_id` identifies the prompt, and the
|
|
27
|
+
* legacy camelCase `messageId` is the persisted *user* message id in deprecated streams,
|
|
28
|
+
* so neither is a spelling alias for the assistant id.
|
|
29
|
+
*/
|
|
30
|
+
export declare function extractAssistantMessageId(chunk: Record<string, unknown>): string | null;
|
|
23
31
|
export declare function extractChartFromChunk(chunk: Record<string, unknown>): Record<string, unknown> | null;
|
|
24
32
|
export declare function extractDashboardName(assets: unknown[]): Record<string, string> | undefined;
|
|
25
33
|
export declare function extractDashboardFromChunk(chunk: Record<string, unknown>): DashboardStatePayload | null;
|
|
@@ -49,5 +49,5 @@ export { createInitialProgress, hasProgressChunk } from './progress';
|
|
|
49
49
|
export type { StreamChunkProcessor } from './registry';
|
|
50
50
|
export { createInitialStreamState, createStreamHandler, getAgentStreamDefinition } from './registry';
|
|
51
51
|
export type { AgentStreamDefinition, StreamHandlerCallbacks, StreamHandlerContext, StreamHandlerState } from './types';
|
|
52
|
-
export { applyConversationId, extractChartFromChunk, extractDashboardFromChunk, extractDashboardName, extractDashboardNameFromChunk, extractInlineStreamText, extractResultAssistantText, extractStreamText, isStreamDone } from './chunk-extractors';
|
|
52
|
+
export { applyConversationId, extractAssistantMessageId, extractChartFromChunk, extractDashboardFromChunk, extractDashboardName, extractDashboardNameFromChunk, extractInlineStreamText, extractResultAssistantText, extractStreamText, isStreamDone } from './chunk-extractors';
|
|
53
53
|
export { processStreamChunk } from './stream-processor';
|
|
@@ -36,6 +36,12 @@ export interface StreamHandlerState {
|
|
|
36
36
|
customItemSnapshot: AiPromptCustomItemInput['value'] | null;
|
|
37
37
|
/** Pending clarification question, when the agent interrupted. */
|
|
38
38
|
interruptQuestion: string | null;
|
|
39
|
+
/**
|
|
40
|
+
* Explicit modern assistant id (`assistant_message_id`) once any chunk carried it.
|
|
41
|
+
* While set, it is the message's `apiMessageId`, and legacy `messageId` capture no longer
|
|
42
|
+
* applies. Optional so hand-built states stay valid; `createInitialStreamState` omits it.
|
|
43
|
+
*/
|
|
44
|
+
assistantMessageId?: string;
|
|
39
45
|
/** Guards against firing {@link StreamHandlerCallbacks.onComplete} more than once. */
|
|
40
46
|
completed: boolean;
|
|
41
47
|
}
|