igniteui-webcomponents 6.3.0-alpha.1 → 6.3.0-beta.1
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/CHANGELOG.md +27 -0
- package/components/accordion/accordion.js +3 -4
- package/components/accordion/accordion.js.map +1 -1
- package/components/accordion/themes/accordion.base.css.js +1 -1
- package/components/accordion/themes/accordion.base.css.js.map +1 -1
- package/components/avatar/avatar.js +3 -4
- package/components/avatar/avatar.js.map +1 -1
- package/components/badge/badge.js +3 -4
- package/components/badge/badge.js.map +1 -1
- package/components/banner/banner.js +3 -4
- package/components/banner/banner.js.map +1 -1
- package/components/banner/themes/banner.base.css.js +1 -1
- package/components/banner/themes/banner.base.css.js.map +1 -1
- package/components/banner/themes/shared/banner.bootstrap.css.js +1 -1
- package/components/banner/themes/shared/banner.bootstrap.css.js.map +1 -1
- package/components/banner/themes/shared/banner.fluent.css.js +1 -1
- package/components/banner/themes/shared/banner.fluent.css.js.map +1 -1
- package/components/banner/themes/shared/banner.indigo.css.js +1 -1
- package/components/banner/themes/shared/banner.indigo.css.js.map +1 -1
- package/components/banner/themes/shared/banner.material.css.js +1 -1
- package/components/banner/themes/shared/banner.material.css.js.map +1 -1
- package/components/button/button-base.js +1 -1
- package/components/button/button-base.js.map +1 -1
- package/components/button/button.js +3 -4
- package/components/button/button.js.map +1 -1
- package/components/button/icon-button.js +3 -4
- package/components/button/icon-button.js.map +1 -1
- package/components/button/themes/button/button.base.css.js +1 -1
- package/components/button/themes/button/button.base.css.js.map +1 -1
- package/components/button/themes/button/shared/button.common.css.js +1 -1
- package/components/button/themes/button/shared/button.common.css.js.map +1 -1
- package/components/button/themes/button/shared/button.fluent.css.js +1 -1
- package/components/button/themes/button/shared/button.fluent.css.js.map +1 -1
- package/components/button/themes/button/shared/button.indigo.css.js +1 -1
- package/components/button/themes/button/shared/button.indigo.css.js.map +1 -1
- package/components/button-group/button-group.js +3 -4
- package/components/button-group/button-group.js.map +1 -1
- package/components/button-group/toggle-button.js +4 -3
- package/components/button-group/toggle-button.js.map +1 -1
- package/components/calendar/calendar.d.ts +1 -1
- package/components/calendar/calendar.js +3 -4
- package/components/calendar/calendar.js.map +1 -1
- package/components/calendar/days-view/days-view.js +4 -3
- package/components/calendar/days-view/days-view.js.map +1 -1
- package/components/calendar/months-view/months-view.js +4 -3
- package/components/calendar/months-view/months-view.js.map +1 -1
- package/components/calendar/themes/calendar.base.css.js +1 -1
- package/components/calendar/themes/calendar.base.css.js.map +1 -1
- package/components/calendar/themes/days-view.base.css.js +1 -1
- package/components/calendar/themes/days-view.base.css.js.map +1 -1
- package/components/calendar/themes/shared/bootstrap/calendar.bootstrap.css.js +1 -1
- package/components/calendar/themes/shared/bootstrap/calendar.bootstrap.css.js.map +1 -1
- package/components/calendar/themes/shared/bootstrap/days-view.bootstrap.css.js +1 -1
- package/components/calendar/themes/shared/bootstrap/days-view.bootstrap.css.js.map +1 -1
- package/components/calendar/themes/shared/bootstrap/year-month-view.bootstrap.css.js +1 -1
- package/components/calendar/themes/shared/bootstrap/year-month-view.bootstrap.css.js.map +1 -1
- package/components/calendar/themes/shared/fluent/calendar.fluent.css.js +1 -1
- package/components/calendar/themes/shared/fluent/calendar.fluent.css.js.map +1 -1
- package/components/calendar/themes/shared/indigo/calendar.indigo.css.js +1 -1
- package/components/calendar/themes/shared/indigo/calendar.indigo.css.js.map +1 -1
- package/components/calendar/themes/shared/material/calendar.material.css.js +1 -1
- package/components/calendar/themes/shared/material/calendar.material.css.js.map +1 -1
- package/components/calendar/themes/year-month-view.base.css.js +1 -1
- package/components/calendar/themes/year-month-view.base.css.js.map +1 -1
- package/components/calendar/years-view/years-view.js +4 -3
- package/components/calendar/years-view/years-view.js.map +1 -1
- package/components/card/card.actions.js +3 -4
- package/components/card/card.actions.js.map +1 -1
- package/components/card/card.content.js +3 -4
- package/components/card/card.content.js.map +1 -1
- package/components/card/card.header.js +3 -4
- package/components/card/card.header.js.map +1 -1
- package/components/card/card.js +3 -4
- package/components/card/card.js.map +1 -1
- package/components/card/card.media.js +3 -4
- package/components/card/card.media.js.map +1 -1
- package/components/card/themes/card.actions.base.css.js +1 -1
- package/components/card/themes/card.actions.base.css.js.map +1 -1
- package/components/card/themes/card.content.base.css.js +1 -1
- package/components/card/themes/card.content.base.css.js.map +1 -1
- package/components/card/themes/card.header.base.css.js +1 -1
- package/components/card/themes/card.header.base.css.js.map +1 -1
- package/components/card/themes/shared/actions/card.actions.bootstrap.css.js +1 -1
- package/components/card/themes/shared/actions/card.actions.bootstrap.css.js.map +1 -1
- package/components/card/themes/shared/actions/card.actions.indigo.css.js +1 -1
- package/components/card/themes/shared/actions/card.actions.indigo.css.js.map +1 -1
- package/components/card/themes/shared/container/card.bootstrap.css.js +1 -1
- package/components/card/themes/shared/container/card.bootstrap.css.js.map +1 -1
- package/components/card/themes/shared/container/card.indigo.css.js +1 -1
- package/components/card/themes/shared/container/card.indigo.css.js.map +1 -1
- package/components/card/themes/shared/content/card.content.bootstrap.css.js +1 -1
- package/components/card/themes/shared/content/card.content.bootstrap.css.js.map +1 -1
- package/components/card/themes/shared/header/card.header.fluent.css.js +1 -1
- package/components/card/themes/shared/header/card.header.fluent.css.js.map +1 -1
- package/components/card/themes/shared/header/card.header.indigo.css.js +1 -1
- package/components/card/themes/shared/header/card.header.indigo.css.js.map +1 -1
- package/components/carousel/carousel-indicator-container.js +3 -4
- package/components/carousel/carousel-indicator-container.js.map +1 -1
- package/components/carousel/carousel-indicator.js +3 -4
- package/components/carousel/carousel-indicator.js.map +1 -1
- package/components/carousel/carousel-slide.js +3 -4
- package/components/carousel/carousel-slide.js.map +1 -1
- package/components/carousel/carousel.js +3 -4
- package/components/carousel/carousel.js.map +1 -1
- package/components/carousel/themes/carousel.base.css.js +1 -1
- package/components/carousel/themes/carousel.base.css.js.map +1 -1
- package/components/carousel/themes/shared/carousel.indigo.css.js +1 -1
- package/components/carousel/themes/shared/carousel.indigo.css.js.map +1 -1
- package/components/chat/chat-input.d.ts +47 -11
- package/components/chat/chat-input.js +192 -78
- package/components/chat/chat-input.js.map +1 -1
- package/components/chat/chat-message.d.ts +12 -12
- package/components/chat/chat-message.js +129 -31
- package/components/chat/chat-message.js.map +1 -1
- package/components/chat/chat-state.d.ts +21 -141
- package/components/chat/chat-state.js +64 -408
- package/components/chat/chat-state.js.map +1 -1
- package/components/chat/chat.d.ts +39 -69
- package/components/chat/chat.js +188 -132
- package/components/chat/chat.js.map +1 -1
- package/components/chat/extras/markdown-renderer.d.ts +26 -0
- package/components/chat/extras/markdown-renderer.js +44 -0
- package/components/chat/extras/markdown-renderer.js.map +1 -0
- package/components/chat/message-attachments.d.ts +21 -3
- package/components/chat/message-attachments.js +105 -20
- package/components/chat/message-attachments.js.map +1 -1
- package/components/chat/themes/attachments.d.ts +2 -0
- package/components/chat/themes/attachments.js +14 -0
- package/components/chat/themes/attachments.js.map +1 -0
- package/components/chat/themes/chat.base.css.js +1 -1
- package/components/chat/themes/chat.base.css.js.map +1 -1
- package/components/chat/themes/dark/chat.indigo.css.js +1 -1
- package/components/chat/themes/dark/chat.indigo.css.js.map +1 -1
- package/components/chat/themes/input.base.css.js +1 -1
- package/components/chat/themes/input.base.css.js.map +1 -1
- package/components/chat/themes/light/chat.indigo.css.js +1 -1
- package/components/chat/themes/light/chat.indigo.css.js.map +1 -1
- package/components/chat/themes/light/chat.shared.css.js +1 -1
- package/components/chat/themes/light/chat.shared.css.js.map +1 -1
- package/components/chat/themes/message-attachments.base.css.js +1 -1
- package/components/chat/themes/message-attachments.base.css.js.map +1 -1
- package/components/chat/themes/message.base.css.js +1 -1
- package/components/chat/themes/message.base.css.js.map +1 -1
- package/components/chat/themes/shared/chat.bootstrap.css.js +1 -1
- package/components/chat/themes/shared/chat.bootstrap.css.js.map +1 -1
- package/components/chat/themes/shared/chat.common.css.js +1 -1
- package/components/chat/themes/shared/chat.common.css.js.map +1 -1
- package/components/chat/themes/shared/chat.fluent.css.js +3 -0
- package/components/chat/themes/shared/chat.fluent.css.js.map +1 -0
- package/components/chat/themes/shared/chat.indigo.css.js +1 -1
- package/components/chat/themes/shared/chat.indigo.css.js.map +1 -1
- package/components/chat/themes/shared/input/input.bootstrap.css.js +1 -1
- package/components/chat/themes/shared/input/input.bootstrap.css.js.map +1 -1
- package/components/chat/themes/shared/input/input.fluent.css.js +1 -1
- package/components/chat/themes/shared/input/input.fluent.css.js.map +1 -1
- package/components/chat/themes/shared/input/input.indigo.css.js +1 -1
- package/components/chat/themes/shared/input/input.indigo.css.js.map +1 -1
- package/components/chat/themes/shared/input/input.material.css.js +1 -1
- package/components/chat/themes/shared/input/input.material.css.js.map +1 -1
- package/components/chat/themes/shared/message-attachments/message-attachments.common.css.js +3 -0
- package/components/chat/themes/shared/message-attachments/message-attachments.common.css.js.map +1 -0
- package/components/chat/themes/shared/message-attachments/message-attachments.indigo.css.js +3 -0
- package/components/chat/themes/shared/message-attachments/message-attachments.indigo.css.js.map +1 -0
- package/components/chat/themes/themes.js +3 -2
- package/components/chat/themes/themes.js.map +1 -1
- package/components/chat/types.d.ts +37 -133
- package/components/chat/types.js +1 -14
- package/components/chat/types.js.map +1 -1
- package/components/chat/utils.d.ts +17 -0
- package/components/chat/utils.js +94 -0
- package/components/chat/utils.js.map +1 -0
- package/components/checkbox/checkbox-base.d.ts +1 -1
- package/components/checkbox/checkbox.js +3 -4
- package/components/checkbox/checkbox.js.map +1 -1
- package/components/checkbox/switch.js +3 -4
- package/components/checkbox/switch.js.map +1 -1
- package/components/checkbox/themes/shared/checkbox/checkbox.bootstrap.css.js +1 -1
- package/components/checkbox/themes/shared/checkbox/checkbox.bootstrap.css.js.map +1 -1
- package/components/checkbox/themes/shared/checkbox/checkbox.fluent.css.js +1 -1
- package/components/checkbox/themes/shared/checkbox/checkbox.fluent.css.js.map +1 -1
- package/components/checkbox/themes/shared/checkbox/checkbox.indigo.css.js +1 -1
- package/components/checkbox/themes/shared/checkbox/checkbox.indigo.css.js.map +1 -1
- package/components/checkbox/themes/shared/checkbox/checkbox.material.css.js +1 -1
- package/components/checkbox/themes/shared/checkbox/checkbox.material.css.js.map +1 -1
- package/components/chip/chip.js +3 -4
- package/components/chip/chip.js.map +1 -1
- package/components/chip/themes/shared/chip.indigo.css.js +1 -1
- package/components/chip/themes/shared/chip.indigo.css.js.map +1 -1
- package/components/combo/combo-header.js +3 -4
- package/components/combo/combo-header.js.map +1 -1
- package/components/combo/combo-item.js +3 -4
- package/components/combo/combo-item.js.map +1 -1
- package/components/combo/combo-list.js +2 -3
- package/components/combo/combo-list.js.map +1 -1
- package/components/combo/combo.js +4 -3
- package/components/combo/combo.js.map +1 -1
- package/components/combo/themes/combo-item.base.css.js +1 -1
- package/components/combo/themes/combo-item.base.css.js.map +1 -1
- package/components/combo/themes/combo.base.css.js +1 -1
- package/components/combo/themes/combo.base.css.js.map +1 -1
- package/components/combo/themes/shared/combo.bootstrap.css.js +1 -1
- package/components/combo/themes/shared/combo.bootstrap.css.js.map +1 -1
- package/components/combo/themes/shared/combo.fluent.css.js +1 -1
- package/components/combo/themes/shared/combo.fluent.css.js.map +1 -1
- package/components/combo/themes/shared/combo.indigo.css.js +1 -1
- package/components/combo/themes/shared/combo.indigo.css.js.map +1 -1
- package/components/combo/themes/shared/combo.material.css.js +1 -1
- package/components/combo/themes/shared/combo.material.css.js.map +1 -1
- package/components/common/context.d.ts +4 -1
- package/components/common/context.js +2 -1
- package/components/common/context.js.map +1 -1
- package/components/common/controllers/focus-ring.js +5 -5
- package/components/common/controllers/focus-ring.js.map +1 -1
- package/components/common/controllers/key-bindings.js +4 -4
- package/components/common/controllers/key-bindings.js.map +1 -1
- package/components/common/i18n/chat.resources.d.ts +4 -4
- package/components/common/i18n/chat.resources.js +4 -4
- package/components/common/i18n/chat.resources.js.map +1 -1
- package/components/common/mixins/forms/associated.js +1 -1
- package/components/common/mixins/forms/associated.js.map +1 -1
- package/components/common/mixins/forms/form-value.js +1 -1
- package/components/common/mixins/forms/form-value.js.map +1 -1
- package/components/common/part-map.d.ts +1 -1
- package/components/common/util.d.ts +8 -0
- package/components/common/util.js +33 -1
- package/components/common/util.js.map +1 -1
- package/components/date-picker/date-picker.js +5 -4
- package/components/date-picker/date-picker.js.map +1 -1
- package/components/date-picker/themes/date-picker.base.css.js +1 -1
- package/components/date-picker/themes/date-picker.base.css.js.map +1 -1
- package/components/date-picker/themes/shared/date-picker.bootstrap.css.js +1 -1
- package/components/date-picker/themes/shared/date-picker.bootstrap.css.js.map +1 -1
- package/components/date-picker/themes/shared/date-picker.common.css.js +1 -1
- package/components/date-picker/themes/shared/date-picker.common.css.js.map +1 -1
- package/components/date-picker/themes/shared/date-picker.fluent.css.js +1 -1
- package/components/date-picker/themes/shared/date-picker.fluent.css.js.map +1 -1
- package/components/date-picker/themes/shared/date-picker.indigo.css.js +1 -1
- package/components/date-picker/themes/shared/date-picker.indigo.css.js.map +1 -1
- package/components/date-range-picker/date-range-picker.base.css.js +1 -1
- package/components/date-range-picker/date-range-picker.base.css.js.map +1 -1
- package/components/date-range-picker/date-range-picker.d.ts +1 -1
- package/components/date-range-picker/date-range-picker.js +5 -4
- package/components/date-range-picker/date-range-picker.js.map +1 -1
- package/components/date-range-picker/predefined-ranges-area.base.css.js +1 -1
- package/components/date-range-picker/predefined-ranges-area.base.css.js.map +1 -1
- package/components/date-range-picker/predefined-ranges-area.js +3 -4
- package/components/date-range-picker/predefined-ranges-area.js.map +1 -1
- package/components/date-range-picker/themes/shared/date-range-picker.bootstrap.css.js +1 -1
- package/components/date-range-picker/themes/shared/date-range-picker.bootstrap.css.js.map +1 -1
- package/components/date-range-picker/themes/shared/date-range-picker.common.css.js +1 -1
- package/components/date-range-picker/themes/shared/date-range-picker.common.css.js.map +1 -1
- package/components/date-range-picker/themes/shared/date-range-picker.fluent.css.js +1 -1
- package/components/date-range-picker/themes/shared/date-range-picker.fluent.css.js.map +1 -1
- package/components/date-range-picker/themes/shared/date-range-picker.indigo.css.js +1 -1
- package/components/date-range-picker/themes/shared/date-range-picker.indigo.css.js.map +1 -1
- package/components/date-time-input/date-time-input.js +2 -3
- package/components/date-time-input/date-time-input.js.map +1 -1
- package/components/date-time-input/date-util.js +11 -11
- package/components/date-time-input/date-util.js.map +1 -1
- package/components/dialog/dialog.js +3 -4
- package/components/dialog/dialog.js.map +1 -1
- package/components/dialog/themes/dialog.base.css.js +1 -1
- package/components/dialog/themes/dialog.base.css.js.map +1 -1
- package/components/dialog/themes/shared/dialog.bootstrap.css.js +1 -1
- package/components/dialog/themes/shared/dialog.bootstrap.css.js.map +1 -1
- package/components/dialog/themes/shared/dialog.common.css.js +1 -1
- package/components/dialog/themes/shared/dialog.common.css.js.map +1 -1
- package/components/dialog/themes/shared/dialog.fluent.css.js +1 -1
- package/components/dialog/themes/shared/dialog.fluent.css.js.map +1 -1
- package/components/dialog/themes/shared/dialog.indigo.css.js +1 -1
- package/components/dialog/themes/shared/dialog.indigo.css.js.map +1 -1
- package/components/divider/divider.js +3 -4
- package/components/divider/divider.js.map +1 -1
- package/components/dropdown/dropdown-group.js +3 -4
- package/components/dropdown/dropdown-group.js.map +1 -1
- package/components/dropdown/dropdown-header.js +3 -4
- package/components/dropdown/dropdown-header.js.map +1 -1
- package/components/dropdown/dropdown-item.js +3 -4
- package/components/dropdown/dropdown-item.js.map +1 -1
- package/components/dropdown/dropdown.js +4 -3
- package/components/dropdown/dropdown.js.map +1 -1
- package/components/dropdown/themes/dropdown-item.base.css.js +1 -1
- package/components/dropdown/themes/dropdown-item.base.css.js.map +1 -1
- package/components/dropdown/themes/shared/dropdown.indigo.css.js +1 -1
- package/components/dropdown/themes/shared/dropdown.indigo.css.js.map +1 -1
- package/components/dropdown/themes/shared/item/dropdown-item.indigo.css.js +1 -1
- package/components/dropdown/themes/shared/item/dropdown-item.indigo.css.js.map +1 -1
- package/components/expansion-panel/expansion-panel.js +3 -4
- package/components/expansion-panel/expansion-panel.js.map +1 -1
- package/components/expansion-panel/themes/expansion-panel.base.css.js +1 -1
- package/components/expansion-panel/themes/expansion-panel.base.css.js.map +1 -1
- package/components/expansion-panel/themes/shared/expansion-panel.indigo.css.js +1 -1
- package/components/expansion-panel/themes/shared/expansion-panel.indigo.css.js.map +1 -1
- package/components/file-input/file-input.d.ts +0 -4
- package/components/file-input/file-input.js +15 -19
- package/components/file-input/file-input.js.map +1 -1
- package/components/file-input/themes/shared/file-input.material.css.js +1 -1
- package/components/file-input/themes/shared/file-input.material.css.js.map +1 -1
- package/components/focus-trap/focus-trap.js +7 -8
- package/components/focus-trap/focus-trap.js.map +1 -1
- package/components/icon/icon-references.js +208 -0
- package/components/icon/icon-references.js.map +1 -1
- package/components/icon/icon-state.broadcast.js +1 -1
- package/components/icon/icon-state.broadcast.js.map +1 -1
- package/components/icon/icon.js +3 -4
- package/components/icon/icon.js.map +1 -1
- package/components/icon/internal-icons-lib.js +105 -0
- package/components/icon/internal-icons-lib.js.map +1 -1
- package/components/input/input-base.js +4 -3
- package/components/input/input-base.js.map +1 -1
- package/components/input/input.d.ts +0 -4
- package/components/input/input.js +11 -14
- package/components/input/input.js.map +1 -1
- package/components/input/themes/shared/input.common.css.js +1 -1
- package/components/input/themes/shared/input.common.css.js.map +1 -1
- package/components/input/themes/shared/input.fluent.css.js +1 -1
- package/components/input/themes/shared/input.fluent.css.js.map +1 -1
- package/components/input/themes/shared/input.indigo.css.js +1 -1
- package/components/input/themes/shared/input.indigo.css.js.map +1 -1
- package/components/input/themes/shared/input.material.css.js +1 -1
- package/components/input/themes/shared/input.material.css.js.map +1 -1
- package/components/list/list-header.js +3 -4
- package/components/list/list-header.js.map +1 -1
- package/components/list/list-item.js +3 -4
- package/components/list/list-item.js.map +1 -1
- package/components/list/list.js +3 -4
- package/components/list/list.js.map +1 -1
- package/components/list/themes/dark/container/list.indigo.css.js +1 -1
- package/components/list/themes/dark/container/list.indigo.css.js.map +1 -1
- package/components/list/themes/dark/header/list-header.indigo.css.js +1 -1
- package/components/list/themes/dark/header/list-header.indigo.css.js.map +1 -1
- package/components/list/themes/dark/item/list-item.indigo.css.js +1 -1
- package/components/list/themes/dark/item/list-item.indigo.css.js.map +1 -1
- package/components/list/themes/light/container/list.indigo.css.js +1 -1
- package/components/list/themes/light/container/list.indigo.css.js.map +1 -1
- package/components/list/themes/light/header/list-header.indigo.css.js +1 -1
- package/components/list/themes/light/header/list-header.indigo.css.js.map +1 -1
- package/components/list/themes/light/item/list-item.indigo.css.js +1 -1
- package/components/list/themes/light/item/list-item.indigo.css.js.map +1 -1
- package/components/mask-input/mask-input.js +2 -3
- package/components/mask-input/mask-input.js.map +1 -1
- package/components/nav-drawer/nav-drawer-header-item.js +3 -4
- package/components/nav-drawer/nav-drawer-header-item.js.map +1 -1
- package/components/nav-drawer/nav-drawer-item.js +3 -4
- package/components/nav-drawer/nav-drawer-item.js.map +1 -1
- package/components/nav-drawer/nav-drawer.js +3 -4
- package/components/nav-drawer/nav-drawer.js.map +1 -1
- package/components/nav-drawer/themes/shared/container/nav-drawer.bootstrap.css.js +1 -1
- package/components/nav-drawer/themes/shared/container/nav-drawer.bootstrap.css.js.map +1 -1
- package/components/nav-drawer/themes/shared/container/nav-drawer.indigo.css.js +1 -1
- package/components/nav-drawer/themes/shared/container/nav-drawer.indigo.css.js.map +1 -1
- package/components/nav-drawer/themes/shared/container/nav-drawer.material.css.js +1 -1
- package/components/nav-drawer/themes/shared/container/nav-drawer.material.css.js.map +1 -1
- package/components/nav-drawer/themes/shared/header-item/header-item.bootstrap.css.js +1 -1
- package/components/nav-drawer/themes/shared/header-item/header-item.bootstrap.css.js.map +1 -1
- package/components/nav-drawer/themes/shared/header-item/header-item.fluent.css.js +1 -1
- package/components/nav-drawer/themes/shared/header-item/header-item.fluent.css.js.map +1 -1
- package/components/nav-drawer/themes/shared/header-item/header-item.indigo.css.js +1 -1
- package/components/nav-drawer/themes/shared/header-item/header-item.indigo.css.js.map +1 -1
- package/components/nav-drawer/themes/shared/header-item/header-item.material.css.js +1 -1
- package/components/nav-drawer/themes/shared/header-item/header-item.material.css.js.map +1 -1
- package/components/nav-drawer/themes/shared/item/item.bootstrap.css.js +1 -1
- package/components/nav-drawer/themes/shared/item/item.bootstrap.css.js.map +1 -1
- package/components/nav-drawer/themes/shared/item/item.fluent.css.js +1 -1
- package/components/nav-drawer/themes/shared/item/item.fluent.css.js.map +1 -1
- package/components/nav-drawer/themes/shared/item/item.indigo.css.js +1 -1
- package/components/nav-drawer/themes/shared/item/item.indigo.css.js.map +1 -1
- package/components/nav-drawer/themes/shared/item/item.material.css.js +1 -1
- package/components/nav-drawer/themes/shared/item/item.material.css.js.map +1 -1
- package/components/navbar/navbar.js +3 -4
- package/components/navbar/navbar.js.map +1 -1
- package/components/navbar/themes/navbar.base.css.js +1 -1
- package/components/navbar/themes/navbar.base.css.js.map +1 -1
- package/components/navbar/themes/shared/navbar.bootstrap.css.js +1 -1
- package/components/navbar/themes/shared/navbar.bootstrap.css.js.map +1 -1
- package/components/navbar/themes/shared/navbar.indigo.css.js +1 -1
- package/components/navbar/themes/shared/navbar.indigo.css.js.map +1 -1
- package/components/popover/popover.js +9 -10
- package/components/popover/popover.js.map +1 -1
- package/components/progress/circular-gradient.js +2 -3
- package/components/progress/circular-gradient.js.map +1 -1
- package/components/progress/circular-progress.js +3 -4
- package/components/progress/circular-progress.js.map +1 -1
- package/components/progress/linear-progress.js +3 -4
- package/components/progress/linear-progress.js.map +1 -1
- package/components/progress/themes/linear/shared/linear.progress.fluent.css.js +1 -1
- package/components/progress/themes/linear/shared/linear.progress.fluent.css.js.map +1 -1
- package/components/progress/themes/linear/shared/linear.progress.indigo.css.js +1 -1
- package/components/progress/themes/linear/shared/linear.progress.indigo.css.js.map +1 -1
- package/components/radio/radio.js +3 -4
- package/components/radio/radio.js.map +1 -1
- package/components/radio/themes/shared/radio.bootstrap.css.js +1 -1
- package/components/radio/themes/shared/radio.bootstrap.css.js.map +1 -1
- package/components/radio/themes/shared/radio.fluent.css.js +1 -1
- package/components/radio/themes/shared/radio.fluent.css.js.map +1 -1
- package/components/radio/themes/shared/radio.indigo.css.js +1 -1
- package/components/radio/themes/shared/radio.indigo.css.js.map +1 -1
- package/components/radio/themes/shared/radio.material.css.js +1 -1
- package/components/radio/themes/shared/radio.material.css.js.map +1 -1
- package/components/radio-group/radio-group.js +3 -4
- package/components/radio-group/radio-group.js.map +1 -1
- package/components/radio-group/themes/radio-group.base.css.js +1 -1
- package/components/radio-group/themes/radio-group.base.css.js.map +1 -1
- package/components/radio-group/themes/shared/radio-group.bootstrap.css.js +1 -1
- package/components/radio-group/themes/shared/radio-group.bootstrap.css.js.map +1 -1
- package/components/radio-group/themes/shared/radio-group.fluent.css.js +1 -1
- package/components/radio-group/themes/shared/radio-group.fluent.css.js.map +1 -1
- package/components/radio-group/themes/shared/radio-group.indigo.css.js +1 -1
- package/components/radio-group/themes/shared/radio-group.indigo.css.js.map +1 -1
- package/components/radio-group/themes/shared/radio-group.material.css.js +1 -1
- package/components/radio-group/themes/shared/radio-group.material.css.js.map +1 -1
- package/components/rating/rating-symbol.js +3 -4
- package/components/rating/rating-symbol.js.map +1 -1
- package/components/rating/rating.js +3 -4
- package/components/rating/rating.js.map +1 -1
- package/components/rating/themes/rating.base.css.js +1 -1
- package/components/rating/themes/rating.base.css.js.map +1 -1
- package/components/rating/themes/shared/rating.indigo.css.js +1 -1
- package/components/rating/themes/shared/rating.indigo.css.js.map +1 -1
- package/components/resize-container/resize-container.d.ts +1 -1
- package/components/resize-container/resize-container.js +3 -4
- package/components/resize-container/resize-container.js.map +1 -1
- package/components/ripple/ripple.js +3 -4
- package/components/ripple/ripple.js.map +1 -1
- package/components/select/select-group.js +3 -4
- package/components/select/select-group.js.map +1 -1
- package/components/select/select-header.js +3 -4
- package/components/select/select-header.js.map +1 -1
- package/components/select/select-item.js +3 -4
- package/components/select/select-item.js.map +1 -1
- package/components/select/select.js +4 -4
- package/components/select/select.js.map +1 -1
- package/components/select/themes/shared/select.bootstrap.css.js +1 -1
- package/components/select/themes/shared/select.bootstrap.css.js.map +1 -1
- package/components/select/themes/shared/select.fluent.css.js +1 -1
- package/components/select/themes/shared/select.fluent.css.js.map +1 -1
- package/components/select/themes/shared/select.indigo.css.js +1 -1
- package/components/select/themes/shared/select.indigo.css.js.map +1 -1
- package/components/select/themes/shared/select.material.css.js +1 -1
- package/components/select/themes/shared/select.material.css.js.map +1 -1
- package/components/slider/range-slider.js +2 -3
- package/components/slider/range-slider.js.map +1 -1
- package/components/slider/slider-base.js +1 -1
- package/components/slider/slider-base.js.map +1 -1
- package/components/slider/slider-label.js +7 -8
- package/components/slider/slider-label.js.map +1 -1
- package/components/slider/slider.js +2 -3
- package/components/slider/slider.js.map +1 -1
- package/components/slider/themes/shared/slider.common.css.js +1 -1
- package/components/slider/themes/shared/slider.common.css.js.map +1 -1
- package/components/slider/themes/slider.base.css.js +1 -1
- package/components/slider/themes/slider.base.css.js.map +1 -1
- package/components/snackbar/snackbar.js +3 -4
- package/components/snackbar/snackbar.js.map +1 -1
- package/components/snackbar/themes/shared/snackbar.indigo.css.js +1 -1
- package/components/snackbar/themes/shared/snackbar.indigo.css.js.map +1 -1
- package/components/snackbar/themes/snackbar.base.css.js +1 -1
- package/components/snackbar/themes/snackbar.base.css.js.map +1 -1
- package/components/stepper/step.d.ts +1 -1
- package/components/stepper/step.js +3 -4
- package/components/stepper/step.js.map +1 -1
- package/components/stepper/stepper.js +3 -4
- package/components/stepper/stepper.js.map +1 -1
- package/components/tabs/tab-dom.js +1 -1
- package/components/tabs/tab-dom.js.map +1 -1
- package/components/tabs/tab.js +4 -5
- package/components/tabs/tab.js.map +1 -1
- package/components/tabs/tabs.js +3 -4
- package/components/tabs/tabs.js.map +1 -1
- package/components/tabs/themes/shared/tab/tab.bootstrap.css.js +1 -1
- package/components/tabs/themes/shared/tab/tab.bootstrap.css.js.map +1 -1
- package/components/tabs/themes/shared/tab/tab.fluent.css.js +1 -1
- package/components/tabs/themes/shared/tab/tab.fluent.css.js.map +1 -1
- package/components/tabs/themes/shared/tab/tab.indigo.css.js +1 -1
- package/components/tabs/themes/shared/tab/tab.indigo.css.js.map +1 -1
- package/components/tabs/themes/shared/tab/tab.material.css.js +1 -1
- package/components/tabs/themes/shared/tab/tab.material.css.js.map +1 -1
- package/components/textarea/textarea.d.ts +1 -1
- package/components/textarea/textarea.js +4 -3
- package/components/textarea/textarea.js.map +1 -1
- package/components/textarea/themes/shared/textarea.bootstrap.css.js +1 -1
- package/components/textarea/themes/shared/textarea.bootstrap.css.js.map +1 -1
- package/components/textarea/themes/shared/textarea.fluent.css.js +1 -1
- package/components/textarea/themes/shared/textarea.fluent.css.js.map +1 -1
- package/components/textarea/themes/shared/textarea.indigo.css.js +1 -1
- package/components/textarea/themes/shared/textarea.indigo.css.js.map +1 -1
- package/components/textarea/themes/shared/textarea.material.css.js +1 -1
- package/components/textarea/themes/shared/textarea.material.css.js.map +1 -1
- package/components/textarea/themes/textarea.base.css.js +1 -1
- package/components/textarea/themes/textarea.base.css.js.map +1 -1
- package/components/tile-manager/resize-state.js +1 -1
- package/components/tile-manager/resize-state.js.map +1 -1
- package/components/tile-manager/tile-manager.js +4 -3
- package/components/tile-manager/tile-manager.js.map +1 -1
- package/components/tile-manager/tile.js +3 -4
- package/components/tile-manager/tile.js.map +1 -1
- package/components/toast/themes/shared/toast.bootstrap.css.js +1 -1
- package/components/toast/themes/shared/toast.bootstrap.css.js.map +1 -1
- package/components/toast/themes/shared/toast.common.css.js +1 -1
- package/components/toast/themes/shared/toast.common.css.js.map +1 -1
- package/components/toast/themes/shared/toast.fluent.css.js +1 -1
- package/components/toast/themes/shared/toast.fluent.css.js.map +1 -1
- package/components/toast/themes/toast.base.css.js +1 -1
- package/components/toast/themes/toast.base.css.js.map +1 -1
- package/components/toast/toast.js +3 -4
- package/components/toast/toast.js.map +1 -1
- package/components/tooltip/controller.js +4 -4
- package/components/tooltip/controller.js.map +1 -1
- package/components/tooltip/themes/tooltip.base.css.js +1 -1
- package/components/tooltip/themes/tooltip.base.css.js.map +1 -1
- package/components/tooltip/tooltip.js +3 -4
- package/components/tooltip/tooltip.js.map +1 -1
- package/components/tree/themes/item.base.css.js +1 -1
- package/components/tree/themes/item.base.css.js.map +1 -1
- package/components/tree/themes/shared/item.common.css.js +1 -1
- package/components/tree/themes/shared/item.common.css.js.map +1 -1
- package/components/tree/themes/shared/item.indigo.css.js +1 -1
- package/components/tree/themes/shared/item.indigo.css.js.map +1 -1
- package/components/tree/themes/shared/item.material.css.js +1 -1
- package/components/tree/themes/shared/item.material.css.js.map +1 -1
- package/components/tree/tree-item.js +3 -4
- package/components/tree/tree-item.js.map +1 -1
- package/components/tree/tree.js +4 -3
- package/components/tree/tree.js.map +1 -1
- package/components/validation-container/validation-container.js +3 -4
- package/components/validation-container/validation-container.js.map +1 -1
- package/custom-elements.json +24973 -25167
- package/extras/index.d.ts +1 -0
- package/extras/index.js +2 -0
- package/extras/index.js.map +1 -0
- package/igniteui-webcomponents.css-data.json +1 -1
- package/igniteui-webcomponents.html-data.json +1 -1
- package/index.d.ts +1 -3
- package/index.js +0 -2
- package/index.js.map +1 -1
- package/package.json +6 -2
- package/web-types.json +2 -2
- package/components/chat/assets/file.png +0 -0
- package/components/chat/assets/json.png +0 -0
- package/components/chat/assets/link.png +0 -0
- package/components/chat/chat-message-list.d.ts +0 -70
- package/components/chat/chat-message-list.js +0 -89
- package/components/chat/chat-message-list.js.map +0 -1
- package/components/chat/chat-renderer.d.ts +0 -14
- package/components/chat/chat-renderer.js +0 -39
- package/components/chat/chat-renderer.js.map +0 -1
- package/components/chat/markdown-renderer.d.ts +0 -72
- package/components/chat/markdown-renderer.js +0 -71
- package/components/chat/markdown-renderer.js.map +0 -1
- package/components/chat/plain-text-renderer.d.ts +0 -15
- package/components/chat/plain-text-renderer.js +0 -7
- package/components/chat/plain-text-renderer.js.map +0 -1
- package/components/chat/themes/message-list.base.css.js +0 -3
- package/components/chat/themes/message-list.base.css.js.map +0 -1
- package/components/chat/themes/shared/message-attachments.common.css.js +0 -3
- package/components/chat/themes/shared/message-attachments.common.css.js.map +0 -1
- package/components/chat/themes/shared/message-list.common.css.js +0 -3
- package/components/chat/themes/shared/message-list.common.css.js.map +0 -1
- /package/components/chat/themes/{message-list.base.css.d.ts → shared/chat.fluent.css.d.ts} +0 -0
- /package/components/chat/themes/shared/{message-attachments.common.css.d.ts → message-attachments/message-attachments.common.css.d.ts} +0 -0
- /package/components/chat/themes/shared/{message-list.common.css.d.ts → message-attachments/message-attachments.indigo.css.d.ts} +0 -0
|
@@ -5,66 +5,164 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
6
|
};
|
|
7
7
|
import { consume } from '@lit/context';
|
|
8
|
-
import {
|
|
8
|
+
import { html, LitElement, nothing } from 'lit';
|
|
9
9
|
import { property } from 'lit/decorators.js';
|
|
10
|
+
import { cache } from 'lit/directives/cache.js';
|
|
10
11
|
import { until } from 'lit/directives/until.js';
|
|
11
12
|
import { addThemingController } from '../../theming/theming-controller.js';
|
|
12
|
-
import
|
|
13
|
+
import IgcIconButtonComponent from '../button/icon-button.js';
|
|
13
14
|
import { chatContext } from '../common/context.js';
|
|
14
15
|
import { registerComponent } from '../common/definitions/register.js';
|
|
15
16
|
import { partMap } from '../common/part-map.js';
|
|
17
|
+
import { isEmpty } from '../common/util.js';
|
|
16
18
|
import IgcTooltipComponent from '../tooltip/tooltip.js';
|
|
17
19
|
import IgcMessageAttachmentsComponent from './message-attachments.js';
|
|
18
20
|
import { styles } from './themes/message.base.css.js';
|
|
19
21
|
import { all } from './themes/message.js';
|
|
20
22
|
import { styles as shared } from './themes/shared/chat-message/chat-message.common.css.js';
|
|
21
|
-
|
|
23
|
+
import { chatMessageAdoptPageStyles, showChatActionsTooltip } from './utils.js';
|
|
24
|
+
const LIKE_INACTIVE = 'thumb_up_inactive';
|
|
25
|
+
const LIKE_ACTIVE = 'thumb_up_active';
|
|
26
|
+
const DISLIKE_INACTIVE = 'thumb_down_inactive';
|
|
27
|
+
const DISLIKE_ACTIVE = 'thumb_down_active';
|
|
28
|
+
export default class IgcChatMessageComponent extends LitElement {
|
|
29
|
+
static { this.tagName = 'igc-chat-message'; }
|
|
30
|
+
static { this.styles = [styles, shared]; }
|
|
22
31
|
static register() {
|
|
23
|
-
registerComponent(IgcChatMessageComponent, IgcMessageAttachmentsComponent,
|
|
32
|
+
registerComponent(IgcChatMessageComponent, IgcMessageAttachmentsComponent, IgcIconButtonComponent, IgcTooltipComponent);
|
|
24
33
|
}
|
|
25
34
|
constructor() {
|
|
26
35
|
super();
|
|
36
|
+
this._defaults = Object.freeze({
|
|
37
|
+
message: () => this._renderMessage(),
|
|
38
|
+
messageHeader: () => this._renderHeader(),
|
|
39
|
+
messageContent: () => this._renderContent(),
|
|
40
|
+
messageAttachments: () => this._renderAttachments(),
|
|
41
|
+
messageActions: () => this._renderActions(),
|
|
42
|
+
});
|
|
27
43
|
addThemingController(this, all);
|
|
28
44
|
}
|
|
29
45
|
firstUpdated() {
|
|
30
|
-
|
|
46
|
+
chatMessageAdoptPageStyles(this);
|
|
47
|
+
}
|
|
48
|
+
_getRenderer(name) {
|
|
49
|
+
return this._state.options?.renderers
|
|
50
|
+
? (this._state.options.renderers[name] ?? this._defaults[name])
|
|
51
|
+
: this._defaults[name];
|
|
52
|
+
}
|
|
53
|
+
_handleMessageActionClick(event) {
|
|
54
|
+
const targetButton = event.target;
|
|
55
|
+
const button = targetButton.closest(IgcIconButtonComponent.tagName);
|
|
56
|
+
if (!button)
|
|
57
|
+
return;
|
|
58
|
+
let reaction = button.getAttribute('name');
|
|
59
|
+
if (this.message) {
|
|
60
|
+
if (reaction === LIKE_INACTIVE) {
|
|
61
|
+
reaction = LIKE_ACTIVE;
|
|
62
|
+
this.message.reactions = [reaction];
|
|
63
|
+
}
|
|
64
|
+
else if (reaction === DISLIKE_INACTIVE) {
|
|
65
|
+
reaction = DISLIKE_ACTIVE;
|
|
66
|
+
this.message.reactions = [reaction];
|
|
67
|
+
}
|
|
68
|
+
else if (reaction === this.message.reactions?.[0]) {
|
|
69
|
+
reaction = null;
|
|
70
|
+
this.message.reactions = [];
|
|
71
|
+
}
|
|
72
|
+
this.requestUpdate();
|
|
73
|
+
}
|
|
74
|
+
this._state.emitEvent('igcMessageReact', {
|
|
75
|
+
detail: { message: this.message, reaction },
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
_renderHeader() {
|
|
79
|
+
return nothing;
|
|
80
|
+
}
|
|
81
|
+
_renderContent() {
|
|
82
|
+
return this.message?.text
|
|
83
|
+
? html `<pre part="plain-text">${this.message.text}</pre>`
|
|
84
|
+
: nothing;
|
|
85
|
+
}
|
|
86
|
+
_renderActions() {
|
|
87
|
+
const isSent = this.message?.sender === this._state.currentUserId;
|
|
88
|
+
const hasText = this.message?.text.trim();
|
|
89
|
+
const hasAttachments = this.message?.attachments && !isEmpty(this.message?.attachments);
|
|
90
|
+
const isTyping = this._state._isTyping;
|
|
91
|
+
const isLastMessage = this.message === this._state.messages.at(-1);
|
|
92
|
+
const resourceStrings = this._state.resourceStrings;
|
|
93
|
+
if (isSent || !(hasText || hasAttachments) || (isLastMessage && isTyping)) {
|
|
94
|
+
return nothing;
|
|
95
|
+
}
|
|
96
|
+
return html `
|
|
97
|
+
<div @click=${this._handleMessageActionClick}>
|
|
98
|
+
${this._renderActionButton('copy_content', resourceStrings.reactionCopy)}
|
|
99
|
+
${this._renderActionButton(this.message?.reactions?.includes(LIKE_ACTIVE)
|
|
100
|
+
? LIKE_ACTIVE
|
|
101
|
+
: LIKE_INACTIVE, resourceStrings.reactionLike)}
|
|
102
|
+
${this._renderActionButton(this.message?.reactions?.includes(DISLIKE_ACTIVE)
|
|
103
|
+
? DISLIKE_ACTIVE
|
|
104
|
+
: DISLIKE_INACTIVE, resourceStrings.reactionDislike)}
|
|
105
|
+
${this._renderActionButton('regenerate', resourceStrings.reactionRegenerate)}
|
|
106
|
+
</div>
|
|
107
|
+
`;
|
|
108
|
+
}
|
|
109
|
+
_renderActionButton(name, tooltipMessage) {
|
|
110
|
+
return html `
|
|
111
|
+
<igc-icon-button
|
|
112
|
+
id=${`${name}-button`}
|
|
113
|
+
name=${name}
|
|
114
|
+
variant="flat"
|
|
115
|
+
@pointerenter=${({ target }) => showChatActionsTooltip(target, tooltipMessage)}
|
|
116
|
+
@focus=${({ target }) => showChatActionsTooltip(target, tooltipMessage)}
|
|
117
|
+
></igc-icon-button>
|
|
118
|
+
`;
|
|
119
|
+
}
|
|
120
|
+
_renderAttachments() {
|
|
121
|
+
return isEmpty(this.message?.attachments ?? [])
|
|
122
|
+
? nothing
|
|
123
|
+
: html `
|
|
124
|
+
<igc-message-attachments
|
|
125
|
+
.message=${this.message}
|
|
126
|
+
></igc-message-attachments>
|
|
127
|
+
`;
|
|
128
|
+
}
|
|
129
|
+
_renderMessage() {
|
|
130
|
+
return this.message
|
|
131
|
+
? html `${this._renderHeader()}${this._renderContent()}${this._renderAttachments()}${this._renderActions()}`
|
|
132
|
+
: nothing;
|
|
31
133
|
}
|
|
32
134
|
render() {
|
|
135
|
+
const ctx = {
|
|
136
|
+
message: this.message,
|
|
137
|
+
defaults: this._defaults,
|
|
138
|
+
instance: this._state.host,
|
|
139
|
+
};
|
|
33
140
|
const parts = {
|
|
34
141
|
'message-container': true,
|
|
35
|
-
sent: this.
|
|
142
|
+
sent: this._state.isCurrentUserMessage(this.message),
|
|
36
143
|
};
|
|
37
|
-
return
|
|
144
|
+
return html `
|
|
145
|
+
${cache(this.message
|
|
38
146
|
? html `
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
147
|
+
<div part=${partMap(parts)}>
|
|
148
|
+
${cache(this._state.options?.renderers?.message
|
|
149
|
+
? html `${until(this._getRenderer('message')(ctx))}`
|
|
150
|
+
: html `
|
|
151
|
+
${until(this._getRenderer('messageHeader')(ctx))}
|
|
152
|
+
${until(this._getRenderer('messageContent')(ctx))}
|
|
153
|
+
${until(this._getRenderer('messageAttachments')(ctx))}
|
|
154
|
+
${until(this._getRenderer('messageActions')(ctx))}
|
|
155
|
+
`)}
|
|
156
|
+
</div>
|
|
157
|
+
`
|
|
158
|
+
: nothing)}
|
|
159
|
+
`;
|
|
44
160
|
}
|
|
45
161
|
}
|
|
46
|
-
IgcChatMessageComponent.tagName = 'igc-chat-message';
|
|
47
|
-
IgcChatMessageComponent.styles = [styles, shared];
|
|
48
|
-
export default IgcChatMessageComponent;
|
|
49
162
|
__decorate([
|
|
50
163
|
consume({ context: chatContext, subscribe: true })
|
|
51
|
-
], IgcChatMessageComponent.prototype, "
|
|
164
|
+
], IgcChatMessageComponent.prototype, "_state", void 0);
|
|
52
165
|
__decorate([
|
|
53
166
|
property({ attribute: false })
|
|
54
167
|
], IgcChatMessageComponent.prototype, "message", void 0);
|
|
55
|
-
function adoptPageStyles(message) {
|
|
56
|
-
const sheets = [];
|
|
57
|
-
for (const sheet of document.styleSheets) {
|
|
58
|
-
try {
|
|
59
|
-
const constructed = new CSSStyleSheet();
|
|
60
|
-
for (const rule of sheet.cssRules) {
|
|
61
|
-
constructed.insertRule(rule.cssText);
|
|
62
|
-
}
|
|
63
|
-
sheets.push(constructed);
|
|
64
|
-
}
|
|
65
|
-
catch { }
|
|
66
|
-
}
|
|
67
|
-
const ctor = message.constructor;
|
|
68
|
-
adoptStyles(message.shadowRoot, [...ctor.elementStyles, ...sheets]);
|
|
69
|
-
}
|
|
70
168
|
//# sourceMappingURL=chat-message.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-message.js","sourceRoot":"","sources":["../../../src/components/chat/chat-message.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,kBAAkB,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,mBAAmB,MAAM,uBAAuB,CAAC;AAExD,OAAO,8BAA8B,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,8BAA8B,CAAC;AACtD,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,MAAM,IAAI,MAAM,EAAE,MAAM,yDAAyD,CAAC;AAqB3F,MAAqB,uBAAwB,SAAQ,UAAU;IAKtD,MAAM,CAAC,QAAQ;QACpB,iBAAiB,CACf,uBAAuB,EACvB,8BAA8B,EAC9B,kBAAkB,EAClB,mBAAmB,CACpB,CAAC;IACJ,CAAC;IAcD;QACE,KAAK,EAAE,CAAC;QACR,oBAAoB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAClC,CAAC;IAEkB,YAAY;QAC7B,eAAe,CAAC,IAAI,CAAC,CAAC;IACxB,CAAC;IAQkB,MAAM;QACvB,MAAM,KAAK,GAAG;YACZ,mBAAmB,EAAE,IAAI;YACzB,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,aAAa,KAAK,IAAI,CAAC,OAAO,EAAE,MAAM;SAC9D,CAAC;QAEF,OAAO,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,EAAE,YAAY;YAClD,CAAC,CAAC,IAAI,CAAA;sBACU,OAAO,CAAC,KAAK,CAAC;cACtB,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;SAE7D;YACH,CAAC,CAAC,OAAO,CAAC;IACd,CAAC;;AArDsB,+BAAO,GAAG,kBAAkB,CAAC;AAC7B,8BAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;eAF9B,uBAAuB;AAkBlC;IADP,OAAO,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;2DACpB;AAMxB;IADN,QAAQ,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;wDACH;AAwC9B,SAAS,eAAe,CAAC,OAAgC;IACvD,MAAM,MAAM,GAAoB,EAAE,CAAC;IAEnC,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,WAAW,EAAE,CAAC;QACzC,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,IAAI,aAAa,EAAE,CAAC;YACxC,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBAClC,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACvC,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC3B,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,WAAgC,CAAC;IACtD,WAAW,CAAC,OAAO,CAAC,UAAW,EAAE,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC;AACvE,CAAC","sourcesContent":["import { consume } from '@lit/context';\nimport { adoptStyles, html, LitElement, nothing } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { until } from 'lit/directives/until.js';\nimport { addThemingController } from '../../theming/theming-controller.js';\nimport IgcAvatarComponent from '../avatar/avatar.js';\nimport { chatContext } from '../common/context.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport { partMap } from '../common/part-map.js';\nimport IgcTooltipComponent from '../tooltip/tooltip.js';\nimport type { ChatState } from './chat-state.js';\nimport IgcMessageAttachmentsComponent from './message-attachments.js';\nimport { styles } from './themes/message.base.css.js';\nimport { all } from './themes/message.js';\nimport { styles as shared } from './themes/shared/chat-message/chat-message.common.css.js';\nimport type { IgcMessage } from './types.js';\n\n/**\n * A chat message component for displaying individual messages in `<igc-chat>`.\n *\n * @element igc-chat-message\n *\n * @fires igcMessageReact - Fired when a message is reacted to.\n *\n * This component renders a single chat message including:\n * - Message text (sanitized)\n * - Attachments (if any)\n * - Custom templates for message content and actions (if provided via chat options)\n *\n * It distinguishes sent messages from received messages by comparing\n * the message sender with the current user ID from chat state.\n *\n * The message text is sanitized with DOMPurify before rendering,\n * and can be rendered with a markdown renderer if provided.\n */\nexport default class IgcChatMessageComponent extends LitElement {\n public static readonly tagName = 'igc-chat-message';\n public static override styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(\n IgcChatMessageComponent,\n IgcMessageAttachmentsComponent,\n IgcAvatarComponent,\n IgcTooltipComponent\n );\n }\n\n /**\n * Injected chat state context. Provides message data, user info, and options.\n */\n @consume({ context: chatContext, subscribe: true })\n private _chatState?: ChatState;\n\n /**\n * The chat message to render.\n */\n @property({ attribute: false })\n public message?: IgcMessage;\n\n constructor() {\n super();\n addThemingController(this, all);\n }\n\n protected override firstUpdated(): void {\n adoptPageStyles(this);\n }\n\n /**\n * Renders the chat message template.\n * - Applies 'sent' CSS class if the message sender matches current user.\n * - Uses markdown rendering if configured.\n * - Renders attachments and custom templates if provided.\n */\n protected override render() {\n const parts = {\n 'message-container': true,\n sent: this._chatState?.currentUserId === this.message?.sender,\n };\n\n return this.message && this._chatState?.chatRenderer\n ? html`\n <div part=${partMap(parts)}>\n ${until(this._chatState.chatRenderer.render(this.message))}\n </div>\n `\n : nothing;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-chat-message': IgcChatMessageComponent;\n }\n}\n\n// REVIEW: Maybe put that behind a configuration flag as this is nasty.\nfunction adoptPageStyles(message: IgcChatMessageComponent): void {\n const sheets: CSSStyleSheet[] = [];\n\n for (const sheet of document.styleSheets) {\n try {\n const constructed = new CSSStyleSheet();\n for (const rule of sheet.cssRules) {\n constructed.insertRule(rule.cssText);\n }\n sheets.push(constructed);\n } catch {}\n }\n\n const ctor = message.constructor as typeof LitElement;\n adoptStyles(message.shadowRoot!, [...ctor.elementStyles, ...sheets]);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"chat-message.js","sourceRoot":"","sources":["../../../src/components/chat/chat-message.ts"],"names":[],"mappings":"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","sourcesContent":["import { consume } from '@lit/context';\nimport { html, LitElement, nothing } from 'lit';\nimport { property } from 'lit/decorators.js';\nimport { cache } from 'lit/directives/cache.js';\nimport { until } from 'lit/directives/until.js';\nimport { addThemingController } from '../../theming/theming-controller.js';\nimport IgcIconButtonComponent from '../button/icon-button.js';\nimport { chatContext } from '../common/context.js';\nimport { registerComponent } from '../common/definitions/register.js';\nimport { partMap } from '../common/part-map.js';\nimport { isEmpty } from '../common/util.js';\nimport IgcTooltipComponent from '../tooltip/tooltip.js';\nimport type { ChatState } from './chat-state.js';\nimport IgcMessageAttachmentsComponent from './message-attachments.js';\nimport { styles } from './themes/message.base.css.js';\nimport { all } from './themes/message.js';\nimport { styles as shared } from './themes/shared/chat-message/chat-message.common.css.js';\nimport type {\n ChatTemplateRenderer,\n IgcMessage,\n MessageRendererContext,\n} from './types.js';\nimport { chatMessageAdoptPageStyles, showChatActionsTooltip } from './utils.js';\n\nconst LIKE_INACTIVE = 'thumb_up_inactive';\nconst LIKE_ACTIVE = 'thumb_up_active';\nconst DISLIKE_INACTIVE = 'thumb_down_inactive';\nconst DISLIKE_ACTIVE = 'thumb_down_active';\n\ntype DefaultMessageRenderers = {\n message: ChatTemplateRenderer<MessageRendererContext>;\n messageHeader: ChatTemplateRenderer<MessageRendererContext>;\n messageContent: ChatTemplateRenderer<MessageRendererContext>;\n messageAttachments: ChatTemplateRenderer<MessageRendererContext>;\n messageActions: ChatTemplateRenderer<MessageRendererContext>;\n};\n\n/**\n * A chat message component for displaying individual messages in `<igc-chat>`.\n *\n * @element igc-chat-message\n *\n * @fires igcMessageReact - Fired when a message is reacted to.\n *\n * This component renders a single chat message including:\n * - Message text (sanitized)\n * - Attachments (if any)\n * - Custom templates for message content and actions (if provided via chat options)\n *\n * It distinguishes sent messages from received messages by comparing\n * the message sender with the current user ID from chat state.\n *\n * The message text is sanitized with DOMPurify before rendering,\n * and can be rendered with a markdown renderer if provided.\n */\nexport default class IgcChatMessageComponent extends LitElement {\n public static readonly tagName = 'igc-chat-message';\n public static override styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(\n IgcChatMessageComponent,\n IgcMessageAttachmentsComponent,\n IgcIconButtonComponent,\n IgcTooltipComponent\n );\n }\n\n private readonly _defaults = Object.freeze<DefaultMessageRenderers>({\n message: () => this._renderMessage(),\n messageHeader: () => this._renderHeader(),\n messageContent: () => this._renderContent(),\n messageAttachments: () => this._renderAttachments(),\n messageActions: () => this._renderActions(),\n });\n\n @consume({ context: chatContext, subscribe: true })\n private readonly _state!: ChatState;\n\n /**\n * The chat message to render.\n */\n @property({ attribute: false })\n public message?: IgcMessage;\n\n constructor() {\n super();\n addThemingController(this, all);\n }\n\n protected override firstUpdated(): void {\n chatMessageAdoptPageStyles(this);\n }\n\n private _getRenderer(name: keyof DefaultMessageRenderers) {\n return this._state.options?.renderers\n ? (this._state.options.renderers[name] ?? this._defaults[name])\n : this._defaults[name];\n }\n\n private _handleMessageActionClick(event: PointerEvent): void {\n const targetButton = event.target as HTMLElement;\n const button = targetButton.closest(IgcIconButtonComponent.tagName);\n if (!button) return;\n\n let reaction = button.getAttribute('name');\n if (this.message) {\n if (reaction === LIKE_INACTIVE) {\n reaction = LIKE_ACTIVE;\n this.message.reactions = [reaction];\n } else if (reaction === DISLIKE_INACTIVE) {\n reaction = DISLIKE_ACTIVE;\n this.message.reactions = [reaction];\n } else if (reaction === this.message.reactions?.[0]) {\n reaction = null;\n this.message.reactions = [];\n }\n\n this.requestUpdate();\n }\n\n this._state.emitEvent('igcMessageReact', {\n detail: { message: this.message, reaction },\n });\n }\n\n private _renderHeader() {\n return nothing;\n }\n\n private _renderContent() {\n return this.message?.text\n ? html`<pre part=\"plain-text\">${this.message.text}</pre>`\n : nothing;\n }\n\n private _renderActions() {\n const isSent = this.message?.sender === this._state.currentUserId;\n const hasText = this.message?.text.trim();\n const hasAttachments =\n this.message?.attachments && !isEmpty(this.message?.attachments);\n const isTyping = this._state._isTyping;\n const isLastMessage = this.message === this._state.messages.at(-1);\n const resourceStrings = this._state.resourceStrings!;\n\n if (isSent || !(hasText || hasAttachments) || (isLastMessage && isTyping)) {\n return nothing;\n }\n\n return html`\n <div @click=${this._handleMessageActionClick}>\n ${this._renderActionButton(\n 'copy_content',\n resourceStrings.reactionCopy\n )}\n ${this._renderActionButton(\n this.message?.reactions?.includes(LIKE_ACTIVE)\n ? LIKE_ACTIVE\n : LIKE_INACTIVE,\n resourceStrings.reactionLike\n )}\n ${this._renderActionButton(\n this.message?.reactions?.includes(DISLIKE_ACTIVE)\n ? DISLIKE_ACTIVE\n : DISLIKE_INACTIVE,\n resourceStrings.reactionDislike\n )}\n ${this._renderActionButton(\n 'regenerate',\n resourceStrings.reactionRegenerate\n )}\n </div>\n `;\n }\n\n private _renderActionButton(name: string, tooltipMessage: string) {\n return html`\n <igc-icon-button\n id=${`${name}-button`}\n name=${name}\n variant=\"flat\"\n @pointerenter=${({ target }: PointerEvent) =>\n showChatActionsTooltip(target as Element, tooltipMessage)}\n @focus=${({ target }: FocusEvent) =>\n showChatActionsTooltip(target as Element, tooltipMessage)}\n ></igc-icon-button>\n `;\n }\n\n // Default rendering logic for attachments\n private _renderAttachments() {\n return isEmpty(this.message?.attachments ?? [])\n ? nothing\n : html`\n <igc-message-attachments\n .message=${this.message}\n ></igc-message-attachments>\n `;\n }\n\n private _renderMessage() {\n return this.message\n ? html`${this._renderHeader()}${this._renderContent()}${this._renderAttachments()}${this._renderActions()}`\n : nothing;\n }\n\n protected override render() {\n const ctx: MessageRendererContext = {\n message: this.message!,\n defaults: this._defaults,\n instance: this._state.host,\n };\n\n const parts = {\n 'message-container': true,\n sent: this._state.isCurrentUserMessage(this.message),\n };\n\n return html`\n ${cache(\n this.message\n ? html`\n <div part=${partMap(parts)}>\n ${cache(\n this._state.options?.renderers?.message\n ? html`${until(this._getRenderer('message')(ctx))}`\n : html`\n ${until(this._getRenderer('messageHeader')(ctx))}\n ${until(this._getRenderer('messageContent')(ctx))}\n ${until(this._getRenderer('messageAttachments')(ctx))}\n ${until(this._getRenderer('messageActions')(ctx))}\n `\n )}\n </div>\n `\n : nothing\n )}\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-chat-message': IgcChatMessageComponent;\n }\n}\n"]}
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { type Ref } from 'lit/directives/ref.js';
|
|
2
1
|
import type IgcTextareaComponent from '../textarea/textarea.js';
|
|
3
2
|
import type IgcChatComponent from './chat.js';
|
|
4
3
|
import type { IgcChatComponentEventMap } from './chat.js';
|
|
5
|
-
import {
|
|
6
|
-
import { type
|
|
4
|
+
import type { IgcChatOptions, IgcMessage, IgcMessageAttachment } from './types.js';
|
|
5
|
+
import { type ChatAcceptedFileTypes } from './utils.js';
|
|
7
6
|
/**
|
|
8
7
|
* Internal state manager for the `<igc-chat>` component.
|
|
9
8
|
*
|
|
@@ -11,6 +10,8 @@ import { type IgcChatOptions, type IgcChatTemplates, type IgcMessage, type IgcMe
|
|
|
11
10
|
*/
|
|
12
11
|
export declare class ChatState {
|
|
13
12
|
private readonly _host;
|
|
13
|
+
private readonly _contextUpdateFn;
|
|
14
|
+
private readonly _userInputContextUpdateFn;
|
|
14
15
|
/** Reference to the text area input component */
|
|
15
16
|
private _textArea;
|
|
16
17
|
/** The current list of messages */
|
|
@@ -29,80 +30,12 @@ export declare class ChatState {
|
|
|
29
30
|
private _suggestionsPosition;
|
|
30
31
|
/** Default time in milliseconds before dispatching stop typing event */
|
|
31
32
|
private _stopTypingDelay;
|
|
32
|
-
|
|
33
|
+
_isTyping: boolean;
|
|
33
34
|
private _lastTyped;
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
private readonly _attachmentsButtonInputRef;
|
|
39
|
-
private readonly _sharedTooltipRef;
|
|
40
|
-
private _chatRenderer?;
|
|
41
|
-
private resourceStrings;
|
|
42
|
-
/** Default templates of the chat components */
|
|
43
|
-
private _defaultTemplates;
|
|
44
|
-
/** The tooltip component used for showing action tooltips. */
|
|
45
|
-
private get _sharedTooltip();
|
|
46
|
-
private getIconName;
|
|
47
|
-
/**
|
|
48
|
-
* Default attachments area template used when no custom template is provided.
|
|
49
|
-
* Renders the list of input attachments as chips.
|
|
50
|
-
* @returns TemplateResult containing the attachments area
|
|
51
|
-
*/
|
|
52
|
-
private renderDefaultAttachmentsArea;
|
|
53
|
-
/**
|
|
54
|
-
* Default text area template used when no custom template is provided.
|
|
55
|
-
* Renders a text area for user input.
|
|
56
|
-
* @returns TemplateResult containing the text area
|
|
57
|
-
*/
|
|
58
|
-
private renderDefaultTextArea;
|
|
59
|
-
/**
|
|
60
|
-
* Default file upload button template used when no custom template is provided.
|
|
61
|
-
* Renders a file input for attaching files.
|
|
62
|
-
* @returns TemplateResult containing the file upload button
|
|
63
|
-
*/
|
|
64
|
-
private renderDefaultFileUploadButton;
|
|
65
|
-
/**
|
|
66
|
-
* Default send button template used when no custom template is provided.
|
|
67
|
-
* Renders a send button that submits the current input value and attachments.
|
|
68
|
-
* @returns TemplateResult containing the send button
|
|
69
|
-
*/
|
|
70
|
-
private renderDefaultSendButton;
|
|
71
|
-
private renderDefaultActionsArea;
|
|
72
|
-
/**
|
|
73
|
-
* Default typing indicator template used when no custom template is provided.
|
|
74
|
-
* Renders a simple typing indicator with three dots.
|
|
75
|
-
* @returns TemplateResult containing the typing indicator
|
|
76
|
-
*/
|
|
77
|
-
private renderDefaultTypingIndicator;
|
|
78
|
-
/**
|
|
79
|
-
* Default message template used when no custom template is provided.
|
|
80
|
-
* Renders the message text, sanitized for security.
|
|
81
|
-
* @param message The chat message to render
|
|
82
|
-
* @returns TemplateResult containing the rendered message
|
|
83
|
-
*/
|
|
84
|
-
private renderDefaultMessageTemplate;
|
|
85
|
-
private renderDefaultAttachmentHeaderText;
|
|
86
|
-
private handleHeaderClick;
|
|
87
|
-
/**
|
|
88
|
-
* Default attachment header template used when no custom template is provided.
|
|
89
|
-
* Renders the attachment icon and name.
|
|
90
|
-
* @param attachment The message attachment to render
|
|
91
|
-
* @returns TemplateResult containing the rendered attachment header
|
|
92
|
-
*/
|
|
93
|
-
private renderDefaultAttachmentHeader;
|
|
94
|
-
/**
|
|
95
|
-
* Default attachment content template used when no custom template is provided.
|
|
96
|
-
* Renders the attachment content based on its type.
|
|
97
|
-
* @param attachment The message attachment to render
|
|
98
|
-
* @returns TemplateResult containing the rendered attachment content
|
|
99
|
-
*/
|
|
100
|
-
private renderDefaultAttachmentContent;
|
|
101
|
-
private renderDefaultMessageActionsTemplate;
|
|
102
|
-
private handleMessageActionClick;
|
|
103
|
-
private renderDefaultAttachmentTemplate;
|
|
104
|
-
private renderDefaultAttachmentsTemplate;
|
|
105
|
-
private showTooltip;
|
|
35
|
+
resourceStrings: import("../common/i18n/chat.resources.js").IgcChatResourceStrings;
|
|
36
|
+
get host(): IgcChatComponent;
|
|
37
|
+
get acceptedFileTypes(): ChatAcceptedFileTypes | null;
|
|
38
|
+
get disableAutoScroll(): boolean;
|
|
106
39
|
/**
|
|
107
40
|
* Gets the list of chat messages.
|
|
108
41
|
*/
|
|
@@ -139,10 +72,6 @@ export declare class ChatState {
|
|
|
139
72
|
* Sets the text area component.
|
|
140
73
|
*/
|
|
141
74
|
set textArea(value: IgcTextareaComponent);
|
|
142
|
-
/**
|
|
143
|
-
* Gets the text area component.
|
|
144
|
-
*/
|
|
145
|
-
get textAreaRef(): Ref<IgcTextareaComponent>;
|
|
146
75
|
/**
|
|
147
76
|
* Gets the list of attachments currently attached to input.
|
|
148
77
|
*/
|
|
@@ -159,92 +88,43 @@ export declare class ChatState {
|
|
|
159
88
|
* Sets the current input value and requests host update.
|
|
160
89
|
*/
|
|
161
90
|
set inputValue(value: string);
|
|
162
|
-
|
|
163
|
-
get
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
* Handles input text changes.
|
|
170
|
-
* Updates internal inputValue and emits 'igcInputChange' event.
|
|
171
|
-
* @param e Input event from the text area
|
|
172
|
-
*/
|
|
173
|
-
private handleInput;
|
|
174
|
-
/**
|
|
175
|
-
* Creates an instance of ChatState.
|
|
176
|
-
* @param chat The host `<igc-chat>` component.
|
|
177
|
-
*/
|
|
178
|
-
constructor(chat: IgcChatComponent);
|
|
179
|
-
/**
|
|
180
|
-
* Emits a custom event from the host component.
|
|
181
|
-
* @param name Event name (key of IgcChatComponentEventMap)
|
|
182
|
-
* @param args Event detail or options
|
|
183
|
-
* @returns true if event was not canceled, false otherwise
|
|
184
|
-
*/
|
|
185
|
-
emitEvent: (name: keyof IgcChatComponentEventMap, args?: any) => boolean;
|
|
91
|
+
get hasInputValue(): boolean;
|
|
92
|
+
get hasInputAttachments(): boolean;
|
|
93
|
+
constructor(chat: IgcChatComponent, contextUpdateFn: () => unknown, userInputContextUpdateFn: () => unknown);
|
|
94
|
+
isCurrentUserMessage(message?: IgcMessage): boolean;
|
|
95
|
+
emitEvent(name: keyof IgcChatComponentEventMap, args?: any): boolean;
|
|
96
|
+
protected _createMessage(message: Partial<IgcMessage>): IgcMessage;
|
|
97
|
+
addMessage(message: Partial<IgcMessage>): void;
|
|
186
98
|
/**
|
|
187
99
|
* Adds a new chat message.
|
|
188
100
|
* Emits 'igcMessageCreated' event which can be canceled to prevent adding.
|
|
189
101
|
* Clears input value and attachments on success.
|
|
190
|
-
* @
|
|
102
|
+
* @internal
|
|
191
103
|
*/
|
|
192
|
-
|
|
193
|
-
id?: string;
|
|
194
|
-
text: string;
|
|
195
|
-
sender?: string;
|
|
196
|
-
timestamp?: Date;
|
|
197
|
-
attachments?: IgcMessageAttachment[];
|
|
198
|
-
}) => void;
|
|
104
|
+
addMessageWithEvent(message: Partial<IgcMessage>): void;
|
|
199
105
|
/**
|
|
200
106
|
* Adds files as attachments to the input.
|
|
201
107
|
* Emits 'igcAttachmentChange' event which can be canceled to prevent adding.
|
|
202
108
|
* @param files Array of File objects to attach
|
|
203
109
|
*/
|
|
204
110
|
attachFiles(files: File[]): void;
|
|
205
|
-
private getURL;
|
|
206
|
-
private isImageAttachment;
|
|
207
|
-
private _fileIconMap;
|
|
208
|
-
private getFileExtension;
|
|
209
111
|
handleKeyDown: (e: KeyboardEvent) => void;
|
|
210
|
-
|
|
211
|
-
private handleBlur;
|
|
212
|
-
private sendMessage;
|
|
213
|
-
private handleFileUpload;
|
|
112
|
+
sendMessage: () => void;
|
|
214
113
|
/**
|
|
215
114
|
* Removes an attachment by index.
|
|
216
115
|
* Emits 'igcAttachmentChange' event which can be canceled to prevent removal.
|
|
217
116
|
* @param index Index of the attachment to remove
|
|
218
117
|
*/
|
|
219
|
-
|
|
118
|
+
removeAttachment: (index: number) => void;
|
|
220
119
|
/**
|
|
221
120
|
* Handles when a suggestion is clicked.
|
|
222
121
|
* Adds the suggestion as a new message and focuses the text area.
|
|
223
122
|
* @param suggestion The suggestion string clicked
|
|
224
123
|
*/
|
|
225
124
|
handleSuggestionClick: (suggestion: string) => void;
|
|
226
|
-
/**
|
|
227
|
-
* Updates the chat options partially.
|
|
228
|
-
* @param options Partial options to merge with current options
|
|
229
|
-
*/
|
|
230
|
-
updateOptions(options: Partial<IgcChatOptions>): void;
|
|
231
125
|
/**
|
|
232
126
|
* Updates the internal cache for accepted file types.
|
|
233
127
|
* Parses the acceptedFiles string option into extensions, mimeTypes, and wildcard types.
|
|
234
128
|
*/
|
|
235
|
-
updateAcceptedTypesCache
|
|
236
|
-
/**
|
|
237
|
-
* Checks if a file's type or extension is accepted by the chat's acceptedFiles setting.
|
|
238
|
-
* @param file File object to check
|
|
239
|
-
* @param type Optional MIME type override if no file provided
|
|
240
|
-
* @returns True if accepted, false otherwise
|
|
241
|
-
*/
|
|
242
|
-
isFileTypeAccepted: (file: File, type?: string) => boolean;
|
|
243
|
-
/**
|
|
244
|
-
* Checks if a slot is empty.
|
|
245
|
-
* @param name Slot name to check
|
|
246
|
-
* @returns True if the slot has content, false otherwise
|
|
247
|
-
*/
|
|
248
|
-
hasSlotContent(name: string): boolean;
|
|
129
|
+
updateAcceptedTypesCache(): void;
|
|
249
130
|
}
|
|
250
|
-
export declare function createChatState(host: IgcChatComponent): ChatState;
|