lintje 0.2.0 → 0.3.0
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/README.md +2 -2
- package/dist-elements/actions.js +1 -1
- package/dist-elements/chunks/{base-Bg-IFOPG.js → base-CbmWxUig.js} +444 -272
- package/dist-elements/chunks/{controls-B1455oPG.js → controls-DxmnDSBr.js} +6 -0
- package/dist-elements/chunks/dialog-DChINFxD.js +28 -0
- package/dist-elements/chunks/{disclosure-BXTX04gM.js → disclosure-D39vAR5q.js} +1 -1
- package/dist-elements/chunks/{disclosure-CMXhX-Vb.js → disclosure-DLkXPUpV.js} +6 -6
- package/dist-elements/chunks/download-Ct9q2anY.js +206 -0
- package/dist-elements/chunks/{focus-trap-9BnE-xWv.js → focus-trap-BwOxE5BX.js} +1 -1
- package/dist-elements/chunks/input-CRW_exv_.js +195 -0
- package/dist-elements/chunks/{player-DXOZEyEy.js → player-B8QXJ0Z5.js} +26 -26
- package/dist-elements/chunks/{sentence-BI3lwEuT.js → sentence-B19AyZBS.js} +3 -3
- package/dist-elements/chunks/{stagger-qGD3wmhg.js → stagger-BHoOgy0g.js} +81 -75
- package/dist-elements/core.js +1 -1
- package/dist-elements/custom-elements.json +980 -670
- package/dist-elements/data-types.json +6798 -0
- package/dist-elements/feedback.js +2 -1
- package/dist-elements/frame.js +0 -2
- package/dist-elements/guides/dashboard.md +8 -0
- package/dist-elements/guides/events.md +4 -5
- package/dist-elements/guides/loading.md +8 -7
- package/dist-elements/guides/page-contents.md +110 -0
- package/dist-elements/guides/start.md +12 -0
- package/dist-elements/inputs.js +2 -1
- package/dist-elements/layout.js +1 -1
- package/dist-elements/lintje.js +6975 -6120
- package/dist-elements/overlays.js +2 -2
- package/dist-elements/skills/lintje/SKILL.md +1 -1
- package/dist-elements/tables.js +1 -1
- package/dist-elements/tag/activity-log.js +15 -15
- package/dist-elements/tag/ai-label.js +10 -10
- package/dist-elements/tag/announcement.js +36 -76
- package/dist-elements/tag/app-search.js +49 -49
- package/dist-elements/tag/audio-player.js +57 -57
- package/dist-elements/tag/badge.js +1 -1
- package/dist-elements/tag/breadcrumbs.js +15 -15
- package/dist-elements/tag/button.js +1 -1
- package/dist-elements/tag/card-list.js +12 -12
- package/dist-elements/tag/card.js +39 -44
- package/dist-elements/tag/chart.js +1050 -795
- package/dist-elements/tag/chat-answer.js +49 -49
- package/dist-elements/tag/chat-composer.js +75 -71
- package/dist-elements/tag/chat-message.js +8 -8
- package/dist-elements/tag/chat-strip.js +22 -22
- package/dist-elements/tag/chat-suggestions.js +12 -12
- package/dist-elements/tag/chat.js +56 -56
- package/dist-elements/tag/checkbox-group.d.ts +1 -0
- package/dist-elements/tag/checkbox-group.js +59 -0
- package/dist-elements/tag/checkbox.js +8 -8
- package/dist-elements/tag/code.js +9 -9
- package/dist-elements/tag/combobox.js +18 -18
- package/dist-elements/tag/conflict-alert.js +12 -12
- package/dist-elements/tag/copy-button.js +14 -14
- package/dist-elements/tag/data-table.js +878 -530
- package/dist-elements/tag/date-input.js +30 -30
- package/dist-elements/tag/date-range.js +37 -37
- package/dist-elements/tag/description-list.js +29 -32
- package/dist-elements/tag/dialog.d.ts +1 -0
- package/dist-elements/tag/dialog.js +144 -0
- package/dist-elements/tag/document-viewer.js +23 -23
- package/dist-elements/tag/drawer.js +28 -32
- package/dist-elements/tag/empty-state.js +19 -30
- package/dist-elements/tag/error-page.d.ts +1 -0
- package/dist-elements/tag/error-page.js +109 -0
- package/dist-elements/tag/error-summary.js +10 -10
- package/dist-elements/tag/expander.js +8 -8
- package/dist-elements/tag/explainer.js +11 -11
- package/dist-elements/tag/field.js +5 -5
- package/dist-elements/tag/file-upload.js +34 -34
- package/dist-elements/tag/filter-bar.js +56 -56
- package/dist-elements/tag/filter-sheet.js +11 -11
- package/dist-elements/tag/filter-zone.js +31 -31
- package/dist-elements/tag/footer.js +21 -21
- package/dist-elements/tag/form-actions.js +29 -25
- package/dist-elements/tag/form-section.js +6 -6
- package/dist-elements/tag/form.js +12 -12
- package/dist-elements/tag/gallery.js +14 -14
- package/dist-elements/tag/grid-item.js +1 -1
- package/dist-elements/tag/grid.js +1 -1
- package/dist-elements/tag/hero.js +12 -12
- package/dist-elements/tag/highlight.js +5 -5
- package/dist-elements/tag/icon-button.js +1 -1
- package/dist-elements/tag/icon.js +1 -1
- package/dist-elements/tag/job-list.js +22 -44
- package/dist-elements/tag/kpi-row.js +12 -10
- package/dist-elements/tag/kpi.js +146 -137
- package/dist-elements/tag/level-meter.js +11 -11
- package/dist-elements/tag/list.js +55 -55
- package/dist-elements/tag/logo.js +30 -30
- package/dist-elements/tag/map.js +690 -665
- package/dist-elements/tag/menu-button.js +70 -69
- package/dist-elements/tag/modal.js +28 -37
- package/dist-elements/tag/multiselect.js +34 -34
- package/dist-elements/tag/note.js +5 -5
- package/dist-elements/tag/notifications.js +36 -36
- package/dist-elements/tag/number-input.js +12 -12
- package/dist-elements/tag/page-header.js +140 -37
- package/dist-elements/tag/pagination.js +53 -48
- package/dist-elements/tag/popover.js +1 -1
- package/dist-elements/tag/progress-bar.js +1 -1
- package/dist-elements/tag/prose.js +6 -6
- package/dist-elements/tag/qr-code.js +7 -7
- package/dist-elements/tag/radio-group.js +12 -12
- package/dist-elements/tag/range.js +22 -22
- package/dist-elements/tag/recording-status.js +14 -14
- package/dist-elements/tag/repeater.js +10 -10
- package/dist-elements/tag/segmented.js +13 -13
- package/dist-elements/tag/select.js +10 -10
- package/dist-elements/tag/shell.js +356 -339
- package/dist-elements/tag/skeleton.js +1 -1
- package/dist-elements/tag/slot-picker.js +14 -14
- package/dist-elements/tag/sortable-list.js +14 -14
- package/dist-elements/tag/spinner.js +1 -1
- package/dist-elements/tag/split-pane.js +12 -12
- package/dist-elements/tag/status-dot.js +1 -1
- package/dist-elements/tag/stepper.js +21 -21
- package/dist-elements/tag/streaming-text.js +13 -13
- package/dist-elements/tag/sub-nav.js +39 -38
- package/dist-elements/tag/tabs.js +38 -38
- package/dist-elements/tag/tag-input.js +19 -19
- package/dist-elements/tag/text-editor.js +24 -24
- package/dist-elements/tag/text-input.js +14 -14
- package/dist-elements/tag/textarea.js +14 -14
- package/dist-elements/tag/tile.js +1 -1
- package/dist-elements/tag/time-input.js +19 -19
- package/dist-elements/tag/toast.js +32 -23
- package/dist-elements/tag/toggle.js +8 -8
- package/dist-elements/tag/toggletip.js +27 -27
- package/dist-elements/tag/tooltip.js +1 -1
- package/dist-elements/tag/transcript.js +48 -48
- package/dist-elements/tag/translator.js +13 -13
- package/dist-elements/tag/tree-view.js +13 -13
- package/dist-elements/tag/user-menu.js +37 -37
- package/dist-elements/tag/video-player.js +21 -21
- package/dist-elements/tokens.css +120 -96
- package/dist-elements/types/bundle/feedback.d.ts +1 -0
- package/dist-elements/types/bundle/frame.d.ts +0 -2
- package/dist-elements/types/bundle/inputs.d.ts +1 -0
- package/dist-elements/types/bundle/overlays.d.ts +1 -1
- package/dist-elements/types/components/actions/copy-button/copy-button.d.ts +6 -7
- package/dist-elements/types/components/actions/menu-button/menu-button.d.ts +13 -15
- package/dist-elements/types/components/actions/qr-code/qr-code.d.ts +9 -9
- package/dist-elements/types/components/charts/chart/chart.d.ts +5 -4
- package/dist-elements/types/components/charts/kpi/kpi.d.ts +16 -8
- package/dist-elements/types/components/charts/kpi-row/kpi-row.d.ts +1 -7
- package/dist-elements/types/components/charts/note/note.d.ts +1 -1
- package/dist-elements/types/components/chat/chat/chat.d.ts +8 -10
- package/dist-elements/types/components/chat/chat-answer/chat-answer.d.ts +7 -8
- package/dist-elements/types/components/chat/chat-composer/chat-composer.d.ts +8 -10
- package/dist-elements/types/components/chat/chat-message/chat-message.d.ts +6 -7
- package/dist-elements/types/components/chat/chat-strip/chat-strip.d.ts +5 -5
- package/dist-elements/types/components/chat/chat-suggestions/chat-suggestions.d.ts +9 -10
- package/dist-elements/types/components/content/audio-player/audio-player.d.ts +10 -12
- package/dist-elements/types/components/content/code/code.d.ts +2 -3
- package/dist-elements/types/components/content/document-viewer/document-viewer.d.ts +8 -9
- package/dist-elements/types/components/content/gallery/gallery.d.ts +5 -4
- package/dist-elements/types/components/content/highlight/highlight.d.ts +4 -3
- package/dist-elements/types/components/content/prose/prose.d.ts +2 -3
- package/dist-elements/types/components/content/transcript/transcript.d.ts +12 -25
- package/dist-elements/types/components/content/translator/translator.d.ts +11 -15
- package/dist-elements/types/components/content/video-player/video-player.d.ts +11 -13
- package/dist-elements/types/components/feedback/ai-label/ai-label.d.ts +3 -4
- package/dist-elements/types/components/feedback/announcement/announcement.d.ts +3 -7
- package/dist-elements/types/components/feedback/conflict-alert/conflict-alert.d.ts +3 -4
- package/dist-elements/types/components/feedback/empty-state/empty-state.d.ts +5 -8
- package/dist-elements/types/components/feedback/error-page/error-page.d.ts +52 -0
- package/dist-elements/types/components/feedback/job-list/job-list.d.ts +9 -12
- package/dist-elements/types/components/feedback/level-meter/level-meter.d.ts +4 -6
- package/dist-elements/types/components/feedback/recording-status/recording-status.d.ts +5 -6
- package/dist-elements/types/components/feedback/streaming-text/streaming-text.d.ts +10 -7
- package/dist-elements/types/components/feedback/toast/toast.d.ts +8 -9
- package/dist-elements/types/components/filters/filter-bar/filter-bar.d.ts +9 -4
- package/dist-elements/types/components/filters/filter-sheet/filter-sheet.d.ts +5 -5
- package/dist-elements/types/components/filters/filter-zone/filter-zone.d.ts +4 -4
- package/dist-elements/types/components/forms/error-summary/error-summary.d.ts +5 -6
- package/dist-elements/types/components/forms/form/form.d.ts +5 -5
- package/dist-elements/types/components/forms/form-actions/form-actions.d.ts +9 -7
- package/dist-elements/types/components/forms/form-section/form-section.d.ts +6 -5
- package/dist-elements/types/components/forms/repeater/repeater.d.ts +13 -7
- package/dist-elements/types/components/forms/stepper/stepper.d.ts +5 -4
- package/dist-elements/types/components/frame/app-search/app-search.d.ts +6 -7
- package/dist-elements/types/components/frame/breadcrumbs/breadcrumbs.d.ts +2 -2
- package/dist-elements/types/components/frame/footer/footer.d.ts +3 -2
- package/dist-elements/types/components/frame/hero/hero.d.ts +7 -9
- package/dist-elements/types/components/frame/notifications/notifications.d.ts +5 -9
- package/dist-elements/types/components/frame/page-header/page-header.d.ts +12 -15
- package/dist-elements/types/components/frame/shell/shell.d.ts +14 -13
- package/dist-elements/types/components/frame/sub-nav/sub-nav.d.ts +10 -6
- package/dist-elements/types/components/frame/user-menu/user-menu.d.ts +11 -10
- package/dist-elements/types/components/index.d.ts +8 -9
- package/dist-elements/types/components/inputs/checkbox/checkbox.d.ts +4 -4
- package/dist-elements/types/components/inputs/checkbox-group/checkbox-group.d.ts +33 -0
- package/dist-elements/types/components/inputs/combobox/combobox.d.ts +12 -6
- package/dist-elements/types/components/inputs/date-input/date-input.d.ts +5 -5
- package/dist-elements/types/components/inputs/date-range/date-range.d.ts +11 -6
- package/dist-elements/types/components/inputs/field/field.d.ts +5 -3
- package/dist-elements/types/components/inputs/file-upload/file-upload.d.ts +6 -8
- package/dist-elements/types/components/inputs/multiselect/multiselect.d.ts +4 -6
- package/dist-elements/types/components/inputs/number-input/number-input.d.ts +8 -7
- package/dist-elements/types/components/inputs/radio-group/radio-group.d.ts +2 -4
- package/dist-elements/types/components/inputs/range/range.d.ts +5 -6
- package/dist-elements/types/components/inputs/segmented/segmented.d.ts +7 -4
- package/dist-elements/types/components/inputs/select/select.d.ts +6 -3
- package/dist-elements/types/components/inputs/slot-picker/slot-picker.d.ts +6 -5
- package/dist-elements/types/components/inputs/tag-input/tag-input.d.ts +7 -5
- package/dist-elements/types/components/inputs/text-editor/text-editor.d.ts +6 -6
- package/dist-elements/types/components/inputs/text-input/text-input.d.ts +11 -6
- package/dist-elements/types/components/inputs/textarea/textarea.d.ts +12 -11
- package/dist-elements/types/components/inputs/time-input/time-input.d.ts +7 -8
- package/dist-elements/types/components/inputs/toggle/toggle.d.ts +3 -1
- package/dist-elements/types/components/layout/expander/expander.d.ts +9 -10
- package/dist-elements/types/components/layout/split-pane/split-pane.d.ts +6 -6
- package/dist-elements/types/components/layout/tabs/tabs.d.ts +11 -9
- package/dist-elements/types/components/map/map/map.d.ts +10 -9
- package/dist-elements/types/components/overlays/dialog/dialog.d.ts +49 -0
- package/dist-elements/types/components/overlays/drawer/drawer.d.ts +6 -5
- package/dist-elements/types/components/overlays/modal/modal.d.ts +7 -12
- package/dist-elements/types/components/overlays/toggletip/toggletip.d.ts +3 -7
- package/dist-elements/types/components/shared/charts/index.d.ts +4 -1
- package/dist-elements/types/components/shared/charts/kinds.d.ts +86 -0
- package/dist-elements/types/components/shared/charts/line-chart/line-chart.d.ts +2 -2
- package/dist-elements/types/components/shared/charts/map-chart/leaflet.d.ts +5 -0
- package/dist-elements/types/components/shared/charts/shared/chart-states.d.ts +8 -19
- package/dist-elements/types/components/shared/charts/shared/controller.d.ts +7 -0
- package/dist-elements/types/components/shared/charts/shared/types.d.ts +29 -0
- package/dist-elements/types/components/shared/charts/stacked-area-chart/stacked-area-chart.d.ts +13 -0
- package/dist-elements/types/components/shared/dialog.d.ts +9 -0
- package/dist-elements/types/components/shared/overflow.d.ts +58 -0
- package/dist-elements/types/components/tables/activity-log/activity-log.d.ts +2 -3
- package/dist-elements/types/components/tables/card/card.d.ts +14 -20
- package/dist-elements/types/components/tables/card-list/card-list.d.ts +9 -11
- package/dist-elements/types/components/tables/data-table/data-table.d.ts +85 -16
- package/dist-elements/types/components/tables/data-table/filters.d.ts +13 -4
- package/dist-elements/types/components/tables/description-list/description-list.d.ts +12 -11
- package/dist-elements/types/components/tables/list/list.d.ts +9 -20
- package/dist-elements/types/components/tables/pagination/pagination.d.ts +12 -11
- package/dist-elements/types/components/tables/sortable-list/sortable-list.d.ts +5 -6
- package/dist-elements/types/components/tables/tree-view/tree-view.d.ts +4 -4
- package/dist-elements/types/core/media.d.ts +2 -2
- package/dist-elements/types/core/motion.d.ts +5 -0
- package/dist-elements/types/core/print.d.ts +15 -0
- package/dist-elements/types/core/shortcuts.d.ts +2 -2
- package/dist-elements/types/icons/icon/icon.d.ts +2 -3
- package/dist-elements/types/icons/register.d.ts +1 -1
- package/dist-elements/types/primitives/badge/badge.d.ts +9 -5
- package/dist-elements/types/primitives/button/button.d.ts +12 -9
- package/dist-elements/types/primitives/grid/grid.d.ts +3 -3
- package/dist-elements/types/primitives/grid-item/grid-item.d.ts +1 -1
- package/dist-elements/types/primitives/icon-button/icon-button.d.ts +7 -5
- package/dist-elements/types/primitives/index.d.ts +3 -1
- package/dist-elements/types/primitives/popover/popover.d.ts +5 -4
- package/dist-elements/types/primitives/progress-bar/progress-bar.d.ts +8 -6
- package/dist-elements/types/primitives/shared/announcement-block.d.ts +38 -0
- package/dist-elements/types/primitives/shared/empty-state-block.d.ts +26 -0
- package/dist-elements/types/primitives/shared/tone.d.ts +18 -0
- package/dist-elements/types/primitives/skeleton/skeleton.d.ts +1 -1
- package/dist-elements/types/primitives/spinner/spinner.d.ts +1 -2
- package/dist-elements/types/primitives/status-dot/status-dot.d.ts +4 -5
- package/dist-elements/types/primitives/tile/tile.d.ts +17 -5
- package/dist-elements/types/primitives/tooltip/tooltip.d.ts +6 -6
- package/dist-elements/types/types.d.ts +70 -10
- package/dist-icons/functioneel-kolommen.svg +1 -0
- package/dist-icons/functioneel-trechter.svg +1 -0
- package/package.json +1 -1
- package/dist-elements/chunks/confirm-dialog-D5EVGuil.js +0 -4
- package/dist-elements/chunks/download-y528pIHP.js +0 -230
- package/dist-elements/chunks/input-BtuNFSWk.js +0 -195
- package/dist-elements/tag/confirm-dialog.d.ts +0 -1
- package/dist-elements/tag/confirm-dialog.js +0 -118
- package/dist-elements/tag/session-expiry.d.ts +0 -1
- package/dist-elements/tag/session-expiry.js +0 -184
- package/dist-elements/tag/shortcuts.d.ts +0 -1
- package/dist-elements/tag/shortcuts.js +0 -104
- package/dist-elements/types/components/frame/session-expiry/session-expiry.d.ts +0 -55
- package/dist-elements/types/components/frame/shortcuts/shortcuts.d.ts +0 -41
- package/dist-elements/types/components/overlays/confirm-dialog/confirm-dialog.d.ts +0 -41
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { n as o } from "../chunks/focus-trap-
|
|
1
|
+
import { Jt as e, Q as t, Yt as n, Zt as r, en as i, nn as a } from "../chunks/base-CbmWxUig.js";
|
|
2
|
+
import { n as o } from "../chunks/focus-trap-BwOxE5BX.js";
|
|
3
3
|
import { t as s } from "../chunks/copied-7BXYVkXT.js";
|
|
4
4
|
import "./announcement.js";
|
|
5
5
|
import "./prose.js";
|
|
@@ -10,7 +10,7 @@ import "./chart.js";
|
|
|
10
10
|
import "./chat-strip.js";
|
|
11
11
|
import "./chat-suggestions.js";
|
|
12
12
|
//#region src/components/chat/chat-answer/chat-answer.css?inline
|
|
13
|
-
var l = ":host {\n display: block;\n min-width: 0;\n}\n:host([hidden]) { display: none; }\n\n/* ------------------------------------------------------------------------ */\n\n.lintje-chat-answer { display: flex; flex-direction: column; gap: var(--space-6); min-width: 0; }\n.lintje-chat-answer__body { display: flex; flex-direction: column; gap: var(--space-3); min-width: 0; }\n\n.lintje-chat-answer__lead { font-weight: 700; }\n\n/* The dashboard's 12-column grid, so two tiles with a `span` stand side by side. */\n.lintje-chat-answer__blocks {\n display: grid;\n grid-template-columns: repeat(12, minmax(0, 1fr));\n gap: var(--space-3) var(--grid-gutter);\n min-width: 0;\n}\n.lintje-chat-answer__blocks > :not([span]) { grid-column: 1 / -1; }\n@media (max-width: 767px) {\n .lintje-chat-answer__blocks { grid-template-columns: minmax(0, 1fr); }\n}\n\n.lintje-chat-answer__stopped,\n.lintje-chat-answer__note,\n.lintje-chat-answer__reasons-label { font: var(--text-small); color: var(--color-text-muted); }\n.lintje-chat-answer__status { align-self: flex-start; }\n.lintje-chat-answer__retry { margin-top: var(--space-2); }\n\n/* The gap keeps the hit areas apart; the margin aligns the first glyph with the text's edge. */\n.lintje-chat-answer__actions {\n display: flex; flex-wrap: wrap; align-items: center;\n gap: var(--space-2);\n margin-left: calc((16px - var(--h-icon-button)) / 2);\n color: var(--color-text-primary);\n}\n.lintje-chat-answer__note { margin-left: var(--space-2); }\n.lintje-chat-answer__reasons {\n display: flex; flex-wrap: wrap; align-items: center;\n gap: var(--space-2);\n animation: lintje-fade-in var(--dur-base) var(--ease-in-motion) both;\n}\n.lintje-chat-answer__reasons-label { margin-right: var(--space-1); }\n", u = [
|
|
13
|
+
var l = ":host {\n display: block;\n min-width: 0;\n}\n:host([hidden]) { display: none; }\n\n/* ------------------------------------------------------------------------ */\n\n.lintje-chat-answer { display: flex; flex-direction: column; gap: var(--space-6); min-width: 0; }\n.lintje-chat-answer__body { display: flex; flex-direction: column; gap: var(--space-3); min-width: 0; }\n\n.lintje-chat-answer__lead { font-weight: 700; }\n\n/* The dashboard's 12-column grid, so two tiles with a `span` stand side by side. */\n.lintje-chat-answer__blocks {\n display: grid;\n grid-template-columns: repeat(12, minmax(0, 1fr));\n gap: var(--space-3) var(--grid-gutter);\n min-width: 0;\n}\n.lintje-chat-answer__blocks > :not([span]) { grid-column: 1 / -1; }\n@media screen and (max-width: 767px) {\n .lintje-chat-answer__blocks { grid-template-columns: minmax(0, 1fr); }\n}\n\n.lintje-chat-answer__stopped,\n.lintje-chat-answer__note,\n.lintje-chat-answer__reasons-label { font: var(--text-small); color: var(--color-text-muted); }\n.lintje-chat-answer__status { align-self: flex-start; }\n.lintje-chat-answer__retry { margin-top: var(--space-2); }\n\n/* The gap keeps the hit areas apart; the margin aligns the first glyph with the text's edge. */\n.lintje-chat-answer__actions {\n display: flex; flex-wrap: wrap; align-items: center;\n gap: var(--space-2);\n margin-left: calc((16px - var(--h-icon-button)) / 2);\n color: var(--color-text-primary);\n}\n.lintje-chat-answer__note { margin-left: var(--space-2); }\n.lintje-chat-answer__reasons {\n display: flex; flex-wrap: wrap; align-items: center;\n gap: var(--space-2);\n animation: lintje-fade-in var(--dur-base) var(--ease-in-motion) both;\n}\n.lintje-chat-answer__reasons-label { margin-right: var(--space-1); }\n", u = [
|
|
14
14
|
"Klopt niet",
|
|
15
15
|
"Niet wat ik vroeg",
|
|
16
16
|
"Onduidelijk"
|
|
@@ -23,12 +23,12 @@ var l = ":host {\n display: block;\n min-width: 0;\n}\n:host([hidden]) { displ
|
|
|
23
23
|
label: "Kies wat je wilt doen",
|
|
24
24
|
hint: "Of stel een andere vraag in het veld."
|
|
25
25
|
}
|
|
26
|
-
}, f = class extends
|
|
26
|
+
}, f = class extends e {
|
|
27
27
|
constructor(...e) {
|
|
28
28
|
super(...e), this.state = "ready", this.current = !1, this.rating = null, this.reasonGiven = !1, this.note = "", this.spoken = [], this.#e = !1, this.#t = 0, this.#n = "";
|
|
29
29
|
}
|
|
30
30
|
static {
|
|
31
|
-
this.styles =
|
|
31
|
+
this.styles = r(l);
|
|
32
32
|
}
|
|
33
33
|
static {
|
|
34
34
|
this.properties = {
|
|
@@ -101,8 +101,8 @@ var l = ":host {\n display: block;\n min-width: 0;\n}\n:host([hidden]) { displ
|
|
|
101
101
|
});
|
|
102
102
|
}
|
|
103
103
|
giveReason(e) {
|
|
104
|
-
let
|
|
105
|
-
|
|
104
|
+
let n = this.renderRoot.querySelector(".lintje-chat-answer__reasons"), r = this.renderRoot.querySelector("[label=\"Slecht antwoord\"]");
|
|
105
|
+
n && r && t(n) && o(r).focus(), this.reasonGiven = !0, this.say("Bedankt, doorgegeven."), this.emit("lintje-answer-rate", {
|
|
106
106
|
...this.detail,
|
|
107
107
|
rating: "down",
|
|
108
108
|
reason: e
|
|
@@ -112,50 +112,50 @@ var l = ":host {\n display: block;\n min-width: 0;\n}\n:host([hidden]) { displ
|
|
|
112
112
|
this.emit("lintje-answer-retry", this.detail);
|
|
113
113
|
}
|
|
114
114
|
render() {
|
|
115
|
-
let e = this.state,
|
|
116
|
-
return
|
|
115
|
+
let e = this.state, t = e === "ready", n = d[e];
|
|
116
|
+
return a`<article class="lintje-chat-answer">
|
|
117
117
|
<div class="lintje-chat-answer__body">
|
|
118
118
|
${e === "error" ? this.renderError() : this.renderText()}
|
|
119
119
|
<div class="visually-hidden" role="status" aria-atomic="false">
|
|
120
|
-
${this.spoken.map((e) =>
|
|
120
|
+
${this.spoken.map((e) => a`<p>${e}</p>`)}
|
|
121
121
|
</div>
|
|
122
|
-
${
|
|
123
|
-
turn-id=${this.turnId ??
|
|
122
|
+
${t && this.strip ? a`<lintje-chat-strip
|
|
123
|
+
turn-id=${this.turnId ?? i}
|
|
124
124
|
.items=${this.strip.items}
|
|
125
125
|
.details=${this.strip.details}
|
|
126
|
-
details-label=${this.strip.detailsLabel ??
|
|
126
|
+
details-label=${this.strip.detailsLabel ?? i}
|
|
127
127
|
?disabled=${!this.current}
|
|
128
|
-
></lintje-chat-strip>` :
|
|
128
|
+
></lintje-chat-strip>` : i}
|
|
129
129
|
${this.renderBlocks()}
|
|
130
|
-
${e === "streaming" ?
|
|
130
|
+
${e === "streaming" ? a`<lintje-spinner
|
|
131
131
|
class="lintje-chat-answer__status"
|
|
132
132
|
label=${this.status ?? "Antwoord schrijven"}
|
|
133
|
-
></lintje-spinner>` :
|
|
134
|
-
${e === "stopped" ?
|
|
135
|
-
${
|
|
133
|
+
></lintje-spinner>` : i}
|
|
134
|
+
${e === "stopped" ? a`<p class="lintje-chat-answer__stopped">Antwoord gestopt.</p>` : i}
|
|
135
|
+
${t ? this.renderActions() : i}
|
|
136
136
|
</div>
|
|
137
|
-
${
|
|
137
|
+
${n && this.current ? a`<lintje-chat-suggestions
|
|
138
138
|
kind="choice"
|
|
139
|
-
turn-id=${this.turnId ??
|
|
140
|
-
label=${
|
|
141
|
-
hint=${
|
|
139
|
+
turn-id=${this.turnId ?? i}
|
|
140
|
+
label=${n.label}
|
|
141
|
+
hint=${n.hint}
|
|
142
142
|
.items=${this.choices}
|
|
143
|
-
></lintje-chat-suggestions>` :
|
|
144
|
-
${
|
|
145
|
-
turn-id=${this.turnId ??
|
|
143
|
+
></lintje-chat-suggestions>` : i}
|
|
144
|
+
${t && this.current ? a`<lintje-chat-suggestions
|
|
145
|
+
turn-id=${this.turnId ?? i}
|
|
146
146
|
label="Jij, als vervolgvraag"
|
|
147
147
|
.items=${this.followUps}
|
|
148
|
-
></lintje-chat-suggestions>` :
|
|
148
|
+
></lintje-chat-suggestions>` : i}
|
|
149
149
|
</article>`;
|
|
150
150
|
}
|
|
151
151
|
renderText() {
|
|
152
|
-
return
|
|
152
|
+
return a`<lintje-prose
|
|
153
153
|
class="lintje-chat-answer__text"
|
|
154
|
-
aria-live=${this.#e ? "off" :
|
|
155
|
-
aria-busy=${this.state === "streaming" ? "true" :
|
|
154
|
+
aria-live=${this.#e ? "off" : i}
|
|
155
|
+
aria-busy=${this.state === "streaming" ? "true" : i}
|
|
156
156
|
>
|
|
157
157
|
<p>
|
|
158
|
-
<span class="visually-hidden">Assistent: </span>${this.lead ?
|
|
158
|
+
<span class="visually-hidden">Assistent: </span>${this.lead ? a`<strong class="lintje-chat-answer__lead">${this.lead}</strong> ` : i}${this.text ?? i}
|
|
159
159
|
</p>
|
|
160
160
|
</lintje-prose>`;
|
|
161
161
|
}
|
|
@@ -166,43 +166,43 @@ var l = ":host {\n display: block;\n min-width: 0;\n}\n:host([hidden]) { displ
|
|
|
166
166
|
title: this.error?.title ?? "Het antwoord is niet geladen",
|
|
167
167
|
text: this.error?.text ?? "Je vraag staat er nog: probeer het opnieuw, of stel een kortere vraag."
|
|
168
168
|
};
|
|
169
|
-
return
|
|
169
|
+
return a`<span class="visually-hidden">Assistent: </span>
|
|
170
170
|
<lintje-announcement .data=${e}>
|
|
171
|
-
${this.current ?
|
|
171
|
+
${this.current ? a`<lintje-button
|
|
172
172
|
class="lintje-chat-answer__retry"
|
|
173
173
|
slot="action"
|
|
174
174
|
variant="secondary"
|
|
175
175
|
icon="functioneel-refresh"
|
|
176
176
|
@click=${() => this.retry()}
|
|
177
177
|
>Opnieuw proberen</lintje-button
|
|
178
|
-
>` :
|
|
178
|
+
>` : i}
|
|
179
179
|
</lintje-announcement>`;
|
|
180
180
|
}
|
|
181
181
|
renderBlocks() {
|
|
182
182
|
let e = this.blocks ?? [];
|
|
183
|
-
return e.length ?
|
|
183
|
+
return e.length ? a`<div
|
|
184
184
|
class="lintje-chat-answer__blocks"
|
|
185
|
-
aria-busy=${this.state === "streaming" ? "true" :
|
|
185
|
+
aria-busy=${this.state === "streaming" ? "true" : i}
|
|
186
186
|
>
|
|
187
187
|
${e.map((e) => {
|
|
188
188
|
switch (e.kind) {
|
|
189
|
-
case "prose": return
|
|
190
|
-
case "kpi-row": return
|
|
191
|
-
case "chart": return
|
|
192
|
-
span=${e.data.span ??
|
|
189
|
+
case "prose": return a`<lintje-prose .html=${e.html} .text=${e.text}></lintje-prose>`;
|
|
190
|
+
case "kpi-row": return a`<lintje-kpi-row .data=${e.data}></lintje-kpi-row>`;
|
|
191
|
+
case "chart": return a`<lintje-chart
|
|
192
|
+
span=${e.data.span ?? i}
|
|
193
193
|
.data=${e.data}
|
|
194
194
|
></lintje-chart>`;
|
|
195
|
-
case "data-table": return
|
|
196
|
-
span=${e.data.span ??
|
|
195
|
+
case "data-table": return a`<lintje-data-table
|
|
196
|
+
span=${e.data.span ?? i}
|
|
197
197
|
.data=${e.data}
|
|
198
198
|
></lintje-data-table>`;
|
|
199
199
|
}
|
|
200
200
|
})}
|
|
201
|
-
</div>` :
|
|
201
|
+
</div>` : i;
|
|
202
202
|
}
|
|
203
203
|
renderActions() {
|
|
204
204
|
let e = this.rating === "down" && !this.reasonGiven;
|
|
205
|
-
return
|
|
205
|
+
return a`<div class="lintje-chat-answer__actions">
|
|
206
206
|
<lintje-icon-button
|
|
207
207
|
icon="functioneel-kopieren"
|
|
208
208
|
label="Antwoord kopiëren"
|
|
@@ -225,29 +225,29 @@ var l = ":host {\n display: block;\n min-width: 0;\n}\n:host([hidden]) { displ
|
|
|
225
225
|
?active=${this.rating === "down"}
|
|
226
226
|
@click=${() => this.rate("down")}
|
|
227
227
|
></lintje-icon-button>
|
|
228
|
-
${this.current ?
|
|
228
|
+
${this.current ? a`<lintje-icon-button
|
|
229
229
|
icon="functioneel-refresh"
|
|
230
230
|
label="Opnieuw beantwoorden"
|
|
231
231
|
variant="flat"
|
|
232
232
|
@click=${() => this.retry()}
|
|
233
|
-
></lintje-icon-button>` :
|
|
233
|
+
></lintje-icon-button>` : i}
|
|
234
234
|
<span class="lintje-chat-answer__note" role="status">${this.note}</span>
|
|
235
235
|
</div>
|
|
236
|
-
${e ?
|
|
236
|
+
${e ? a`<div
|
|
237
237
|
class="lintje-chat-answer__reasons"
|
|
238
238
|
role="group"
|
|
239
239
|
aria-labelledby="reasons"
|
|
240
240
|
>
|
|
241
241
|
<span id="reasons" class="lintje-chat-answer__reasons-label">Wat was er mis?</span>
|
|
242
|
-
${u.map((e) =>
|
|
242
|
+
${u.map((e) => a`<lintje-button
|
|
243
243
|
variant="tertiary"
|
|
244
244
|
size="compact"
|
|
245
245
|
@click=${() => this.giveReason(e)}
|
|
246
246
|
>${e}</lintje-button
|
|
247
247
|
>`)}
|
|
248
|
-
</div>` :
|
|
248
|
+
</div>` : i}`;
|
|
249
249
|
}
|
|
250
250
|
};
|
|
251
|
-
|
|
251
|
+
n("lintje-chat-answer", f);
|
|
252
252
|
//#endregion
|
|
253
253
|
export { f as LintjeChatAnswer };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Jt as e, Kt as t, Q as n, Yt as r, Zt as i, bt as a, en as o, nn as s, nt as c, st as l } from "../chunks/base-CbmWxUig.js";
|
|
2
2
|
import "./radio-group.js";
|
|
3
|
-
import { t as
|
|
3
|
+
import { t as u } from "../chunks/key-CuuOw1KE.js";
|
|
4
4
|
import "./multiselect.js";
|
|
5
5
|
//#region src/components/chat/shared/chat-terms.ts
|
|
6
|
-
function
|
|
6
|
+
function d(e, t = []) {
|
|
7
7
|
let n = [], r = 0;
|
|
8
8
|
for (let i of [...t].sort((e, t) => e.start - t.start)) i.start < r || i.end <= i.start || i.end > e.length || (i.start > r && n.push({ text: e.slice(r, i.start) }), n.push({
|
|
9
9
|
text: e.slice(i.start, i.end),
|
|
@@ -11,8 +11,8 @@ function u(e, t = []) {
|
|
|
11
11
|
}), r = i.end);
|
|
12
12
|
return r < e.length && n.push({ text: e.slice(r) }), n;
|
|
13
13
|
}
|
|
14
|
-
var
|
|
15
|
-
function
|
|
14
|
+
var f = /[\p{L}\p{N}]/u;
|
|
15
|
+
function p(e, t = [], n) {
|
|
16
16
|
let r = e.toLowerCase(), i = t.flatMap((e) => [e.label, ...e.aliases ?? []].map((t) => ({
|
|
17
17
|
word: t,
|
|
18
18
|
term: e
|
|
@@ -21,7 +21,7 @@ function f(e, t = [], n) {
|
|
|
21
21
|
let i = t.toLowerCase();
|
|
22
22
|
for (let t = r.indexOf(i); t !== -1; t = r.indexOf(i, t + 1)) {
|
|
23
23
|
let r = t + i.length;
|
|
24
|
-
if (t > 0 &&
|
|
24
|
+
if (t > 0 && f.test(e[t - 1]) || r < e.length && f.test(e[r]) || a.some((e) => t < e.end && r > e.start)) continue;
|
|
25
25
|
let s = o.source !== void 0 && n !== void 0 && !n.includes(o.source);
|
|
26
26
|
a.push({
|
|
27
27
|
start: t,
|
|
@@ -33,10 +33,10 @@ function f(e, t = [], n) {
|
|
|
33
33
|
}
|
|
34
34
|
return a.sort((e, t) => e.start - t.start);
|
|
35
35
|
}
|
|
36
|
-
function
|
|
36
|
+
function m(e, t = e.length) {
|
|
37
37
|
return /\S*$/.exec(e.slice(0, t))?.[0] ?? "";
|
|
38
38
|
}
|
|
39
|
-
function
|
|
39
|
+
function h(e, t = []) {
|
|
40
40
|
let n = e.toLowerCase();
|
|
41
41
|
return n ? t.filter((e) => {
|
|
42
42
|
let t = e.label.toLowerCase();
|
|
@@ -45,7 +45,7 @@ function m(e, t = []) {
|
|
|
45
45
|
}
|
|
46
46
|
//#endregion
|
|
47
47
|
//#region src/components/chat/chat-composer/chat-composer.css?inline
|
|
48
|
-
var
|
|
48
|
+
var g = ":host {\n display: block;\n min-width: 0;\n}\n:host([hidden]) { display: none; }\n\n/* ------------------------------------------------------------------------ */\n\n.lintje-chat-composer { position: relative; }\n\n/* The frame is the field, so it takes the field's resting border (3:1). */\n.lintje-chat-composer__frame {\n display: flex; flex-direction: column;\n background: var(--color-bg-surface);\n border: 1px solid var(--color-border-field);\n}\n\n/* Grows with the text and scrolls at four lines, the captions with it. A line this tall leaves\n a term's caption room above the word. */\n.lintje-chat-composer__field {\n position: relative;\n max-height: calc(var(--h-control) * 4 + var(--space-5));\n overflow-y: auto;\n}\n.lintje-chat-composer__input {\n display: block;\n min-height: calc(var(--h-control) + var(--space-5));\n padding: var(--space-3) var(--space-4) var(--space-2);\n font: var(--text-body);\n line-height: var(--h-control);\n color: var(--color-text-primary);\n white-space: pre-wrap;\n overflow-wrap: anywhere;\n}\n.lintje-chat-composer__input.is-empty::before {\n /* The field's `aria-placeholder` says it; the empty alternative keeps it from being read twice. */\n content: attr(data-placeholder);\n content: attr(data-placeholder) / '';\n position: absolute;\n color: var(--color-text-placeholder);\n opacity: 1;\n pointer-events: none;\n}\n/* The frame takes the ring; without `:has()` the field keeps its own. */\n@supports selector(:has(*)) {\n .lintje-chat-composer__input:focus-visible { outline: none; }\n .lintje-chat-composer__frame:has(.lintje-chat-composer__input:focus-visible) {\n outline: var(--focus-width) solid var(--color-focus);\n outline-offset: var(--focus-offset);\n }\n}\n\n/* Dashed gray marks an uncertain term: ambiguous, or of a source that is switched off. */\n.lintje-chat-composer__input::highlight(lintje-term) {\n background-color: var(--color-term-bg);\n text-decoration: underline solid var(--color-term-line);\n text-decoration-thickness: 2px;\n text-underline-offset: var(--space-1);\n}\n.lintje-chat-composer__input::highlight(lintje-term-uncertain) {\n text-decoration: underline dashed var(--color-border-suggestion);\n text-decoration-thickness: 2px;\n text-underline-offset: var(--space-1);\n}\n\n.lintje-chat-composer__captions { position: absolute; inset: 0; pointer-events: none; }\n.lintje-chat-composer__caption {\n position: absolute;\n transform: translateY(-100%);\n font-size: var(--label-size); font-weight: var(--label-weight);\n line-height: 1;\n letter-spacing: var(--label-tracking); text-transform: uppercase;\n white-space: nowrap;\n overflow: hidden; text-overflow: ellipsis;\n color: var(--color-accent-text);\n}\n.lintje-chat-composer__caption.is-uncertain { color: var(--color-text-muted); }\n\n.lintje-chat-composer__bar {\n display: flex; flex-wrap: wrap; align-items: center; justify-content: flex-end;\n gap: var(--space-2);\n padding: var(--space-2);\n}\n.lintje-chat-composer__sources { flex: 0 1 auto; width: auto; min-width: 0; }\n.lintje-chat-composer__hint {\n flex: 1 1 auto; min-width: 0;\n font: var(--text-meta);\n color: var(--color-text-muted);\n text-align: right;\n}\n\n/* A joined group is drawn at the target height itself, so both halves are as tall as \"Versturen\". */\n.lintje-chat-composer__send { position: relative; flex: none; display: flex; gap: 1px; }\n.lintje-chat-composer__send-half { --h-icon-button: var(--h-button); }\n\n.lintje-chat-composer__scrim { position: fixed; inset: 0; z-index: 45; }\n.lintje-chat-composer__options {\n position: absolute; right: 0; bottom: calc(100% + var(--space-2)); z-index: 46;\n width: 320px; max-width: calc(100vw - 2 * var(--space-4));\n display: flex; flex-direction: column; gap: var(--space-4);\n padding: var(--space-4);\n background: var(--color-bg-surface);\n border: 1px solid var(--color-border-popover);\n box-shadow: var(--shadow-popover);\n color: var(--color-text-primary);\n animation: lintje-rise var(--dur-popover) var(--ease-in-motion);\n}\n.lintje-chat-composer__shortcuts { display: flex; flex-direction: column; gap: var(--space-2); }\n.lintje-chat-composer__shortcuts-label { font: var(--text-small); font-weight: 700; }\n.lintje-chat-composer__keys {\n display: grid; grid-template-columns: minmax(0, 1fr) auto;\n align-items: center;\n gap: var(--space-2) var(--space-3);\n margin: 0;\n font: var(--text-ui);\n}\n.lintje-chat-composer__key { margin: 0; }\n\n.lintje-chat-composer__completions {\n position: absolute; left: 0; bottom: calc(100% + var(--space-2)); z-index: 46;\n width: 360px; max-width: 100%;\n background: var(--color-bg-surface);\n border: 1px solid var(--color-border-popover);\n box-shadow: var(--shadow-popover);\n animation: lintje-rise var(--dur-popover) var(--ease-in-motion);\n}\n.lintje-chat-composer__completion {\n display: flex; align-items: center; justify-content: space-between;\n gap: var(--space-3);\n min-height: var(--h-option);\n padding: 0 var(--space-3);\n border-bottom: 1px solid var(--color-border-default);\n font: var(--text-ui);\n color: var(--color-text-primary);\n cursor: pointer;\n}\n.lintje-chat-composer__completion:last-child { border-bottom: 0; }\n.lintje-chat-composer__completion:hover,\n.lintje-chat-composer__completion.is-active { background: var(--color-bg-subtle); }\n.lintje-chat-composer__completion-kind { font: var(--text-meta); color: var(--color-text-muted); }\n\n/* A phone: the field stays at 1rem, since a smaller size makes iOS zoom in on focus. */\n@media screen and (max-width: 767px) {\n .lintje-chat-composer__input { padding: var(--space-3) var(--space-3) var(--space-1); }\n .lintje-chat-composer__hint:not(:empty) { flex-basis: 100%; order: -1; text-align: left; }\n}\n\n/* Forced colours drop the chosen completion's fill, so it takes an outline. */\n@media (forced-colors: active) {\n .lintje-chat-composer__completion.is-active { outline: 1px solid Highlight; outline-offset: -1px; }\n}\n", _ = [
|
|
49
49
|
{
|
|
50
50
|
value: "auto",
|
|
51
51
|
label: "Automatisch (de assistent kiest)"
|
|
@@ -62,29 +62,29 @@ var h = ":host {\n display: block;\n min-width: 0;\n}\n:host([hidden]) { displ
|
|
|
62
62
|
value: "table",
|
|
63
63
|
label: "Als tabel"
|
|
64
64
|
}
|
|
65
|
-
],
|
|
65
|
+
], v = [{
|
|
66
66
|
value: "enter",
|
|
67
67
|
label: "Enter (Shift+Enter: nieuwe regel)"
|
|
68
68
|
}, {
|
|
69
69
|
value: "ctrl-enter",
|
|
70
70
|
label: "Ctrl+Enter (Enter: nieuwe regel)"
|
|
71
|
-
}],
|
|
71
|
+
}], y = "lintje-chat-send-key", b = {
|
|
72
72
|
enter: "Enter verstuurt, Shift+Enter begint een nieuwe regel.",
|
|
73
73
|
"ctrl-enter": "Ctrl+Enter verstuurt, Enter begint een nieuwe regel."
|
|
74
74
|
};
|
|
75
|
-
function
|
|
75
|
+
function x() {
|
|
76
76
|
try {
|
|
77
|
-
return localStorage.getItem(
|
|
77
|
+
return localStorage.getItem(y) === "ctrl-enter" ? "ctrl-enter" : "enter";
|
|
78
78
|
} catch {
|
|
79
79
|
return "enter";
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
|
-
var
|
|
83
|
-
function
|
|
82
|
+
var S = "lintje-term", C = "lintje-term-uncertain", w = () => typeof CSS < "u" && "highlights" in CSS && typeof Highlight < "u";
|
|
83
|
+
function T(e) {
|
|
84
84
|
let t = CSS.highlights.get(e);
|
|
85
85
|
return t || (t = new Highlight(), CSS.highlights.set(e, t)), t;
|
|
86
86
|
}
|
|
87
|
-
function
|
|
87
|
+
function E(e) {
|
|
88
88
|
let t = [], n = "", r = document.createTreeWalker(e, NodeFilter.SHOW_TEXT | NodeFilter.SHOW_ELEMENT);
|
|
89
89
|
for (let e = r.nextNode(); e; e = r.nextNode()) e.nodeType === Node.TEXT_NODE ? (t.push({
|
|
90
90
|
node: e,
|
|
@@ -95,7 +95,7 @@ function T(e) {
|
|
|
95
95
|
nodes: t
|
|
96
96
|
};
|
|
97
97
|
}
|
|
98
|
-
function
|
|
98
|
+
function D(e, t) {
|
|
99
99
|
for (let n = e.nodes.length - 1; n >= 0; n--) {
|
|
100
100
|
let { node: r, start: i } = e.nodes[n];
|
|
101
101
|
if (t >= i && t <= i + r.data.length) return {
|
|
@@ -105,12 +105,16 @@ function E(e, t) {
|
|
|
105
105
|
}
|
|
106
106
|
return null;
|
|
107
107
|
}
|
|
108
|
-
var
|
|
108
|
+
var O = class extends e {
|
|
109
109
|
constructor(...e) {
|
|
110
|
-
super(...e), this.variant = "ask", this.text = "", this.placeholder = "Stel een vraag over de gegevens", this.busy = !1, this.sendKey =
|
|
110
|
+
super(...e), this.variant = "ask", this.text = "", this.placeholder = "Stel een vraag over de gegevens", this.busy = !1, this.sendKey = x(), this.form = "auto", this.optionsOpen = !1, this.plain = !1, this.draft = "", this.caret = 0, this.completionIndex = 0, this.completionOff = !1, this.captions = [], this.#e = new t(this), this.#t = !0, this.#n = [], this.#r = null, this.#a = !1;
|
|
111
111
|
}
|
|
112
112
|
static {
|
|
113
|
-
this.styles = [
|
|
113
|
+
this.styles = [
|
|
114
|
+
i(u),
|
|
115
|
+
i(g),
|
|
116
|
+
i(c)
|
|
117
|
+
];
|
|
114
118
|
}
|
|
115
119
|
static {
|
|
116
120
|
this.properties = {
|
|
@@ -165,10 +169,10 @@ var D = class extends c {
|
|
|
165
169
|
return this.variant === "ask" && !!this.sources?.length && !this.selectedIds.length;
|
|
166
170
|
}
|
|
167
171
|
termsIn(e) {
|
|
168
|
-
return this.draftTerms && this.draftTerms.text === e ? this.draftTerms.ranges :
|
|
172
|
+
return this.draftTerms && this.draftTerms.text === e ? this.draftTerms.ranges : p(e, this.vocabulary, this.sources ? this.selectedIds : void 0);
|
|
169
173
|
}
|
|
170
174
|
get suggestions() {
|
|
171
|
-
return this.completionOff || this.termsIn(this.draft).some((e) => e.end === this.caret) ? [] : m(
|
|
175
|
+
return this.completionOff || this.termsIn(this.draft).some((e) => e.end === this.caret) ? [] : h(m(this.draft, this.caret), this.vocabulary);
|
|
172
176
|
}
|
|
173
177
|
disconnectedCallback() {
|
|
174
178
|
this.clearHighlights(), this.#r?.disconnect(), this.#r = null, clearTimeout(this.#i), super.disconnectedCallback();
|
|
@@ -180,7 +184,7 @@ var D = class extends c {
|
|
|
180
184
|
willUpdate(e) {
|
|
181
185
|
if (super.willUpdate(e), !e.has("busy") || e.get("busy") === void 0) return;
|
|
182
186
|
let t = this.renderRoot.querySelector(this.busy ? ".lintje-chat-composer__send" : ".lintje-chat-composer__stop");
|
|
183
|
-
t &&
|
|
187
|
+
t && n(t) && (this.#a = !0);
|
|
184
188
|
}
|
|
185
189
|
updated(e) {
|
|
186
190
|
e.has("text") && this.text !== this.draft && this.write(this.text, void 0, !1), this.paint(), this.#a && (this.#a = !1, this.focus());
|
|
@@ -198,7 +202,7 @@ var D = class extends c {
|
|
|
198
202
|
read() {
|
|
199
203
|
let e = this.input;
|
|
200
204
|
if (!e) return;
|
|
201
|
-
let t =
|
|
205
|
+
let t = E(e);
|
|
202
206
|
t.text === "\n" && (e.textContent = "", t.text = "");
|
|
203
207
|
let n = this.selection(), r = t.nodes.find(({ node: e }) => e === n?.focusNode);
|
|
204
208
|
this.draft = t.text, this.caret = r ? r.start + (n?.focusOffset ?? 0) : t.text.length;
|
|
@@ -206,9 +210,9 @@ var D = class extends c {
|
|
|
206
210
|
write(e, t = e.length, n = !0) {
|
|
207
211
|
let r = this.input;
|
|
208
212
|
if (r) {
|
|
209
|
-
if (
|
|
213
|
+
if (E(r).text !== e && (r.textContent = e), n) {
|
|
210
214
|
r.focus();
|
|
211
|
-
let e = E(
|
|
215
|
+
let e = D(E(r), t);
|
|
212
216
|
e && this.selection()?.collapse(e.node, e.offset);
|
|
213
217
|
}
|
|
214
218
|
this.draft = e, this.caret = t;
|
|
@@ -234,7 +238,7 @@ var D = class extends c {
|
|
|
234
238
|
} else t.length && (e.key === "Enter" || e.key === "Tab") && !e.isComposing ? (e.preventDefault(), this.complete(t[Math.min(this.completionIndex, t.length - 1)])) : t.length && e.key === "Escape" ? (e.preventDefault(), this.completionOff = !0) : this.sends(e) ? (e.preventDefault(), this.send()) : e.key === "Enter" && !this.#t && !e.isComposing ? (e.preventDefault(), document.execCommand("insertLineBreak")) : e.key === "Escape" ? this.variant === "edit" ? this.emitLocal("lintje-cancel") : this.busy && this.emit("lintje-answer-stop", {}) : e.key === "ArrowUp" && this.draft === "" && this.recall && (e.preventDefault(), this.write(this.recall));
|
|
235
239
|
}
|
|
236
240
|
complete(e) {
|
|
237
|
-
let t =
|
|
241
|
+
let t = m(this.draft, this.caret), n = this.caret - t.length, r = `${this.draft.slice(0, n)}${e.label} ${this.draft.slice(this.caret)}`;
|
|
238
242
|
this.write(r, n + e.label.length + 1), this.completionOff = !0;
|
|
239
243
|
}
|
|
240
244
|
send() {
|
|
@@ -260,23 +264,23 @@ var D = class extends c {
|
|
|
260
264
|
})).filter((t) => t.start >= 0 && t.end <= e.length);
|
|
261
265
|
}
|
|
262
266
|
clearHighlights() {
|
|
263
|
-
if (
|
|
264
|
-
for (let { name: e, range: t } of this.#n)
|
|
267
|
+
if (w()) {
|
|
268
|
+
for (let { name: e, range: t } of this.#n) T(e).delete(t);
|
|
265
269
|
this.#n = [];
|
|
266
270
|
}
|
|
267
271
|
}
|
|
268
272
|
paint() {
|
|
269
273
|
let e = this.input, t = this.renderRoot.querySelector(".lintje-chat-composer__field");
|
|
270
|
-
if (!e || !t || !
|
|
274
|
+
if (!e || !t || !w()) return;
|
|
271
275
|
this.clearHighlights();
|
|
272
|
-
let n =
|
|
276
|
+
let n = E(e), r = t.getBoundingClientRect(), i = [];
|
|
273
277
|
for (let e of this.termsIn(n.text)) {
|
|
274
|
-
let a =
|
|
278
|
+
let a = D(n, e.start), o = D(n, e.end);
|
|
275
279
|
if (!a || !o) continue;
|
|
276
280
|
let s = new Range();
|
|
277
281
|
s.setStart(a.node, a.offset), s.setEnd(o.node, o.offset);
|
|
278
|
-
let c = e.certain === !1 ?
|
|
279
|
-
|
|
282
|
+
let c = e.certain === !1 ? C : S;
|
|
283
|
+
T(c).add(s), this.#n.push({
|
|
280
284
|
name: c,
|
|
281
285
|
range: s
|
|
282
286
|
});
|
|
@@ -296,7 +300,7 @@ var D = class extends c {
|
|
|
296
300
|
setSendKey(e) {
|
|
297
301
|
this.sendKey = e;
|
|
298
302
|
try {
|
|
299
|
-
localStorage.setItem(
|
|
303
|
+
localStorage.setItem(y, e);
|
|
300
304
|
} catch {}
|
|
301
305
|
}
|
|
302
306
|
async toggleOptions(e) {
|
|
@@ -305,25 +309,25 @@ var D = class extends c {
|
|
|
305
309
|
(t?.shadowRoot?.querySelector("button") ?? t)?.focus();
|
|
306
310
|
}
|
|
307
311
|
render() {
|
|
308
|
-
let e = this.suggestions,
|
|
312
|
+
let e = this.suggestions, t = Math.min(this.completionIndex, e.length - 1), n = this.termsIn(this.draft).map((e) => {
|
|
309
313
|
let t = this.draft.slice(e.start, e.end), n = [e.kind, e.certain === !1 ? "niet zeker" : ""].filter(Boolean);
|
|
310
314
|
return n.length ? `${t} (${n.join(", ")})` : t;
|
|
311
315
|
}).join(", ");
|
|
312
|
-
return
|
|
313
|
-
${e.length ?
|
|
316
|
+
return s`<div class="lintje-chat-composer lintje-chat-composer--${this.variant}">
|
|
317
|
+
${e.length ? s`<div
|
|
314
318
|
id="completions"
|
|
315
319
|
class="lintje-chat-composer__completions"
|
|
316
320
|
role="listbox"
|
|
317
321
|
aria-label="Aanvullen"
|
|
318
322
|
>
|
|
319
|
-
${e.map((e,
|
|
320
|
-
id="completion-${
|
|
321
|
-
class=${
|
|
323
|
+
${e.map((e, n) => s`<div
|
|
324
|
+
id="completion-${n}"
|
|
325
|
+
class=${l({
|
|
322
326
|
"lintje-chat-composer__completion": !0,
|
|
323
|
-
"is-active":
|
|
327
|
+
"is-active": n === t
|
|
324
328
|
})}
|
|
325
329
|
role="option"
|
|
326
|
-
aria-selected=${String(
|
|
330
|
+
aria-selected=${String(n === t)}
|
|
327
331
|
@mousedown=${(t) => {
|
|
328
332
|
t.preventDefault(), this.complete(e);
|
|
329
333
|
}}
|
|
@@ -331,11 +335,11 @@ var D = class extends c {
|
|
|
331
335
|
<span>${e.label}</span>
|
|
332
336
|
<span class="lintje-chat-composer__completion-kind">${e.kind}</span>
|
|
333
337
|
</div>`)}
|
|
334
|
-
</div>` :
|
|
338
|
+
</div>` : o}
|
|
335
339
|
<div class="lintje-chat-composer__frame">
|
|
336
340
|
<div class="lintje-chat-composer__field">
|
|
337
341
|
<div
|
|
338
|
-
class=${
|
|
342
|
+
class=${l({
|
|
339
343
|
"lintje-chat-composer__input": !0,
|
|
340
344
|
"is-empty": this.draft === ""
|
|
341
345
|
})}
|
|
@@ -345,9 +349,9 @@ var D = class extends c {
|
|
|
345
349
|
aria-label=${this.variant === "edit" ? "Je vraag bewerken" : "Je vraag"}
|
|
346
350
|
aria-describedby="hint send-key"
|
|
347
351
|
aria-placeholder=${this.placeholder}
|
|
348
|
-
aria-autocomplete=${this.vocabulary?.length ? "list" :
|
|
349
|
-
aria-controls=${e.length ? "completions" :
|
|
350
|
-
aria-activedescendant=${e.length ? `completion-${
|
|
352
|
+
aria-autocomplete=${this.vocabulary?.length ? "list" : o}
|
|
353
|
+
aria-controls=${e.length ? "completions" : o}
|
|
354
|
+
aria-activedescendant=${e.length ? `completion-${t}` : o}
|
|
351
355
|
data-placeholder=${this.placeholder}
|
|
352
356
|
@input=${this.onInput}
|
|
353
357
|
@keydown=${this.onKeydown}
|
|
@@ -356,12 +360,12 @@ var D = class extends c {
|
|
|
356
360
|
@paste=${this.onPaste}
|
|
357
361
|
></div>
|
|
358
362
|
<div class="lintje-chat-composer__captions" aria-hidden="true">
|
|
359
|
-
${this.captions.map((e) =>
|
|
360
|
-
class=${
|
|
363
|
+
${this.captions.map((e) => s`<span
|
|
364
|
+
class=${l({
|
|
361
365
|
"lintje-chat-composer__caption": !0,
|
|
362
366
|
"is-uncertain": !e.certain
|
|
363
367
|
})}
|
|
364
|
-
${
|
|
368
|
+
${a({
|
|
365
369
|
left: `${e.left}px`,
|
|
366
370
|
top: `${e.top}px`,
|
|
367
371
|
maxWidth: e.room === void 0 ? null : `${e.room}px`
|
|
@@ -371,9 +375,9 @@ var D = class extends c {
|
|
|
371
375
|
</div>
|
|
372
376
|
</div>
|
|
373
377
|
<span id="send-key" class="visually-hidden"
|
|
374
|
-
>${
|
|
378
|
+
>${b[this.plain ? "enter" : this.sendKey]}</span
|
|
375
379
|
>
|
|
376
|
-
<span class="visually-hidden" aria-live="polite">${
|
|
380
|
+
<span class="visually-hidden" aria-live="polite">${n ? `Herkend: ${n}` : ""}</span>
|
|
377
381
|
<div class="lintje-chat-composer__bar">
|
|
378
382
|
${this.variant === "edit" ? this.renderEdit() : this.renderAsk()}
|
|
379
383
|
</div>
|
|
@@ -381,8 +385,8 @@ var D = class extends c {
|
|
|
381
385
|
</div>`;
|
|
382
386
|
}
|
|
383
387
|
renderAsk() {
|
|
384
|
-
let e = this.sources ?? [],
|
|
385
|
-
return
|
|
388
|
+
let e = this.sources ?? [], t = this.draft.trim() === "";
|
|
389
|
+
return s`${e.length ? s`<lintje-multiselect
|
|
386
390
|
class="lintje-chat-composer__sources"
|
|
387
391
|
label="Bronnen voor je volgende vraag"
|
|
388
392
|
hide-label
|
|
@@ -396,44 +400,44 @@ var D = class extends c {
|
|
|
396
400
|
@lintje-change=${(e) => {
|
|
397
401
|
e.stopPropagation(), this.emit("lintje-sources-change", { ids: e.detail });
|
|
398
402
|
}}
|
|
399
|
-
></lintje-multiselect>` :
|
|
403
|
+
></lintje-multiselect>` : o}
|
|
400
404
|
<span id="hint" class="lintje-chat-composer__hint" role="status"
|
|
401
405
|
>${this.noSource ? "Kies eerst een bron om een vraag te stellen" : ""}</span
|
|
402
406
|
>
|
|
403
|
-
${this.busy ?
|
|
407
|
+
${this.busy ? s`<lintje-button
|
|
404
408
|
class="lintje-chat-composer__stop"
|
|
405
409
|
variant="secondary"
|
|
406
410
|
icon="multimedia-player-stop"
|
|
407
411
|
@click=${() => this.emit("lintje-answer-stop", {})}
|
|
408
412
|
>Stoppen</lintje-button
|
|
409
|
-
>` :
|
|
410
|
-
${this.#e.matches ?
|
|
413
|
+
>` : s`<div class="lintje-chat-composer__send">
|
|
414
|
+
${this.#e.matches ? s`<lintje-icon-button
|
|
411
415
|
class="lintje-chat-composer__send-half"
|
|
412
416
|
icon="functioneel-verzenden"
|
|
413
417
|
label="Versturen"
|
|
414
418
|
active
|
|
415
|
-
?disabled=${
|
|
419
|
+
?disabled=${t || this.noSource}
|
|
416
420
|
@click=${() => this.send()}
|
|
417
|
-
></lintje-icon-button>` :
|
|
421
|
+
></lintje-icon-button>` : s`<lintje-button
|
|
418
422
|
variant="primary"
|
|
419
423
|
icon="functioneel-verzenden"
|
|
420
|
-
?disabled=${
|
|
424
|
+
?disabled=${t || this.noSource}
|
|
421
425
|
@click=${() => this.send()}
|
|
422
426
|
>Versturen</lintje-button
|
|
423
427
|
>`}
|
|
424
|
-
${this.plain ?
|
|
428
|
+
${this.plain ? o : s`<lintje-icon-button
|
|
425
429
|
class="lintje-chat-composer__send-half lintje-chat-composer__options-toggle"
|
|
426
430
|
icon="functioneel-delta-omlaag"
|
|
427
431
|
label="Opties bij versturen"
|
|
428
|
-
?active=${!(
|
|
432
|
+
?active=${!(t || this.noSource)}
|
|
429
433
|
.expanded=${this.optionsOpen}
|
|
430
434
|
@click=${() => this.toggleOptions(!this.optionsOpen)}
|
|
431
435
|
></lintje-icon-button>
|
|
432
|
-
${this.optionsOpen ? this.renderSendOptions() :
|
|
436
|
+
${this.optionsOpen ? this.renderSendOptions() : o}`}
|
|
433
437
|
</div>`}`;
|
|
434
438
|
}
|
|
435
439
|
renderSendOptions() {
|
|
436
|
-
return
|
|
440
|
+
return s`<span
|
|
437
441
|
class="lintje-chat-composer__scrim"
|
|
438
442
|
@click=${() => this.toggleOptions(!1)}
|
|
439
443
|
></span>
|
|
@@ -448,7 +452,7 @@ var D = class extends c {
|
|
|
448
452
|
>
|
|
449
453
|
<lintje-radio-group
|
|
450
454
|
label="Antwoord als"
|
|
451
|
-
.options=${
|
|
455
|
+
.options=${_}
|
|
452
456
|
value=${this.form}
|
|
453
457
|
@lintje-change=${(e) => {
|
|
454
458
|
e.stopPropagation(), this.form = e.detail;
|
|
@@ -456,7 +460,7 @@ var D = class extends c {
|
|
|
456
460
|
></lintje-radio-group>
|
|
457
461
|
<lintje-radio-group
|
|
458
462
|
label="Versturen met"
|
|
459
|
-
.options=${
|
|
463
|
+
.options=${v}
|
|
460
464
|
value=${this.sendKey}
|
|
461
465
|
@lintje-change=${(e) => {
|
|
462
466
|
e.stopPropagation(), this.setSendKey(e.detail);
|
|
@@ -474,7 +478,7 @@ var D = class extends c {
|
|
|
474
478
|
</div>`;
|
|
475
479
|
}
|
|
476
480
|
renderEdit() {
|
|
477
|
-
return
|
|
481
|
+
return s`<span id="hint" class="lintje-chat-composer__hint"></span>
|
|
478
482
|
<lintje-button variant="tertiary" size="chrome" @click=${() => this.emitLocal("lintje-cancel")}
|
|
479
483
|
>Annuleren</lintje-button
|
|
480
484
|
>
|
|
@@ -487,6 +491,6 @@ var D = class extends c {
|
|
|
487
491
|
>`;
|
|
488
492
|
}
|
|
489
493
|
};
|
|
490
|
-
|
|
494
|
+
r("lintje-chat-composer", O);
|
|
491
495
|
//#endregion
|
|
492
|
-
export {
|
|
496
|
+
export { O as LintjeChatComposer, d as t };
|