igniteui-webcomponents 6.3.0-alpha.1 → 6.3.0-beta.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/CHANGELOG.md +27 -0
- package/components/accordion/themes/accordion.base.css.js +1 -1
- package/components/accordion/themes/accordion.base.css.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/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/calendar/calendar.d.ts +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/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/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 +186 -72
- package/components/chat/chat-input.js.map +1 -1
- package/components/chat/chat-message.d.ts +17 -2
- package/components/chat/chat-message.js +126 -26
- package/components/chat/chat-message.js.map +1 -1
- package/components/chat/chat-state.d.ts +18 -135
- package/components/chat/chat-state.js +56 -398
- package/components/chat/chat-state.js.map +1 -1
- package/components/chat/chat.d.ts +36 -64
- package/components/chat/chat.js +163 -119
- package/components/chat/chat.js.map +1 -1
- package/components/chat/extras/markdown-renderer.d.ts +23 -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 +23 -5
- package/components/chat/message-attachments.js +94 -12
- 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.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 +26 -133
- package/components/chat/types.js +1 -14
- package/components/chat/types.js.map +1 -1
- package/components/chat/utils.d.ts +16 -0
- package/components/chat/utils.js +86 -0
- package/components/chat/utils.js.map +1 -0
- package/components/checkbox/checkbox-base.d.ts +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/themes/shared/chip.indigo.css.js +1 -1
- package/components/chip/themes/shared/chip.indigo.css.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/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/util.d.ts +8 -0
- package/components/common/util.js +33 -1
- package/components/common/util.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/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/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/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/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/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 +12 -15
- 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/icon/icon-references.js +130 -0
- package/components/icon/icon-references.js.map +1 -1
- package/components/icon/internal-icons-lib.js +66 -0
- package/components/icon/internal-icons-lib.js.map +1 -1
- package/components/input/input.d.ts +0 -4
- package/components/input/input.js +9 -11
- 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/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/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/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/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/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/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/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/select/select.js +0 -1
- 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/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/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/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/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/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/tooltip/themes/tooltip.base.css.js +1 -1
- package/components/tooltip/themes/tooltip.base.css.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/custom-elements.json +24401 -24643
- 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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-state.js","sourceRoot":"","sources":["../../../src/components/chat/chat-state.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, nothing, type TemplateResult } from 'lit';\nimport { ifDefined } from 'lit/directives/if-defined.js';\nimport { createRef, type Ref, ref } from 'lit/directives/ref.js';\nimport { enterKey } from '../common/controllers/key-bindings.js';\nimport { IgcChatResourceStringEN } from '../common/i18n/chat.resources.js';\nimport { partMap } from '../common/part-map.js';\nimport { registerIconFromText } from '../icon/icon.registry.js';\nimport type IgcTextareaComponent from '../textarea/textarea.js';\nimport type IgcTooltipComponent from '../tooltip/tooltip.js';\nimport type IgcChatComponent from './chat.js';\nimport type { IgcChatComponentEventMap } from './chat.js';\nimport { DefaultChatRenderer } from './chat-renderer.js';\nimport { PlainTextRenderer } from './plain-text-renderer.js';\nimport {\n copyIcon,\n type IgcChatOptions,\n type IgcChatTemplates,\n type IgcMessage,\n type IgcMessageAttachment,\n regenerateIcon,\n thumbDownIcon,\n thumbUpIcon,\n} from './types.js';\n\n/**\n * Internal state manager for the `<igc-chat>` component.\n *\n * Manages messages, input value, attachments, options, and event emissions.\n */\nexport class ChatState {\n //#region Internal properties and state /** The host `<igc-chat>` component instance */\n private readonly _host: IgcChatComponent;\n /** Reference to the text area input component */\n private _textArea: IgcTextareaComponent | null = null;\n /** The current list of messages */\n private _messages: IgcMessage[] = [];\n /** Chat options/configuration */\n private _options?: IgcChatOptions;\n /** List of current input attachments */\n private _inputAttachments: IgcMessageAttachment[] = [];\n /** Current input text */\n private _inputValue = '';\n /**\n * Cache of accepted file types, organized into extensions, mimeTypes, and wildcardTypes\n */\n private _acceptedTypesCache: {\n extensions: Set<string>;\n mimeTypes: Set<string>;\n wildcardTypes: Set<string>;\n } | null = null;\n /** Default position of the suggestions */\n private _suggestionsPosition: 'below-input' | 'below-messages' =\n 'below-messages';\n /** Default time in milliseconds before dispatching stop typing event */\n private _stopTypingDelay = 3000;\n\n private _isTyping = false;\n private _lastTyped = Date.now();\n\n private _fileIcon = new URL('./assets/file.png', import.meta.url).href;\n private _jsonIcon = new URL('./assets/json.png', import.meta.url).href;\n private _linkIcon = new URL('./assets/link.png', import.meta.url).href;\n\n private readonly _textAreaRef = createRef<IgcTextareaComponent>();\n private readonly _attachmentsButtonInputRef = createRef<HTMLInputElement>();\n private readonly _sharedTooltipRef = createRef<IgcTooltipComponent>();\n\n private _chatRenderer?: DefaultChatRenderer;\n private resourceStrings = IgcChatResourceStringEN;\n\n /** Default templates of the chat components */\n private _defaultTemplates: Required<IgcChatTemplates> = {\n attachmentTemplate: (att: IgcMessageAttachment, m: IgcMessage) =>\n this.renderDefaultAttachmentTemplate(att, m),\n attachmentsTemplate: (\n m: IgcMessage,\n _ctx: { templates: Partial<IgcChatTemplates> }\n ) => this.renderDefaultAttachmentsTemplate(m),\n attachmentHeaderTemplate: (att: IgcMessageAttachment, msg: IgcMessage) =>\n this.renderDefaultAttachmentHeader(att, msg),\n attachmentContentTemplate: (att: IgcMessageAttachment) =>\n this.renderDefaultAttachmentContent(att),\n messageAuthorTemplate: () => {},\n messageTemplate: (\n m: IgcMessage,\n ctx: { textContent: unknown; templates: Partial<IgcChatTemplates> }\n ) => this.renderDefaultMessageTemplate(m, ctx),\n messageActionsTemplate: (message: IgcMessage) =>\n this.renderDefaultMessageActionsTemplate(message),\n suggestionPrefixTemplate: () => {},\n typingIndicatorTemplate: () => this.renderDefaultTypingIndicator(),\n textInputTemplate: () => this.renderDefaultTextArea(),\n textAreaActionsTemplate: () => this.renderDefaultActionsArea(),\n textAreaAttachmentsTemplate: (attachments: IgcMessageAttachment[]) =>\n this.renderDefaultAttachmentsArea(attachments),\n };\n\n /** The tooltip component used for showing action tooltips. */\n private get _sharedTooltip(): IgcTooltipComponent | undefined {\n return this._sharedTooltipRef?.value;\n }\n\n private getIconName(fileType: string | undefined): string {\n if (fileType?.startsWith('image')) {\n return 'file-image';\n }\n return 'file-document';\n }\n //#endregion\n\n // #region Default renderers\n\n /**\n * Default attachments area template used when no custom template is provided.\n * Renders the list of input attachments as chips.\n * @returns TemplateResult containing the attachments area\n */\n private renderDefaultAttachmentsArea = (\n attachments: IgcMessageAttachment[]\n ): TemplateResult => {\n return html`${attachments?.map(\n (attachment, index) => html`\n <div part=\"attachment-wrapper\" role=\"listitem\">\n <igc-chip removable @igcRemove=${() => this.removeAttachment(index)}>\n <igc-icon\n slot=\"prefix\"\n name=${this.getIconName(attachment.file?.type ?? attachment.type)}\n collection=\"material\"\n ></igc-icon>\n <span part=\"attachment-name\">${attachment.name}</span>\n </igc-chip>\n </div>\n `\n )} `;\n };\n\n /**\n * Default text area template used when no custom template is provided.\n * Renders a text area for user input.\n * @returns TemplateResult containing the text area\n */\n private renderDefaultTextArea = (): TemplateResult => {\n return html` <igc-textarea\n part=\"text-input\"\n ${ref(this._textAreaRef)}\n .placeholder=${this.options?.inputPlaceholder}\n resize=\"auto\"\n rows=\"1\"\n .value=${this.inputValue}\n @igcInput=${this.handleInput}\n @focus=${this.handleFocus}\n @blur=${this.handleBlur}\n ></igc-textarea>`;\n };\n\n /**\n * Default file upload button template used when no custom template is provided.\n * Renders a file input for attaching files.\n * @returns TemplateResult containing the file upload button\n */\n private renderDefaultFileUploadButton = (): TemplateResult => {\n if (this.options?.disableInputAttachments) return html``;\n return html`\n <label for=\"input_attachments\" part=\"upload-button\">\n <igc-icon-button\n variant=\"flat\"\n name=\"attachment\"\n collection=\"material\"\n @click=${() => this._attachmentsButtonInputRef?.value?.click()}\n ></igc-icon-button>\n <input\n type=\"file\"\n id=\"input_attachments\"\n name=\"input_attachments\"\n ${ref(this._attachmentsButtonInputRef)}\n multiple\n accept=${ifDefined(this.options?.acceptedFiles === '' ? undefined : this.options?.acceptedFiles)}\n @change=${this.handleFileUpload}>\n </input>\n </label>\n `;\n };\n\n /**\n * Default send button template used when no custom template is provided.\n * Renders a send button that submits the current input value and attachments.\n * @returns TemplateResult containing the send button\n */\n private renderDefaultSendButton = (): TemplateResult => {\n return html` <igc-icon-button\n aria-label=\"Send message\"\n name=\"send-message\"\n collection=\"material\"\n variant=\"contained\"\n part=\"send-button\"\n ?disabled=${!this.inputValue.trim() && this.inputAttachments.length === 0}\n @click=${this.sendMessage}\n ></igc-icon-button>`;\n };\n\n private renderDefaultActionsArea = () => {\n return html` ${this.renderDefaultFileUploadButton()}\n ${this.renderDefaultSendButton()}`;\n };\n /**\n * Default typing indicator template used when no custom template is provided.\n * Renders a simple typing indicator with three dots.\n * @returns TemplateResult containing the typing indicator\n */\n private renderDefaultTypingIndicator = (): TemplateResult => {\n return html`<div part=\"typing-indicator\">\n <div part=\"typing-dot\"></div>\n <div part=\"typing-dot\"></div>\n <div part=\"typing-dot\"></div>\n </div>`;\n };\n\n /**\n * Default message template used when no custom template is provided.\n * Renders the message text, sanitized for security.\n * @param message The chat message to render\n * @returns TemplateResult containing the rendered message\n */\n private renderDefaultMessageTemplate = (\n m: IgcMessage,\n ctx: { textContent: unknown; templates: Partial<IgcChatTemplates> }\n ) => {\n const templates = { ...this._defaultTemplates, ...ctx.templates };\n return html`\n ${templates.messageAuthorTemplate(m) ?? nothing}\n ${ctx?.textContent ?? m.text}\n ${m.attachments?.length\n ? html`<igc-message-attachments .message=${m}>\n </igc-message-attachments>`\n : nothing}\n ${templates.messageActionsTemplate(m) ?? nothing}\n `;\n };\n\n private renderDefaultAttachmentHeaderText(\n attachment: IgcMessageAttachment,\n message: IgcMessage\n ) {\n return html`\n ${html`${message.sender !== this.currentUserId\n ? html`${attachment.type === 'image' ||\n attachment.file?.type.startsWith('image/')\n ? html`<igc-icon\n name=\"image\"\n collection=\"material\"\n part=\"attachment-icon\"\n ></igc-icon>`\n : html`<igc-icon\n name=\"file\"\n collection=\"material\"\n part=\"attachment-icon\"\n ></igc-icon>`}`\n : nothing} <span part=\"file-name\">${attachment.name}</span>`}\n `;\n }\n\n private handleHeaderClick(attachment: IgcMessageAttachment) {\n this.emitEvent('igcAttachmentClick', { detail: attachment });\n }\n /**\n * Default attachment header template used when no custom template is provided.\n * Renders the attachment icon and name.\n * @param attachment The message attachment to render\n * @returns TemplateResult containing the rendered attachment header\n */\n private renderDefaultAttachmentHeader = (\n attachment: IgcMessageAttachment,\n message: IgcMessage\n ) => {\n return this.renderDefaultAttachmentHeaderText(attachment, message);\n };\n\n /**\n * Default attachment content template used when no custom template is provided.\n * Renders the attachment content based on its type.\n * @param attachment The message attachment to render\n * @returns TemplateResult containing the rendered attachment content\n */\n private renderDefaultAttachmentContent = (\n attachment: IgcMessageAttachment\n ) => {\n const ext = this.getFileExtension(attachment.name);\n const isImage = this.isImageAttachment(attachment);\n const url = isImage\n ? this.getURL(attachment)\n : (this._fileIconMap[ext] ?? this._fileIconMap['default']);\n const partName = isImage ? 'image-attachment' : 'file-attachment';\n return html`<img part=\"${partName}\" src=${url} alt=${attachment.name} />`;\n };\n\n private renderDefaultMessageActionsTemplate = (\n message: IgcMessage\n ): unknown => {\n const isLastMessage = message === this.messages.at(-1);\n return message?.sender !== this.currentUserId &&\n message?.text.trim() &&\n (!isLastMessage || !this._isTyping)\n ? html`<div>\n <igc-icon-button\n id=\"copy-response-button\"\n @pointerenter=${(ev: PointerEvent) =>\n this.showTooltip(ev, this.resourceStrings.reactionCopyResponse)}\n name=\"copy-response\"\n collection=\"material\"\n variant=\"flat\"\n @click=${(e: MouseEvent) =>\n this.handleMessageActionClick(e, message)}\n ></igc-icon-button>\n <igc-icon-button\n id=\"good-response-button\"\n @pointerenter=${(ev: PointerEvent) =>\n this.showTooltip(ev, this.resourceStrings.reactionGoodResponse)}\n name=\"good-response\"\n collection=\"material\"\n variant=\"flat\"\n @click=${(e: MouseEvent) =>\n this.handleMessageActionClick(e, message)}\n ></igc-icon-button>\n <igc-icon-button\n id=\"bad-response-button\"\n @pointerenter=${(ev: PointerEvent) =>\n this.showTooltip(ev, this.resourceStrings.reactionBadResponse)}\n name=\"bad-response\"\n variant=\"flat\"\n collection=\"material\"\n @click=${(e: MouseEvent) =>\n this.handleMessageActionClick(e, message)}\n ></igc-icon-button>\n <igc-icon-button\n id=\"redo-button\"\n @pointerenter=${(ev: PointerEvent) =>\n this.showTooltip(ev, this.resourceStrings.reactionRedo)}\n name=\"redo\"\n variant=\"flat\"\n collection=\"material\"\n @click=${(e: MouseEvent) =>\n this.handleMessageActionClick(e, message)}\n ></igc-icon-button>\n <igc-tooltip\n id=\"sharedTooltip\"\n ${ref(this._sharedTooltipRef)}\n ></igc-tooltip>\n </div>`\n : nothing;\n };\n\n private handleMessageActionClick = (\n event: MouseEvent,\n message: IgcMessage\n ): void => {\n const reaction = (event.target as HTMLElement).getAttribute('name');\n this.emitEvent('igcMessageReact', {\n detail: { message, reaction },\n });\n };\n\n private renderDefaultAttachmentTemplate = (\n att: IgcMessageAttachment,\n msg: IgcMessage\n ) => {\n const isCurrentUser = msg.sender === this.currentUserId;\n const attachmentParts = {\n attachment: true,\n sent: isCurrentUser,\n };\n const contentParts = {\n 'attachment-content': true,\n sent: isCurrentUser,\n };\n const headerParts = {\n 'attachment-header': true,\n sent: isCurrentUser,\n };\n\n const content = html`<div part=${partMap(contentParts)}>\n ${this.mergedTemplates.attachmentContentTemplate(att)}\n </div>`;\n const header = html` <div\n part=${partMap(headerParts)}\n role=\"button\"\n @click=${() => this.handleHeaderClick(att)}\n >\n <div part=\"details\">\n ${this.mergedTemplates.attachmentHeaderTemplate(att, msg)}\n </div>\n </div>`;\n\n return html`<div part=${partMap(attachmentParts)}>\n ${isCurrentUser ? content : nothing} ${header}\n ${!isCurrentUser ? content : nothing}\n </div> `;\n };\n\n private renderDefaultAttachmentsTemplate = (m: IgcMessage) => {\n return html`\n ${(m.attachments ?? []).map((att: IgcMessageAttachment) =>\n this.mergedTemplates.attachmentTemplate(att, m)\n ) || nothing}\n `;\n };\n\n private showTooltip(ev: PointerEvent, text: string) {\n if (!this._sharedTooltip) return;\n this._sharedTooltip.message = text;\n this._sharedTooltip.hideDelay = 300;\n this._sharedTooltip.show(ev.composedPath()[0] as any);\n }\n\n // #endregion\n\n //#region Public properties\n /**\n * Gets the list of chat messages.\n */\n public get messages(): IgcMessage[] {\n return this._messages;\n }\n\n /**\n * Sets the list of chat messages.\n */\n public set messages(value: IgcMessage[]) {\n this._messages = value;\n this._host.requestUpdate();\n }\n\n /**\n * Gets current chat options.\n */\n public get options(): IgcChatOptions | undefined {\n return this._options;\n }\n\n /**\n * Sets chat options and requests host update.\n */\n public set options(value: IgcChatOptions) {\n this._options = value;\n this._host.requestUpdate();\n // Notify context consumers about the state change\n if (this._host.updateContextValue) {\n this._host.updateContextValue();\n }\n }\n\n /**\n * Gets the current user ID from options or returns 'user' as fallback.\n */\n public get currentUserId(): string {\n return this._options?.currentUserId ?? 'user';\n }\n\n /**\n * Gets the current suggestionsPosition from options or returns the default value 'below-messages'.\n */\n public get suggestionsPosition(): string {\n return this._options?.suggestionsPosition ?? this._suggestionsPosition;\n }\n\n /**\n * Gets the current stopTypingDelay from options or returns the default value `3000`.\n */\n public get stopTypingDelay(): number {\n return this._options?.stopTypingDelay ?? this._stopTypingDelay;\n }\n\n /**\n * Gets the text area component.\n */\n public get textArea(): IgcTextareaComponent | null {\n return this._textArea;\n }\n\n /**\n * Sets the text area component.\n */\n public set textArea(value: IgcTextareaComponent) {\n this._textArea = value;\n }\n\n /**\n * Gets the text area component.\n */\n public get textAreaRef(): Ref<IgcTextareaComponent> {\n return this._textAreaRef;\n }\n\n /**\n * Gets the list of attachments currently attached to input.\n */\n public get inputAttachments(): IgcMessageAttachment[] {\n return this._inputAttachments;\n }\n\n /**\n * Sets the input attachments and requests host update.\n */\n public set inputAttachments(value: IgcMessageAttachment[]) {\n this._inputAttachments = value;\n this._host.requestUpdate(); // Notify the host component to re-render\n // Notify context consumers about the state change\n if (this._host.updateContextValue) {\n this._host.updateContextValue();\n }\n }\n\n /**\n * Gets the current input value.\n */\n public get inputValue(): string {\n return this._inputValue;\n }\n\n /**\n * Sets the current input value and requests host update.\n */\n public set inputValue(value: string) {\n this._inputValue = value;\n this._host.requestUpdate();\n // Notify context consumers about the state change\n if (this._host.updateContextValue) {\n this._host.updateContextValue();\n }\n }\n\n /** Returns all default templates applied in the chat component. */\n public get defaultTemplates(): Required<IgcChatTemplates> {\n return this._defaultTemplates;\n }\n\n /** Sets the default templates applied in the chat component. */\n public set defaultTemplates(templates: Required<IgcChatTemplates>) {\n this._defaultTemplates = { ...templates };\n }\n\n public get mergedTemplates(): Required<IgcChatTemplates> {\n return { ...this._defaultTemplates, ...this.options?.templates };\n }\n\n public get chatRenderer(): DefaultChatRenderer | undefined {\n if (\n !this._chatRenderer ||\n this._chatRenderer !== this.options?.messageRenderer\n ) {\n this._chatRenderer = new DefaultChatRenderer(\n this.options?.messageRenderer ?? new PlainTextRenderer(),\n this.mergedTemplates\n );\n this.options?.messageRenderer?.init?.();\n }\n return this._chatRenderer;\n }\n\n /**\n * Handles input text changes.\n * Updates internal inputValue and emits 'igcInputChange' event.\n * @param e Input event from the text area\n */\n private handleInput = ({ detail }: CustomEvent<string>) => {\n if (detail === this.inputValue) return;\n\n this.inputValue = detail;\n this.emitEvent('igcInputChange', { detail: { value: this.inputValue } });\n };\n //#endregion\n\n /**\n * Creates an instance of ChatState.\n * @param chat The host `<igc-chat>` component.\n */\n constructor(chat: IgcChatComponent) {\n this._host = chat;\n registerIconFromText('copy-response', copyIcon, 'material');\n registerIconFromText('good-response', thumbUpIcon, 'material');\n registerIconFromText('bad-response', thumbDownIcon, 'material');\n registerIconFromText('redo', regenerateIcon, 'material');\n }\n\n //#region Event handlers\n\n /**\n * Emits a custom event from the host component.\n * @param name Event name (key of IgcChatComponentEventMap)\n * @param args Event detail or options\n * @returns true if event was not canceled, false otherwise\n */\n public emitEvent = (name: keyof IgcChatComponentEventMap, args?: any) => {\n return this._host.emitEvent(name, args);\n };\n\n // /**\n // * Handles input text changes.\n // * Updates internal inputValue and emits 'igcInputChange' event.\n // * @param e Input event from the text area\n // */\n // private handleInputChange = (value: string): void => {\n // if (value === this.inputValue) return;\n\n // this.inputValue = value;\n // this.emitEvent('igcInputChange', { detail: { value: this.inputValue } });\n // };\n\n //#endregion\n\n //#region Public API\n\n /**\n * Adds a new chat message.\n * Emits 'igcMessageCreated' event which can be canceled to prevent adding.\n * Clears input value and attachments on success.\n * @param message Partial message object with optional id, sender, timestamp\n */\n public addMessage = (message: {\n id?: string;\n text: string;\n sender?: string;\n timestamp?: Date;\n attachments?: IgcMessageAttachment[];\n }): void => {\n const newMessage: IgcMessage = {\n id: message.id ?? Date.now().toString(),\n text: message.text,\n sender: message.sender ?? this.currentUserId,\n timestamp: message.timestamp ?? new Date(),\n attachments: message.attachments || [],\n };\n\n const allowed = this.emitEvent('igcMessageCreated', {\n detail: newMessage,\n cancelable: true,\n });\n\n if (allowed) {\n if (!this.messages.some((msg) => msg.id === newMessage.id)) {\n this.messages = [...this.messages, newMessage];\n }\n this.inputValue = '';\n this.inputAttachments = [];\n }\n };\n\n /**\n * Adds files as attachments to the input.\n * Emits 'igcAttachmentChange' event which can be canceled to prevent adding.\n * @param files Array of File objects to attach\n */\n public attachFiles(files: File[]) {\n const newAttachments: IgcMessageAttachment[] = [];\n let count = this.inputAttachments.length;\n files.forEach((file) => {\n if (this.inputAttachments.find((a) => a.name === file.name)) {\n return;\n }\n\n const isImage = file.type.startsWith('image/');\n newAttachments.push({\n id: Date.now().toString() + count++,\n url: URL.createObjectURL(file),\n name: file.name,\n file: file,\n thumbnail: isImage ? URL.createObjectURL(file) : undefined,\n });\n });\n\n const allowed = this.emitEvent('igcAttachmentChange', {\n detail: [...this.inputAttachments, ...newAttachments],\n cancelable: true,\n });\n if (allowed) {\n this.inputAttachments = [...this.inputAttachments, ...newAttachments];\n }\n }\n\n private getURL = (attachment: IgcMessageAttachment): string => {\n if (attachment.url) {\n return attachment.url;\n }\n if (attachment.file) {\n return URL.createObjectURL(attachment.file);\n }\n return '';\n };\n\n private isImageAttachment(attachment: IgcMessageAttachment): boolean {\n return (\n attachment.type === 'image' ||\n !!attachment.file?.type.startsWith('image/')\n );\n }\n\n private _fileIconMap: Record<string, string> = {\n pdf: this._fileIcon,\n doc: this._fileIcon,\n docx: this._fileIcon,\n xls: this._fileIcon,\n xlsx: this._fileIcon,\n txt: this._fileIcon,\n json: this._jsonIcon,\n link: this._linkIcon,\n default: this._fileIcon, // A fallback icon\n };\n\n private getFileExtension(fileName: string): string {\n const parts = fileName.split('.');\n if (parts.length > 1) {\n return parts.pop()!.toLowerCase();\n }\n return '';\n }\n\n public handleKeyDown = (e: KeyboardEvent) => {\n if (e.key.toLowerCase() === enterKey.toLowerCase() && !e.shiftKey) {\n e.preventDefault();\n this.sendMessage();\n } else {\n this._lastTyped = Date.now();\n if (!this._isTyping) {\n this.emitEvent('igcTypingChange', {\n detail: { isTyping: true },\n });\n this._isTyping = true;\n }\n\n const stopTypingDelay = this.stopTypingDelay;\n setTimeout(() => {\n if (\n this._isTyping &&\n stopTypingDelay &&\n this._lastTyped + stopTypingDelay < Date.now()\n ) {\n this.emitEvent('igcTypingChange', {\n detail: { isTyping: false },\n });\n this._isTyping = false;\n }\n }, stopTypingDelay);\n }\n };\n\n private handleFocus = () => {\n this.emitEvent('igcInputFocus');\n };\n\n private handleBlur = () => {\n this.emitEvent('igcInputBlur');\n };\n\n private sendMessage = () => {\n if (!this.inputValue.trim() && this.inputAttachments.length === 0) return;\n\n this.addMessage({\n text: this.inputValue,\n attachments: this.inputAttachments,\n });\n this.inputValue = '';\n\n if (this._textArea) {\n this._textArea.style.height = 'auto';\n }\n\n this._host.updateComplete.then(() => {\n this._textArea?.focus();\n });\n };\n\n private handleFileUpload = (e: Event) => {\n const input = e.target as HTMLInputElement;\n if (!input.files || input.files.length === 0) return;\n\n const files = Array.from(input.files);\n this.attachFiles(files);\n this._host.requestUpdate();\n };\n\n /**\n * Removes an attachment by index.\n * Emits 'igcAttachmentChange' event which can be canceled to prevent removal.\n * @param index Index of the attachment to remove\n */\n private removeAttachment = (index: number): void => {\n const allowed = this.emitEvent('igcAttachmentChange', {\n detail: this.inputAttachments.filter((_, i) => i !== index),\n cancelable: true,\n });\n if (allowed) {\n this.inputAttachments = this.inputAttachments.filter(\n (_, i) => i !== index\n );\n }\n };\n\n /**\n * Handles when a suggestion is clicked.\n * Adds the suggestion as a new message and focuses the text area.\n * @param suggestion The suggestion string clicked\n */\n public handleSuggestionClick = (suggestion: string): void => {\n this.addMessage({ text: suggestion });\n if (this.textArea) {\n this.textArea.focus();\n }\n };\n\n /**\n * Updates the chat options partially.\n * @param options Partial options to merge with current options\n */\n public updateOptions(options: Partial<IgcChatOptions>): void {\n this.options = { ...this.options, ...options };\n }\n\n /**\n * Updates the internal cache for accepted file types.\n * Parses the acceptedFiles string option into extensions, mimeTypes, and wildcard types.\n */\n public updateAcceptedTypesCache = () => {\n if (!this.options?.acceptedFiles) {\n this._acceptedTypesCache = null;\n return;\n }\n\n const types = this.options?.acceptedFiles\n .split(',')\n .map((type) => type.trim().toLowerCase());\n this._acceptedTypesCache = {\n extensions: new Set(types.filter((t) => t.startsWith('.'))),\n mimeTypes: new Set(\n types.filter((t) => !t.startsWith('.') && !t.endsWith('/*'))\n ),\n wildcardTypes: new Set(\n types.filter((t) => t.endsWith('/*')).map((t) => t.slice(0, -2))\n ),\n };\n };\n\n /**\n * Checks if a file's type or extension is accepted by the chat's acceptedFiles setting.\n * @param file File object to check\n * @param type Optional MIME type override if no file provided\n * @returns True if accepted, false otherwise\n */\n public isFileTypeAccepted = (file: File, type = ''): boolean => {\n if (!this._acceptedTypesCache) return true;\n\n if (file === null && type === '') return false;\n\n const fileType =\n file != null ? file.type.toLowerCase() : type.toLowerCase();\n const fileExtension =\n file != null\n ? `.${file.name.split('.').pop()?.toLowerCase()}`\n : `.${type.split('/').pop()?.toLowerCase()}`;\n\n // Check file extension\n if (this._acceptedTypesCache.extensions.has(fileExtension)) {\n return true;\n }\n\n // Check exact MIME type\n if (this._acceptedTypesCache.mimeTypes.has(fileType)) {\n return true;\n }\n\n // Check wildcard MIME types\n const [fileBaseType] = fileType.split('/');\n return this._acceptedTypesCache.wildcardTypes.has(fileBaseType);\n };\n\n /**\n * Checks if a slot is empty.\n * @param name Slot name to check\n * @returns True if the slot has content, false otherwise\n */\n public hasSlotContent(name: string): boolean {\n return (\n this._host.renderRoot.querySelector<HTMLSlotElement>(`slot[name=${name}]`)\n ?.childNodes.length !== 0\n );\n }\n //#endregion\n}\n\nexport function createChatState(host: IgcChatComponent): ChatState {\n return new ChatState(host);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"chat-state.js","sourceRoot":"","sources":["../../../src/components/chat/chat-state.ts"],"names":[],"mappings":"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","sourcesContent":["import { enterKey } from '../common/controllers/key-bindings.js';\nimport { IgcChatResourceStringEN } from '../common/i18n/chat.resources.js';\nimport { isEmpty, nanoid } from '../common/util.js';\nimport type IgcTextareaComponent from '../textarea/textarea.js';\nimport type IgcChatComponent from './chat.js';\nimport type { IgcChatComponentEventMap } from './chat.js';\nimport type {\n IgcChatOptions,\n IgcMessage,\n IgcMessageAttachment,\n} from './types.js';\nimport { type ChatAcceptedFileTypes, parseAcceptedFileTypes } from './utils.js';\n\n/**\n * Internal state manager for the `<igc-chat>` component.\n *\n * Manages messages, input value, attachments, options, and event emissions.\n */\nexport class ChatState {\n //#region Internal properties and state /** The host `<igc-chat>` component instance */\n private readonly _host: IgcChatComponent;\n\n private readonly _contextUpdateFn: () => unknown;\n private readonly _userInputContextUpdateFn: () => unknown;\n\n /** Reference to the text area input component */\n private _textArea: IgcTextareaComponent | null = null;\n /** The current list of messages */\n private _messages: IgcMessage[] = [];\n /** Chat options/configuration */\n private _options?: IgcChatOptions;\n\n /** List of current input attachments */\n private _inputAttachments: IgcMessageAttachment[] = [];\n /** Current input text */\n private _inputValue = '';\n /**\n * Cache of accepted file types, organized into extensions, mimeTypes, and wildcardTypes\n */\n private _acceptedTypesCache: ChatAcceptedFileTypes | null = null;\n /** Default position of the suggestions */\n private _suggestionsPosition: 'below-input' | 'below-messages' =\n 'below-messages';\n /** Default time in milliseconds before dispatching stop typing event */\n private _stopTypingDelay = 3000;\n\n public _isTyping = false;\n private _lastTyped = Date.now();\n\n public resourceStrings = IgcChatResourceStringEN;\n\n //#endregion\n\n //#region Public properties\n\n public get acceptedFileTypes() {\n return this._acceptedTypesCache;\n }\n\n public get disableAutoScroll(): boolean {\n return this._options?.disableAutoScroll ?? false;\n }\n\n /**\n * Gets the list of chat messages.\n */\n public get messages(): IgcMessage[] {\n return this._messages;\n }\n\n /**\n * Sets the list of chat messages.\n */\n public set messages(value: IgcMessage[]) {\n this._messages = value;\n }\n\n /**\n * Gets current chat options.\n */\n public get options(): IgcChatOptions | undefined {\n return this._options;\n }\n\n /**\n * Sets chat options and requests host update.\n */\n public set options(value: IgcChatOptions) {\n this._options = value;\n this._contextUpdateFn.call(this._host);\n }\n\n /**\n * Gets the current user ID from options or returns 'user' as fallback.\n */\n public get currentUserId(): string {\n return this._options?.currentUserId ?? 'user';\n }\n\n /**\n * Gets the current suggestionsPosition from options or returns the default value 'below-messages'.\n */\n public get suggestionsPosition(): string {\n return this._options?.suggestionsPosition ?? this._suggestionsPosition;\n }\n\n /**\n * Gets the current stopTypingDelay from options or returns the default value `3000`.\n */\n public get stopTypingDelay(): number {\n return this._options?.stopTypingDelay ?? this._stopTypingDelay;\n }\n\n /**\n * Gets the text area component.\n */\n public get textArea(): IgcTextareaComponent | null {\n return this._textArea;\n }\n\n /**\n * Sets the text area component.\n */\n public set textArea(value: IgcTextareaComponent) {\n this._textArea = value;\n }\n\n /**\n * Gets the list of attachments currently attached to input.\n */\n public get inputAttachments(): IgcMessageAttachment[] {\n return this._inputAttachments;\n }\n\n /**\n * Sets the input attachments and requests host update.\n */\n public set inputAttachments(value: IgcMessageAttachment[]) {\n this._inputAttachments = value;\n this._userInputContextUpdateFn.call(this._host);\n }\n\n /**\n * Gets the current input value.\n */\n public get inputValue(): string {\n return this._inputValue;\n }\n\n /**\n * Sets the current input value and requests host update.\n */\n public set inputValue(value: string) {\n this._inputValue = value;\n this._userInputContextUpdateFn.call(this._host);\n }\n\n public get hasInputValue(): boolean {\n return this._inputValue.trim() !== '';\n }\n\n public get hasInputAttachments(): boolean {\n return !isEmpty(this._inputAttachments);\n }\n\n //#endregion\n\n constructor(\n chat: IgcChatComponent,\n contextUpdateFn: () => unknown,\n userInputContextUpdateFn: () => unknown\n ) {\n this._host = chat;\n this._contextUpdateFn = contextUpdateFn;\n this._userInputContextUpdateFn = userInputContextUpdateFn;\n }\n\n public isCurrentUserMessage(message?: IgcMessage): boolean {\n return this.currentUserId === message?.sender;\n }\n\n //#region Event handlers\n\n public emitEvent(name: keyof IgcChatComponentEventMap, args?: any): boolean {\n return this._host.emitEvent(name, args);\n }\n\n //#endregion\n\n //#region Public API\n\n /**\n * Adds a new chat message.\n * Emits 'igcMessageCreated' event which can be canceled to prevent adding.\n * Clears input value and attachments on success.\n * @param message Partial message object with optional id, sender, timestamp\n */\n public addMessage(message: Partial<IgcMessage>): void {\n const newMessage: IgcMessage = {\n id: message.id ?? nanoid(),\n text: message.text ?? '',\n sender: message.sender ?? this.currentUserId,\n timestamp: message.timestamp ?? new Date(),\n attachments: message.attachments || [],\n };\n\n const allowed = this.emitEvent('igcMessageCreated', {\n detail: newMessage,\n cancelable: true,\n });\n\n if (allowed) {\n if (!this.messages.some((msg) => msg.id === newMessage.id)) {\n this.messages = [...this.messages, newMessage];\n }\n this._host.requestUpdate('messages');\n\n this.inputValue = '';\n this.inputAttachments = [];\n }\n }\n\n /**\n * Adds files as attachments to the input.\n * Emits 'igcAttachmentChange' event which can be canceled to prevent adding.\n * @param files Array of File objects to attach\n */\n public attachFiles(files: File[]) {\n const newAttachments: IgcMessageAttachment[] = [];\n const fileNames = new Set(\n this.inputAttachments.map((attachment) => attachment.file?.name ?? '')\n );\n\n for (const file of files) {\n if (fileNames.has(file.name)) {\n continue;\n }\n\n const isImage = file.type.startsWith('image/');\n const url = URL.createObjectURL(file);\n\n newAttachments.push({\n id: nanoid(),\n url,\n name: file.name,\n file,\n thumbnail: isImage ? url : undefined,\n });\n }\n\n const allowed = this.emitEvent('igcAttachmentChange', {\n detail: [...this.inputAttachments, ...newAttachments],\n cancelable: true,\n });\n if (allowed) {\n this.inputAttachments = [...this.inputAttachments, ...newAttachments];\n }\n }\n\n public isImageAttachment(attachment: IgcMessageAttachment): boolean {\n return (\n attachment.type === 'image' ||\n !!attachment.file?.type.startsWith('image/')\n );\n }\n\n public handleKeyDown = (e: KeyboardEvent) => {\n if (e.key.toLowerCase() === enterKey.toLowerCase() && !e.shiftKey) {\n e.preventDefault();\n this.sendMessage();\n } else {\n this._lastTyped = Date.now();\n if (!this._isTyping) {\n this.emitEvent('igcTypingChange', {\n detail: { isTyping: true },\n });\n this._isTyping = true;\n }\n\n const stopTypingDelay = this.stopTypingDelay;\n setTimeout(() => {\n if (\n this._isTyping &&\n stopTypingDelay &&\n this._lastTyped + stopTypingDelay < Date.now()\n ) {\n this.emitEvent('igcTypingChange', {\n detail: { isTyping: false },\n });\n this._isTyping = false;\n }\n }, stopTypingDelay);\n }\n };\n\n public sendMessage = () => {\n if (!this.inputValue.trim() && this.inputAttachments.length === 0) return;\n\n this.addMessage({\n text: this.inputValue,\n attachments: this.inputAttachments,\n });\n this.inputValue = '';\n\n if (this._textArea) {\n this._textArea.style.height = 'auto';\n }\n\n this._host.updateComplete.then(() => {\n this._textArea?.focus();\n });\n };\n\n /**\n * Removes an attachment by index.\n * Emits 'igcAttachmentChange' event which can be canceled to prevent removal.\n * @param index Index of the attachment to remove\n */\n public removeAttachment = (index: number): void => {\n const allowed = this.emitEvent('igcAttachmentChange', {\n detail: this.inputAttachments.filter((_, i) => i !== index),\n cancelable: true,\n });\n if (allowed) {\n this.inputAttachments = this.inputAttachments.filter(\n (_, i) => i !== index\n );\n }\n };\n\n /**\n * Handles when a suggestion is clicked.\n * Adds the suggestion as a new message and focuses the text area.\n * @param suggestion The suggestion string clicked\n */\n public handleSuggestionClick = (suggestion: string): void => {\n this.addMessage({ text: suggestion });\n if (this.textArea) {\n this.textArea.focus();\n }\n };\n\n /**\n * Updates the chat options partially.\n * @param options Partial options to merge with current options\n */\n public updateOptions(options: Partial<IgcChatOptions>): void {\n this.options = { ...this.options, ...options };\n }\n\n /**\n * Updates the internal cache for accepted file types.\n * Parses the acceptedFiles string option into extensions, mimeTypes, and wildcard types.\n */\n public updateAcceptedTypesCache(): void {\n this._acceptedTypesCache = this.options?.acceptedFiles\n ? parseAcceptedFileTypes(this.options.acceptedFiles)\n : null;\n }\n\n //#endregion\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { LitElement } from 'lit';
|
|
1
|
+
import { LitElement, type PropertyValues } from 'lit';
|
|
2
2
|
import type { Constructor } from '../common/mixins/constructor.js';
|
|
3
3
|
import type { IgcChatOptions, IgcMessage, IgcMessageAttachment } from './types.js';
|
|
4
4
|
/**
|
|
@@ -7,18 +7,10 @@ import type { IgcChatOptions, IgcMessage, IgcMessageAttachment } from './types.j
|
|
|
7
7
|
export interface IgcChatComponentEventMap {
|
|
8
8
|
/**
|
|
9
9
|
* Dispatched when a new chat message is created (sent).
|
|
10
|
-
*
|
|
11
|
-
* @event igcMessageCreated
|
|
12
|
-
* @type {CustomEvent<IgcMessage>}
|
|
13
|
-
* @detail The message that was created.
|
|
14
10
|
*/
|
|
15
11
|
igcMessageCreated: CustomEvent<IgcMessage>;
|
|
16
12
|
/**
|
|
17
|
-
* Dispatched when a
|
|
18
|
-
*
|
|
19
|
-
* @event igcMessageCreated
|
|
20
|
-
* @type {CustomEvent<IgcMessage>}
|
|
21
|
-
* @detail The message that was reacted to and the reaction.
|
|
13
|
+
* Dispatched when a message is reacted to.
|
|
22
14
|
*/
|
|
23
15
|
igcMessageReact: CustomEvent<{
|
|
24
16
|
message: IgcMessage;
|
|
@@ -26,66 +18,34 @@ export interface IgcChatComponentEventMap {
|
|
|
26
18
|
}>;
|
|
27
19
|
/**
|
|
28
20
|
* Dispatched when a chat message attachment is clicked.
|
|
29
|
-
*
|
|
30
|
-
* @event igcAttachmentClick
|
|
31
|
-
* @type {CustomEvent<IgcMessageAttachment>}
|
|
32
|
-
* @detail The attachment that was clicked.
|
|
33
21
|
*/
|
|
34
22
|
igcAttachmentClick: CustomEvent<IgcMessageAttachment>;
|
|
35
23
|
/**
|
|
36
24
|
* Dispatched when an attachment is changed (e.g., updated or removed).
|
|
37
|
-
*
|
|
38
|
-
* @event igcAttachmentChange
|
|
39
|
-
* @type {CustomEvent<IgcMessageAttachment>}
|
|
40
|
-
* @detail The attachment that was changed.
|
|
41
25
|
*/
|
|
42
26
|
igcAttachmentChange: CustomEvent<IgcMessageAttachment>;
|
|
43
27
|
/**
|
|
44
28
|
* Dispatched during an attachment drag operation.
|
|
45
|
-
*
|
|
46
|
-
* @event igcAttachmentDrag
|
|
47
|
-
* @type {CustomEvent<any>}
|
|
48
|
-
* @detail The drag event payload.
|
|
49
29
|
*/
|
|
50
|
-
igcAttachmentDrag: CustomEvent<
|
|
30
|
+
igcAttachmentDrag: CustomEvent<void>;
|
|
51
31
|
/**
|
|
52
32
|
* Dispatched when an attachment is dropped (e.g., in a drag-and-drop operation).
|
|
53
|
-
*
|
|
54
|
-
* @event igcAttachmentDrop
|
|
55
|
-
* @type {CustomEvent<any>}
|
|
56
|
-
* @detail The drop event payload.
|
|
57
33
|
*/
|
|
58
|
-
igcAttachmentDrop: CustomEvent<
|
|
34
|
+
igcAttachmentDrop: CustomEvent<void>;
|
|
59
35
|
/**
|
|
60
36
|
* Dispatched when the typing status changes (e.g., user starts or stops typing).
|
|
61
|
-
*
|
|
62
|
-
* @event igcTypingChange
|
|
63
|
-
* @type {CustomEvent<boolean>}
|
|
64
|
-
* @detail `true` if typing started, `false` if stopped.
|
|
65
37
|
*/
|
|
66
38
|
igcTypingChange: CustomEvent<boolean>;
|
|
67
39
|
/**
|
|
68
40
|
* Dispatched when the chat input field gains focus.
|
|
69
|
-
*
|
|
70
|
-
* @event igcInputFocus
|
|
71
|
-
* @type {CustomEvent<any>}
|
|
72
|
-
* @detail Focus event payload.
|
|
73
41
|
*/
|
|
74
|
-
igcInputFocus: CustomEvent<
|
|
42
|
+
igcInputFocus: CustomEvent<void>;
|
|
75
43
|
/**
|
|
76
44
|
* Dispatched when the chat input field loses focus.
|
|
77
|
-
*
|
|
78
|
-
* @event igcInputBlur
|
|
79
|
-
* @type {CustomEvent<any>}
|
|
80
|
-
* @detail Blur event payload.
|
|
81
45
|
*/
|
|
82
|
-
igcInputBlur: CustomEvent<
|
|
46
|
+
igcInputBlur: CustomEvent<void>;
|
|
83
47
|
/**
|
|
84
48
|
* Dispatched when the content of the chat input changes.
|
|
85
|
-
*
|
|
86
|
-
* @event igcInputChange
|
|
87
|
-
* @type {CustomEvent<string>}
|
|
88
|
-
* @detail The current text value of the input.
|
|
89
49
|
*/
|
|
90
50
|
igcInputChange: CustomEvent<string>;
|
|
91
51
|
}
|
|
@@ -93,9 +53,19 @@ declare const IgcChatComponent_base: Constructor<import("../common/mixins/event-
|
|
|
93
53
|
/**
|
|
94
54
|
* A chat UI component for displaying messages, attachments, and input interaction.
|
|
95
55
|
*
|
|
96
|
-
* This component is part of the Ignite UI Web Components suite.
|
|
97
|
-
*
|
|
98
56
|
* @element igc-chat
|
|
57
|
+
*
|
|
58
|
+
* @fires igcMessageCreated - Dispatched when a new chat message is created (sent).
|
|
59
|
+
* @fires igcMessageReact - Dispatched when a message is reacted to.
|
|
60
|
+
* @fires igcAttachmentClick - Dispatched when a chat message attachment is clicked.
|
|
61
|
+
* @fires igcAttachmentChange - Dispatched when a message attachment is changed (e.g., updated or removed).
|
|
62
|
+
* @fires igcAttachmentDrag - Dispatched during an attachment drag operation.
|
|
63
|
+
* @fires igcAttachmentDrop - Dispatched when an attachment is dropped (e.g., in a drag-and-drop operation).
|
|
64
|
+
* @fires igcTypingChange - Dispatched when the typing status changes (e.g., user starts or stops typing).
|
|
65
|
+
* @fires igcInputFocus - Dispatched when the chat input field gains focus.
|
|
66
|
+
* @fires igcInputBlur - Dispatched when the chat input field loses focus.
|
|
67
|
+
* @fires igcInputChange - Dispatched when the content of the chat input changes.
|
|
68
|
+
*
|
|
99
69
|
* @slot prefix - Slot for injecting content (e.g., avatar or icon) before the chat title.
|
|
100
70
|
* @slot title - Slot for overriding the chat title content.
|
|
101
71
|
* @slot actions - Slot for injecting header actions (e.g., buttons, menus).
|
|
@@ -114,18 +84,13 @@ declare const IgcChatComponent_base: Constructor<import("../common/mixins/event-
|
|
|
114
84
|
export default class IgcChatComponent extends IgcChatComponent_base {
|
|
115
85
|
static readonly tagName = "igc-chat";
|
|
116
86
|
static styles: import("lit").CSSResult[];
|
|
117
|
-
/**
|
|
118
|
-
* Registers the chat component and its child components.
|
|
119
|
-
* Should be called once before using the component.
|
|
120
|
-
*
|
|
121
|
-
* @example
|
|
122
|
-
* IgcChatComponent.register();
|
|
123
|
-
*/
|
|
124
87
|
static register(): void;
|
|
125
|
-
private readonly
|
|
88
|
+
private readonly _state;
|
|
126
89
|
private readonly _slots;
|
|
127
|
-
private _context;
|
|
128
|
-
|
|
90
|
+
private readonly _context;
|
|
91
|
+
private readonly _userInputContext;
|
|
92
|
+
private _updateContext;
|
|
93
|
+
private _updateUserInputContext;
|
|
129
94
|
/**
|
|
130
95
|
* The list of chat messages currently displayed.
|
|
131
96
|
* Use this property to set or update the message history.
|
|
@@ -150,27 +115,34 @@ export default class IgcChatComponent extends IgcChatComponent_base {
|
|
|
150
115
|
*/
|
|
151
116
|
set options(value: IgcChatOptions);
|
|
152
117
|
get options(): IgcChatOptions | undefined;
|
|
153
|
-
/**
|
|
118
|
+
/**
|
|
119
|
+
* The resource strings of the chat.
|
|
120
|
+
*/
|
|
154
121
|
resourceStrings: import("../common/i18n/chat.resources.js").IgcChatResourceStrings;
|
|
122
|
+
constructor();
|
|
123
|
+
protected contextChanged(): void;
|
|
155
124
|
/**
|
|
156
125
|
* Scrolls the view to a specific message by id.
|
|
157
126
|
* @param messageId - The id of the message to scroll to
|
|
158
127
|
*/
|
|
159
128
|
scrollToMessage(messageId: string): void;
|
|
160
|
-
protected contextChanged(): void;
|
|
161
|
-
private renderHeader;
|
|
162
|
-
private renderSuggestionPrefix;
|
|
163
|
-
private renderSuggestions;
|
|
164
129
|
/**
|
|
165
130
|
* Updates the context value to notify all consumers that the chat state has changed.
|
|
166
131
|
* This ensures that components consuming the chat context will re-render.
|
|
167
132
|
*/
|
|
168
133
|
updateContextValue(): void;
|
|
134
|
+
protected updated(properties: PropertyValues<this>): void;
|
|
135
|
+
private _scrollToBottom;
|
|
136
|
+
private _renderHeader;
|
|
137
|
+
private _renderMessages;
|
|
138
|
+
private _renderLoadingTemplate;
|
|
139
|
+
private _renderSuggestionPrefix;
|
|
140
|
+
private _renderSuggestions;
|
|
141
|
+
private _renderEmptyState;
|
|
169
142
|
protected render(): import("lit-html").TemplateResult<1>;
|
|
170
143
|
}
|
|
171
144
|
declare global {
|
|
172
145
|
interface HTMLElementTagNameMap {
|
|
173
|
-
/** The `<igc-chat>` custom element. */
|
|
174
146
|
'igc-chat': IgcChatComponent;
|
|
175
147
|
}
|
|
176
148
|
}
|