igniteui-webcomponents 7.2.4 → 7.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 +142 -0
- package/animations/player.js +1 -1
- package/animations/player.js.map +1 -1
- package/animations/view-transition.js +1 -1
- package/animations/view-transition.js.map +1 -1
- package/components/accordion/accordion.d.ts +1 -1
- package/components/accordion/accordion.js +7 -6
- package/components/accordion/accordion.js.map +1 -1
- package/components/avatar/avatar.js +3 -3
- package/components/avatar/avatar.js.map +1 -1
- package/components/avatar/themes/themes.d.ts +1 -1
- package/components/avatar/themes/themes.js.map +1 -1
- package/components/badge/badge.d.ts +1 -1
- package/components/badge/badge.js +5 -5
- package/components/badge/badge.js.map +1 -1
- package/components/badge/themes/themes.d.ts +1 -1
- package/components/badge/themes/themes.js.map +1 -1
- package/components/banner/banner.d.ts +2 -2
- package/components/banner/banner.js +8 -8
- package/components/banner/banner.js.map +1 -1
- package/components/banner/themes/themes.d.ts +1 -1
- package/components/banner/themes/themes.js.map +1 -1
- package/components/button/button-base.d.ts +2 -2
- package/components/button/button-base.js +9 -8
- package/components/button/button-base.js.map +1 -1
- package/components/button/button.d.ts +3 -3
- package/components/button/button.js +2 -2
- package/components/button/button.js.map +1 -1
- package/components/button/icon-button.js +3 -3
- package/components/button/icon-button.js.map +1 -1
- package/components/button/themes/button/themes.d.ts +1 -1
- package/components/button/themes/button/themes.js.map +1 -1
- package/components/button/themes/icon-button/themes.d.ts +1 -1
- package/components/button/themes/icon-button/themes.js.map +1 -1
- package/components/button-group/button-group.d.ts +42 -21
- package/components/button-group/button-group.js +101 -106
- package/components/button-group/button-group.js.map +1 -1
- package/components/button-group/themes/button.d.ts +1 -1
- package/components/button-group/themes/button.js.map +1 -1
- package/components/button-group/themes/group.d.ts +1 -1
- package/components/button-group/themes/group.js.map +1 -1
- package/components/button-group/toggle-button.d.ts +17 -10
- package/components/button-group/toggle-button.js +28 -13
- package/components/button-group/toggle-button.js.map +1 -1
- package/components/calendar/base.d.ts +29 -10
- package/components/calendar/base.js +12 -15
- package/components/calendar/base.js.map +1 -1
- package/components/calendar/calendar.d.ts +39 -8
- package/components/calendar/calendar.js +96 -85
- package/components/calendar/calendar.js.map +1 -1
- package/components/calendar/days-view/days-view.d.ts +49 -22
- package/components/calendar/days-view/days-view.js +102 -163
- package/components/calendar/days-view/days-view.js.map +1 -1
- package/components/calendar/helpers.d.ts +3 -62
- package/components/calendar/helpers.js +6 -110
- package/components/calendar/helpers.js.map +1 -1
- package/components/calendar/months-view/months-view.d.ts +7 -21
- package/components/calendar/months-view/months-view.js +30 -83
- package/components/calendar/months-view/months-view.js.map +1 -1
- package/components/calendar/selection.d.ts +21 -0
- package/components/calendar/selection.js +42 -0
- package/components/calendar/selection.js.map +1 -0
- package/components/calendar/themes/calendar.d.ts +1 -1
- package/components/calendar/themes/calendar.js.map +1 -1
- package/components/calendar/themes/days.d.ts +1 -1
- package/components/calendar/themes/days.js.map +1 -1
- package/components/calendar/themes/year-month.d.ts +1 -1
- package/components/calendar/themes/year-month.js.map +1 -1
- package/components/calendar/types.d.ts +18 -0
- package/components/calendar/types.js.map +1 -1
- package/components/calendar/year-month-view.base.d.ts +44 -0
- package/components/calendar/year-month-view.base.js +89 -0
- package/components/calendar/year-month-view.base.js.map +1 -0
- package/components/calendar/years-view/years-view.d.ts +7 -20
- package/components/calendar/years-view/years-view.js +25 -79
- package/components/calendar/years-view/years-view.js.map +1 -1
- package/components/card/card.actions.js +2 -2
- package/components/card/card.actions.js.map +1 -1
- package/components/card/card.content.d.ts +1 -1
- package/components/card/card.content.js +2 -2
- package/components/card/card.content.js.map +1 -1
- package/components/card/card.d.ts +1 -1
- package/components/card/card.header.js +2 -2
- package/components/card/card.header.js.map +1 -1
- package/components/card/card.js +2 -2
- package/components/card/card.js.map +1 -1
- package/components/card/card.media.d.ts +1 -1
- package/components/card/card.media.js +1 -1
- package/components/card/card.media.js.map +1 -1
- package/components/card/themes/actions.d.ts +1 -1
- package/components/card/themes/actions.js.map +1 -1
- package/components/card/themes/container.d.ts +1 -1
- package/components/card/themes/container.js.map +1 -1
- package/components/card/themes/content.d.ts +1 -1
- package/components/card/themes/content.js.map +1 -1
- package/components/card/themes/header.d.ts +1 -1
- package/components/card/themes/header.js.map +1 -1
- package/components/carousel/animations.d.ts +1 -1
- package/components/carousel/animations.js +2 -2
- package/components/carousel/animations.js.map +1 -1
- package/components/carousel/carousel-indicator-container.js +4 -4
- package/components/carousel/carousel-indicator-container.js.map +1 -1
- package/components/carousel/carousel-indicator.d.ts +1 -1
- package/components/carousel/carousel-indicator.js +5 -5
- package/components/carousel/carousel-indicator.js.map +1 -1
- package/components/carousel/carousel-slide.d.ts +1 -1
- package/components/carousel/carousel-slide.js +9 -9
- package/components/carousel/carousel-slide.js.map +1 -1
- package/components/carousel/carousel.d.ts +7 -7
- package/components/carousel/carousel.js +39 -28
- package/components/carousel/carousel.js.map +1 -1
- package/components/carousel/themes/container.d.ts +1 -1
- package/components/carousel/themes/container.js.map +1 -1
- package/components/carousel/themes/indicator-container.d.ts +1 -1
- package/components/carousel/themes/indicator-container.js.map +1 -1
- package/components/chat/chat-input.d.ts +4 -4
- package/components/chat/chat-input.js +9 -8
- package/components/chat/chat-input.js.map +1 -1
- package/components/chat/chat-message.d.ts +1 -1
- package/components/chat/chat-message.js +7 -6
- package/components/chat/chat-message.js.map +1 -1
- package/components/chat/chat-state.d.ts +2 -2
- package/components/chat/chat-state.js +2 -1
- package/components/chat/chat-state.js.map +1 -1
- package/components/chat/chat.d.ts +4 -4
- package/components/chat/chat.js +7 -7
- package/components/chat/chat.js.map +1 -1
- package/components/chat/message-attachments.js +5 -5
- package/components/chat/message-attachments.js.map +1 -1
- package/components/chat/themes/attachments.d.ts +1 -1
- package/components/chat/themes/attachments.js.map +1 -1
- package/components/chat/themes/input.d.ts +1 -1
- package/components/chat/themes/input.js.map +1 -1
- package/components/chat/themes/message.d.ts +1 -1
- package/components/chat/themes/message.js.map +1 -1
- package/components/chat/themes/themes.d.ts +1 -1
- package/components/chat/themes/themes.js.map +1 -1
- package/components/chat/types.d.ts +2 -2
- package/components/chat/types.js.map +1 -1
- package/components/chat/utils.d.ts +1 -1
- package/components/chat/utils.js +3 -3
- package/components/chat/utils.js.map +1 -1
- package/components/checkbox/checkbox-base.d.ts +7 -7
- package/components/checkbox/checkbox-base.js +7 -7
- package/components/checkbox/checkbox-base.js.map +1 -1
- package/components/checkbox/checkbox.js +7 -6
- package/components/checkbox/checkbox.js.map +1 -1
- package/components/checkbox/switch.js +7 -6
- package/components/checkbox/switch.js.map +1 -1
- package/components/checkbox/themes/checkbox-themes.d.ts +1 -1
- package/components/checkbox/themes/checkbox-themes.js.map +1 -1
- package/components/checkbox/themes/switch-themes.d.ts +1 -1
- package/components/checkbox/themes/switch-themes.js.map +1 -1
- package/components/checkbox/validators.d.ts +1 -1
- package/components/checkbox/validators.js +1 -1
- package/components/checkbox/validators.js.map +1 -1
- package/components/chip/chip.d.ts +9 -3
- package/components/chip/chip.js +10 -6
- package/components/chip/chip.js.map +1 -1
- package/components/chip/themes/chip.base.css.js +1 -1
- package/components/chip/themes/chip.base.css.js.map +1 -1
- package/components/chip/themes/dark/chip.bootstrap.css.js +1 -1
- package/components/chip/themes/dark/chip.bootstrap.css.js.map +1 -1
- package/components/chip/themes/dark/chip.fluent.css.js +1 -1
- package/components/chip/themes/dark/chip.fluent.css.js.map +1 -1
- package/components/chip/themes/dark/chip.indigo.css.js +1 -1
- package/components/chip/themes/dark/chip.indigo.css.js.map +1 -1
- package/components/chip/themes/dark/chip.material.css.js +1 -1
- package/components/chip/themes/dark/chip.material.css.js.map +1 -1
- package/components/chip/themes/light/chip.bootstrap.css.js +1 -1
- package/components/chip/themes/light/chip.bootstrap.css.js.map +1 -1
- package/components/chip/themes/light/chip.fluent.css.js +1 -1
- package/components/chip/themes/light/chip.fluent.css.js.map +1 -1
- package/components/chip/themes/light/chip.indigo.css.js +1 -1
- package/components/chip/themes/light/chip.indigo.css.js.map +1 -1
- package/components/chip/themes/light/chip.material.css.js +1 -1
- package/components/chip/themes/light/chip.material.css.js.map +1 -1
- package/components/chip/themes/light/chip.shared.css.js +1 -1
- package/components/chip/themes/light/chip.shared.css.js.map +1 -1
- package/components/chip/themes/shared/chip.bootstrap.css.js +1 -1
- package/components/chip/themes/shared/chip.bootstrap.css.js.map +1 -1
- package/components/chip/themes/shared/chip.common.css.js +1 -1
- package/components/chip/themes/shared/chip.common.css.js.map +1 -1
- package/components/chip/themes/shared/chip.fluent.css.js +1 -1
- package/components/chip/themes/shared/chip.fluent.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/chip/themes/themes.d.ts +1 -1
- package/components/chip/themes/themes.js.map +1 -1
- package/components/combo/combo-header.js +2 -2
- package/components/combo/combo-header.js.map +1 -1
- package/components/combo/combo-item.d.ts +0 -2
- package/components/combo/combo-item.js +4 -7
- package/components/combo/combo-item.js.map +1 -1
- package/components/combo/combo.d.ts +84 -27
- package/components/combo/combo.js +194 -157
- package/components/combo/combo.js.map +1 -1
- package/components/combo/controllers/data.d.ts +30 -3
- package/components/combo/controllers/data.js +34 -9
- package/components/combo/controllers/data.js.map +1 -1
- package/components/combo/controllers/navigation.d.ts +8 -2
- package/components/combo/controllers/navigation.js +11 -12
- package/components/combo/controllers/navigation.js.map +1 -1
- package/components/combo/operations/filter.d.ts +17 -1
- package/components/combo/operations/filter.js +29 -9
- package/components/combo/operations/filter.js.map +1 -1
- package/components/combo/operations/group.js +1 -1
- package/components/combo/operations/group.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/themes.d.ts +1 -1
- package/components/combo/themes/themes.js.map +1 -1
- package/components/combo/types.d.ts +8 -4
- package/components/combo/types.js.map +1 -1
- package/components/combo/validators.d.ts +1 -1
- package/components/combo/validators.js.map +1 -1
- package/components/date-picker/date-picker.base.d.ts +294 -0
- package/components/date-picker/date-picker.base.js +480 -0
- package/components/date-picker/date-picker.base.js.map +1 -0
- package/components/date-picker/date-picker.d.ts +53 -174
- package/components/date-picker/date-picker.js +88 -399
- package/components/date-picker/date-picker.js.map +1 -1
- package/components/date-picker/themes/themes.d.ts +1 -1
- package/components/date-picker/themes/themes.js.map +1 -1
- package/components/date-picker/validators.d.ts +1 -1
- package/components/date-picker/validators.js +2 -2
- package/components/date-picker/validators.js.map +1 -1
- package/components/date-range-picker/date-range-input.d.ts +12 -14
- package/components/date-range-picker/date-range-input.js +42 -98
- package/components/date-range-picker/date-range-input.js.map +1 -1
- package/components/date-range-picker/date-range-mask-parser.d.ts +22 -34
- package/components/date-range-picker/date-range-mask-parser.js +38 -69
- package/components/date-range-picker/date-range-mask-parser.js.map +1 -1
- package/components/date-range-picker/date-range-picker.d.ts +97 -191
- package/components/date-range-picker/date-range-picker.js +210 -532
- package/components/date-range-picker/date-range-picker.js.map +1 -1
- package/components/date-range-picker/predefined-ranges-area.d.ts +2 -2
- package/components/date-range-picker/predefined-ranges-area.js +5 -5
- package/components/date-range-picker/predefined-ranges-area.js.map +1 -1
- package/components/date-range-picker/themes/ranges-themes.d.ts +1 -1
- package/components/date-range-picker/themes/ranges-themes.js.map +1 -1
- package/components/date-range-picker/themes/themes.d.ts +1 -1
- package/components/date-range-picker/themes/themes.js.map +1 -1
- package/components/date-range-picker/validators.d.ts +1 -1
- package/components/date-range-picker/validators.js +15 -22
- package/components/date-range-picker/validators.js.map +1 -1
- package/components/date-time-input/date-part.d.ts +18 -1
- package/components/date-time-input/date-part.js +10 -0
- package/components/date-time-input/date-part.js.map +1 -1
- package/components/date-time-input/date-time-input.base.d.ts +72 -25
- package/components/date-time-input/date-time-input.base.js +100 -36
- package/components/date-time-input/date-time-input.base.js.map +1 -1
- package/components/date-time-input/date-time-input.d.ts +13 -23
- package/components/date-time-input/date-time-input.js +45 -65
- package/components/date-time-input/date-time-input.js.map +1 -1
- package/components/date-time-input/datetime-mask-parser.d.ts +45 -109
- package/components/date-time-input/datetime-mask-parser.js +88 -139
- package/components/date-time-input/datetime-mask-parser.js.map +1 -1
- package/components/date-time-input/validators.d.ts +1 -1
- package/components/date-time-input/validators.js +2 -2
- package/components/date-time-input/validators.js.map +1 -1
- package/components/dialog/dialog.d.ts +2 -2
- package/components/dialog/dialog.js +17 -18
- package/components/dialog/dialog.js.map +1 -1
- package/components/dialog/themes/themes.d.ts +1 -1
- package/components/dialog/themes/themes.js.map +1 -1
- package/components/divider/divider.d.ts +2 -1
- package/components/divider/divider.js +3 -3
- package/components/divider/divider.js.map +1 -1
- package/components/divider/themes/themes.d.ts +1 -1
- package/components/divider/themes/themes.js.map +1 -1
- package/components/dropdown/dropdown-group.d.ts +10 -3
- package/components/dropdown/dropdown-group.js +21 -5
- package/components/dropdown/dropdown-group.js.map +1 -1
- package/components/dropdown/dropdown-header.d.ts +2 -2
- package/components/dropdown/dropdown-header.js +7 -2
- package/components/dropdown/dropdown-header.js.map +1 -1
- package/components/dropdown/dropdown-item.d.ts +4 -4
- package/components/dropdown/dropdown-item.js +3 -3
- package/components/dropdown/dropdown-item.js.map +1 -1
- package/components/dropdown/dropdown.d.ts +75 -32
- package/components/dropdown/dropdown.js +189 -110
- package/components/dropdown/dropdown.js.map +1 -1
- package/components/dropdown/themes/container.d.ts +1 -1
- package/components/dropdown/themes/container.js.map +1 -1
- package/components/dropdown/themes/group.d.ts +1 -1
- package/components/dropdown/themes/group.js.map +1 -1
- package/components/dropdown/themes/header.d.ts +1 -1
- package/components/dropdown/themes/header.js.map +1 -1
- package/components/dropdown/themes/item.d.ts +1 -1
- package/components/dropdown/themes/item.js.map +1 -1
- package/components/expansion-panel/expansion-panel.d.ts +14 -5
- package/components/expansion-panel/expansion-panel.js +10 -9
- package/components/expansion-panel/expansion-panel.js.map +1 -1
- package/components/expansion-panel/themes/themes.d.ts +1 -1
- package/components/expansion-panel/themes/themes.js.map +1 -1
- package/components/file-input/file-input.d.ts +20 -12
- package/components/file-input/file-input.js +17 -12
- package/components/file-input/file-input.js.map +1 -1
- package/components/file-input/themes/themes.d.ts +1 -1
- package/components/file-input/themes/themes.js.map +1 -1
- package/components/file-input/validators.d.ts +1 -1
- package/components/file-input/validators.js +1 -1
- package/components/file-input/validators.js.map +1 -1
- package/components/focus-trap/focus-trap.js +3 -2
- package/components/focus-trap/focus-trap.js.map +1 -1
- package/components/highlight/highlight.js +2 -2
- package/components/highlight/highlight.js.map +1 -1
- package/components/highlight/service.d.ts +4 -1
- package/components/highlight/service.js +23 -7
- package/components/highlight/service.js.map +1 -1
- package/components/highlight/themes/themes.d.ts +1 -1
- package/components/highlight/themes/themes.js.map +1 -1
- package/components/icon/icon-references.d.ts +3 -2
- package/components/icon/icon-references.js +103 -491
- package/components/icon/icon-references.js.map +1 -1
- package/components/icon/icon-state.broadcast.d.ts +14 -17
- package/components/icon/icon-state.broadcast.js +19 -20
- package/components/icon/icon-state.broadcast.js.map +1 -1
- package/components/icon/icon.d.ts +12 -24
- package/components/icon/icon.js +36 -28
- package/components/icon/icon.js.map +1 -1
- package/components/icon/icon.registry.d.ts +69 -131
- package/components/icon/icon.registry.js +51 -53
- package/components/icon/icon.registry.js.map +1 -1
- package/components/icon/internal-icons-lib.js +2 -2
- package/components/icon/internal-icons-lib.js.map +1 -1
- package/components/icon/registry/parser.d.ts +15 -3
- package/components/icon/registry/parser.js +36 -11
- package/components/icon/registry/parser.js.map +1 -1
- package/components/icon/registry/types.d.ts +55 -11
- package/components/icon/registry/types.js.map +1 -1
- package/components/icon/themes/icon.base.css.js +1 -1
- package/components/icon/themes/icon.base.css.js.map +1 -1
- package/components/icon/themes/shared/icon.common.css.js +1 -1
- package/components/icon/themes/shared/icon.common.css.js.map +1 -1
- package/components/icon/themes/themes.d.ts +1 -1
- package/components/icon/themes/themes.js.map +1 -1
- package/components/input/input-base.d.ts +10 -25
- package/components/input/input-base.js +14 -23
- package/components/input/input-base.js.map +1 -1
- package/components/input/input.d.ts +15 -12
- package/components/input/input.js +8 -9
- package/components/input/input.js.map +1 -1
- package/components/input/themes/input.base.css.js +1 -1
- package/components/input/themes/input.base.css.js.map +1 -1
- package/components/input/themes/shared/input.bootstrap.css.js +1 -1
- package/components/input/themes/shared/input.bootstrap.css.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/input/themes/themes.d.ts +1 -1
- package/components/input/themes/themes.js.map +1 -1
- package/components/input/validators.d.ts +1 -1
- package/components/input/validators.js +1 -1
- package/components/input/validators.js.map +1 -1
- package/components/list/list-header.js +3 -3
- package/components/list/list-header.js.map +1 -1
- package/components/list/list-item.js +3 -3
- package/components/list/list-item.js.map +1 -1
- package/components/list/list.js +3 -3
- package/components/list/list.js.map +1 -1
- package/components/list/themes/container.d.ts +1 -1
- package/components/list/themes/container.js.map +1 -1
- package/components/list/themes/header.d.ts +1 -1
- package/components/list/themes/header.js.map +1 -1
- package/components/list/themes/item.d.ts +1 -1
- package/components/list/themes/item.js.map +1 -1
- package/components/mask-input/mask-history.d.ts +99 -0
- package/components/mask-input/mask-history.js +95 -0
- package/components/mask-input/mask-history.js.map +1 -0
- package/components/mask-input/mask-input.d.ts +14 -9
- package/components/mask-input/mask-input.js +20 -24
- package/components/mask-input/mask-input.js.map +1 -1
- package/components/mask-input/mask-parser.d.ts +20 -2
- package/components/mask-input/mask-parser.js +21 -13
- package/components/mask-input/mask-parser.js.map +1 -1
- package/components/mask-input/validators.d.ts +1 -1
- package/components/mask-input/validators.js +1 -1
- package/components/mask-input/validators.js.map +1 -1
- package/components/nav-drawer/nav-drawer-header-item.d.ts +1 -1
- package/components/nav-drawer/nav-drawer-header-item.js +2 -2
- package/components/nav-drawer/nav-drawer-header-item.js.map +1 -1
- package/components/nav-drawer/nav-drawer-item.d.ts +2 -2
- package/components/nav-drawer/nav-drawer-item.js +4 -4
- package/components/nav-drawer/nav-drawer-item.js.map +1 -1
- package/components/nav-drawer/nav-drawer.d.ts +3 -3
- package/components/nav-drawer/nav-drawer.js +11 -14
- package/components/nav-drawer/nav-drawer.js.map +1 -1
- package/components/nav-drawer/themes/container.base.css.js +1 -1
- package/components/nav-drawer/themes/container.base.css.js.map +1 -1
- package/components/nav-drawer/themes/container.d.ts +1 -1
- package/components/nav-drawer/themes/container.js +2 -3
- package/components/nav-drawer/themes/container.js.map +1 -1
- package/components/nav-drawer/themes/dark/container/nav-drawer.shared.css.js +1 -1
- package/components/nav-drawer/themes/dark/container/nav-drawer.shared.css.js.map +1 -1
- package/components/nav-drawer/themes/header-item.d.ts +1 -1
- package/components/nav-drawer/themes/header-item.js.map +1 -1
- package/components/nav-drawer/themes/item.d.ts +1 -1
- package/components/nav-drawer/themes/item.js.map +1 -1
- package/components/nav-drawer/themes/light/container/nav-drawer.bootstrap.css.js +1 -1
- package/components/nav-drawer/themes/light/container/nav-drawer.bootstrap.css.js.map +1 -1
- package/components/nav-drawer/themes/light/container/nav-drawer.fluent.css.js +1 -1
- package/components/nav-drawer/themes/light/container/nav-drawer.fluent.css.js.map +1 -1
- package/components/nav-drawer/themes/light/container/nav-drawer.indigo.css.js +1 -1
- package/components/nav-drawer/themes/light/container/nav-drawer.indigo.css.js.map +1 -1
- package/components/nav-drawer/themes/light/container/nav-drawer.shared.css.js +1 -1
- package/components/nav-drawer/themes/light/container/nav-drawer.shared.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/navbar/navbar.js +2 -2
- package/components/navbar/navbar.js.map +1 -1
- package/components/navbar/themes/themes.d.ts +1 -1
- package/components/navbar/themes/themes.js.map +1 -1
- package/components/popover/popover.d.ts +10 -3
- package/components/popover/popover.js +114 -99
- package/components/popover/popover.js.map +1 -1
- package/components/progress/base.d.ts +1 -1
- package/components/progress/base.js +5 -4
- package/components/progress/base.js.map +1 -1
- package/components/progress/circular-gradient.d.ts +2 -2
- package/components/progress/circular-gradient.js +1 -1
- package/components/progress/circular-gradient.js.map +1 -1
- package/components/progress/circular-progress.d.ts +15 -15
- package/components/progress/circular-progress.js +7 -6
- package/components/progress/circular-progress.js.map +1 -1
- package/components/progress/linear-progress.d.ts +12 -12
- package/components/progress/linear-progress.js +4 -4
- package/components/progress/linear-progress.js.map +1 -1
- package/components/progress/themes/circular/circular.progress.base.css.js +1 -1
- package/components/progress/themes/circular/circular.progress.base.css.js.map +1 -1
- package/components/progress/themes/circular/themes.d.ts +1 -1
- package/components/progress/themes/circular/themes.js.map +1 -1
- package/components/progress/themes/linear/linear.progress.base.css.js +1 -1
- package/components/progress/themes/linear/linear.progress.base.css.js.map +1 -1
- package/components/progress/themes/linear/themes.d.ts +1 -1
- package/components/progress/themes/linear/themes.js.map +1 -1
- package/components/qr-code/model/encode.d.ts +20 -0
- package/components/qr-code/model/encode.js +166 -0
- package/components/qr-code/model/encode.js.map +1 -0
- package/components/qr-code/model/error-correction.d.ts +15 -0
- package/components/qr-code/model/error-correction.js +1114 -0
- package/components/qr-code/model/error-correction.js.map +1 -0
- package/components/qr-code/model/mask.d.ts +11 -0
- package/components/qr-code/model/mask.js +161 -0
- package/components/qr-code/model/mask.js.map +1 -0
- package/components/qr-code/model/matrix.d.ts +15 -0
- package/components/qr-code/model/matrix.js +277 -0
- package/components/qr-code/model/matrix.js.map +1 -0
- package/components/qr-code/qr-code.d.ts +134 -0
- package/components/qr-code/qr-code.js +221 -0
- package/components/qr-code/qr-code.js.map +1 -0
- package/components/qr-code/renderer/constants.d.ts +26 -0
- package/components/qr-code/renderer/constants.js +5 -0
- package/components/qr-code/renderer/constants.js.map +1 -0
- package/components/qr-code/renderer/corner.d.ts +23 -0
- package/components/qr-code/renderer/corner.js +25 -0
- package/components/qr-code/renderer/corner.js.map +1 -0
- package/components/qr-code/renderer/dots.d.ts +14 -0
- package/components/qr-code/renderer/dots.js +7 -0
- package/components/qr-code/renderer/dots.js.map +1 -0
- package/components/qr-code/renderer/helpers.d.ts +18 -0
- package/components/qr-code/renderer/helpers.js +158 -0
- package/components/qr-code/renderer/helpers.js.map +1 -0
- package/components/qr-code/renderer/image.d.ts +23 -0
- package/components/qr-code/renderer/image.js +29 -0
- package/components/qr-code/renderer/image.js.map +1 -0
- package/components/qr-code/themes/dark/qr-code.bootstrap.css.js +3 -0
- package/components/qr-code/themes/dark/qr-code.bootstrap.css.js.map +1 -0
- package/components/qr-code/themes/dark/qr-code.fluent.css.d.ts +1 -0
- package/components/qr-code/themes/dark/qr-code.fluent.css.js +3 -0
- package/components/qr-code/themes/dark/qr-code.fluent.css.js.map +1 -0
- package/components/qr-code/themes/dark/qr-code.indigo.css.d.ts +1 -0
- package/components/qr-code/themes/dark/qr-code.indigo.css.js +3 -0
- package/components/qr-code/themes/dark/qr-code.indigo.css.js.map +1 -0
- package/components/qr-code/themes/dark/qr-code.material.css.d.ts +1 -0
- package/components/qr-code/themes/dark/qr-code.material.css.js +3 -0
- package/components/qr-code/themes/dark/qr-code.material.css.js.map +1 -0
- package/components/qr-code/themes/light/qr-code.bootstrap.css.d.ts +1 -0
- package/components/qr-code/themes/light/qr-code.bootstrap.css.js +3 -0
- package/components/qr-code/themes/light/qr-code.bootstrap.css.js.map +1 -0
- package/components/qr-code/themes/light/qr-code.fluent.css.d.ts +1 -0
- package/components/qr-code/themes/light/qr-code.fluent.css.js +3 -0
- package/components/qr-code/themes/light/qr-code.fluent.css.js.map +1 -0
- package/components/qr-code/themes/light/qr-code.indigo.css.d.ts +1 -0
- package/components/qr-code/themes/light/qr-code.indigo.css.js +3 -0
- package/components/qr-code/themes/light/qr-code.indigo.css.js.map +1 -0
- package/components/qr-code/themes/light/qr-code.material.css.d.ts +1 -0
- package/components/qr-code/themes/light/qr-code.material.css.js +3 -0
- package/components/qr-code/themes/light/qr-code.material.css.js.map +1 -0
- package/components/qr-code/themes/light/qr-code.shared.css.d.ts +1 -0
- package/components/qr-code/themes/light/qr-code.shared.css.js +3 -0
- package/components/qr-code/themes/light/qr-code.shared.css.js.map +1 -0
- package/components/qr-code/themes/qr-code.base.css.d.ts +1 -0
- package/components/qr-code/themes/qr-code.base.css.js +3 -0
- package/components/qr-code/themes/qr-code.base.css.js.map +1 -0
- package/components/qr-code/themes/shared/qr-code.common.css.d.ts +1 -0
- package/components/qr-code/themes/shared/qr-code.common.css.js +3 -0
- package/components/qr-code/themes/shared/qr-code.common.css.js.map +1 -0
- package/components/qr-code/themes/themes.d.ts +2 -0
- package/components/qr-code/themes/themes.js +46 -0
- package/components/qr-code/themes/themes.js.map +1 -0
- package/components/qr-code/types.d.ts +16 -0
- package/components/qr-code/types.js +2 -0
- package/components/qr-code/types.js.map +1 -0
- package/components/radio/controller.d.ts +35 -0
- package/components/radio/controller.js +100 -0
- package/components/radio/controller.js.map +1 -0
- package/components/radio/radio.d.ts +26 -14
- package/components/radio/radio.js +47 -36
- package/components/radio/radio.js.map +1 -1
- package/components/radio/themes/themes.d.ts +1 -1
- package/components/radio/themes/themes.js.map +1 -1
- package/components/radio/validators.d.ts +1 -1
- package/components/radio/validators.js +5 -3
- package/components/radio/validators.js.map +1 -1
- package/components/radio-group/radio-group.d.ts +19 -10
- package/components/radio-group/radio-group.js +50 -41
- package/components/radio-group/radio-group.js.map +1 -1
- package/components/radio-group/themes/themes.d.ts +1 -1
- package/components/radio-group/themes/themes.js.map +1 -1
- package/components/rating/rating-symbol.d.ts +1 -1
- package/components/rating/rating-symbol.js +1 -1
- package/components/rating/rating-symbol.js.map +1 -1
- package/components/rating/rating.d.ts +6 -6
- package/components/rating/rating.js +12 -9
- package/components/rating/rating.js.map +1 -1
- package/components/rating/themes/themes.d.ts +1 -1
- package/components/rating/themes/themes.js.map +1 -1
- package/components/resize-container/resize-container.d.ts +4 -4
- package/components/resize-container/resize-container.js +4 -4
- package/components/resize-container/resize-container.js.map +1 -1
- package/components/resize-container/resize-controller.js +2 -2
- package/components/resize-container/resize-controller.js.map +1 -1
- package/components/resize-container/themes/themes.d.ts +1 -1
- package/components/resize-container/themes/themes.js.map +1 -1
- package/components/ripple/ripple.d.ts +1 -1
- package/components/ripple/ripple.js +3 -2
- package/components/ripple/ripple.js.map +1 -1
- package/components/select/select-group.d.ts +9 -2
- package/components/select/select-group.js +21 -5
- package/components/select/select-group.js.map +1 -1
- package/components/select/select-header.d.ts +1 -1
- package/components/select/select-header.js +7 -2
- package/components/select/select-header.js.map +1 -1
- package/components/select/select-item.d.ts +4 -4
- package/components/select/select-item.js +3 -3
- package/components/select/select-item.js.map +1 -1
- package/components/select/select.d.ts +48 -27
- package/components/select/select.js +128 -74
- package/components/select/select.js.map +1 -1
- package/components/select/themes/select.base.css.js +1 -1
- package/components/select/themes/select.base.css.js.map +1 -1
- package/components/select/themes/themes.d.ts +1 -1
- package/components/select/themes/themes.js.map +1 -1
- package/components/select/validators.d.ts +1 -1
- package/components/select/validators.js +1 -1
- package/components/select/validators.js.map +1 -1
- package/components/slider/range-slider.d.ts +2 -2
- package/components/slider/range-slider.js +3 -3
- package/components/slider/range-slider.js.map +1 -1
- package/components/slider/slider-base.js +9 -5
- package/components/slider/slider-base.js.map +1 -1
- package/components/slider/slider-label.js +1 -1
- package/components/slider/slider-label.js.map +1 -1
- package/components/slider/slider.d.ts +3 -3
- package/components/slider/slider.js +6 -6
- package/components/slider/slider.js.map +1 -1
- package/components/slider/themes/themes.d.ts +1 -1
- package/components/slider/themes/themes.js.map +1 -1
- package/components/snackbar/snackbar.d.ts +3 -3
- package/components/snackbar/snackbar.js +4 -4
- package/components/snackbar/snackbar.js.map +1 -1
- package/components/snackbar/themes/themes.d.ts +1 -1
- package/components/snackbar/themes/themes.js.map +1 -1
- package/components/splitter/splitter.d.ts +106 -23
- package/components/splitter/splitter.js +234 -147
- package/components/splitter/splitter.js.map +1 -1
- package/components/splitter/themes/themes.d.ts +1 -1
- package/components/splitter/themes/themes.js.map +1 -1
- package/components/splitter/types.d.ts +14 -3
- package/components/splitter/types.js.map +1 -1
- package/components/stepper/common/animations.d.ts +1 -1
- package/components/stepper/common/animations.js +2 -2
- package/components/stepper/common/animations.js.map +1 -1
- package/components/stepper/step.d.ts +1 -1
- package/components/stepper/step.js +7 -7
- package/components/stepper/step.js.map +1 -1
- package/components/stepper/stepper.d.ts +5 -5
- package/components/stepper/stepper.js +12 -9
- package/components/stepper/stepper.js.map +1 -1
- package/components/stepper/themes/step/themes.d.ts +1 -1
- package/components/stepper/themes/step/themes.js.map +1 -1
- package/components/tabs/tab-dom.d.ts +31 -28
- package/components/tabs/tab-dom.js +84 -34
- package/components/tabs/tab-dom.js.map +1 -1
- package/components/tabs/tab.d.ts +24 -6
- package/components/tabs/tab.js +34 -13
- package/components/tabs/tab.js.map +1 -1
- package/components/tabs/tabs.d.ts +36 -22
- package/components/tabs/tabs.js +113 -102
- package/components/tabs/tabs.js.map +1 -1
- package/components/tabs/themes/shared/tabs/tabs.indigo.css.js +1 -1
- package/components/tabs/themes/shared/tabs/tabs.indigo.css.js.map +1 -1
- package/components/tabs/themes/tab-themes.d.ts +1 -1
- package/components/tabs/themes/tab-themes.js.map +1 -1
- package/components/tabs/themes/tabs-themes.d.ts +1 -1
- package/components/tabs/themes/tabs-themes.js.map +1 -1
- package/components/tabs/themes/tabs.base.css.js +1 -1
- package/components/tabs/themes/tabs.base.css.js.map +1 -1
- package/components/textarea/textarea.d.ts +19 -14
- package/components/textarea/textarea.js +22 -17
- package/components/textarea/textarea.js.map +1 -1
- package/components/textarea/themes/themes.d.ts +1 -1
- package/components/textarea/themes/themes.js.map +1 -1
- package/components/textarea/validators.d.ts +1 -1
- package/components/textarea/validators.js +1 -1
- package/components/textarea/validators.js.map +1 -1
- package/components/theme-provider/theme-provider.d.ts +1 -1
- package/components/theme-provider/theme-provider.js +2 -2
- package/components/theme-provider/theme-provider.js.map +1 -1
- package/components/tile-manager/position.d.ts +1 -1
- package/components/tile-manager/position.js +2 -2
- package/components/tile-manager/position.js.map +1 -1
- package/components/tile-manager/resize-state.js +4 -3
- package/components/tile-manager/resize-state.js.map +1 -1
- package/components/tile-manager/themes/container.d.ts +1 -1
- package/components/tile-manager/themes/container.js.map +1 -1
- package/components/tile-manager/themes/tile.d.ts +1 -1
- package/components/tile-manager/themes/tile.js.map +1 -1
- package/components/tile-manager/tile-ghost-util.js +1 -1
- package/components/tile-manager/tile-ghost-util.js.map +1 -1
- package/components/tile-manager/tile-manager.d.ts +1 -1
- package/components/tile-manager/tile-manager.js +7 -7
- package/components/tile-manager/tile-manager.js.map +1 -1
- package/components/tile-manager/tile.d.ts +4 -4
- package/components/tile-manager/tile.js +16 -13
- package/components/tile-manager/tile.js.map +1 -1
- package/components/toast/themes/themes.d.ts +1 -1
- package/components/toast/themes/themes.js.map +1 -1
- package/components/toast/toast.d.ts +1 -1
- package/components/toast/toast.js +3 -3
- package/components/toast/toast.js.map +1 -1
- package/components/tooltip/controller.d.ts +18 -16
- package/components/tooltip/controller.js +62 -41
- package/components/tooltip/controller.js.map +1 -1
- package/components/tooltip/service.d.ts +2 -1
- package/components/tooltip/service.js +10 -15
- package/components/tooltip/service.js.map +1 -1
- package/components/tooltip/themes/shared/tooltip.common.css.js +1 -1
- package/components/tooltip/themes/shared/tooltip.common.css.js.map +1 -1
- package/components/tooltip/themes/shared/tooltip.indigo.css.js +1 -1
- package/components/tooltip/themes/shared/tooltip.indigo.css.js.map +1 -1
- package/components/tooltip/themes/themes.d.ts +1 -1
- package/components/tooltip/themes/themes.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.d.ts +64 -18
- package/components/tooltip/tooltip.js +110 -60
- package/components/tooltip/tooltip.js.map +1 -1
- package/components/tree/themes/container.base.css.js +1 -1
- package/components/tree/themes/container.base.css.js.map +1 -1
- package/components/tree/themes/container.d.ts +1 -1
- package/components/tree/themes/container.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/item.d.ts +1 -1
- package/components/tree/themes/item.js.map +1 -1
- package/components/tree/tree-item.d.ts +62 -36
- package/components/tree/tree-item.js +198 -208
- package/components/tree/tree-item.js.map +1 -1
- package/components/tree/tree.common.d.ts +16 -1
- package/components/tree/tree.common.js +40 -1
- package/components/tree/tree.common.js.map +1 -1
- package/components/tree/tree.d.ts +21 -14
- package/components/tree/tree.js +64 -72
- package/components/tree/tree.js.map +1 -1
- package/components/tree/tree.navigation.d.ts +39 -29
- package/components/tree/tree.navigation.js +140 -192
- package/components/tree/tree.navigation.js.map +1 -1
- package/components/tree/tree.selection.d.ts +32 -31
- package/components/tree/tree.selection.js +184 -178
- package/components/tree/tree.selection.js.map +1 -1
- package/components/types.js.map +1 -1
- package/components/validation-container/validation-container.d.ts +1 -1
- package/components/validation-container/validation-container.js +7 -6
- package/components/validation-container/validation-container.js.map +1 -1
- package/components/virtualization/engine.d.ts +92 -0
- package/components/virtualization/engine.js +217 -0
- package/components/virtualization/engine.js.map +1 -0
- package/components/virtualization/types.d.ts +53 -0
- package/components/virtualization/types.js +14 -0
- package/components/virtualization/types.js.map +1 -0
- package/components/virtualization/virtualization.d.ts +235 -0
- package/components/virtualization/virtualization.js +474 -0
- package/components/virtualization/virtualization.js.map +1 -0
- package/components/visually-hidden/visually-hidden.js +1 -1
- package/components/visually-hidden/visually-hidden.js.map +1 -1
- package/custom-elements.json +57745 -48130
- package/extras/chat-markdown-renderer.d.ts +1 -1
- package/extras/chat-markdown-renderer.js.map +1 -1
- package/igniteui-webcomponents.css-data.json +2 -2
- package/igniteui-webcomponents.html-data.json +1 -1
- package/index.d.ts +17 -12
- package/index.js +11 -9
- package/index.js.map +1 -1
- package/internals/abort-handler.js.map +1 -0
- package/internals/context.d.ts +39 -0
- package/{components/common → internals}/context.js +2 -1
- package/internals/context.js.map +1 -0
- package/internals/controllers/adopt-styles.d.ts +76 -0
- package/internals/controllers/adopt-styles.js +173 -0
- package/internals/controllers/adopt-styles.js.map +1 -0
- package/internals/controllers/aria-projection.d.ts +144 -0
- package/internals/controllers/aria-projection.js +138 -0
- package/internals/controllers/aria-projection.js.map +1 -0
- package/{components/common → internals}/controllers/async-consumer.js +8 -7
- package/internals/controllers/async-consumer.js.map +1 -0
- package/internals/controllers/command.js.map +1 -0
- package/{components/common → internals}/controllers/drag.js +3 -2
- package/internals/controllers/drag.js.map +1 -0
- package/{components/common → internals}/controllers/focus-ring.js +5 -2
- package/internals/controllers/focus-ring.js.map +1 -0
- package/{components/common → internals}/controllers/fullscreen.js +6 -3
- package/internals/controllers/fullscreen.js.map +1 -0
- package/{components/common → internals}/controllers/gestures.d.ts +1 -1
- package/{components/common → internals}/controllers/gestures.js +4 -4
- package/internals/controllers/gestures.js.map +1 -0
- package/{components/common → internals}/controllers/id-resolver.js +15 -21
- package/internals/controllers/id-resolver.js.map +1 -0
- package/{components/common → internals}/controllers/internals.d.ts +39 -3
- package/{components/common → internals}/controllers/internals.js +28 -0
- package/internals/controllers/internals.js.map +1 -0
- package/{components/common → internals}/controllers/key-bindings.d.ts +3 -6
- package/{components/common → internals}/controllers/key-bindings.js +43 -29
- package/internals/controllers/key-bindings.js.map +1 -0
- package/{components/common → internals}/controllers/mutation-observer.d.ts +3 -2
- package/{components/common → internals}/controllers/mutation-observer.js +24 -22
- package/internals/controllers/mutation-observer.js.map +1 -0
- package/{components/common → internals}/controllers/resize-observer.d.ts +11 -1
- package/{components/common → internals}/controllers/resize-observer.js +13 -2
- package/internals/controllers/resize-observer.js.map +1 -0
- package/{components/common → internals}/controllers/root-click.js +8 -13
- package/internals/controllers/root-click.js.map +1 -0
- package/{components/common → internals}/controllers/root-scroll.d.ts +11 -8
- package/internals/controllers/root-scroll.js +71 -0
- package/internals/controllers/root-scroll.js.map +1 -0
- package/{components/common → internals}/controllers/slot.d.ts +17 -1
- package/{components/common → internals}/controllers/slot.js +18 -6
- package/internals/controllers/slot.js.map +1 -0
- package/internals/date/compare.d.ts +2 -0
- package/internals/date/compare.js +23 -0
- package/internals/date/compare.js.map +1 -0
- package/internals/date/converters.d.ts +18 -0
- package/internals/date/converters.js +73 -0
- package/internals/date/converters.js.map +1 -0
- package/{components/calendar → internals/date}/model.d.ts +6 -3
- package/{components/calendar → internals/date}/model.js +23 -0
- package/internals/date/model.js.map +1 -0
- package/internals/decorators/blazorAdditionalDependencies.js.map +1 -0
- package/internals/decorators/blazorDeepImport.js.map +1 -0
- package/internals/decorators/blazorInclude.js.map +1 -0
- package/internals/decorators/blazorIndirectRender.js.map +1 -0
- package/internals/decorators/blazorSuppressComponent.js.map +1 -0
- package/internals/decorators/shadow-options.js.map +1 -0
- package/internals/decorators/watch.js.map +1 -0
- package/internals/definitions/defineAllComponents.js +153 -0
- package/internals/definitions/defineAllComponents.js.map +1 -0
- package/internals/definitions/defineComponents.js.map +1 -0
- package/internals/definitions/register.js.map +1 -0
- package/{components/common → internals}/i18n/EN/calendar.resources.js +1 -1
- package/internals/i18n/EN/calendar.resources.js.map +1 -0
- package/internals/i18n/EN/chat.resources.js.map +1 -0
- package/internals/i18n/EN/date-picker.resources.js.map +1 -0
- package/internals/i18n/EN/date-range-picker.resources.js.map +1 -0
- package/internals/i18n/i18n-controller.js.map +1 -0
- package/{components/common → internals}/i18n/utils.js +1 -1
- package/internals/i18n/utils.js.map +1 -0
- package/{components/common → internals}/mixins/alert.d.ts +2 -2
- package/{components/common → internals}/mixins/alert.js +3 -3
- package/internals/mixins/alert.js.map +1 -0
- package/{components/common → internals}/mixins/combo-box.d.ts +10 -2
- package/{components/common → internals}/mixins/combo-box.js +9 -4
- package/internals/mixins/combo-box.js.map +1 -0
- package/internals/mixins/constructor.js.map +1 -0
- package/internals/mixins/event-emitter.js.map +1 -0
- package/{components/common → internals}/mixins/forms/associated-required.js +10 -19
- package/internals/mixins/forms/associated-required.js.map +1 -0
- package/{components/common → internals}/mixins/forms/associated.js +45 -38
- package/internals/mixins/forms/associated.js.map +1 -0
- package/{components/common → internals}/mixins/forms/form-transformers.d.ts +1 -1
- package/{components/common → internals}/mixins/forms/form-transformers.js +2 -2
- package/internals/mixins/forms/form-transformers.js.map +1 -0
- package/internals/mixins/forms/form-value.js.map +1 -0
- package/{components/common → internals}/mixins/forms/types.d.ts +5 -6
- package/internals/mixins/forms/types.js.map +1 -0
- package/{components/common → internals}/mixins/mask-behavior.d.ts +11 -3
- package/{components/common → internals}/mixins/mask-behavior.js +117 -29
- package/internals/mixins/mask-behavior.js.map +1 -0
- package/{components/common → internals}/mixins/option.d.ts +0 -2
- package/{components/common → internals}/mixins/option.js +1 -4
- package/internals/mixins/option.js.map +1 -0
- package/internals/part-map.js.map +1 -0
- package/{components/common → internals}/templates/input-shell.d.ts +8 -1
- package/{components/common → internals}/templates/input-shell.js +14 -4
- package/internals/templates/input-shell.js.map +1 -0
- package/{components/common → internals}/templates/masked-input.d.ts +8 -4
- package/{components/common → internals}/templates/masked-input.js +4 -3
- package/internals/templates/masked-input.js.map +1 -0
- package/internals/utils/arrays.d.ts +53 -0
- package/internals/utils/arrays.js +31 -0
- package/internals/utils/arrays.js.map +1 -0
- package/internals/utils/dom.d.ts +92 -0
- package/internals/utils/dom.js +143 -0
- package/internals/utils/dom.js.map +1 -0
- package/internals/utils/events.d.ts +41 -0
- package/internals/utils/events.js +37 -0
- package/internals/utils/events.js.map +1 -0
- package/internals/utils/lit.d.ts +8 -0
- package/internals/utils/lit.js +15 -0
- package/internals/utils/lit.js.map +1 -0
- package/internals/utils/math.d.ts +50 -0
- package/internals/utils/math.js +38 -0
- package/internals/utils/math.js.map +1 -0
- package/internals/utils/objects.d.ts +25 -0
- package/internals/utils/objects.js +125 -0
- package/internals/utils/objects.js.map +1 -0
- package/internals/utils/strings.d.ts +44 -0
- package/internals/utils/strings.js +46 -0
- package/internals/utils/strings.js.map +1 -0
- package/internals/utils/types.d.ts +13 -0
- package/internals/utils/types.js +31 -0
- package/internals/utils/types.js.map +1 -0
- package/{components/common → internals}/validators.d.ts +1 -1
- package/{components/common → internals}/validators.js +4 -2
- package/internals/validators.js.map +1 -0
- package/package.json +15 -7
- package/themes/dark/bootstrap.css +1 -1
- package/themes/dark/fluent.css +1 -1
- package/themes/dark/indigo.css +1 -1
- package/themes/dark/material.css +1 -1
- package/themes/light/bootstrap.css +1 -1
- package/themes/light/fluent.css +1 -1
- package/themes/light/indigo.css +1 -1
- package/themes/light/material.css +1 -1
- package/theming/theming-controller.d.ts +2 -2
- package/theming/theming-controller.js.map +1 -1
- package/web-types.json +3 -3
- package/components/calendar/model.js.map +0 -1
- package/components/combo/combo-list.d.ts +0 -11
- package/components/combo/combo-list.js +0 -13
- package/components/combo/combo-list.js.map +0 -1
- package/components/common/abort-handler.js.map +0 -1
- package/components/common/context.d.ts +0 -25
- package/components/common/context.js.map +0 -1
- package/components/common/controllers/adopt-styles.d.ts +0 -124
- package/components/common/controllers/adopt-styles.js +0 -75
- package/components/common/controllers/adopt-styles.js.map +0 -1
- package/components/common/controllers/async-consumer.js.map +0 -1
- package/components/common/controllers/command.js.map +0 -1
- package/components/common/controllers/drag.js.map +0 -1
- package/components/common/controllers/focus-ring.js.map +0 -1
- package/components/common/controllers/fullscreen.js.map +0 -1
- package/components/common/controllers/gestures.js.map +0 -1
- package/components/common/controllers/id-resolver.js.map +0 -1
- package/components/common/controllers/internals.js.map +0 -1
- package/components/common/controllers/key-bindings.js.map +0 -1
- package/components/common/controllers/mutation-observer.js.map +0 -1
- package/components/common/controllers/resize-observer.js.map +0 -1
- package/components/common/controllers/root-click.js.map +0 -1
- package/components/common/controllers/root-scroll.js +0 -63
- package/components/common/controllers/root-scroll.js.map +0 -1
- package/components/common/controllers/slot.js.map +0 -1
- package/components/common/decorators/blazorAdditionalDependencies.js.map +0 -1
- package/components/common/decorators/blazorDeepImport.js.map +0 -1
- package/components/common/decorators/blazorInclude.js.map +0 -1
- package/components/common/decorators/blazorIndirectRender.js.map +0 -1
- package/components/common/decorators/blazorSuppressComponent.js.map +0 -1
- package/components/common/decorators/shadow-options.js.map +0 -1
- package/components/common/decorators/watch.js.map +0 -1
- package/components/common/definitions/defineAllComponents.js +0 -151
- package/components/common/definitions/defineAllComponents.js.map +0 -1
- package/components/common/definitions/defineComponents.js.map +0 -1
- package/components/common/definitions/register.js.map +0 -1
- package/components/common/i18n/EN/calendar.resources.js.map +0 -1
- package/components/common/i18n/EN/chat.resources.js.map +0 -1
- package/components/common/i18n/EN/date-picker.resources.js.map +0 -1
- package/components/common/i18n/EN/date-range-picker.resources.js.map +0 -1
- package/components/common/i18n/i18n-controller.js.map +0 -1
- package/components/common/i18n/utils.js.map +0 -1
- package/components/common/mixins/alert.js.map +0 -1
- package/components/common/mixins/combo-box.js.map +0 -1
- package/components/common/mixins/constructor.js.map +0 -1
- package/components/common/mixins/event-emitter.js.map +0 -1
- package/components/common/mixins/forms/associated-required.js.map +0 -1
- package/components/common/mixins/forms/associated.js.map +0 -1
- package/components/common/mixins/forms/form-transformers.js.map +0 -1
- package/components/common/mixins/forms/form-value.js.map +0 -1
- package/components/common/mixins/forms/types.js.map +0 -1
- package/components/common/mixins/mask-behavior.js.map +0 -1
- package/components/common/mixins/option.js.map +0 -1
- package/components/common/part-map.js.map +0 -1
- package/components/common/templates/input-shell.js.map +0 -1
- package/components/common/templates/masked-input.js.map +0 -1
- package/components/common/util.d.ts +0 -196
- package/components/common/util.js +0 -390
- package/components/common/util.js.map +0 -1
- package/components/common/validators.js.map +0 -1
- package/components/icon/registry/default-map.d.ts +0 -107
- package/components/icon/registry/default-map.js +0 -25
- package/components/icon/registry/default-map.js.map +0 -1
- package/components/nav-drawer/themes/shared/container/nav-drawer.fluent.css.js +0 -3
- package/components/nav-drawer/themes/shared/container/nav-drawer.fluent.css.js.map +0 -1
- package/components/radio/utils.d.ts +0 -13
- package/components/radio/utils.js +0 -37
- package/components/radio/utils.js.map +0 -1
- /package/components/{nav-drawer/themes/shared/container/nav-drawer.fluent.css.d.ts → qr-code/themes/dark/qr-code.bootstrap.css.d.ts} +0 -0
- /package/{components/common → internals}/abort-handler.d.ts +0 -0
- /package/{components/common → internals}/abort-handler.js +0 -0
- /package/{components/common → internals}/controllers/async-consumer.d.ts +0 -0
- /package/{components/common → internals}/controllers/command.d.ts +0 -0
- /package/{components/common → internals}/controllers/command.js +0 -0
- /package/{components/common → internals}/controllers/drag.d.ts +0 -0
- /package/{components/common → internals}/controllers/focus-ring.d.ts +0 -0
- /package/{components/common → internals}/controllers/fullscreen.d.ts +0 -0
- /package/{components/common → internals}/controllers/id-resolver.d.ts +0 -0
- /package/{components/common → internals}/controllers/root-click.d.ts +0 -0
- /package/{components/common → internals}/decorators/blazorAdditionalDependencies.d.ts +0 -0
- /package/{components/common → internals}/decorators/blazorAdditionalDependencies.js +0 -0
- /package/{components/common → internals}/decorators/blazorDeepImport.d.ts +0 -0
- /package/{components/common → internals}/decorators/blazorDeepImport.js +0 -0
- /package/{components/common → internals}/decorators/blazorInclude.d.ts +0 -0
- /package/{components/common → internals}/decorators/blazorInclude.js +0 -0
- /package/{components/common → internals}/decorators/blazorIndirectRender.d.ts +0 -0
- /package/{components/common → internals}/decorators/blazorIndirectRender.js +0 -0
- /package/{components/common → internals}/decorators/blazorSuppressComponent.d.ts +0 -0
- /package/{components/common → internals}/decorators/blazorSuppressComponent.js +0 -0
- /package/{components/common → internals}/decorators/shadow-options.d.ts +0 -0
- /package/{components/common → internals}/decorators/shadow-options.js +0 -0
- /package/{components/common → internals}/decorators/watch.d.ts +0 -0
- /package/{components/common → internals}/decorators/watch.js +0 -0
- /package/{components/common → internals}/definitions/defineAllComponents.d.ts +0 -0
- /package/{components/common → internals}/definitions/defineComponents.d.ts +0 -0
- /package/{components/common → internals}/definitions/defineComponents.js +0 -0
- /package/{components/common → internals}/definitions/register.d.ts +0 -0
- /package/{components/common → internals}/definitions/register.js +0 -0
- /package/{components/common → internals}/i18n/EN/calendar.resources.d.ts +0 -0
- /package/{components/common → internals}/i18n/EN/chat.resources.d.ts +0 -0
- /package/{components/common → internals}/i18n/EN/chat.resources.js +0 -0
- /package/{components/common → internals}/i18n/EN/date-picker.resources.d.ts +0 -0
- /package/{components/common → internals}/i18n/EN/date-picker.resources.js +0 -0
- /package/{components/common → internals}/i18n/EN/date-range-picker.resources.d.ts +0 -0
- /package/{components/common → internals}/i18n/EN/date-range-picker.resources.js +0 -0
- /package/{components/common → internals}/i18n/i18n-controller.d.ts +0 -0
- /package/{components/common → internals}/i18n/i18n-controller.js +0 -0
- /package/{components/common → internals}/i18n/utils.d.ts +0 -0
- /package/{components/common → internals}/mixins/constructor.d.ts +0 -0
- /package/{components/common → internals}/mixins/constructor.js +0 -0
- /package/{components/common → internals}/mixins/event-emitter.d.ts +0 -0
- /package/{components/common → internals}/mixins/event-emitter.js +0 -0
- /package/{components/common → internals}/mixins/forms/associated-required.d.ts +0 -0
- /package/{components/common → internals}/mixins/forms/associated.d.ts +0 -0
- /package/{components/common → internals}/mixins/forms/form-value.d.ts +0 -0
- /package/{components/common → internals}/mixins/forms/form-value.js +0 -0
- /package/{components/common → internals}/mixins/forms/types.js +0 -0
- /package/{components/common → internals}/part-map.d.ts +0 -0
- /package/{components/common → internals}/part-map.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"matrix.js","sourceRoot":"","sources":["../../../../src/components/qr-code/model/matrix.ts"],"names":[],"mappings":"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","sourcesContent":["import type { QrErrorCorrectionLevel } from '../types.js';\nimport { encodeQR } from './encode.js';\nimport { applyMask, selectBestMask } from './mask.js';\n\n// Alignment pattern locations for each version (1-40) of QR code.\nconst ALIGNMENT_PATTERN_TABLE: number[][] = [\n [], // V1\n [6, 18], // V2\n [6, 22], // V3\n [6, 26], // V4\n [6, 30], // V5\n [6, 34], // V6\n [6, 22, 38], // V7\n [6, 24, 42], // V8\n [6, 26, 46], // V9\n [6, 28, 50], // V10\n [6, 30, 54], // V11\n [6, 32, 58], // V12\n [6, 34, 62], // V13\n [6, 26, 46, 66], // V14\n [6, 26, 48, 70], // V15\n [6, 26, 50, 74], // V16\n [6, 30, 54, 78], // V17\n [6, 30, 56, 82], // V18\n [6, 30, 58, 86], // V19\n [6, 34, 62, 90], // V20\n [6, 28, 50, 72, 94], // V21\n [6, 26, 50, 74, 98], // V22\n [6, 30, 54, 78, 102], // V23\n [6, 28, 54, 80, 106], // V24\n [6, 32, 58, 84, 110], // V25\n [6, 30, 58, 86, 114], // V26\n [6, 34, 62, 90, 118], // V27\n [6, 26, 50, 74, 98, 122], // V28\n [6, 30, 54, 78, 102, 126], // V29\n [6, 26, 52, 78, 104, 130], // V30\n [6, 30, 56, 82, 108, 132], // V31\n [6, 34, 60, 86, 112, 136], // V32\n [6, 30, 58, 86, 114, 142], // V33\n [6, 34, 62, 90, 118, 146], // V34\n [6, 30, 54, 78, 102, 126, 150], // V35\n [6, 24, 50, 76, 102, 128, 154], // V36\n [6, 28, 54, 80, 106, 132, 158], // V37\n [6, 32, 58, 84, 110, 136, 162], // V38\n [6, 26, 54, 82, 110, 138, 166], // V39\n [6, 30, 58, 86, 114, 142, 170], // V40\n];\n\n// Format information strings for each combination of error correction level and mask pattern.\nconst FORMAT_INFO_TABLE: number[] = [\n // L (EC level bits 01)\n 0x77c4, 0x72f3, 0x7daa, 0x789d, 0x662f, 0x6318, 0x6c41, 0x6976,\n // M (EC level bits 00)\n 0x5412, 0x5125, 0x5e7c, 0x5b4b, 0x45f9, 0x40ce, 0x4f97, 0x4aa0,\n // Q (EC level bits 11)\n 0x355f, 0x3068, 0x3f31, 0x3a06, 0x24b4, 0x2183, 0x2eda, 0x2bed,\n // H (EC level bits 10)\n 0x1689, 0x13be, 0x1ce7, 0x19d0, 0x0762, 0x0255, 0x0d0c, 0x083b,\n];\n\n// Version information strings for versions 7 and above (6 bits per version).\nconst VERSION_INFO_TABLE: number[] = [\n 0x07c94, // V7\n 0x085bc, // V8\n 0x09a99, // V9\n 0x0a4d3, // V10\n 0x0bbf6, // V11\n 0x0c762, // V12\n 0x0d847, // V13\n 0x0e60d, // V14\n 0x0f928, // V15\n 0x10b78, // V16\n 0x1145d, // V17\n 0x12a17, // V18\n 0x13532, // V19\n 0x149a6, // V20\n 0x15683, // V21\n 0x168c9, // V22\n 0x177ec, // V23\n 0x18ec4, // V24\n 0x191e1, // V25\n 0x1afab, // V26\n 0x1b08e, // V27\n 0x1cc1a, // V28\n 0x1d33f, // V29\n 0x1ed75, // V30\n 0x1f250, // V31\n 0x209d5, // V32\n 0x216f0, // V33\n 0x228ba, // V34\n 0x2379f, // V35\n 0x24b0b, // V36\n 0x2542e, // V37\n 0x26a64, // V38\n 0x27541, // V39\n 0x28c69, // V40\n];\n\nconst EC_LEVEL_FORMAT_INDEX: Record<QrErrorCorrectionLevel, number> = {\n L: 0,\n M: 1,\n Q: 2,\n H: 3,\n};\n\nfunction createMatrix(size: number): boolean[][] {\n return Array.from({ length: size }, () => new Array(size).fill(false));\n}\n\n/**\n * Places a finder pattern at the specified position in the matrix and marks the function modules.\n * A finder pattern is a 7x7 module pattern with a specific arrangement of black and white modules,\n * surrounded by a 1-module white separator. This function updates both the main matrix and the\n * functionModules matrix to indicate which modules are part of the finder pattern and its separator.\n */\nfunction placeFinderPattern(\n matrix: boolean[][],\n functionModules: boolean[][],\n row: number,\n col: number\n): void {\n for (let r = -1; r <= 7; r++) {\n for (let c = -1; c <= 7; c++) {\n const mr = row + r;\n const mc = col + c;\n if (mr < 0 || mr >= matrix.length || mc < 0 || mc >= matrix.length) {\n continue;\n }\n functionModules[mr][mc] = true;\n if (r === -1 || r === 7 || c === -1 || c === 7) {\n matrix[mr][mc] = false; // Separator (white border)\n } else if (r === 0 || r === 6 || c === 0 || c === 6) {\n matrix[mr][mc] = true; // Finder pattern (black)\n } else if (r >= 2 && r <= 4 && c >= 2 && c <= 4) {\n matrix[mr][mc] = true; // inner square (black)\n } else {\n matrix[mr][mc] = false; // inner area (white)\n }\n }\n }\n}\n\n/**\n * Places an alignment pattern at the specified position in the matrix and marks the function modules.\n * An alignment pattern is a 5x5 module pattern with a specific arrangement of black and white modules.\n * This function updates both the main matrix and the functionModules matrix to indicate which modules\n * are part of the alignment pattern.\n */\nfunction placeAlignmentPattern(\n matrix: boolean[][],\n functionModules: boolean[][],\n row: number,\n col: number\n): void {\n for (let r = -2; r <= 2; r++) {\n for (let c = -2; c <= 2; c++) {\n const mr = row + r;\n const mc = col + c;\n functionModules[mr][mc] = true;\n if (r === -2 || r === 2 || c === -2 || c === 2) {\n matrix[mr][mc] = true; // Alignment pattern (black)\n } else if (r === 0 && c === 0) {\n matrix[mr][mc] = true; // center module (black)\n } else {\n matrix[mr][mc] = false; // other modules (white)\n }\n }\n }\n}\n\n/**\n * Places timing patterns in the matrix and marks the function modules.\n * Timing patterns are alternating black and white modules that run horizontally and vertically between the finder patterns.\n * They help the QR code reader determine the size of the modules and the overall structure of the QR code.\n * This function updates both the main matrix and the functionModules matrix to indicate which modules are part of the timing patterns.\n */\nfunction placeTimingPatterns(\n matrix: boolean[][],\n functionModules: boolean[][]\n): void {\n const size = matrix.length;\n for (let i = 8; i < size - 8; i++) {\n const bit = i % 2 === 0;\n matrix[6][i] = bit;\n matrix[i][6] = bit;\n functionModules[6][i] = true;\n functionModules[i][6] = true;\n }\n}\n\nconst FORMAT_INFO_POSITIONS: [number, number][] = [\n [8, 0],\n [8, 1],\n [8, 2],\n [8, 3],\n [8, 4],\n [8, 5],\n [8, 7],\n [8, 8],\n [7, 8],\n [5, 8],\n [4, 8],\n [3, 8],\n [2, 8],\n [1, 8],\n [0, 8],\n];\n\n/**\n * Reserves the areas in the matrix for format information and marks them as function modules.\n * Format information consists of 15 bits that encode the error correction level and mask pattern.\n * These bits are placed in specific positions around the top-left finder pattern and along the timing patterns.\n * This function updates the functionModules matrix to indicate which modules are reserved for format information.\n */\nfunction reserveFormatInfoAreas(\n functionModules: boolean[][],\n size: number\n): void {\n for (const [r, c] of FORMAT_INFO_POSITIONS) {\n functionModules[r][c] = true;\n }\n\n for (let i = 0; i < 8; i++) {\n functionModules[8][size - 1 - i] = true;\n }\n\n for (let i = 0; i < 7; i++) {\n functionModules[size - 7 + i][8] = true;\n }\n}\n\n/**\n * Reserves the areas in the matrix for version information (for versions 7 and above) and marks them as function modules.\n * Version information consists of 18 bits that encode the version number and is placed in specific positions near the top-right and bottom-left finder patterns.\n * This function updates both the main matrix and the functionModules matrix to indicate which modules are reserved for version information.\n */\nfunction reserveVersionInfoAreas(\n matrix: boolean[][],\n functionModules: boolean[][],\n version: number\n): void {\n if (version < 7) return;\n const size = matrix.length;\n const versionInfo = VERSION_INFO_TABLE[version - 7];\n\n for (let i = 0; i < 18; i++) {\n const bit = (versionInfo >> i) & 1;\n const r = Math.floor(i / 3);\n const c = i % 3;\n matrix[r][size - 11 + c] = bit === 1;\n functionModules[r][size - 11 + c] = true;\n matrix[size - 11 + c][r] = bit === 1;\n functionModules[size - 11 + c][r] = true;\n }\n}\n\n/**\n * Places the data bits from the codewords into the matrix in a zig-zag pattern, skipping function modules.\n * The data bits are placed starting from the bottom-right corner of the matrix and moving upwards in a zig-zag pattern.\n * The function iterates through the codewords and places each bit in the appropriate position in the matrix, while skipping any modules that are reserved for function patterns (finder, alignment, timing, format info, version info).\n * If there are more bits than available modules, the remaining bits are treated as padding and set to 0 (white).\n */\nfunction placeDataBits(\n matrix: boolean[][],\n functionModules: boolean[][],\n codewords: number[]\n): void {\n const size = matrix.length;\n const totalBits = codewords.length * 8;\n let bitIndex = 0;\n\n let col = size - 1;\n let goingUp = true;\n\n while (col >= 0) {\n if (col === 6) {\n col--; // Skip vertical timing pattern\n continue;\n }\n\n const rowStart = goingUp ? size - 1 : 0;\n const rowEnd = goingUp ? -1 : size;\n const rowStep = goingUp ? -1 : 1;\n\n for (let row = rowStart; row !== rowEnd; row += rowStep) {\n for (let dc = 0; dc < 2; dc++) {\n const c = col - dc;\n if (c < 0) continue;\n if (functionModules[row][c]) continue;\n if (bitIndex < totalBits) {\n const byteIndex = Math.floor(bitIndex / 8);\n const bitPosition = 7 - (bitIndex % 8);\n matrix[row][c] = ((codewords[byteIndex] >> bitPosition) & 1) === 1;\n bitIndex++;\n } else {\n matrix[row][c] = false; // Padding bits (set to 0)\n }\n }\n }\n col -= 2;\n goingUp = !goingUp;\n }\n}\n\n/** Result produced by `generateQRCodeMatrix`. */\nexport interface QRCodeMatrixResult {\n /** The fully masked QR boolean matrix ready for rendering. */\n matrix: boolean[][];\n /** QR version (1–40) that was used. */\n version: number;\n /** Side length of the matrix in modules (= `version * 4 + 17`). */\n size: number;\n}\n\n/**\n * Main entry point for QR matrix generation. Encodes `data`, builds the module\n * matrix (finder, alignment, timing, data, format), and applies the optimal mask.\n */\nexport function generateQRCodeMatrix(\n data: string,\n ecLevel: QrErrorCorrectionLevel = 'M',\n requiredVersion?: number\n): QRCodeMatrixResult {\n const encoded = encodeQR(data, ecLevel, requiredVersion);\n const { codewords, version } = encoded;\n\n const size = version * 4 + 17;\n const matrix = createMatrix(size);\n const functionModules = createMatrix(size);\n\n // Place finder patterns\n placeFinderPattern(matrix, functionModules, 0, 0);\n placeFinderPattern(matrix, functionModules, 0, size - 7);\n placeFinderPattern(matrix, functionModules, size - 7, 0);\n\n // Place timing patterns\n placeTimingPatterns(matrix, functionModules);\n\n // Dark module (fixed black module for all versions)\n const darkRow = 4 * version + 9;\n matrix[darkRow][8] = true;\n functionModules[darkRow][8] = true;\n\n // Place alignment patterns\n const alignmentPositions = ALIGNMENT_PATTERN_TABLE[version - 1];\n for (const r of alignmentPositions) {\n for (const c of alignmentPositions) {\n // Skip if this position overlaps with a finder pattern\n if (\n (r <= 8 && c <= 8) ||\n (r <= 8 && c >= size - 8) ||\n (r >= size - 8 && c <= 8)\n ) {\n continue;\n }\n placeAlignmentPattern(matrix, functionModules, r, c);\n }\n }\n\n // Version information (for versions 7 and above)\n reserveVersionInfoAreas(matrix, functionModules, version);\n\n // Format information\n reserveFormatInfoAreas(functionModules, size);\n\n // Place data bits\n placeDataBits(matrix, functionModules, codewords);\n\n // Select best mask\n const bestMask = selectBestMask(matrix, functionModules);\n\n // Apply the best mask to the data modules\n const maskedMatrix = applyMask(matrix, functionModules, bestMask);\n\n // Add format information with the selected mask pattern\n const ecFormatIndex = EC_LEVEL_FORMAT_INDEX[ecLevel];\n const formatBits = FORMAT_INFO_TABLE[ecFormatIndex * 8 + bestMask];\n writeFormatInfo(maskedMatrix, formatBits, size);\n\n return { matrix: maskedMatrix, version, size };\n}\n\nfunction writeFormatInfo(\n matrix: boolean[][],\n formatBits: number,\n size: number\n): void {\n for (let i = 0; i < 15; i++) {\n const bit = (formatBits >> (14 - i)) & 1;\n const [r, c] = FORMAT_INFO_POSITIONS[i];\n matrix[r][c] = bit === 1;\n }\n\n for (let i = 0; i < 8; i++) {\n const bit = (formatBits >> i) & 1;\n matrix[8][size - 1 - i] = bit === 1;\n }\n\n for (let i = 0; i < 7; i++) {\n const bit = (formatBits >> (i + 7)) & 1;\n matrix[size - 7 + i][8] = bit === 1;\n }\n\n matrix[size - 8][8] = true;\n}\n"]}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { LitElement, nothing, type PropertyValues } from 'lit';
|
|
2
|
+
import type { QrCornerSquareStyle, QrDotStyle, QrErrorCorrectionLevel } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
*
|
|
5
|
+
* Generates a QR code based on the provided value and options.
|
|
6
|
+
* The component renders an SVG representation of the QR code, which can be customized using various properties.
|
|
7
|
+
*
|
|
8
|
+
* @element igc-qr-code
|
|
9
|
+
*
|
|
10
|
+
* @cssproperty --ig-qr-code-background - The background color of the QR code. Default is `white`.
|
|
11
|
+
* @cssproperty --ig-qr-code-dark-color - The color of the data modules (dots), and the corner square/dot colors unless overridden below. Default is `black`.
|
|
12
|
+
* @cssproperty --ig-qr-code-corner-square-color - The color of the outer finder-pattern corner squares. Defaults to `--ig-qr-code-dark-color`.
|
|
13
|
+
* @cssproperty --ig-qr-code-corner-dot-color - The color of the inner finder-pattern corner dots. Defaults to `--ig-qr-code-dark-color`.
|
|
14
|
+
*
|
|
15
|
+
* @csspart background - The background rect of the QR code.
|
|
16
|
+
* @csspart dots - The data modules (dots) of the QR code.
|
|
17
|
+
* @csspart corner-square - The outer corner (finder-pattern) squares of the QR code.
|
|
18
|
+
* @csspart corner-dot - The inner corner (finder-pattern) dots of the QR code.
|
|
19
|
+
*/
|
|
20
|
+
export default class IgcQrCodeComponent extends LitElement {
|
|
21
|
+
static readonly tagName = "igc-qr-code";
|
|
22
|
+
static styles: import("lit").CSSResult[];
|
|
23
|
+
static register(): void;
|
|
24
|
+
private readonly _abortHandle;
|
|
25
|
+
private readonly _maskId;
|
|
26
|
+
private readonly _maskUrl;
|
|
27
|
+
private _matrixCache?;
|
|
28
|
+
private _logoAspectRatio;
|
|
29
|
+
private _logoLoadFailed;
|
|
30
|
+
constructor();
|
|
31
|
+
/**
|
|
32
|
+
* The value to be encoded in the QR code. This can be any string, such as a URL, text, or other data.
|
|
33
|
+
* When this property is set, the component will generate a QR code representing the provided value.
|
|
34
|
+
*
|
|
35
|
+
* @attr value
|
|
36
|
+
*/
|
|
37
|
+
value?: string;
|
|
38
|
+
/**
|
|
39
|
+
* The version of the QR code to generate, which determines the size and data capacity of the QR code.
|
|
40
|
+
* Valid values are integers from 1 to 40, where each version corresponds to a specific module size and data capacity.
|
|
41
|
+
*
|
|
42
|
+
* If not specified, the component will automatically select the smallest version that can accommodate the provided value.
|
|
43
|
+
*
|
|
44
|
+
* @attr version
|
|
45
|
+
*/
|
|
46
|
+
version?: number;
|
|
47
|
+
/**
|
|
48
|
+
* The error correction level for the QR code, which determines the QR code's ability to be read if it is partially obscured or damaged.
|
|
49
|
+
* Valid values are 'L', 'M', 'Q', and 'H', where 'L' provides the lowest level of error correction and 'H' provides the highest level.
|
|
50
|
+
*
|
|
51
|
+
* @attr error-level
|
|
52
|
+
* @default 'M'
|
|
53
|
+
*/
|
|
54
|
+
errorLevel?: QrErrorCorrectionLevel;
|
|
55
|
+
/**
|
|
56
|
+
* The size of the QR code in pixels. This determines the width and height of the generated QR code. The default value is 128 pixels.
|
|
57
|
+
*
|
|
58
|
+
* @attr size
|
|
59
|
+
* @default 128
|
|
60
|
+
*/
|
|
61
|
+
size: number;
|
|
62
|
+
/**
|
|
63
|
+
* The margin (quiet zone) around the QR code, expressed as a number of QR code modules rather
|
|
64
|
+
* than pixels. This is the blank border area surrounding the code, which helps ensure that it
|
|
65
|
+
* can be properly scanned.
|
|
66
|
+
*
|
|
67
|
+
* @attr margin
|
|
68
|
+
* @default 4
|
|
69
|
+
*/
|
|
70
|
+
margin: number;
|
|
71
|
+
/**
|
|
72
|
+
* The source URL of an optional logo image to be displayed at the center of the QR code. The logo can help with branding and recognition.
|
|
73
|
+
* If provided, the component will attempt to render the logo within the QR code while maintaining scannability.
|
|
74
|
+
*
|
|
75
|
+
* @attr logo-src
|
|
76
|
+
*/
|
|
77
|
+
logoSrc?: string;
|
|
78
|
+
/**
|
|
79
|
+
* The size of the logo, as a ratio of the maximum area that can safely be obscured by a logo
|
|
80
|
+
* while the QR code remains scannable (up to 9% of the code's area, at the highest error
|
|
81
|
+
* correction level). The value should be a number between 0 and 1, where 0 means no logo and 1
|
|
82
|
+
* means the logo will cover the full safe area (not the entire QR code).
|
|
83
|
+
* The default value is 0.4, meaning the logo covers 40% of that safe area (~3.6% of the QR code).
|
|
84
|
+
*
|
|
85
|
+
* When `error-level` is not explicitly set, the smallest error correction level that can
|
|
86
|
+
* accommodate the requested logo size is chosen automatically.
|
|
87
|
+
*
|
|
88
|
+
* @attr logo-size
|
|
89
|
+
* @default 0.4
|
|
90
|
+
*/
|
|
91
|
+
logoSize: number;
|
|
92
|
+
/**
|
|
93
|
+
* The margin around the logo in pixels. This is the whitespace area surrounding the logo within the QR code,
|
|
94
|
+
* which helps ensure that the logo does not interfere with the QR code's scannability.
|
|
95
|
+
*
|
|
96
|
+
* @attr logo-margin
|
|
97
|
+
*/
|
|
98
|
+
logoMargin?: number;
|
|
99
|
+
/**
|
|
100
|
+
* The style of the data modules (dots) in the QR code, and of the inner dot of each finder-pattern
|
|
101
|
+
* corner. This can be 'square', 'circle', or 'rounded'.
|
|
102
|
+
*
|
|
103
|
+
* @attr dot-style
|
|
104
|
+
* @default 'square'
|
|
105
|
+
*/
|
|
106
|
+
dotStyle: QrDotStyle;
|
|
107
|
+
/**
|
|
108
|
+
* The style of the corner squares in the QR code. This can be 'square', 'circle', or 'rounded'.
|
|
109
|
+
*
|
|
110
|
+
* @attr square-style
|
|
111
|
+
* @default 'square'
|
|
112
|
+
*/
|
|
113
|
+
squareStyle: QrCornerSquareStyle;
|
|
114
|
+
/** @internal */
|
|
115
|
+
protected update(props: PropertyValues<this>): void;
|
|
116
|
+
private _resolveAspectRatio;
|
|
117
|
+
/**
|
|
118
|
+
* Determines whether a valid logo source is provided.
|
|
119
|
+
*
|
|
120
|
+
* The method checks if the `logoSrc` property is set and if it does not start with potentially unsafe schemes like 'javascript:' or 'vbscript:'.
|
|
121
|
+
* It also ensures that if the source is a data URI, it must be an image type.
|
|
122
|
+
* This validation helps prevent security risks associated with rendering untrusted content in the QR code.
|
|
123
|
+
*/
|
|
124
|
+
private _hasValidLogoSrc;
|
|
125
|
+
private _pickErrorLevel;
|
|
126
|
+
private _getErrorLevelAndArea;
|
|
127
|
+
private _getMatrix;
|
|
128
|
+
protected render(): import("lit-html").TemplateResult<1> | typeof nothing;
|
|
129
|
+
}
|
|
130
|
+
declare global {
|
|
131
|
+
interface HTMLElementTagNameMap {
|
|
132
|
+
'igc-qr-code': IgcQrCodeComponent;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { html, LitElement, nothing } from 'lit';
|
|
8
|
+
import { property, state } from 'lit/decorators.js';
|
|
9
|
+
import { createAbortHandle } from '#internals/abort-handler.js';
|
|
10
|
+
import { registerComponent } from '#internals/definitions/register.js';
|
|
11
|
+
import { bindIf } from '#internals/utils/lit.js';
|
|
12
|
+
import { clamp } from '#internals/utils/math.js';
|
|
13
|
+
import { nanoid } from '#internals/utils/strings.js';
|
|
14
|
+
import { addThemingController } from '#theming/theming-controller.js';
|
|
15
|
+
import { generateQRCodeMatrix } from './model/matrix.js';
|
|
16
|
+
import { DEFAULT_SIZE_RATIO, MAX_SAFE_AREA, SAFE_AREAS, } from './renderer/constants.js';
|
|
17
|
+
import { renderQrFinders } from './renderer/corner.js';
|
|
18
|
+
import { renderQrDots } from './renderer/dots.js';
|
|
19
|
+
import { renderQrMaskAndImage } from './renderer/image.js';
|
|
20
|
+
import { styles } from './themes/qr-code.base.css.js';
|
|
21
|
+
import { styles as shared } from './themes/shared/qr-code.common.css.js';
|
|
22
|
+
import { all } from './themes/themes.js';
|
|
23
|
+
export default class IgcQrCodeComponent extends LitElement {
|
|
24
|
+
static { this.tagName = 'igc-qr-code'; }
|
|
25
|
+
static { this.styles = [styles, shared]; }
|
|
26
|
+
static register() {
|
|
27
|
+
registerComponent(IgcQrCodeComponent);
|
|
28
|
+
}
|
|
29
|
+
constructor() {
|
|
30
|
+
super();
|
|
31
|
+
this._abortHandle = createAbortHandle();
|
|
32
|
+
this._maskId = nanoid(8);
|
|
33
|
+
this._maskUrl = `url(#${this._maskId})`;
|
|
34
|
+
this._logoAspectRatio = 1;
|
|
35
|
+
this._logoLoadFailed = false;
|
|
36
|
+
this.errorLevel = 'M';
|
|
37
|
+
this.size = 128;
|
|
38
|
+
this.margin = 4;
|
|
39
|
+
this.logoSize = 0.4;
|
|
40
|
+
this.dotStyle = 'square';
|
|
41
|
+
this.squareStyle = 'square';
|
|
42
|
+
addThemingController(this, all);
|
|
43
|
+
}
|
|
44
|
+
update(props) {
|
|
45
|
+
if (props.has('logoSrc')) {
|
|
46
|
+
this._resolveAspectRatio();
|
|
47
|
+
}
|
|
48
|
+
super.update(props);
|
|
49
|
+
}
|
|
50
|
+
_resolveAspectRatio() {
|
|
51
|
+
this._abortHandle.abort();
|
|
52
|
+
this._logoLoadFailed = false;
|
|
53
|
+
this._logoAspectRatio = 1;
|
|
54
|
+
if (!this._hasValidLogoSrc()) {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
const signal = this._abortHandle.signal;
|
|
58
|
+
const img = new Image();
|
|
59
|
+
img.src = this.logoSrc;
|
|
60
|
+
if (img.complete) {
|
|
61
|
+
if (img.naturalWidth && img.naturalHeight) {
|
|
62
|
+
this._logoAspectRatio = img.naturalWidth / img.naturalHeight;
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
this._logoLoadFailed = true;
|
|
66
|
+
}
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
img.addEventListener('load', () => {
|
|
70
|
+
if (img.naturalWidth && img.naturalHeight) {
|
|
71
|
+
this._logoAspectRatio = img.naturalWidth / img.naturalHeight;
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
this._logoLoadFailed = true;
|
|
75
|
+
}
|
|
76
|
+
}, { once: true, signal });
|
|
77
|
+
img.addEventListener('error', () => {
|
|
78
|
+
this._logoLoadFailed = true;
|
|
79
|
+
}, { once: true, signal });
|
|
80
|
+
}
|
|
81
|
+
_hasValidLogoSrc() {
|
|
82
|
+
if (!this.logoSrc)
|
|
83
|
+
return false;
|
|
84
|
+
const s = this.logoSrc.trim().toLowerCase();
|
|
85
|
+
if (s.startsWith('javascript:') || s.startsWith('vbscript:'))
|
|
86
|
+
return false;
|
|
87
|
+
if (s.startsWith('data:') && !s.startsWith('data:image/'))
|
|
88
|
+
return false;
|
|
89
|
+
return true;
|
|
90
|
+
}
|
|
91
|
+
_pickErrorLevel(area) {
|
|
92
|
+
if (area <= SAFE_AREAS.L)
|
|
93
|
+
return 'L';
|
|
94
|
+
if (area <= SAFE_AREAS.M)
|
|
95
|
+
return 'M';
|
|
96
|
+
if (area <= SAFE_AREAS.Q)
|
|
97
|
+
return 'Q';
|
|
98
|
+
return 'H';
|
|
99
|
+
}
|
|
100
|
+
_getErrorLevelAndArea(hasLogo) {
|
|
101
|
+
const userErrorLevel = this.errorLevel;
|
|
102
|
+
const size = this.logoSize;
|
|
103
|
+
const sizeRatio = hasLogo ? clamp(size ?? DEFAULT_SIZE_RATIO, 0, 1) : 0;
|
|
104
|
+
const targetArea = sizeRatio * MAX_SAFE_AREA;
|
|
105
|
+
let errorLevel;
|
|
106
|
+
let area;
|
|
107
|
+
if (userErrorLevel) {
|
|
108
|
+
errorLevel = userErrorLevel;
|
|
109
|
+
area = Math.min(targetArea, SAFE_AREAS[userErrorLevel]);
|
|
110
|
+
}
|
|
111
|
+
else if (targetArea > 0) {
|
|
112
|
+
errorLevel = this._pickErrorLevel(targetArea);
|
|
113
|
+
area = targetArea;
|
|
114
|
+
}
|
|
115
|
+
else {
|
|
116
|
+
errorLevel = 'M';
|
|
117
|
+
area = 0;
|
|
118
|
+
}
|
|
119
|
+
return { errorLevel, area };
|
|
120
|
+
}
|
|
121
|
+
_getMatrix(value, errorLevel) {
|
|
122
|
+
const cached = this._matrixCache;
|
|
123
|
+
if (cached &&
|
|
124
|
+
cached.value === value &&
|
|
125
|
+
cached.errorLevel === errorLevel &&
|
|
126
|
+
cached.version === this.version) {
|
|
127
|
+
return cached.result;
|
|
128
|
+
}
|
|
129
|
+
const result = generateQRCodeMatrix(value, errorLevel, this.version);
|
|
130
|
+
this._matrixCache = { value, errorLevel, version: this.version, result };
|
|
131
|
+
return result;
|
|
132
|
+
}
|
|
133
|
+
render() {
|
|
134
|
+
if (!this.value)
|
|
135
|
+
return nothing;
|
|
136
|
+
const hasLogo = this._hasValidLogoSrc() && !this._logoLoadFailed;
|
|
137
|
+
const { errorLevel, area } = this._getErrorLevelAndArea(hasLogo);
|
|
138
|
+
const { matrix, size } = this._getMatrix(this.value, errorLevel);
|
|
139
|
+
const totalModules = size + this.margin * 2;
|
|
140
|
+
const moduleSize = size / totalModules;
|
|
141
|
+
const marginPx = this.margin * moduleSize;
|
|
142
|
+
const svgSize = moduleSize * (size + this.margin * 2);
|
|
143
|
+
const { mask, image, shouldApplyMask } = renderQrMaskAndImage({
|
|
144
|
+
hasLogo,
|
|
145
|
+
src: this.logoSrc,
|
|
146
|
+
aspectRatio: this._logoAspectRatio,
|
|
147
|
+
area,
|
|
148
|
+
size: this.size,
|
|
149
|
+
margin: this.logoMargin,
|
|
150
|
+
svgSize,
|
|
151
|
+
maskId: this._maskId,
|
|
152
|
+
});
|
|
153
|
+
return html `
|
|
154
|
+
<svg
|
|
155
|
+
xmlns="http://www.w3.org/2000/svg"
|
|
156
|
+
role="img"
|
|
157
|
+
width=${this.size}
|
|
158
|
+
height=${this.size}
|
|
159
|
+
viewBox="0 0 ${svgSize} ${svgSize}"
|
|
160
|
+
>
|
|
161
|
+
<title>${this.ariaLabel ?? `QR code: ${this.value}`}</title>
|
|
162
|
+
|
|
163
|
+
<rect part="background" width=${svgSize} height=${svgSize} />
|
|
164
|
+
${mask}
|
|
165
|
+
<g mask=${bindIf(shouldApplyMask, this._maskUrl)}>
|
|
166
|
+
${renderQrDots({
|
|
167
|
+
matrix,
|
|
168
|
+
moduleSize,
|
|
169
|
+
marginPx,
|
|
170
|
+
dotStyle: this.dotStyle,
|
|
171
|
+
})}
|
|
172
|
+
${renderQrFinders({
|
|
173
|
+
size,
|
|
174
|
+
moduleSize,
|
|
175
|
+
marginPx,
|
|
176
|
+
dotStyle: this.dotStyle,
|
|
177
|
+
squareStyle: this.squareStyle,
|
|
178
|
+
})}
|
|
179
|
+
</g>
|
|
180
|
+
${image}
|
|
181
|
+
</svg>
|
|
182
|
+
`;
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
__decorate([
|
|
186
|
+
state()
|
|
187
|
+
], IgcQrCodeComponent.prototype, "_logoAspectRatio", void 0);
|
|
188
|
+
__decorate([
|
|
189
|
+
state()
|
|
190
|
+
], IgcQrCodeComponent.prototype, "_logoLoadFailed", void 0);
|
|
191
|
+
__decorate([
|
|
192
|
+
property()
|
|
193
|
+
], IgcQrCodeComponent.prototype, "value", void 0);
|
|
194
|
+
__decorate([
|
|
195
|
+
property({ type: Number })
|
|
196
|
+
], IgcQrCodeComponent.prototype, "version", void 0);
|
|
197
|
+
__decorate([
|
|
198
|
+
property({ attribute: 'error-level' })
|
|
199
|
+
], IgcQrCodeComponent.prototype, "errorLevel", void 0);
|
|
200
|
+
__decorate([
|
|
201
|
+
property({ type: Number })
|
|
202
|
+
], IgcQrCodeComponent.prototype, "size", void 0);
|
|
203
|
+
__decorate([
|
|
204
|
+
property({ type: Number })
|
|
205
|
+
], IgcQrCodeComponent.prototype, "margin", void 0);
|
|
206
|
+
__decorate([
|
|
207
|
+
property({ attribute: 'logo-src' })
|
|
208
|
+
], IgcQrCodeComponent.prototype, "logoSrc", void 0);
|
|
209
|
+
__decorate([
|
|
210
|
+
property({ type: Number, attribute: 'logo-size' })
|
|
211
|
+
], IgcQrCodeComponent.prototype, "logoSize", void 0);
|
|
212
|
+
__decorate([
|
|
213
|
+
property({ type: Number, attribute: 'logo-margin' })
|
|
214
|
+
], IgcQrCodeComponent.prototype, "logoMargin", void 0);
|
|
215
|
+
__decorate([
|
|
216
|
+
property({ attribute: 'dot-style' })
|
|
217
|
+
], IgcQrCodeComponent.prototype, "dotStyle", void 0);
|
|
218
|
+
__decorate([
|
|
219
|
+
property({ attribute: 'square-style' })
|
|
220
|
+
], IgcQrCodeComponent.prototype, "squareStyle", void 0);
|
|
221
|
+
//# sourceMappingURL=qr-code.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"qr-code.js","sourceRoot":"","sources":["../../../src/components/qr-code/qr-code.ts"],"names":[],"mappings":"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","sourcesContent":["import { html, LitElement, nothing, type PropertyValues } from 'lit';\nimport { property, state } from 'lit/decorators.js';\nimport { createAbortHandle } from '#internals/abort-handler.js';\nimport { registerComponent } from '#internals/definitions/register.js';\nimport { bindIf } from '#internals/utils/lit.js';\nimport { clamp } from '#internals/utils/math.js';\nimport { nanoid } from '#internals/utils/strings.js';\nimport { addThemingController } from '#theming/theming-controller.js';\nimport type { QRCodeMatrixResult } from './model/matrix.js';\nimport { generateQRCodeMatrix } from './model/matrix.js';\nimport {\n DEFAULT_SIZE_RATIO,\n MAX_SAFE_AREA,\n SAFE_AREAS,\n} from './renderer/constants.js';\nimport { renderQrFinders } from './renderer/corner.js';\nimport { renderQrDots } from './renderer/dots.js';\nimport { renderQrMaskAndImage } from './renderer/image.js';\nimport { styles } from './themes/qr-code.base.css.js';\nimport { styles as shared } from './themes/shared/qr-code.common.css.js';\nimport { all } from './themes/themes.js';\nimport type {\n QrCornerSquareStyle,\n QrDotStyle,\n QrErrorCorrectionLevel,\n} from './types.js';\n\n/**\n *\n * Generates a QR code based on the provided value and options.\n * The component renders an SVG representation of the QR code, which can be customized using various properties.\n *\n * @element igc-qr-code\n *\n * @cssproperty --ig-qr-code-background - The background color of the QR code. Default is `white`.\n * @cssproperty --ig-qr-code-dark-color - The color of the data modules (dots), and the corner square/dot colors unless overridden below. Default is `black`.\n * @cssproperty --ig-qr-code-corner-square-color - The color of the outer finder-pattern corner squares. Defaults to `--ig-qr-code-dark-color`.\n * @cssproperty --ig-qr-code-corner-dot-color - The color of the inner finder-pattern corner dots. Defaults to `--ig-qr-code-dark-color`.\n *\n * @csspart background - The background rect of the QR code.\n * @csspart dots - The data modules (dots) of the QR code.\n * @csspart corner-square - The outer corner (finder-pattern) squares of the QR code.\n * @csspart corner-dot - The inner corner (finder-pattern) dots of the QR code.\n */\nexport default class IgcQrCodeComponent extends LitElement {\n public static readonly tagName = 'igc-qr-code';\n\n public static override styles = [styles, shared];\n\n /* blazorSuppress */\n public static register(): void {\n registerComponent(IgcQrCodeComponent);\n }\n\n private readonly _abortHandle = createAbortHandle();\n private readonly _maskId = nanoid(8);\n private readonly _maskUrl = `url(#${this._maskId})`;\n private _matrixCache?: {\n value: string;\n errorLevel: QrErrorCorrectionLevel;\n version?: number;\n result: QRCodeMatrixResult;\n };\n\n @state()\n private _logoAspectRatio = 1;\n\n @state()\n private _logoLoadFailed = false;\n\n constructor() {\n super();\n addThemingController(this, all);\n }\n\n /**\n * The value to be encoded in the QR code. This can be any string, such as a URL, text, or other data.\n * When this property is set, the component will generate a QR code representing the provided value.\n *\n * @attr value\n */\n @property()\n public value?: string;\n\n /**\n * The version of the QR code to generate, which determines the size and data capacity of the QR code.\n * Valid values are integers from 1 to 40, where each version corresponds to a specific module size and data capacity.\n *\n * If not specified, the component will automatically select the smallest version that can accommodate the provided value.\n *\n * @attr version\n */\n @property({ type: Number })\n public version?: number;\n\n /**\n * The error correction level for the QR code, which determines the QR code's ability to be read if it is partially obscured or damaged.\n * Valid values are 'L', 'M', 'Q', and 'H', where 'L' provides the lowest level of error correction and 'H' provides the highest level.\n *\n * @attr error-level\n * @default 'M'\n */\n @property({ attribute: 'error-level' })\n public errorLevel?: QrErrorCorrectionLevel = 'M';\n\n /**\n * The size of the QR code in pixels. This determines the width and height of the generated QR code. The default value is 128 pixels.\n *\n * @attr size\n * @default 128\n */\n @property({ type: Number })\n public size = 128;\n\n /**\n * The margin (quiet zone) around the QR code, expressed as a number of QR code modules rather\n * than pixels. This is the blank border area surrounding the code, which helps ensure that it\n * can be properly scanned.\n *\n * @attr margin\n * @default 4\n */\n @property({ type: Number })\n public margin = 4;\n\n /**\n * The source URL of an optional logo image to be displayed at the center of the QR code. The logo can help with branding and recognition.\n * If provided, the component will attempt to render the logo within the QR code while maintaining scannability.\n *\n * @attr logo-src\n */\n @property({ attribute: 'logo-src' })\n public logoSrc?: string;\n\n /**\n * The size of the logo, as a ratio of the maximum area that can safely be obscured by a logo\n * while the QR code remains scannable (up to 9% of the code's area, at the highest error\n * correction level). The value should be a number between 0 and 1, where 0 means no logo and 1\n * means the logo will cover the full safe area (not the entire QR code).\n * The default value is 0.4, meaning the logo covers 40% of that safe area (~3.6% of the QR code).\n *\n * When `error-level` is not explicitly set, the smallest error correction level that can\n * accommodate the requested logo size is chosen automatically.\n *\n * @attr logo-size\n * @default 0.4\n */\n @property({ type: Number, attribute: 'logo-size' })\n public logoSize = 0.4;\n\n /**\n * The margin around the logo in pixels. This is the whitespace area surrounding the logo within the QR code,\n * which helps ensure that the logo does not interfere with the QR code's scannability.\n *\n * @attr logo-margin\n */\n @property({ type: Number, attribute: 'logo-margin' })\n public logoMargin?: number;\n\n /**\n * The style of the data modules (dots) in the QR code, and of the inner dot of each finder-pattern\n * corner. This can be 'square', 'circle', or 'rounded'.\n *\n * @attr dot-style\n * @default 'square'\n */\n @property({ attribute: 'dot-style' })\n public dotStyle: QrDotStyle = 'square';\n\n /**\n * The style of the corner squares in the QR code. This can be 'square', 'circle', or 'rounded'.\n *\n * @attr square-style\n * @default 'square'\n */\n @property({ attribute: 'square-style' })\n public squareStyle: QrCornerSquareStyle = 'square';\n\n /** @internal */\n protected override update(props: PropertyValues<this>): void {\n if (props.has('logoSrc')) {\n this._resolveAspectRatio();\n }\n\n super.update(props);\n }\n\n private _resolveAspectRatio(): void {\n this._abortHandle.abort();\n this._logoLoadFailed = false;\n this._logoAspectRatio = 1;\n\n if (!this._hasValidLogoSrc()) {\n return;\n }\n\n const signal = this._abortHandle.signal;\n const img = new Image();\n img.src = this.logoSrc!;\n\n if (img.complete) {\n if (img.naturalWidth && img.naturalHeight) {\n this._logoAspectRatio = img.naturalWidth / img.naturalHeight;\n } else {\n this._logoLoadFailed = true;\n }\n return;\n }\n\n img.addEventListener(\n 'load',\n () => {\n if (img.naturalWidth && img.naturalHeight) {\n this._logoAspectRatio = img.naturalWidth / img.naturalHeight;\n } else {\n this._logoLoadFailed = true;\n }\n },\n { once: true, signal }\n );\n\n img.addEventListener(\n 'error',\n () => {\n this._logoLoadFailed = true;\n },\n { once: true, signal }\n );\n }\n\n /**\n * Determines whether a valid logo source is provided.\n *\n * The method checks if the `logoSrc` property is set and if it does not start with potentially unsafe schemes like 'javascript:' or 'vbscript:'.\n * It also ensures that if the source is a data URI, it must be an image type.\n * This validation helps prevent security risks associated with rendering untrusted content in the QR code.\n */\n private _hasValidLogoSrc(): boolean {\n if (!this.logoSrc) return false;\n const s = this.logoSrc.trim().toLowerCase();\n if (s.startsWith('javascript:') || s.startsWith('vbscript:')) return false;\n if (s.startsWith('data:') && !s.startsWith('data:image/')) return false;\n return true;\n }\n\n private _pickErrorLevel(area: number): QrErrorCorrectionLevel {\n if (area <= SAFE_AREAS.L) return 'L';\n if (area <= SAFE_AREAS.M) return 'M';\n if (area <= SAFE_AREAS.Q) return 'Q';\n return 'H';\n }\n\n private _getErrorLevelAndArea(hasLogo: boolean) {\n const userErrorLevel = this.errorLevel;\n const size = this.logoSize;\n const sizeRatio = hasLogo ? clamp(size ?? DEFAULT_SIZE_RATIO, 0, 1) : 0;\n const targetArea = sizeRatio * MAX_SAFE_AREA;\n\n let errorLevel: QrErrorCorrectionLevel;\n let area: number;\n\n if (userErrorLevel) {\n errorLevel = userErrorLevel;\n area = Math.min(targetArea, SAFE_AREAS[userErrorLevel]);\n } else if (targetArea > 0) {\n errorLevel = this._pickErrorLevel(targetArea);\n area = targetArea;\n } else {\n errorLevel = 'M';\n area = 0;\n }\n\n return { errorLevel, area };\n }\n\n private _getMatrix(\n value: string,\n errorLevel: QrErrorCorrectionLevel\n ): QRCodeMatrixResult {\n const cached = this._matrixCache;\n if (\n cached &&\n cached.value === value &&\n cached.errorLevel === errorLevel &&\n cached.version === this.version\n ) {\n return cached.result;\n }\n\n const result = generateQRCodeMatrix(value, errorLevel, this.version);\n this._matrixCache = { value, errorLevel, version: this.version, result };\n return result;\n }\n\n protected override render() {\n if (!this.value) return nothing;\n\n const hasLogo = this._hasValidLogoSrc() && !this._logoLoadFailed;\n const { errorLevel, area } = this._getErrorLevelAndArea(hasLogo);\n\n const { matrix, size } = this._getMatrix(this.value, errorLevel);\n\n const totalModules = size + this.margin * 2;\n const moduleSize = size / totalModules;\n const marginPx = this.margin * moduleSize;\n const svgSize = moduleSize * (size + this.margin * 2);\n\n const { mask, image, shouldApplyMask } = renderQrMaskAndImage({\n hasLogo,\n src: this.logoSrc!,\n aspectRatio: this._logoAspectRatio,\n area,\n size: this.size,\n margin: this.logoMargin,\n svgSize,\n maskId: this._maskId,\n });\n\n return html`\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n role=\"img\"\n width=${this.size}\n height=${this.size}\n viewBox=\"0 0 ${svgSize} ${svgSize}\"\n >\n <title>${this.ariaLabel ?? `QR code: ${this.value}`}</title>\n\n <rect part=\"background\" width=${svgSize} height=${svgSize} />\n ${mask}\n <g mask=${bindIf(shouldApplyMask, this._maskUrl)}>\n ${renderQrDots({\n matrix,\n moduleSize,\n marginPx,\n dotStyle: this.dotStyle,\n })}\n ${renderQrFinders({\n size,\n moduleSize,\n marginPx,\n dotStyle: this.dotStyle,\n squareStyle: this.squareStyle,\n })}\n </g>\n ${image}\n </svg>\n `;\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'igc-qr-code': IgcQrCodeComponent;\n }\n}\n"]}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Safe area ratios for different error correction levels in QR codes.
|
|
3
|
+
* These values represent the maximum proportion of the QR code area that can be obscured (e.g., by a logo) while still maintaining scannability.
|
|
4
|
+
*
|
|
5
|
+
* - `L` (Low) allows for up to 2.25% of the area to be obscured.
|
|
6
|
+
* - `M` (Medium) allows for up to 4% of the area to be obscured.
|
|
7
|
+
* - `Q` (Quartile) allows for up to 6.25% of the area to be obscured.
|
|
8
|
+
* - `H` (High) allows for up to 9% of the area to be obscured.
|
|
9
|
+
*/
|
|
10
|
+
declare const SAFE_AREAS: {
|
|
11
|
+
readonly L: 0.0225;
|
|
12
|
+
readonly M: 0.04;
|
|
13
|
+
readonly Q: 0.0625;
|
|
14
|
+
readonly H: 0.09;
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Maximum safe area for a logo in the QR code, based on the highest error correction level (H).
|
|
18
|
+
* This means that if the logo covers more than 9% of the QR code area, it may not be scannable.
|
|
19
|
+
*/
|
|
20
|
+
declare const MAX_SAFE_AREA: 0.09;
|
|
21
|
+
/**
|
|
22
|
+
* Default size ratio for the logo relative to the QR code. This means that by default, the logo will occupy 40% of the QR code area.
|
|
23
|
+
* This is a conservative default that allows for a reasonably sized logo while maintaining good scannability.
|
|
24
|
+
*/
|
|
25
|
+
declare const DEFAULT_SIZE_RATIO = 0.4;
|
|
26
|
+
export { DEFAULT_SIZE_RATIO, MAX_SAFE_AREA, SAFE_AREAS };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../src/components/qr-code/renderer/constants.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAW,CAAC;AAMvE,MAAM,aAAa,GAAG,UAAU,CAAC,CAAC,CAAC;AAMnC,MAAM,kBAAkB,GAAG,GAAG,CAAC;AAE/B,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,UAAU,EAAE,CAAC","sourcesContent":["/**\n * Safe area ratios for different error correction levels in QR codes.\n * These values represent the maximum proportion of the QR code area that can be obscured (e.g., by a logo) while still maintaining scannability.\n *\n * - `L` (Low) allows for up to 2.25% of the area to be obscured.\n * - `M` (Medium) allows for up to 4% of the area to be obscured.\n * - `Q` (Quartile) allows for up to 6.25% of the area to be obscured.\n * - `H` (High) allows for up to 9% of the area to be obscured.\n */\nconst SAFE_AREAS = { L: 0.0225, M: 0.04, Q: 0.0625, H: 0.09 } as const;\n\n/**\n * Maximum safe area for a logo in the QR code, based on the highest error correction level (H).\n * This means that if the logo covers more than 9% of the QR code area, it may not be scannable.\n */\nconst MAX_SAFE_AREA = SAFE_AREAS.H;\n\n/**\n * Default size ratio for the logo relative to the QR code. This means that by default, the logo will occupy 40% of the QR code area.\n * This is a conservative default that allows for a reasonably sized logo while maintaining good scannability.\n */\nconst DEFAULT_SIZE_RATIO = 0.4;\n\nexport { DEFAULT_SIZE_RATIO, MAX_SAFE_AREA, SAFE_AREAS };\n"]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type TemplateResult } from 'lit';
|
|
2
|
+
import type { QrCornerDotStyle, QrCornerSquareStyle } from '../types.js';
|
|
3
|
+
type QrCornerProperties = {
|
|
4
|
+
x: number;
|
|
5
|
+
y: number;
|
|
6
|
+
size: number;
|
|
7
|
+
dotStyle: QrCornerDotStyle;
|
|
8
|
+
squareStyle: QrCornerSquareStyle;
|
|
9
|
+
};
|
|
10
|
+
/** Renders a finder-pattern corner as a Lit SVG template, composing the outer square and inner dot paths. */
|
|
11
|
+
export declare function renderQrCorner({ x, y, size, dotStyle, squareStyle, }: QrCornerProperties): TemplateResult;
|
|
12
|
+
type RenderFindersProperties = {
|
|
13
|
+
size: number;
|
|
14
|
+
moduleSize: number;
|
|
15
|
+
marginPx: number;
|
|
16
|
+
dotStyle: QrCornerDotStyle;
|
|
17
|
+
squareStyle: QrCornerSquareStyle;
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Renders all three finder-pattern corners as an array of Lit SVG templates, given the QR code size, module size, margin, and styles.
|
|
21
|
+
*/
|
|
22
|
+
export declare function renderQrFinders({ size, moduleSize, marginPx, dotStyle, squareStyle, }: RenderFindersProperties): TemplateResult[];
|
|
23
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { svg } from 'lit';
|
|
2
|
+
import { cornerDotPath, cornerSquarePath, getFinderPatterns, } from './helpers.js';
|
|
3
|
+
export function renderQrCorner({ x, y, size, dotStyle, squareStyle, }) {
|
|
4
|
+
const outerSize = 7 * size;
|
|
5
|
+
const innerSize = 3 * size;
|
|
6
|
+
const innerOffset = 2 * size;
|
|
7
|
+
const squarePath = cornerSquarePath(x, y, outerSize, squareStyle);
|
|
8
|
+
const dotPath = cornerDotPath(x + innerOffset, y + innerOffset, innerSize, dotStyle);
|
|
9
|
+
return svg `
|
|
10
|
+
<g>
|
|
11
|
+
<path part="corner-square" d=${squarePath} fill-rule="evenodd"></path>
|
|
12
|
+
<path part="corner-dot" d=${dotPath}></path>
|
|
13
|
+
</g>
|
|
14
|
+
`;
|
|
15
|
+
}
|
|
16
|
+
export function renderQrFinders({ size, moduleSize, marginPx, dotStyle, squareStyle, }) {
|
|
17
|
+
return getFinderPatterns(size, moduleSize, marginPx).map(({ x, y }) => renderQrCorner({
|
|
18
|
+
x,
|
|
19
|
+
y,
|
|
20
|
+
size: moduleSize,
|
|
21
|
+
dotStyle,
|
|
22
|
+
squareStyle,
|
|
23
|
+
}));
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=corner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"corner.js","sourceRoot":"","sources":["../../../../src/components/qr-code/renderer/corner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAuB,MAAM,KAAK,CAAC;AAE/C,OAAO,EACL,aAAa,EACb,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,cAAc,CAAC;AAWtB,MAAM,UAAU,cAAc,CAAC,EAC7B,CAAC,EACD,CAAC,EACD,IAAI,EACJ,QAAQ,EACR,WAAW,GACQ;IACnB,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC;IAC3B,MAAM,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC;IAC3B,MAAM,WAAW,GAAG,CAAC,GAAG,IAAI,CAAC;IAE7B,MAAM,UAAU,GAAG,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;IAClE,MAAM,OAAO,GAAG,aAAa,CAC3B,CAAC,GAAG,WAAW,EACf,CAAC,GAAG,WAAW,EACf,SAAS,EACT,QAAQ,CACT,CAAC;IAEF,OAAO,GAAG,CAAA;;uCAE2B,UAAU;oCACb,OAAO;;KAEtC,CAAC;AACN,CAAC;AAaD,MAAM,UAAU,eAAe,CAAC,EAC9B,IAAI,EACJ,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,WAAW,GACa;IACxB,OAAO,iBAAiB,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,CACpE,cAAc,CAAC;QACb,CAAC;QACD,CAAC;QACD,IAAI,EAAE,UAAU;QAChB,QAAQ;QACR,WAAW;KACZ,CAAC,CACH,CAAC;AACJ,CAAC","sourcesContent":["import { svg, type TemplateResult } from 'lit';\nimport type { QrCornerDotStyle, QrCornerSquareStyle } from '../types.js';\nimport {\n cornerDotPath,\n cornerSquarePath,\n getFinderPatterns,\n} from './helpers.js';\n\ntype QrCornerProperties = {\n x: number;\n y: number;\n size: number;\n dotStyle: QrCornerDotStyle;\n squareStyle: QrCornerSquareStyle;\n};\n\n/** Renders a finder-pattern corner as a Lit SVG template, composing the outer square and inner dot paths. */\nexport function renderQrCorner({\n x,\n y,\n size,\n dotStyle,\n squareStyle,\n}: QrCornerProperties): TemplateResult {\n const outerSize = 7 * size;\n const innerSize = 3 * size;\n const innerOffset = 2 * size;\n\n const squarePath = cornerSquarePath(x, y, outerSize, squareStyle);\n const dotPath = cornerDotPath(\n x + innerOffset,\n y + innerOffset,\n innerSize,\n dotStyle\n );\n\n return svg`\n <g>\n <path part=\"corner-square\" d=${squarePath} fill-rule=\"evenodd\"></path>\n <path part=\"corner-dot\" d=${dotPath}></path>\n </g>\n `;\n}\n\ntype RenderFindersProperties = {\n size: number;\n moduleSize: number;\n marginPx: number;\n dotStyle: QrCornerDotStyle;\n squareStyle: QrCornerSquareStyle;\n};\n\n/**\n * Renders all three finder-pattern corners as an array of Lit SVG templates, given the QR code size, module size, margin, and styles.\n */\nexport function renderQrFinders({\n size,\n moduleSize,\n marginPx,\n dotStyle,\n squareStyle,\n}: RenderFindersProperties): TemplateResult[] {\n return getFinderPatterns(size, moduleSize, marginPx).map(({ x, y }) =>\n renderQrCorner({\n x,\n y,\n size: moduleSize,\n dotStyle,\n squareStyle,\n })\n );\n}\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type TemplateResult } from 'lit';
|
|
2
|
+
import type { QrDotStyle } from '../types.js';
|
|
3
|
+
type RenderQrDotsProperties = {
|
|
4
|
+
matrix: boolean[][];
|
|
5
|
+
moduleSize: number;
|
|
6
|
+
marginPx: number;
|
|
7
|
+
dotStyle: QrDotStyle;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Renders the data modules of the QR code as a single SVG path, given the QR code matrix, module size, margin, and dot style.
|
|
11
|
+
* Returns a Lit SVG template.
|
|
12
|
+
*/
|
|
13
|
+
export declare function renderQrDots({ matrix, moduleSize, marginPx, dotStyle, }: RenderQrDotsProperties): TemplateResult;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { svg } from 'lit';
|
|
2
|
+
import { renderDataModules } from './helpers.js';
|
|
3
|
+
export function renderQrDots({ matrix, moduleSize, marginPx, dotStyle, }) {
|
|
4
|
+
const modules = renderDataModules(matrix, moduleSize, marginPx, dotStyle);
|
|
5
|
+
return svg `<path part="dots" d=${modules.join(' ')} />`;
|
|
6
|
+
}
|
|
7
|
+
//# sourceMappingURL=dots.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dots.js","sourceRoot":"","sources":["../../../../src/components/qr-code/renderer/dots.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAuB,MAAM,KAAK,CAAC;AAE/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAajD,MAAM,UAAU,YAAY,CAAC,EAC3B,MAAM,EACN,UAAU,EACV,QAAQ,EACR,QAAQ,GACe;IACvB,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAC1E,OAAO,GAAG,CAAA,uBAAuB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;AAC1D,CAAC","sourcesContent":["import { svg, type TemplateResult } from 'lit';\nimport type { QrDotStyle } from '../types.js';\nimport { renderDataModules } from './helpers.js';\n\ntype RenderQrDotsProperties = {\n matrix: boolean[][];\n moduleSize: number;\n marginPx: number;\n dotStyle: QrDotStyle;\n};\n\n/**\n * Renders the data modules of the QR code as a single SVG path, given the QR code matrix, module size, margin, and dot style.\n * Returns a Lit SVG template.\n */\nexport function renderQrDots({\n matrix,\n moduleSize,\n marginPx,\n dotStyle,\n}: RenderQrDotsProperties): TemplateResult {\n const modules = renderDataModules(matrix, moduleSize, marginPx, dotStyle);\n return svg`<path part=\"dots\" d=${modules.join(' ')} />`;\n}\n"]}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { QrCornerDotStyle, QrCornerSquareStyle, QrDotStyle } from '../types.js';
|
|
2
|
+
/** Returns an SVG path string for the inner dot of a finder-pattern corner. */
|
|
3
|
+
export declare function cornerDotPath(x: number, y: number, size: number, style: QrCornerDotStyle): string;
|
|
4
|
+
/** Returns an SVG path string (outer ring with inner cutout) for the outer square of a finder-pattern corner. */
|
|
5
|
+
export declare function cornerSquarePath(x: number, y: number, size: number, style: QrCornerSquareStyle): string;
|
|
6
|
+
/**
|
|
7
|
+
* Generates SVG path strings for all dark data modules in the matrix,
|
|
8
|
+
* skipping finder-pattern areas. Returns one path string per visible module.
|
|
9
|
+
*/
|
|
10
|
+
export declare function renderDataModules(data: boolean[][], moduleSize: number, marginPx: number, dotStyle: QrDotStyle): string[];
|
|
11
|
+
/**
|
|
12
|
+
* Returns the pixel top-left coordinates `{ x, y }` for each of the three
|
|
13
|
+
* finder-pattern corners, ready to pass to `renderQrCorner`.
|
|
14
|
+
*/
|
|
15
|
+
export declare function getFinderPatterns(size: number, moduleSize: number, marginPx: number): {
|
|
16
|
+
x: number;
|
|
17
|
+
y: number;
|
|
18
|
+
}[];
|