@nova-design-system/nova-webcomponents 3.23.0 → 3.24.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/dist/cjs/app-globals-V2Kpy_OQ.js.map +1 -1
- package/dist/cjs/events.utils-BE6R5q9C.js +33 -0
- package/dist/cjs/events.utils-BE6R5q9C.js.map +1 -0
- package/dist/cjs/{grow.animation-BrWzyoUA.js → grow.animation-ynu_HmA_.js} +2 -30
- package/dist/cjs/grow.animation-ynu_HmA_.js.map +1 -0
- package/dist/cjs/{i18n.utils-BizoXo6c.js → i18n.utils-ku0bScip.js} +16 -20
- package/dist/cjs/{i18n.utils-BizoXo6c.js.map → i18n.utils-ku0bScip.js.map} +1 -1
- package/dist/cjs/index-B1na8x6M.js +12 -4
- package/dist/cjs/index.cjs.js +5 -2
- package/dist/cjs/index.cjs.js.map +1 -1
- package/dist/cjs/index.esm-CG1TVKfu.js +540 -0
- package/dist/cjs/index.esm-CG1TVKfu.js.map +1 -0
- package/dist/cjs/loader.cjs.js +1 -1
- package/dist/cjs/native.cjs.js +1 -1
- package/dist/cjs/nv-accordion.cjs.entry.js +2 -7
- package/dist/cjs/nv-accordion.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-alert.cjs.entry.js +1 -2
- package/dist/cjs/nv-alert.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-badge_2.cjs.entry.js +1 -1
- package/dist/cjs/nv-button.cjs.entry.js +3 -5
- package/dist/cjs/nv-button.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-calendar.cjs.entry.js +14 -24
- package/dist/cjs/nv-calendar.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-datagrid.cjs.entry.js +67 -72
- package/dist/cjs/nv-datagrid.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-dialog.cjs.entry.js +6 -538
- package/dist/cjs/nv-dialog.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-drawer.cjs.entry.js +443 -0
- package/dist/cjs/nv-drawer.entry.cjs.js.map +1 -0
- package/dist/cjs/nv-drawerfooter.nv-drawerheader.entry.cjs.js.map +1 -0
- package/dist/cjs/nv-drawerfooter_2.cjs.entry.js +144 -0
- package/dist/cjs/nv-fieldcheckbox.cjs.entry.js +6 -6
- package/dist/cjs/nv-fieldcheckbox.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-fielddate.cjs.entry.js +12 -15
- package/dist/cjs/nv-fielddate.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-fielddaterange.cjs.entry.js +12 -13
- package/dist/cjs/nv-fielddaterange.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-fielddropdown.cjs.entry.js +24 -33
- package/dist/cjs/nv-fielddropdown.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-fielddropdownitem.cjs.entry.js +2 -3
- package/dist/cjs/nv-fielddropdownitem.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-fieldmultiselect.cjs.entry.js +19 -27
- package/dist/cjs/nv-fieldmultiselect.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-fieldnumber.cjs.entry.js +6 -6
- package/dist/cjs/nv-fieldnumber.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-fieldpassword.cjs.entry.js +6 -6
- package/dist/cjs/nv-fieldpassword.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-fieldradio.cjs.entry.js +4 -4
- package/dist/cjs/nv-fieldradio.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-fieldselect.cjs.entry.js +8 -8
- package/dist/cjs/nv-fieldselect.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-fieldslider.cjs.entry.js +5 -5
- package/dist/cjs/nv-fieldslider.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-fieldtext.cjs.entry.js +6 -6
- package/dist/cjs/nv-fieldtext.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-fieldtextarea.cjs.entry.js +6 -7
- package/dist/cjs/nv-fieldtextarea.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-fieldtime.cjs.entry.js +27 -35
- package/dist/cjs/nv-fieldtime.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-icon.cjs.entry.js +2 -2
- package/dist/cjs/nv-icon.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-iconbutton.nv-loader.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-iconbutton_2.cjs.entry.js +5 -6
- package/dist/cjs/nv-menu.cjs.entry.js +3 -4
- package/dist/cjs/nv-menu.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-menuitem.cjs.entry.js +1 -1
- package/dist/cjs/nv-notification-bullet.cjs.entry.js +1 -2
- package/dist/cjs/nv-notification-bullet.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-notification.cjs.entry.js +6 -9
- package/dist/cjs/nv-notification.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-notificationcontainer.cjs.entry.js +1 -1
- package/dist/cjs/nv-popover.cjs.entry.js +12 -12
- package/dist/cjs/nv-popover.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-row.cjs.entry.js +1 -1
- package/dist/cjs/nv-sidebar.cjs.entry.js +3 -3
- package/dist/cjs/nv-sidebar.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-sidebarcontent.cjs.entry.js +1 -1
- package/dist/cjs/nv-sidebardivider.cjs.entry.js +1 -1
- package/dist/cjs/nv-sidebarfooter.cjs.entry.js +1 -1
- package/dist/cjs/nv-sidebargroup.cjs.entry.js +1 -1
- package/dist/cjs/nv-sidebarheader.cjs.entry.js +1 -1
- package/dist/cjs/nv-sidebarlogo.cjs.entry.js +1 -1
- package/dist/cjs/nv-sidebarnavitem.cjs.entry.js +4 -5
- package/dist/cjs/nv-sidebarnavitem.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-sidebarnavsubitem.cjs.entry.js +1 -1
- package/dist/cjs/nv-split.cjs.entry.js +43 -41
- package/dist/cjs/nv-split.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-stack.cjs.entry.js +1 -1
- package/dist/cjs/nv-table.cjs.entry.js +6 -8
- package/dist/cjs/nv-table.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-tableheader.cjs.entry.js +2 -2
- package/dist/cjs/nv-tableheader.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-toggle.cjs.entry.js +2 -2
- package/dist/cjs/nv-togglebutton.cjs.entry.js +2 -2
- package/dist/cjs/nv-togglebutton.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-togglebuttongroup.cjs.entry.js +3 -4
- package/dist/cjs/nv-togglebuttongroup.entry.cjs.js.map +1 -1
- package/dist/cjs/nv-tooltip.cjs.entry.js +1 -1
- package/dist/collection/collection-manifest.json +3 -0
- package/dist/collection/components/nv-accordion/nv-accordion.docs.js +66 -40
- package/dist/collection/components/nv-accordion/nv-accordion.docs.js.map +1 -1
- package/dist/collection/components/nv-accordion/nv-accordion.js +2 -7
- package/dist/collection/components/nv-accordion/nv-accordion.js.map +1 -1
- package/dist/collection/components/nv-alert/nv-alert.docs.js +18 -1
- package/dist/collection/components/nv-alert/nv-alert.docs.js.map +1 -1
- package/dist/collection/components/nv-alert/nv-alert.js +1 -2
- package/dist/collection/components/nv-alert/nv-alert.js.map +1 -1
- package/dist/collection/components/nv-avatar/nv-avatar.docs.js +56 -0
- package/dist/collection/components/nv-avatar/nv-avatar.docs.js.map +1 -1
- package/dist/collection/components/nv-badge/nv-badge.docs.js +64 -15
- package/dist/collection/components/nv-badge/nv-badge.docs.js.map +1 -1
- package/dist/collection/components/nv-breadcrumbs/nv-breadcrumbs.docs.js +10 -1
- package/dist/collection/components/nv-breadcrumbs/nv-breadcrumbs.docs.js.map +1 -1
- package/dist/collection/components/nv-button/nv-button.docs.js +38 -4
- package/dist/collection/components/nv-button/nv-button.docs.js.map +1 -1
- package/dist/collection/components/nv-button/nv-button.js +3 -5
- package/dist/collection/components/nv-button/nv-button.js.map +1 -1
- package/dist/collection/components/nv-buttongroup/nv-buttongroup.docs.js +22 -0
- package/dist/collection/components/nv-buttongroup/nv-buttongroup.docs.js.map +1 -1
- package/dist/collection/components/nv-calendar/nv-calendar.docs.js +269 -14
- package/dist/collection/components/nv-calendar/nv-calendar.docs.js.map +1 -1
- package/dist/collection/components/nv-calendar/nv-calendar.js +13 -22
- package/dist/collection/components/nv-calendar/nv-calendar.js.map +1 -1
- package/dist/collection/components/nv-calendar/partials/week-numbers.js +1 -2
- package/dist/collection/components/nv-calendar/partials/week-numbers.js.map +1 -1
- package/dist/collection/components/nv-calendar/test/nv-calendar.utils.test.js +11 -11
- package/dist/collection/components/nv-calendar/test/nv-calendar.utils.test.js.map +1 -1
- package/dist/collection/components/nv-calendar/test/partials/calendar-grid.logic.test.js +2 -2
- package/dist/collection/components/nv-calendar/test/partials/calendar-grid.logic.test.js.map +1 -1
- package/dist/collection/components/nv-calendar/test/partials/calendar-shortcuts.logic.test.js +6 -5
- package/dist/collection/components/nv-calendar/test/partials/calendar-shortcuts.logic.test.js.map +1 -1
- package/dist/collection/components/nv-calendar/test/partials/day-cell.logic.test.js +10 -1
- package/dist/collection/components/nv-calendar/test/partials/day-cell.logic.test.js.map +1 -1
- package/dist/collection/components/nv-col/nv-col.docs.js +8 -0
- package/dist/collection/components/nv-col/nv-col.docs.js.map +1 -1
- package/dist/collection/components/nv-datagrid/nv-datagrid.docs.js +290 -286
- package/dist/collection/components/nv-datagrid/nv-datagrid.docs.js.map +1 -1
- package/dist/collection/components/nv-datagrid/nv-datagrid.js +67 -72
- package/dist/collection/components/nv-datagrid/nv-datagrid.js.map +1 -1
- package/dist/collection/components/nv-dialog/nv-dialog.docs.js +64 -13
- package/dist/collection/components/nv-dialog/nv-dialog.docs.js.map +1 -1
- package/dist/collection/components/nv-drawer/nv-drawer.css +114 -0
- package/dist/collection/components/nv-drawer/nv-drawer.docs.js +145 -0
- package/dist/collection/components/nv-drawer/nv-drawer.docs.js.map +1 -0
- package/dist/collection/components/nv-drawer/nv-drawer.js +719 -0
- package/dist/collection/components/nv-drawer/nv-drawer.js.map +1 -0
- package/dist/collection/components/nv-drawerfooter/nv-drawerfooter.css +8 -0
- package/dist/collection/components/nv-drawerfooter/nv-drawerfooter.docs.js +6 -0
- package/dist/collection/components/nv-drawerfooter/nv-drawerfooter.docs.js.map +1 -0
- package/dist/collection/components/nv-drawerfooter/nv-drawerfooter.js +325 -0
- package/dist/collection/components/nv-drawerfooter/nv-drawerfooter.js.map +1 -0
- package/dist/collection/components/nv-drawerheader/nv-drawerheader.css +32 -0
- package/dist/collection/components/nv-drawerheader/nv-drawerheader.docs.js +6 -0
- package/dist/collection/components/nv-drawerheader/nv-drawerheader.docs.js.map +1 -0
- package/dist/collection/components/nv-drawerheader/nv-drawerheader.js +92 -0
- package/dist/collection/components/nv-drawerheader/nv-drawerheader.js.map +1 -0
- package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.docs.js +186 -136
- package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.docs.js.map +1 -1
- package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.js +6 -6
- package/dist/collection/components/nv-fieldcheckbox/nv-fieldcheckbox.js.map +1 -1
- package/dist/collection/components/nv-fielddate/nv-fielddate.docs.js +300 -109
- package/dist/collection/components/nv-fielddate/nv-fielddate.docs.js.map +1 -1
- package/dist/collection/components/nv-fielddate/nv-fielddate.js +11 -14
- package/dist/collection/components/nv-fielddate/nv-fielddate.js.map +1 -1
- package/dist/collection/components/nv-fielddate/styles/nv-fielddate.css +1 -1
- package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.docs.js +406 -1
- package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.docs.js.map +1 -1
- package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js +11 -12
- package/dist/collection/components/nv-fielddaterange/nv-fielddaterange.js.map +1 -1
- package/dist/collection/components/nv-fielddaterange/styles/nv-fielddaterange.css +1 -1
- package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.docs.js +210 -118
- package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.docs.js.map +1 -1
- package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js +22 -31
- package/dist/collection/components/nv-fielddropdown/nv-fielddropdown.js.map +1 -1
- package/dist/collection/components/nv-fielddropdown/styles/nv-fielddropdown.css +1 -1
- package/dist/collection/components/nv-fielddropdownitem/nv-fielddropdownitem.js +2 -3
- package/dist/collection/components/nv-fielddropdownitem/nv-fielddropdownitem.js.map +1 -1
- package/dist/collection/components/nv-fielddropdownitemcheck/nv-fielddropdownitemcheck.js +1 -1
- package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.docs.js +462 -322
- package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.docs.js.map +1 -1
- package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js +17 -25
- package/dist/collection/components/nv-fieldmultiselect/nv-fieldmultiselect.js.map +1 -1
- package/dist/collection/components/nv-fieldmultiselect/styles/nv-fieldmultiselect.css +1 -1
- package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.css +1 -1
- package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.docs.js +70 -7
- package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.docs.js.map +1 -1
- package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.js +5 -5
- package/dist/collection/components/nv-fieldnumber/nv-fieldnumber.js.map +1 -1
- package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.css +1 -1
- package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.docs.js +79 -6
- package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.docs.js.map +1 -1
- package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.js +5 -5
- package/dist/collection/components/nv-fieldpassword/nv-fieldpassword.js.map +1 -1
- package/dist/collection/components/nv-fieldradio/nv-fieldradio.docs.js +58 -6
- package/dist/collection/components/nv-fieldradio/nv-fieldradio.docs.js.map +1 -1
- package/dist/collection/components/nv-fieldradio/nv-fieldradio.js +4 -4
- package/dist/collection/components/nv-fieldradio/nv-fieldradio.js.map +1 -1
- package/dist/collection/components/nv-fieldselect/nv-fieldselect.docs.js +138 -30
- package/dist/collection/components/nv-fieldselect/nv-fieldselect.docs.js.map +1 -1
- package/dist/collection/components/nv-fieldselect/nv-fieldselect.js +7 -7
- package/dist/collection/components/nv-fieldselect/nv-fieldselect.js.map +1 -1
- package/dist/collection/components/nv-fieldselect/styles/nv-fieldselect.css +1 -1
- package/dist/collection/components/nv-fieldslider/nv-fieldslider.docs.js +138 -30
- package/dist/collection/components/nv-fieldslider/nv-fieldslider.docs.js.map +1 -1
- package/dist/collection/components/nv-fieldslider/nv-fieldslider.js +3 -3
- package/dist/collection/components/nv-fieldslider/partials/field-input.js +1 -1
- package/dist/collection/components/nv-fieldslider/partials/field-input.js.map +1 -1
- package/dist/collection/components/nv-fieldslider/styles/nv-fieldslider.css +1 -1
- package/dist/collection/components/nv-fieldtext/nv-fieldtext.css +1 -1
- package/dist/collection/components/nv-fieldtext/nv-fieldtext.docs.js +92 -16
- package/dist/collection/components/nv-fieldtext/nv-fieldtext.docs.js.map +1 -1
- package/dist/collection/components/nv-fieldtext/nv-fieldtext.js +5 -5
- package/dist/collection/components/nv-fieldtext/nv-fieldtext.js.map +1 -1
- package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.docs.js +64 -3
- package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.docs.js.map +1 -1
- package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.js +6 -7
- package/dist/collection/components/nv-fieldtextarea/nv-fieldtextarea.js.map +1 -1
- package/dist/collection/components/nv-fieldtime/nv-fieldtime.docs.js +41 -22
- package/dist/collection/components/nv-fieldtime/nv-fieldtime.docs.js.map +1 -1
- package/dist/collection/components/nv-fieldtime/nv-fieldtime.js +25 -33
- package/dist/collection/components/nv-fieldtime/nv-fieldtime.js.map +1 -1
- package/dist/collection/components/nv-fieldtime/styles/nv-fieldtime.css +1 -1
- package/dist/collection/components/nv-fieldtime/utils/format-utils.js +1 -1
- package/dist/collection/components/nv-fieldtime/utils/format-utils.js.map +1 -1
- package/dist/collection/components/nv-icon/nv-icon.docs.js +46 -0
- package/dist/collection/components/nv-icon/nv-icon.docs.js.map +1 -1
- package/dist/collection/components/nv-icon/nv-icon.js +1 -1
- package/dist/collection/components/nv-icon/nv-icons.js +2 -0
- package/dist/collection/components/nv-icon/nv-icons.js.map +1 -1
- package/dist/collection/components/nv-iconbutton/nv-iconbutton.css +4 -4
- package/dist/collection/components/nv-iconbutton/nv-iconbutton.docs.js +18 -1
- package/dist/collection/components/nv-iconbutton/nv-iconbutton.docs.js.map +1 -1
- package/dist/collection/components/nv-iconbutton/nv-iconbutton.js +3 -4
- package/dist/collection/components/nv-iconbutton/nv-iconbutton.js.map +1 -1
- package/dist/collection/components/nv-loader/nv-loader.docs.js +8 -4
- package/dist/collection/components/nv-loader/nv-loader.docs.js.map +1 -1
- package/dist/collection/components/nv-loader/nv-loader.js +1 -1
- package/dist/collection/components/nv-menu/nv-menu.docs.js +17 -5
- package/dist/collection/components/nv-menu/nv-menu.docs.js.map +1 -1
- package/dist/collection/components/nv-menu/nv-menu.js +3 -4
- package/dist/collection/components/nv-menu/nv-menu.js.map +1 -1
- package/dist/collection/components/nv-menuitem/nv-menuitem.js +2 -2
- package/dist/collection/components/nv-notification/nv-notification.docs.js +34 -3
- package/dist/collection/components/nv-notification/nv-notification.docs.js.map +1 -1
- package/dist/collection/components/nv-notification/nv-notification.js +6 -9
- package/dist/collection/components/nv-notification/nv-notification.js.map +1 -1
- package/dist/collection/components/nv-notification-bullet/nv-notification-bullet.docs.js +60 -0
- package/dist/collection/components/nv-notification-bullet/nv-notification-bullet.docs.js.map +1 -1
- package/dist/collection/components/nv-notification-bullet/nv-notification-bullet.js +1 -2
- package/dist/collection/components/nv-notification-bullet/nv-notification-bullet.js.map +1 -1
- package/dist/collection/components/nv-notificationcontainer/nv-notificationcontainer.js +1 -1
- package/dist/collection/components/nv-popover/nv-popover.docs.js +35 -10
- package/dist/collection/components/nv-popover/nv-popover.docs.js.map +1 -1
- package/dist/collection/components/nv-popover/nv-popover.js +2 -3
- package/dist/collection/components/nv-popover/nv-popover.js.map +1 -1
- package/dist/collection/components/nv-row/nv-row.docs.js +7 -0
- package/dist/collection/components/nv-row/nv-row.docs.js.map +1 -1
- package/dist/collection/components/nv-row/nv-row.js +1 -1
- package/dist/collection/components/nv-sidebar/nv-sidebar.docs.js +39 -0
- package/dist/collection/components/nv-sidebar/nv-sidebar.docs.js.map +1 -1
- package/dist/collection/components/nv-sidebar/nv-sidebar.js +3 -3
- package/dist/collection/components/nv-sidebar/nv-sidebar.js.map +1 -1
- package/dist/collection/components/nv-sidebarcontent/nv-sidebarcontent.js +1 -1
- package/dist/collection/components/nv-sidebardivider/nv-sidebardivider.js +1 -1
- package/dist/collection/components/nv-sidebarfooter/nv-sidebarfooter.js +1 -1
- package/dist/collection/components/nv-sidebargroup/nv-sidebargroup.js +1 -1
- package/dist/collection/components/nv-sidebarheader/nv-sidebarheader.js +1 -1
- package/dist/collection/components/nv-sidebarlogo/nv-sidebarlogo.js +1 -1
- package/dist/collection/components/nv-sidebarnavitem/nv-sidebarnavitem.js +5 -6
- package/dist/collection/components/nv-sidebarnavitem/nv-sidebarnavitem.js.map +1 -1
- package/dist/collection/components/nv-sidebarnavsubitem/nv-sidebarnavsubitem.js +1 -1
- package/dist/collection/components/nv-split/nv-split.docs.js +38 -2
- package/dist/collection/components/nv-split/nv-split.docs.js.map +1 -1
- package/dist/collection/components/nv-split/nv-split.js +44 -42
- package/dist/collection/components/nv-split/nv-split.js.map +1 -1
- package/dist/collection/components/nv-split/styles/nv-split.css +2 -0
- package/dist/collection/components/nv-stack/nv-stack.docs.js +13 -0
- package/dist/collection/components/nv-stack/nv-stack.docs.js.map +1 -1
- package/dist/collection/components/nv-stack/nv-stack.js +1 -1
- package/dist/collection/components/nv-table/nv-table.docs.js +12 -0
- package/dist/collection/components/nv-table/nv-table.docs.js.map +1 -1
- package/dist/collection/components/nv-table/nv-table.js +1 -1
- package/dist/collection/components/nv-table/nv-table.utils.js +5 -7
- package/dist/collection/components/nv-table/nv-table.utils.js.map +1 -1
- package/dist/collection/components/nv-table/test/nv-table.utils.test.js +4 -5
- package/dist/collection/components/nv-table/test/nv-table.utils.test.js.map +1 -1
- package/dist/collection/components/nv-tableheader/nv-tableheader.docs.js +29 -1
- package/dist/collection/components/nv-tableheader/nv-tableheader.docs.js.map +1 -1
- package/dist/collection/components/nv-tableheader/nv-tableheader.js +2 -2
- package/dist/collection/components/nv-tableheader/nv-tableheader.js.map +1 -1
- package/dist/collection/components/nv-toggle/nv-toggle.docs.js +31 -0
- package/dist/collection/components/nv-toggle/nv-toggle.docs.js.map +1 -1
- package/dist/collection/components/nv-toggle/nv-toggle.js +2 -2
- package/dist/collection/components/nv-togglebutton/nv-togglebutton.js +1 -1
- package/dist/collection/components/nv-togglebutton/styles/nv-togglebutton.css +16 -12
- package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.docs.js +20 -7
- package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.docs.js.map +1 -1
- package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.js +2 -3
- package/dist/collection/components/nv-togglebuttongroup/nv-togglebuttongroup.js.map +1 -1
- package/dist/collection/components/nv-togglebuttongroup/styles/nv-togglebuttongroup.css +4 -12
- package/dist/collection/components/nv-tooltip/nv-tooltip.docs.js +33 -6
- package/dist/collection/components/nv-tooltip/nv-tooltip.docs.js.map +1 -1
- package/dist/collection/components/nv-tooltip/nv-tooltip.js +1 -1
- package/dist/collection/templates/navigation.docs.js +1 -1
- package/dist/collection/templates/navigation.docs.js.map +1 -1
- package/dist/collection/utils/i18n.utils.js +1 -2
- package/dist/collection/utils/i18n.utils.js.map +1 -1
- package/dist/collection/utils/search-engine/strategies/fuzzy.js +2 -2
- package/dist/collection/utils/search-engine/strategies/fuzzy.js.map +1 -1
- package/dist/collection/utils/search-engine/strategies/smart.js +2 -2
- package/dist/collection/utils/search-engine/strategies/smart.js.map +1 -1
- package/dist/collection/utils/search-engine/strategies/strict.js +2 -2
- package/dist/collection/utils/search-engine/strategies/strict.js.map +1 -1
- package/dist/collection/utils/search-engine/worker/worker-client.js +7 -10
- package/dist/collection/utils/search-engine/worker/worker-client.js.map +1 -1
- package/dist/components/index.js +4 -2
- package/dist/components/index.js.map +1 -1
- package/dist/components/nv-accordion-item.js +1 -1
- package/dist/components/nv-accordion.js +6 -11
- package/dist/components/nv-accordion.js.map +1 -1
- package/dist/components/nv-alert.js +2 -3
- package/dist/components/nv-alert.js.map +1 -1
- package/dist/components/nv-avatar.js +1 -1
- package/dist/components/nv-badge.js +1 -1
- package/dist/components/nv-breadcrumb.js +2 -2
- package/dist/components/nv-button.js +1 -1
- package/dist/components/nv-calendar.js +1 -1
- package/dist/components/nv-datagrid.js +69 -74
- package/dist/components/nv-datagrid.js.map +1 -1
- package/dist/components/nv-dialog.js +7 -539
- package/dist/components/nv-dialog.js.map +1 -1
- package/dist/components/nv-dialogfooter.js +1 -1
- package/dist/components/nv-drawer.d.ts +11 -0
- package/dist/components/nv-drawer.js +507 -0
- package/dist/components/nv-drawer.js.map +1 -0
- package/dist/components/nv-drawerfooter.d.ts +11 -0
- package/dist/components/nv-drawerfooter.js +9 -0
- package/dist/components/nv-drawerfooter.js.map +1 -0
- package/dist/components/nv-drawerheader.d.ts +11 -0
- package/dist/components/nv-drawerheader.js +9 -0
- package/dist/components/nv-drawerheader.js.map +1 -0
- package/dist/components/nv-fieldcheckbox.js +1 -1
- package/dist/components/nv-fielddate.js +18 -21
- package/dist/components/nv-fielddate.js.map +1 -1
- package/dist/components/nv-fielddaterange.js +18 -19
- package/dist/components/nv-fielddaterange.js.map +1 -1
- package/dist/components/nv-fielddropdown.js +29 -38
- package/dist/components/nv-fielddropdown.js.map +1 -1
- package/dist/components/nv-fielddropdownitem.js +1 -1
- package/dist/components/nv-fielddropdownitemcheck.js +1 -1
- package/dist/components/nv-fieldmultiselect.js +26 -34
- package/dist/components/nv-fieldmultiselect.js.map +1 -1
- package/dist/components/nv-fieldnumber.js +1 -1
- package/dist/components/nv-fieldpassword.js +9 -9
- package/dist/components/nv-fieldpassword.js.map +1 -1
- package/dist/components/nv-fieldradio.js +4 -4
- package/dist/components/nv-fieldradio.js.map +1 -1
- package/dist/components/nv-fieldselect.js +11 -11
- package/dist/components/nv-fieldselect.js.map +1 -1
- package/dist/components/nv-fieldslider.js +9 -9
- package/dist/components/nv-fieldslider.js.map +1 -1
- package/dist/components/nv-fieldtext.js +1 -1
- package/dist/components/nv-fieldtextarea.js +6 -7
- package/dist/components/nv-fieldtextarea.js.map +1 -1
- package/dist/components/nv-fieldtime.js +31 -39
- package/dist/components/nv-fieldtime.js.map +1 -1
- package/dist/components/nv-icon.js +1 -1
- package/dist/components/nv-iconbutton.js +1 -1
- package/dist/components/nv-loader.js +1 -1
- package/dist/components/nv-menu.js +6 -7
- package/dist/components/nv-menu.js.map +1 -1
- package/dist/components/nv-menuitem.js +1 -1
- package/dist/components/nv-notification-bullet.js +1 -1
- package/dist/components/nv-notification.js +7 -10
- package/dist/components/nv-notification.js.map +1 -1
- package/dist/components/nv-notificationcontainer.js +1 -1
- package/dist/components/nv-popover.js +1 -1
- package/dist/components/nv-row.js +1 -1
- package/dist/components/nv-sidebar.js +4 -4
- package/dist/components/nv-sidebar.js.map +1 -1
- package/dist/components/nv-sidebarcontent.js +1 -1
- package/dist/components/nv-sidebardivider.js +1 -1
- package/dist/components/nv-sidebarfooter.js +1 -1
- package/dist/components/nv-sidebargroup.js +1 -1
- package/dist/components/nv-sidebarheader.js +1 -1
- package/dist/components/nv-sidebarlogo.js +1 -1
- package/dist/components/nv-sidebarnavitem.js +6 -7
- package/dist/components/nv-sidebarnavitem.js.map +1 -1
- package/dist/components/nv-sidebarnavsubitem.js +1 -1
- package/dist/components/nv-split.js +43 -41
- package/dist/components/nv-split.js.map +1 -1
- package/dist/components/nv-stack.js +1 -1
- package/dist/components/nv-table.js +6 -8
- package/dist/components/nv-table.js.map +1 -1
- package/dist/components/nv-tableheader.js +5 -5
- package/dist/components/nv-tableheader.js.map +1 -1
- package/dist/components/nv-toggle.js +2 -2
- package/dist/components/nv-togglebutton.js +2 -2
- package/dist/components/nv-togglebutton.js.map +1 -1
- package/dist/components/nv-togglebuttongroup.js +3 -4
- package/dist/components/nv-togglebuttongroup.js.map +1 -1
- package/dist/components/nv-tooltip.js +1 -1
- package/dist/components/{p-D1i2OAGe.js → p-B45HbBWe.js} +6 -8
- package/dist/components/p-B45HbBWe.js.map +1 -0
- package/dist/components/p-B6GgGra-.js +29 -0
- package/dist/components/p-B6GgGra-.js.map +1 -0
- package/dist/components/{p-Dk8ekxr_.js → p-B7VlEQVW.js} +16 -26
- package/dist/components/p-B7VlEQVW.js.map +1 -0
- package/dist/components/{p-B-3kAnun.js → p-B9i3m6rk.js} +6 -6
- package/dist/components/p-B9i3m6rk.js.map +1 -0
- package/dist/components/{p-BQo7AMPX.js → p-BILd3Ta-.js} +9 -9
- package/dist/components/p-BILd3Ta-.js.map +1 -0
- package/dist/components/{p-Dc_0pr83.js → p-BISctfud.js} +8 -8
- package/dist/components/p-BISctfud.js.map +1 -0
- package/dist/components/{p-CIyQBhTX.js → p-BVOv1zgq.js} +4 -4
- package/dist/components/{p-CIyQBhTX.js.map → p-BVOv1zgq.js.map} +1 -1
- package/dist/components/{p-B6EYOx_n.js → p-Bg_l3jn1.js} +3 -3
- package/dist/components/{p-B6EYOx_n.js.map → p-Bg_l3jn1.js.map} +1 -1
- package/dist/components/{p-CBvZjfqs.js → p-C2QAWGhf.js} +4 -4
- package/dist/components/{p-CBvZjfqs.js.map → p-C2QAWGhf.js.map} +1 -1
- package/dist/components/{p-DzUXTCUy.js → p-COnt5ux_.js} +3 -3
- package/dist/components/{p-DzUXTCUy.js.map → p-COnt5ux_.js.map} +1 -1
- package/dist/components/{p-KUIQrV3D.js → p-Cc7XnqPp.js} +5 -5
- package/dist/components/{p-KUIQrV3D.js.map → p-Cc7XnqPp.js.map} +1 -1
- package/dist/components/{p-CmwaW0q4.js → p-D02w_Ru6.js} +3 -28
- package/dist/components/p-D02w_Ru6.js.map +1 -0
- package/dist/components/p-D3eWMME9.js +538 -0
- package/dist/components/p-D3eWMME9.js.map +1 -0
- package/dist/components/{p--iYGZN4R.js → p-D6APFL6N.js} +11 -11
- package/dist/components/p-D6APFL6N.js.map +1 -0
- package/dist/components/{p-DstpaOhw.js → p-DZJHk4fr.js} +3 -3
- package/dist/components/{p-DstpaOhw.js.map → p-DZJHk4fr.js.map} +1 -1
- package/dist/components/{p-Da9WgE5U.js → p-DiUP3TzF.js} +5 -5
- package/dist/components/{p-Da9WgE5U.js.map → p-DiUP3TzF.js.map} +1 -1
- package/dist/components/{p-DWG6az-u.js → p-DpDooigg.js} +5 -6
- package/dist/components/p-DpDooigg.js.map +1 -0
- package/dist/components/{p-BKfPh2in.js → p-Dr-67WvG.js} +4 -4
- package/dist/components/{p-BKfPh2in.js.map → p-Dr-67WvG.js.map} +1 -1
- package/dist/components/{p-DaiLIZ8f.js → p-DvapDVBj.js} +8 -9
- package/dist/components/p-DvapDVBj.js.map +1 -0
- package/dist/components/{p-DOZbXX2L.js → p-IlwlcG9l.js} +16 -20
- package/dist/components/p-IlwlcG9l.js.map +1 -0
- package/dist/components/p-W6vOfMC9.js +63 -0
- package/dist/components/p-W6vOfMC9.js.map +1 -0
- package/dist/components/{p-CBOuqJTb.js → p-nfYynlVq.js} +4 -4
- package/dist/components/{p-CBOuqJTb.js.map → p-nfYynlVq.js.map} +1 -1
- package/dist/components/{p-CBF8V1L7.js → p-tyaJ-nGV.js} +3 -4
- package/dist/components/p-tyaJ-nGV.js.map +1 -0
- package/dist/components/p-u-maNLLs.js +145 -0
- package/dist/components/p-u-maNLLs.js.map +1 -0
- package/dist/esm/app-globals-DQuL1Twl.js.map +1 -1
- package/dist/esm/events.utils-B6GgGra-.js +29 -0
- package/dist/esm/events.utils-B6GgGra-.js.map +1 -0
- package/dist/esm/{grow.animation-CvHGHBL4.js → grow.animation-D7ep_aVl.js} +3 -28
- package/dist/esm/grow.animation-D7ep_aVl.js.map +1 -0
- package/dist/esm/{i18n.utils-DOZbXX2L.js → i18n.utils-IlwlcG9l.js} +16 -20
- package/dist/esm/{i18n.utils-DOZbXX2L.js.map → i18n.utils-IlwlcG9l.js.map} +1 -1
- package/dist/esm/index-CasQushP.js +12 -4
- package/dist/esm/index.esm-D3eWMME9.js +538 -0
- package/dist/esm/index.esm-D3eWMME9.js.map +1 -0
- package/dist/esm/index.js +4 -2
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/loader.js +1 -1
- package/dist/esm/native.js +1 -1
- package/dist/esm/nv-accordion.entry.js +2 -7
- package/dist/esm/nv-accordion.entry.js.map +1 -1
- package/dist/esm/nv-alert.entry.js +1 -2
- package/dist/esm/nv-alert.entry.js.map +1 -1
- package/dist/esm/nv-badge_2.entry.js +1 -1
- package/dist/esm/nv-button.entry.js +3 -5
- package/dist/esm/nv-button.entry.js.map +1 -1
- package/dist/esm/nv-calendar.entry.js +14 -24
- package/dist/esm/nv-calendar.entry.js.map +1 -1
- package/dist/esm/nv-datagrid.entry.js +67 -72
- package/dist/esm/nv-datagrid.entry.js.map +1 -1
- package/dist/esm/nv-dialog.entry.js +3 -535
- package/dist/esm/nv-dialog.entry.js.map +1 -1
- package/dist/esm/nv-drawer.entry.js +441 -0
- package/dist/esm/nv-drawer.entry.js.map +1 -0
- package/dist/esm/nv-drawerfooter.nv-drawerheader.entry.js.map +1 -0
- package/dist/esm/nv-drawerfooter_2.entry.js +141 -0
- package/dist/esm/nv-fieldcheckbox.entry.js +6 -6
- package/dist/esm/nv-fieldcheckbox.entry.js.map +1 -1
- package/dist/esm/nv-fielddate.entry.js +12 -15
- package/dist/esm/nv-fielddate.entry.js.map +1 -1
- package/dist/esm/nv-fielddaterange.entry.js +12 -13
- package/dist/esm/nv-fielddaterange.entry.js.map +1 -1
- package/dist/esm/nv-fielddropdown.entry.js +24 -33
- package/dist/esm/nv-fielddropdown.entry.js.map +1 -1
- package/dist/esm/nv-fielddropdownitem.entry.js +2 -3
- package/dist/esm/nv-fielddropdownitem.entry.js.map +1 -1
- package/dist/esm/nv-fieldmultiselect.entry.js +19 -27
- package/dist/esm/nv-fieldmultiselect.entry.js.map +1 -1
- package/dist/esm/nv-fieldnumber.entry.js +6 -6
- package/dist/esm/nv-fieldnumber.entry.js.map +1 -1
- package/dist/esm/nv-fieldpassword.entry.js +6 -6
- package/dist/esm/nv-fieldpassword.entry.js.map +1 -1
- package/dist/esm/nv-fieldradio.entry.js +4 -4
- package/dist/esm/nv-fieldradio.entry.js.map +1 -1
- package/dist/esm/nv-fieldselect.entry.js +8 -8
- package/dist/esm/nv-fieldselect.entry.js.map +1 -1
- package/dist/esm/nv-fieldslider.entry.js +5 -5
- package/dist/esm/nv-fieldslider.entry.js.map +1 -1
- package/dist/esm/nv-fieldtext.entry.js +6 -6
- package/dist/esm/nv-fieldtext.entry.js.map +1 -1
- package/dist/esm/nv-fieldtextarea.entry.js +6 -7
- package/dist/esm/nv-fieldtextarea.entry.js.map +1 -1
- package/dist/esm/nv-fieldtime.entry.js +27 -35
- package/dist/esm/nv-fieldtime.entry.js.map +1 -1
- package/dist/esm/nv-icon.entry.js +2 -2
- package/dist/esm/nv-icon.entry.js.map +1 -1
- package/dist/esm/nv-iconbutton.nv-loader.entry.js.map +1 -1
- package/dist/esm/nv-iconbutton_2.entry.js +5 -6
- package/dist/esm/nv-menu.entry.js +3 -4
- package/dist/esm/nv-menu.entry.js.map +1 -1
- package/dist/esm/nv-menuitem.entry.js +1 -1
- package/dist/esm/nv-notification-bullet.entry.js +1 -2
- package/dist/esm/nv-notification-bullet.entry.js.map +1 -1
- package/dist/esm/nv-notification.entry.js +6 -9
- package/dist/esm/nv-notification.entry.js.map +1 -1
- package/dist/esm/nv-notificationcontainer.entry.js +1 -1
- package/dist/esm/nv-popover.entry.js +4 -4
- package/dist/esm/nv-popover.entry.js.map +1 -1
- package/dist/esm/nv-row.entry.js +1 -1
- package/dist/esm/nv-sidebar.entry.js +3 -3
- package/dist/esm/nv-sidebar.entry.js.map +1 -1
- package/dist/esm/nv-sidebarcontent.entry.js +1 -1
- package/dist/esm/nv-sidebardivider.entry.js +1 -1
- package/dist/esm/nv-sidebarfooter.entry.js +1 -1
- package/dist/esm/nv-sidebargroup.entry.js +1 -1
- package/dist/esm/nv-sidebarheader.entry.js +1 -1
- package/dist/esm/nv-sidebarlogo.entry.js +1 -1
- package/dist/esm/nv-sidebarnavitem.entry.js +4 -5
- package/dist/esm/nv-sidebarnavitem.entry.js.map +1 -1
- package/dist/esm/nv-sidebarnavsubitem.entry.js +1 -1
- package/dist/esm/nv-split.entry.js +43 -41
- package/dist/esm/nv-split.entry.js.map +1 -1
- package/dist/esm/nv-stack.entry.js +1 -1
- package/dist/esm/nv-table.entry.js +6 -8
- package/dist/esm/nv-table.entry.js.map +1 -1
- package/dist/esm/nv-tableheader.entry.js +2 -2
- package/dist/esm/nv-tableheader.entry.js.map +1 -1
- package/dist/esm/nv-toggle.entry.js +2 -2
- package/dist/esm/nv-togglebutton.entry.js +2 -2
- package/dist/esm/nv-togglebutton.entry.js.map +1 -1
- package/dist/esm/nv-togglebuttongroup.entry.js +3 -4
- package/dist/esm/nv-togglebuttongroup.entry.js.map +1 -1
- package/dist/esm/nv-tooltip.entry.js +1 -1
- package/dist/lib/generators/angular-output.js +9 -7
- package/dist/lib/generators/angular-output.js.map +1 -1
- package/dist/lib/generators/docs-blazor.js +32 -14
- package/dist/lib/generators/docs-blazor.js.map +1 -1
- package/dist/lib/generators/vue-output.js +10 -11
- package/dist/lib/generators/vue-output.js.map +1 -1
- package/dist/lib/utils/componentBinding.js +9 -10
- package/dist/lib/utils/componentBinding.js.map +1 -1
- package/dist/lib/utils/parseToCSharpTypes.js +3 -16
- package/dist/lib/utils/parseToCSharpTypes.js.map +1 -1
- package/dist/lib/utils/spread.js +3 -4
- package/dist/lib/utils/spread.js.map +1 -1
- package/dist/native/index.esm.js +1 -1
- package/dist/native/index.esm.js.map +1 -1
- package/dist/native/native.css +1 -1
- package/dist/native/native.esm.js +1 -1
- package/dist/native/nv-accordion.entry.esm.js.map +1 -1
- package/dist/native/nv-alert.entry.esm.js.map +1 -1
- package/dist/native/nv-button.entry.esm.js.map +1 -1
- package/dist/native/nv-calendar.entry.esm.js.map +1 -1
- package/dist/native/nv-datagrid.entry.esm.js.map +1 -1
- package/dist/native/nv-dialog.entry.esm.js.map +1 -1
- package/dist/native/nv-drawer.entry.esm.js.map +1 -0
- package/dist/native/nv-drawerfooter.nv-drawerheader.entry.esm.js.map +1 -0
- package/dist/native/nv-fieldcheckbox.entry.esm.js.map +1 -1
- package/dist/native/nv-fielddate.entry.esm.js.map +1 -1
- package/dist/native/nv-fielddaterange.entry.esm.js.map +1 -1
- package/dist/native/nv-fielddropdown.entry.esm.js.map +1 -1
- package/dist/native/nv-fielddropdownitem.entry.esm.js.map +1 -1
- package/dist/native/nv-fieldmultiselect.entry.esm.js.map +1 -1
- package/dist/native/nv-fieldnumber.entry.esm.js.map +1 -1
- package/dist/native/nv-fieldpassword.entry.esm.js.map +1 -1
- package/dist/native/nv-fieldradio.entry.esm.js.map +1 -1
- package/dist/native/nv-fieldselect.entry.esm.js.map +1 -1
- package/dist/native/nv-fieldslider.entry.esm.js.map +1 -1
- package/dist/native/nv-fieldtext.entry.esm.js.map +1 -1
- package/dist/native/nv-fieldtextarea.entry.esm.js.map +1 -1
- package/dist/native/nv-fieldtime.entry.esm.js.map +1 -1
- package/dist/native/nv-icon.entry.esm.js.map +1 -1
- package/dist/native/nv-iconbutton.nv-loader.entry.esm.js.map +1 -1
- package/dist/native/nv-menu.entry.esm.js.map +1 -1
- package/dist/native/nv-notification-bullet.entry.esm.js.map +1 -1
- package/dist/native/nv-notification.entry.esm.js.map +1 -1
- package/dist/native/nv-popover.entry.esm.js.map +1 -1
- package/dist/native/nv-sidebar.entry.esm.js.map +1 -1
- package/dist/native/nv-sidebarnavitem.entry.esm.js.map +1 -1
- package/dist/native/nv-split.entry.esm.js.map +1 -1
- package/dist/native/nv-table.entry.esm.js.map +1 -1
- package/dist/native/nv-tableheader.entry.esm.js.map +1 -1
- package/dist/native/nv-togglebutton.entry.esm.js.map +1 -1
- package/dist/native/nv-togglebuttongroup.entry.esm.js.map +1 -1
- package/dist/native/{p-b21e38a3.entry.js → p-04a2fe7f.entry.js} +2 -2
- package/dist/native/p-08204da4.entry.js +2 -0
- package/dist/native/{p-bd6ae5f3.entry.js.map → p-08204da4.entry.js.map} +1 -1
- package/dist/native/{p-e0adb05d.entry.js → p-0e07b91b.entry.js} +2 -2
- package/dist/native/p-0e07b91b.entry.js.map +1 -0
- package/dist/native/p-136dfb3e.entry.js +2 -0
- package/dist/native/p-136dfb3e.entry.js.map +1 -0
- package/dist/native/p-1f2dd37f.entry.js +2 -0
- package/dist/native/p-1f2dd37f.entry.js.map +1 -0
- package/dist/native/p-255a0482.entry.js +2 -0
- package/dist/native/p-255a0482.entry.js.map +1 -0
- package/dist/native/{p-f73e9752.entry.js → p-3305a7e6.entry.js} +2 -2
- package/dist/native/p-3305a7e6.entry.js.map +1 -0
- package/dist/native/p-36b0a6f0.entry.js +2 -0
- package/dist/native/p-36b0a6f0.entry.js.map +1 -0
- package/dist/native/p-434bc910.entry.js +2 -0
- package/dist/native/p-434bc910.entry.js.map +1 -0
- package/dist/native/{p-ea98ba7a.entry.js → p-436029a5.entry.js} +2 -2
- package/dist/native/p-460fdf02.entry.js +2 -0
- package/dist/native/p-460fdf02.entry.js.map +1 -0
- package/dist/native/p-477e02cf.entry.js +2 -0
- package/dist/native/p-477e02cf.entry.js.map +1 -0
- package/dist/native/{p-28afb852.entry.js → p-4efb582b.entry.js} +2 -2
- package/dist/native/p-4efb582b.entry.js.map +1 -0
- package/dist/native/p-4f1dfa32.entry.js +2 -0
- package/dist/native/p-4f1dfa32.entry.js.map +1 -0
- package/dist/native/p-51b7de55.entry.js +13 -0
- package/dist/native/p-51b7de55.entry.js.map +1 -0
- package/dist/native/{p-37c6d559.entry.js → p-5dd120dc.entry.js} +2 -2
- package/dist/native/p-5dd120dc.entry.js.map +1 -0
- package/dist/native/{p-5acf105e.entry.js → p-67181258.entry.js} +2 -2
- package/dist/native/p-6a81884b.entry.js +2 -0
- package/dist/native/p-6a81884b.entry.js.map +1 -0
- package/dist/native/p-6aa483de.entry.js +2 -0
- package/dist/native/{p-b1a917c7.entry.js → p-6fc79712.entry.js} +2 -2
- package/dist/native/{p-ee04ea09.entry.js → p-729589cb.entry.js} +2 -2
- package/dist/native/p-729589cb.entry.js.map +1 -0
- package/dist/native/p-78bf7650.entry.js +2 -0
- package/dist/native/p-7e6e9ea2.entry.js +2 -0
- package/dist/native/p-8f1cd9e2.entry.js +2 -0
- package/dist/native/p-8f1cd9e2.entry.js.map +1 -0
- package/dist/native/{p-4cf47e1a.entry.js → p-910cd685.entry.js} +2 -2
- package/dist/native/p-91eaf02e.entry.js +2 -0
- package/dist/native/p-91eaf02e.entry.js.map +1 -0
- package/dist/native/p-93e35975.entry.js +2 -0
- package/dist/native/p-93e35975.entry.js.map +1 -0
- package/dist/native/{p-9d8257dc.entry.js → p-96c45604.entry.js} +2 -2
- package/dist/native/{p-6f456ae4.entry.js → p-9b6ad782.entry.js} +2 -2
- package/dist/native/{p-6f456ae4.entry.js.map → p-9b6ad782.entry.js.map} +1 -1
- package/dist/native/{p-fd872d54.entry.js → p-9f32c3ea.entry.js} +2 -2
- package/dist/native/p-B6GgGra-.js +2 -0
- package/dist/native/p-B6GgGra-.js.map +1 -0
- package/dist/native/p-Blc6XEY7.js +2 -0
- package/dist/native/p-Blc6XEY7.js.map +1 -0
- package/dist/native/p-D3eWMME9.js +6 -0
- package/dist/native/p-D3eWMME9.js.map +1 -0
- package/dist/native/p-DQuL1Twl.js.map +1 -1
- package/dist/native/p-IlwlcG9l.js +2 -0
- package/dist/native/{p-DOZbXX2L.js.map → p-IlwlcG9l.js.map} +1 -1
- package/dist/native/{p-b0935c49.entry.js → p-a6fea322.entry.js} +2 -2
- package/dist/native/p-ae279ae9.entry.js +2 -0
- package/dist/native/p-ae279ae9.entry.js.map +1 -0
- package/dist/native/p-ba1286aa.entry.js +2 -0
- package/dist/native/p-ba1286aa.entry.js.map +1 -0
- package/dist/native/p-bb52a5a9.entry.js +2 -0
- package/dist/native/p-bb52a5a9.entry.js.map +1 -0
- package/dist/native/p-bc90247e.entry.js +2 -0
- package/dist/native/p-bc90247e.entry.js.map +1 -0
- package/dist/native/{p-0493fb6d.entry.js → p-c2a73a5a.entry.js} +2 -2
- package/dist/native/p-c4c11549.entry.js +2 -0
- package/dist/native/{p-3c54e422.entry.js → p-c5ecdc49.entry.js} +2 -2
- package/dist/native/p-c5ecdc49.entry.js.map +1 -0
- package/dist/native/{p-527e9b56.entry.js → p-cb1b9edb.entry.js} +2 -2
- package/dist/native/p-cb1b9edb.entry.js.map +1 -0
- package/dist/native/p-cdaf54b0.entry.js +2 -0
- package/dist/native/p-cdaf54b0.entry.js.map +1 -0
- package/dist/native/{p-e7dc36d9.entry.js → p-ceb8fe8a.entry.js} +2 -2
- package/dist/native/p-daf7541b.entry.js +2 -0
- package/dist/native/p-daf7541b.entry.js.map +1 -0
- package/dist/native/{p-da893df2.entry.js → p-ded4be77.entry.js} +2 -2
- package/dist/native/p-ded4be77.entry.js.map +1 -0
- package/dist/native/p-e1fc5f8c.entry.js +2 -0
- package/dist/native/p-e1fc5f8c.entry.js.map +1 -0
- package/dist/native/{p-d4f95c86.entry.js → p-e6c69f7d.entry.js} +2 -2
- package/dist/native/p-e6c69f7d.entry.js.map +1 -0
- package/dist/native/p-e83603f1.entry.js +2 -0
- package/dist/native/p-e83603f1.entry.js.map +1 -0
- package/dist/native/p-ec217581.entry.js +2 -0
- package/dist/native/p-ec217581.entry.js.map +1 -0
- package/dist/native/p-ee694832.entry.js +2 -0
- package/dist/native/p-ee694832.entry.js.map +1 -0
- package/dist/native/{p-b1ef2f25.entry.js → p-f7e0146e.entry.js} +2 -2
- package/dist/native/p-f7e0146e.entry.js.map +1 -0
- package/dist/types/components/nv-drawer/nv-drawer.d.ts +161 -0
- package/dist/types/components/nv-drawer/nv-drawer.docs.d.ts +4 -0
- package/dist/types/components/nv-drawerfooter/nv-drawerfooter.d.ts +76 -0
- package/dist/types/components/nv-drawerfooter/nv-drawerfooter.docs.d.ts +4 -0
- package/dist/types/components/nv-drawerheader/nv-drawerheader.d.ts +20 -0
- package/dist/types/components/nv-drawerheader/nv-drawerheader.docs.d.ts +4 -0
- package/dist/types/components/nv-icon/nv-icons.d.ts +1 -1
- package/dist/types/components/nv-split/nv-split.d.ts +4 -4
- package/dist/types/components.d.ts +292 -5
- package/dist/vscode-data.json +153 -1
- package/hydrate/index.js +969 -408
- package/hydrate/index.mjs +969 -408
- package/package.json +13 -1
- package/dist/cjs/grow.animation-BrWzyoUA.js.map +0 -1
- package/dist/components/p--iYGZN4R.js.map +0 -1
- package/dist/components/p-B-3kAnun.js.map +0 -1
- package/dist/components/p-BQo7AMPX.js.map +0 -1
- package/dist/components/p-CBF8V1L7.js.map +0 -1
- package/dist/components/p-CmwaW0q4.js.map +0 -1
- package/dist/components/p-D1i2OAGe.js.map +0 -1
- package/dist/components/p-DOZbXX2L.js.map +0 -1
- package/dist/components/p-DWG6az-u.js.map +0 -1
- package/dist/components/p-DaiLIZ8f.js.map +0 -1
- package/dist/components/p-Dc_0pr83.js.map +0 -1
- package/dist/components/p-Dk8ekxr_.js.map +0 -1
- package/dist/esm/grow.animation-CvHGHBL4.js.map +0 -1
- package/dist/native/p-02df60a5.entry.js +0 -2
- package/dist/native/p-02df60a5.entry.js.map +0 -1
- package/dist/native/p-0b8d6777.entry.js +0 -13
- package/dist/native/p-0b8d6777.entry.js.map +0 -1
- package/dist/native/p-0e7e693f.entry.js +0 -2
- package/dist/native/p-0e7e693f.entry.js.map +0 -1
- package/dist/native/p-0fe60a9d.entry.js +0 -2
- package/dist/native/p-0fe60a9d.entry.js.map +0 -1
- package/dist/native/p-14b0bf14.entry.js +0 -2
- package/dist/native/p-14b0bf14.entry.js.map +0 -1
- package/dist/native/p-28afb852.entry.js.map +0 -1
- package/dist/native/p-2cf77850.entry.js +0 -2
- package/dist/native/p-2cf77850.entry.js.map +0 -1
- package/dist/native/p-31a12d8a.entry.js +0 -2
- package/dist/native/p-31a12d8a.entry.js.map +0 -1
- package/dist/native/p-37c6d559.entry.js.map +0 -1
- package/dist/native/p-3c54e422.entry.js.map +0 -1
- package/dist/native/p-3c9b22ff.entry.js +0 -2
- package/dist/native/p-3c9b22ff.entry.js.map +0 -1
- package/dist/native/p-4a71f223.entry.js +0 -2
- package/dist/native/p-4a71f223.entry.js.map +0 -1
- package/dist/native/p-527e9b56.entry.js.map +0 -1
- package/dist/native/p-5bce524d.entry.js +0 -2
- package/dist/native/p-5bce524d.entry.js.map +0 -1
- package/dist/native/p-63bc0a05.entry.js +0 -2
- package/dist/native/p-63bc0a05.entry.js.map +0 -1
- package/dist/native/p-63bf86de.entry.js +0 -2
- package/dist/native/p-6a3c1413.entry.js +0 -2
- package/dist/native/p-7e274db7.entry.js +0 -7
- package/dist/native/p-7e274db7.entry.js.map +0 -1
- package/dist/native/p-86b2b071.entry.js +0 -2
- package/dist/native/p-86b2b071.entry.js.map +0 -1
- package/dist/native/p-8b278fce.entry.js +0 -2
- package/dist/native/p-8b278fce.entry.js.map +0 -1
- package/dist/native/p-9c543ab2.entry.js +0 -2
- package/dist/native/p-9c543ab2.entry.js.map +0 -1
- package/dist/native/p-DOZbXX2L.js +0 -2
- package/dist/native/p-DS5GOtQ3.js +0 -2
- package/dist/native/p-DS5GOtQ3.js.map +0 -1
- package/dist/native/p-a2aa6872.entry.js +0 -2
- package/dist/native/p-b1ef2f25.entry.js.map +0 -1
- package/dist/native/p-b2ed6d34.entry.js +0 -2
- package/dist/native/p-b2ed6d34.entry.js.map +0 -1
- package/dist/native/p-bd6ae5f3.entry.js +0 -2
- package/dist/native/p-c98b9ce4.entry.js +0 -2
- package/dist/native/p-c98b9ce4.entry.js.map +0 -1
- package/dist/native/p-cc305619.entry.js +0 -2
- package/dist/native/p-cc305619.entry.js.map +0 -1
- package/dist/native/p-d1cfdc3e.entry.js +0 -2
- package/dist/native/p-d1cfdc3e.entry.js.map +0 -1
- package/dist/native/p-d3b1bd81.entry.js +0 -2
- package/dist/native/p-d424b9aa.entry.js +0 -2
- package/dist/native/p-d424b9aa.entry.js.map +0 -1
- package/dist/native/p-d4f95c86.entry.js.map +0 -1
- package/dist/native/p-da893df2.entry.js.map +0 -1
- package/dist/native/p-e0adb05d.entry.js.map +0 -1
- package/dist/native/p-e6a37207.entry.js +0 -2
- package/dist/native/p-e6a37207.entry.js.map +0 -1
- package/dist/native/p-ee04ea09.entry.js.map +0 -1
- package/dist/native/p-f73e9752.entry.js.map +0 -1
- /package/dist/native/{p-b21e38a3.entry.js.map → p-04a2fe7f.entry.js.map} +0 -0
- /package/dist/native/{p-ea98ba7a.entry.js.map → p-436029a5.entry.js.map} +0 -0
- /package/dist/native/{p-5acf105e.entry.js.map → p-67181258.entry.js.map} +0 -0
- /package/dist/native/{p-63bf86de.entry.js.map → p-6aa483de.entry.js.map} +0 -0
- /package/dist/native/{p-b1a917c7.entry.js.map → p-6fc79712.entry.js.map} +0 -0
- /package/dist/native/{p-d3b1bd81.entry.js.map → p-78bf7650.entry.js.map} +0 -0
- /package/dist/native/{p-a2aa6872.entry.js.map → p-7e6e9ea2.entry.js.map} +0 -0
- /package/dist/native/{p-4cf47e1a.entry.js.map → p-910cd685.entry.js.map} +0 -0
- /package/dist/native/{p-9d8257dc.entry.js.map → p-96c45604.entry.js.map} +0 -0
- /package/dist/native/{p-fd872d54.entry.js.map → p-9f32c3ea.entry.js.map} +0 -0
- /package/dist/native/{p-b0935c49.entry.js.map → p-a6fea322.entry.js.map} +0 -0
- /package/dist/native/{p-0493fb6d.entry.js.map → p-c2a73a5a.entry.js.map} +0 -0
- /package/dist/native/{p-6a3c1413.entry.js.map → p-c4c11549.entry.js.map} +0 -0
- /package/dist/native/{p-e7dc36d9.entry.js.map → p-ceb8fe8a.entry.js.map} +0 -0
|
@@ -93,7 +93,6 @@ const augmentFormValidation = (component) => {
|
|
|
93
93
|
};
|
|
94
94
|
const augmentEvents = (component, docs) => {
|
|
95
95
|
return component.events.map(event => {
|
|
96
|
-
var _a, _b, _c, _d;
|
|
97
96
|
// Convert the event name for blazor
|
|
98
97
|
const bindTag = event.docsTags.find(tag => tag.name === 'bind');
|
|
99
98
|
if (bindTag) {
|
|
@@ -104,8 +103,8 @@ const augmentEvents = (component, docs) => {
|
|
|
104
103
|
}
|
|
105
104
|
// Covert the event payload for blazor typings
|
|
106
105
|
event.detail = convertToCSharpType(event.detail);
|
|
107
|
-
if (
|
|
108
|
-
|
|
106
|
+
if (event.complexType?.original?.includes('HTMLNv') &&
|
|
107
|
+
event.complexType?.original?.includes('EventMap')) {
|
|
109
108
|
// Pattern: HTMLXxxElement['yyy'] or HTMLXxxElementEventMap['yyy']
|
|
110
109
|
const pattern = /^HTML(.+?)ElementEventMap?\['(.+?)'\]$/;
|
|
111
110
|
const match = event.complexType.original.match(pattern);
|
|
@@ -123,48 +122,67 @@ const augmentEvents = (component, docs) => {
|
|
|
123
122
|
event.complexType.original = sourceEvent.complexType.original;
|
|
124
123
|
}
|
|
125
124
|
if (event.detail.includes('object')) {
|
|
126
|
-
event.complexType =
|
|
125
|
+
event.complexType = {
|
|
126
|
+
...event.complexType,
|
|
127
|
+
parsed: parseCSharpObjectStructure(event.complexType.resolved, event.complexType.original),
|
|
128
|
+
eventClassName: toPascalCase(`${component.tag}-${event.name}`),
|
|
129
|
+
};
|
|
127
130
|
}
|
|
128
131
|
return event;
|
|
129
132
|
});
|
|
130
133
|
};
|
|
131
134
|
const augmentMethods = (component) => {
|
|
132
135
|
component.methods = component.methods.map(method => {
|
|
133
|
-
method.complexType =
|
|
136
|
+
method.complexType = {
|
|
137
|
+
...method.complexType,
|
|
138
|
+
parameters: method.parameters.map(parameter => {
|
|
134
139
|
const blazorType = convertToCSharpType(parameter.type);
|
|
135
140
|
const parsedType = parseCSharpObjectStructure(parameter.type);
|
|
136
141
|
const parameterClassName = blazorType === 'object'
|
|
137
142
|
? toPascalCase(`${component.tag}-${method.name}-${parameter.name}`)
|
|
138
143
|
: undefined;
|
|
139
|
-
return
|
|
140
|
-
|
|
144
|
+
return {
|
|
145
|
+
...parameter,
|
|
146
|
+
originalType: parameter.type,
|
|
147
|
+
type: blazorType,
|
|
148
|
+
parsed: parsedType,
|
|
149
|
+
parameterClassName,
|
|
150
|
+
};
|
|
151
|
+
}),
|
|
152
|
+
};
|
|
141
153
|
return method;
|
|
142
154
|
});
|
|
143
155
|
};
|
|
144
156
|
const augmentProps = (component) => {
|
|
145
157
|
component.props = component.props.map(prop => {
|
|
146
|
-
var _a;
|
|
147
158
|
if (!prop.values)
|
|
148
159
|
return prop; // Skip props without values
|
|
149
160
|
const transformedValues = prop.values.map(value => {
|
|
150
|
-
return
|
|
161
|
+
return { ...value, type: convertToCSharpType(value.type) };
|
|
151
162
|
});
|
|
152
|
-
let propType =
|
|
163
|
+
let propType = transformedValues[0]?.type; // Default to the first value's type
|
|
153
164
|
if (transformedValues.length > 1) {
|
|
154
165
|
const isEnum = transformedValues.every(value => value.type === 'string' && value.value);
|
|
155
166
|
if (isEnum) {
|
|
156
167
|
propType = 'enum';
|
|
157
|
-
const enumValues = transformedValues.map(value => (
|
|
158
|
-
|
|
168
|
+
const enumValues = transformedValues.map(value => ({
|
|
169
|
+
...value,
|
|
170
|
+
type: convertBlazorEnumValue(value.value),
|
|
171
|
+
}));
|
|
172
|
+
return { ...prop, type: propType, values: enumValues };
|
|
159
173
|
}
|
|
160
174
|
else {
|
|
161
175
|
throw new Error(`Component '${component.tag}', property '${prop.name}': Unsupported union type in Blazor. Supported types: 'bool', 'double', 'enum'. Received: '${prop.type}'.`);
|
|
162
176
|
}
|
|
163
177
|
}
|
|
164
178
|
if (propType.includes('object')) {
|
|
165
|
-
prop.complexType =
|
|
179
|
+
prop.complexType = {
|
|
180
|
+
...prop.complexType,
|
|
181
|
+
parsed: parseCSharpObjectStructure(prop.type, prop.complexType.original),
|
|
182
|
+
propClassName: toPascalCase(`${component.tag}-${prop.name}`),
|
|
183
|
+
};
|
|
166
184
|
}
|
|
167
|
-
return
|
|
185
|
+
return { ...prop, type: propType, values: transformedValues };
|
|
168
186
|
});
|
|
169
187
|
};
|
|
170
188
|
const blazorDocsOutput = async (docs, config) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docs-blazor.js","sourceRoot":"","sources":["../../../lib/generators/docs-blazor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAWH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAE5C,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EACL,mBAAmB,EACnB,0BAA0B,GAC3B,MAAM,6BAA6B,CAAC;AAErC,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;AAyC7E,MAAM,qBAAqB,GAAG,CAAC,QAAgB,EAAW,EAAE;IAC1D,MAAM,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACtD,MAAM,UAAU,GAAG,EAAE,CAAC,gBAAgB,CACpC,QAAQ,EACR,WAAW,EACX,EAAE,CAAC,YAAY,CAAC,MAAM,EACtB,IAAI,CACL,CAAC;IACF,IAAI,cAAc,GAAG,KAAK,CAAC;IAE3B;;;OAGG;IACH,SAAS,KAAK,CAAC,IAAa;QAC1B,IACE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC;YACpB,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC;YACpC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,WAAW,EACpD,CAAC;YACD,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACzC,IAAI,EAAE,CAAC,yBAAyB,CAAC,GAAG,CAAC,EAAE,CAAC;gBACtC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBAC5B,IACE,EAAE,CAAC,oBAAoB,CAAC,IAAI,CAAC;wBAC7B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,gBAAgB,EACxC,CAAC;wBACD,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,MAAM,CAAC;oBACzD,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,CAAC;IAClB,OAAO,cAAc,CAAC;AACxB,CAAC,CAAC;AAEF,MAAM,qBAAqB,GAAG,CAC5B,SAAqC,EACS,EAAE;IAChD,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,SAA6B,CAAC;IAClC,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,WAA+B,CAAC;IACpC,IAAI,KAAK,GAAG,IAAI,CAAC;IAEjB,MAAM,aAAa,GAAa,EAAE,CAAC;IAEnC;;;OAGG;IACH,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QAC7B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YAC1B,IAAI,GAAG,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;gBAC7B,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;oBACzB,UAAU,EAAE,CAAC;oBACb,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC;gBACxB,CAAC;qBAAM,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;oBAClC,YAAY,EAAE,CAAC;oBACf,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC;gBAC1B,CAAC;qBAAM,CAAC;oBACN,KAAK,GAAG,KAAK,CAAC;oBACd,aAAa,CAAC,IAAI,CAChB,2CAA2C,IAAI,CAAC,IAAI,uCAAuC,CAC5F,CAAC;gBACJ,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IACH,IAAI,UAAU,GAAG,CAAC,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;QACvC,KAAK,GAAG,KAAK,CAAC;QACd,aAAa,CAAC,IAAI,CAChB,+EAA+E,CAChF,CAAC;IACJ,CAAC;IACD,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CACb,0BAA0B,SAAS,CAAC,GAAG,KAAK,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CACrE,CAAC;IACJ,CAAC;IAED,wEAAwE;IACxE,OAAO;QACL,cAAc,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC1C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,WAAW,CAAC,CACpD;QACD,SAAS;QACT,WAAW;KACZ,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CACpB,SAAqC,EACrC,IAAc,EACd,EAAE;IACF,OAAO,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;;QAClC,oCAAoC;QACpC,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;QAEhE,IAAI,OAAO,EAAE,CAAC;YACZ,KAAK,CAAC,IAAI,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;QACtD,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,GAAG,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;QACnD,CAAC;QAED,8CAA8C;QAC9C,KAAK,CAAC,MAAM,GAAG,mBAAmB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAEjD,IACE,CAAA,MAAA,MAAA,KAAK,CAAC,WAAW,0CAAE,QAAQ,0CAAE,QAAQ,CAAC,QAAQ,CAAC;aAC/C,MAAA,MAAA,KAAK,CAAC,WAAW,0CAAE,QAAQ,0CAAE,QAAQ,CAAC,UAAU,CAAC,CAAA,EACjD,CAAC;YACD,kEAAkE;YAClE,MAAM,OAAO,GAAG,wCAAwC,CAAC;YACzD,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAExD,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;gBAClC,MAAM,IAAI,KAAK,CACb,uBAAuB,KAAK,CAAC,WAAW,CAAC,QAAQ,QAAQ,KAAK,CAAC,KAAK,OAAO,SAAS,CAAC,GAAG,EAAE,CAC3F,CAAC;YAEJ,MAAM,qBAAqB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,8BAA8B;YACtE,MAAM,oBAAoB,GAAG,WAAW,CAAC,qBAAqB,CAAC,CAAC;YAChE,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,+BAA+B;YAE3D,MAAM,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAC1C,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,oBAAoB,CAC1C,CAAC;YAEF,IAAI,CAAC,eAAe;gBAClB,MAAM,IAAI,KAAK,CACb,wBAAwB,SAAS,wCAAwC,KAAK,CAAC,KAAK,OAAO,SAAS,CAAC,GAAG,EAAE,CAC3G,CAAC;YAEJ,MAAM,WAAW,GAAG,eAAe,CAAC,MAAM,CAAC,IAAI,CAC7C,oBAAoB,CAAC,EAAE,CAAC,oBAAoB,CAAC,KAAK,KAAK,SAAS,CACjE,CAAC;YAEF,IAAI,CAAC,WAAW;gBACd,MAAM,IAAI,KAAK,CACb,oBAAoB,KAAK,CAAC,KAAK,OAAO,SAAS,CAAC,GAAG,wCAAwC,KAAK,CAAC,KAAK,OAAO,SAAS,CAAC,GAAG,EAAE,CAC7H,CAAC;YAEJ,KAAK,CAAC,WAAW,CAAC,QAAQ,GAAG,WAAW,CAAC,WAAW,CAAC,QAAQ,CAAC;QAChE,CAAC;QAED,IAAI,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACpC,KAAK,CAAC,WAAW,GAAG,gCACf,KAAK,CAAC,WAAW,KACpB,MAAM,EAAE,0BAA0B,CAChC,KAAK,CAAC,WAAW,CAAC,QAAQ,EAC1B,KAAK,CAAC,WAAW,CAAC,QAAQ,CAC3B,EACD,cAAc,EAAE,YAAY,CAAC,GAAG,SAAS,CAAC,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,GAC1B,CAAC;QACzC,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,SAAqC,EAAE,EAAE;IAC/D,SAAS,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE;QACjD,MAAM,CAAC,WAAW,GAAG,gCAChB,MAAM,CAAC,WAAW,KACrB,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;gBAC5C,MAAM,UAAU,GAAG,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBACvD,MAAM,UAAU,GAAG,0BAA0B,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAC9D,MAAM,kBAAkB,GACtB,UAAU,KAAK,QAAQ;oBACrB,CAAC,CAAC,YAAY,CAAC,GAAG,SAAS,CAAC,GAAG,IAAI,MAAM,CAAC,IAAI,IAAI,SAAS,CAAC,IAAI,EAAE,CAAC;oBACnE,CAAC,CAAC,SAAS,CAAC;gBAEhB,uCACK,SAAS,KACZ,YAAY,EAAE,SAAS,CAAC,IAAI,EAC5B,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,UAAU,EAClB,kBAAkB,IAClB;YACJ,CAAC,CAAC,GAC0C,CAAC;QAE/C,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,SAAqC,EAAE,EAAE;IAC7D,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;;QAC3C,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO,IAAI,CAAC,CAAC,4BAA4B;QAE3D,MAAM,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YAChD,uCAAY,KAAK,KAAE,IAAI,EAAE,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,IAAG;QAC7D,CAAC,CAAC,CAAC;QAEH,IAAI,QAAQ,GAAG,MAAA,iBAAiB,CAAC,CAAC,CAAC,0CAAE,IAAI,CAAC,CAAC,oCAAoC;QAE/E,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACjC,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,CACpC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,KAAK,CAChD,CAAC;YAEF,IAAI,MAAM,EAAE,CAAC;gBACX,QAAQ,GAAG,MAAM,CAAC;gBAClB,MAAM,UAAU,GAAG,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,iCAC7C,KAAK,KACR,IAAI,EAAE,sBAAsB,CAAC,KAAK,CAAC,KAAK,CAAC,IACzC,CAAC,CAAC;gBACJ,uCAAY,IAAI,KAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,IAAG;YACzD,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CACb,cAAc,SAAS,CAAC,GAAG,gBAAgB,IAAI,CAAC,IAAI,8FAA8F,IAAI,CAAC,IAAI,IAAI,CAChK,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC,WAAW,GAAG,gCACd,IAAI,CAAC,WAAW,KACnB,MAAM,EAAE,0BAA0B,CAChC,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,WAAW,CAAC,QAAQ,CAC1B,EACD,aAAa,EAAE,YAAY,CAAC,GAAG,SAAS,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,GACrB,CAAC;QAC5C,CAAC;QAED,uCAAY,IAAI,KAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,iBAAiB,IAAG;IAChE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,KAAK,EAAE,IAAc,EAAE,MAAc,EAAE,EAAE;IAChE,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO;IAE5B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,kBAAkB,CAAC,CAAC;IACzE,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAE3C,qCAAqC;IACrC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;QACjD,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CACjC,cAAc,EACd,SAAS,CAAC,GAAG,EACb,GAAG,SAAS,CAAC,GAAG,MAAM,CACvB,CAAC;QAEF,oEAAoE;QACpE,MAAM,kBAAkB,GAA+B,IAAI,CAAC,KAAK,CAC/D,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAC1B,CAAC;QAEF,uBAAuB;QACvB,IAAI,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACrC,kBAAkB,CAAC,cAAc;gBAC/B,qBAAqB,CAAC,iBAAiB,CAAC,CAAC;QAC7C,CAAC;QACD,sBAAsB;QACtB,IAAI,CAAC;YACH,kBAAkB,CAAC,cAAc;gBAC/B,qBAAqB,CAAC,kBAAkB,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,aAAa;QACb,IAAI,CAAC;YACH,kBAAkB,CAAC,MAAM,GAAG,aAAa,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;QACtE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,cAAc;QACd,IAAI,CAAC;YACH,cAAc,CAAC,kBAAkB,CAAC,CAAC;QACrC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,YAAY;QACZ,IAAI,CAAC;YACH,YAAY,CAAC,kBAAkB,CAAC,CAAC;QACnC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,+CAA+C;QAC/C,OAAO,kBAAkB,CAAC,OAAO,CAAC;QAClC,OAAO,kBAAkB,CAAC,UAAU,CAAC;QACrC,OAAO,kBAAkB,CAAC,SAAS,CAAC;QAEpC,OAAO,kBAAkB,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC3D,MAAM,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;AACtD,CAAC,CAAC;AAEF,OAAO,EAAE,gBAAgB,EAAE,CAAC","sourcesContent":["/**\n * @fileoverview Augmented Metadata for Blazor with validations.\n * Generates a custom blazor-docs.json file from the stencil metadata. It is\n * used to auto-generate the blazor components.\n *\n * @augments formAssociated - Does the component have a form association?\n * @augments formValidation - Does the component have validation tags?\n * @augments blazorTypes - converts ts types to c# (TODO: event types - void support as well)\n * @augments eventNames - names of the events for blazor, looks for bind tags\n *\n * @validates blazorTypes - Union types are not supported in Blazor\n * @validates validators, must be message or error, and only up to one of each\n * TODO: implement validations: bindTag, blazorTypes for events\n * @validates eventNames - `@bind` value should be a property of the component should only be one per prop\n */\n\nimport {\n Config,\n JsonDocs,\n JsonDocsComponent,\n JsonDocsEvent,\n ComponentCompilerPropertyComplexType,\n ComponentCompilerEventComplexType,\n ComponentCompilerMethodComplexType,\n} from '@stencil/core/internal';\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport * as ts from 'typescript';\nimport { bold, redBright } from 'colorette';\n\nimport { toPascalCase, toKebabCase } from 'nova-utils/lib/string.utils';\nimport { convertBlazorEnumValue } from 'nova-utils/lib/enum.utils';\nimport {\n convertToCSharpType,\n parseCSharpObjectStructure,\n} from '../utils/parseToCSharpTypes';\n\nconst COMPONENTS_DIR = path.join(__dirname, '..', '..', 'src', 'components');\n\ntype AugmentedJsonDocsEvent = {\n /**\n * The name of the event.\n */\n name?: string;\n} & JsonDocsEvent;\n\ntype AugmentedJsonDocsComponent = {\n /**\n * Does the component have a form association?\n */\n formAssociated?: boolean;\n\n /**\n * Does the component have validation tags?\n */\n formValidation?: {\n /**\n * Does the component have form validations using @validator tags?\n */\n hasValidations: boolean;\n\n /**\n * The name of the property that contains the error message.\n */\n errorProp?: string;\n\n /**\n * The name of the property that contains the message.\n */\n messageProp?: string;\n };\n\n /**\n * The events for the component.\n */\n events: Array<AugmentedJsonDocsEvent>;\n} & JsonDocsComponent;\n\nconst augmentFormAssociated = (filePath: string): boolean => {\n const fileContent = fs.readFileSync(filePath, 'utf8');\n const sourceFile = ts.createSourceFile(\n filePath,\n fileContent,\n ts.ScriptTarget.Latest,\n true,\n );\n let formAssociated = false;\n\n /**\n * Visits the given TypeScript node.\n * @param {ts.Node} node The TypeScript node to visit.\n */\n function visit(node: ts.Node) {\n if (\n ts.isDecorator(node) &&\n ts.isCallExpression(node.expression) &&\n node.expression.expression.getText() === 'Component'\n ) {\n const arg = node.expression.arguments[0];\n if (ts.isObjectLiteralExpression(arg)) {\n arg.properties.forEach(prop => {\n if (\n ts.isPropertyAssignment(prop) &&\n prop.name.getText() === 'formAssociated'\n ) {\n formAssociated = prop.initializer.getText() === 'true';\n }\n });\n }\n }\n ts.forEachChild(node, visit);\n }\n\n visit(sourceFile);\n return formAssociated;\n};\n\nconst augmentFormValidation = (\n component: AugmentedJsonDocsComponent,\n): AugmentedJsonDocsComponent['formValidation'] => {\n let errorCount = 0;\n let errorProp: string | undefined;\n let messageCount = 0;\n let messageProp: string | undefined;\n let valid = true;\n\n const errorMessages: string[] = [];\n\n /**\n * Validate the format of the @validator tags.\n * Should always be message or error, and only up to one of each.\n */\n component.props.forEach(prop => {\n prop.docsTags.forEach(tag => {\n if (tag.name === 'validator') {\n if (tag.text === 'error') {\n errorCount++;\n errorProp = prop.name;\n } else if (tag.text === 'message') {\n messageCount++;\n messageProp = prop.name;\n } else {\n valid = false;\n errorMessages.push(\n `\\n* The @validator tag for the property ${prop.name} must either be \"error\" or \"message\".`,\n );\n }\n }\n });\n });\n if (errorCount > 1 || messageCount > 1) {\n valid = false;\n errorMessages.push(\n `\\n* Component must have only one of each validator type [\"error\", \"message\"].`,\n );\n }\n if (valid === false) {\n throw new Error(\n `Invalid validators for ${component.tag}: ${errorMessages.join('')}`,\n );\n }\n\n /** Does the component have a form validations using @validator tags? */\n return {\n hasValidations: component.props.some(prop =>\n prop.docsTags.find(tag => tag.name === 'validator'),\n ),\n errorProp,\n messageProp,\n };\n};\n\nconst augmentEvents = (\n component: AugmentedJsonDocsComponent,\n docs: JsonDocs,\n) => {\n return component.events.map(event => {\n // Convert the event name for blazor\n const bindTag = event.docsTags.find(tag => tag.name === 'bind');\n\n if (bindTag) {\n event.name = `${toPascalCase(bindTag.text)}Changed`;\n } else {\n event.name = `${toPascalCase(event.event)}Event`;\n }\n\n // Covert the event payload for blazor typings\n event.detail = convertToCSharpType(event.detail);\n\n if (\n event.complexType?.original?.includes('HTMLNv') &&\n event.complexType?.original?.includes('EventMap')\n ) {\n // Pattern: HTMLXxxElement['yyy'] or HTMLXxxElementEventMap['yyy']\n const pattern = /^HTML(.+?)ElementEventMap?\\['(.+?)'\\]$/;\n const match = event.complexType.original.match(pattern);\n\n if (!match || !match[1] || !match[2])\n throw new Error(\n `Invalid event type: ${event.complexType.original} for ${event.event} in ${component.tag}`,\n );\n\n const sourceComponentPascal = match[1]; // e.g., \"NvFielddropdownitem\"\n const sourceComponentKebab = toKebabCase(sourceComponentPascal);\n const eventName = match[2]; // e.g., \"dropdownItemSelected\"\n\n const sourceComponent = docs.components.find(\n comp => comp.tag === sourceComponentKebab,\n );\n\n if (!sourceComponent)\n throw new Error(\n `Component not found: ${component}, please check the type of the event ${event.event} in ${component.tag}`,\n );\n\n const sourceEvent = sourceComponent.events.find(\n sourceComponentEvent => sourceComponentEvent.event === eventName,\n );\n\n if (!sourceEvent)\n throw new Error(\n `Event not found: ${event.event} in ${component.tag}, please check the type of the event ${event.event} in ${component.tag}`,\n );\n\n event.complexType.original = sourceEvent.complexType.original;\n }\n\n if (event.detail.includes('object')) {\n event.complexType = {\n ...event.complexType,\n parsed: parseCSharpObjectStructure(\n event.complexType.resolved,\n event.complexType.original,\n ),\n eventClassName: toPascalCase(`${component.tag}-${event.name}`),\n } as ComponentCompilerEventComplexType;\n }\n\n return event;\n });\n};\n\nconst augmentMethods = (component: AugmentedJsonDocsComponent) => {\n component.methods = component.methods.map(method => {\n method.complexType = {\n ...method.complexType,\n parameters: method.parameters.map(parameter => {\n const blazorType = convertToCSharpType(parameter.type);\n const parsedType = parseCSharpObjectStructure(parameter.type);\n const parameterClassName =\n blazorType === 'object'\n ? toPascalCase(`${component.tag}-${method.name}-${parameter.name}`)\n : undefined;\n\n return {\n ...parameter,\n originalType: parameter.type,\n type: blazorType,\n parsed: parsedType,\n parameterClassName,\n };\n }),\n } satisfies ComponentCompilerMethodComplexType;\n\n return method;\n });\n};\n\nconst augmentProps = (component: AugmentedJsonDocsComponent) => {\n component.props = component.props.map(prop => {\n if (!prop.values) return prop; // Skip props without values\n\n const transformedValues = prop.values.map(value => {\n return { ...value, type: convertToCSharpType(value.type) };\n });\n\n let propType = transformedValues[0]?.type; // Default to the first value's type\n\n if (transformedValues.length > 1) {\n const isEnum = transformedValues.every(\n value => value.type === 'string' && value.value,\n );\n\n if (isEnum) {\n propType = 'enum';\n const enumValues = transformedValues.map(value => ({\n ...value,\n type: convertBlazorEnumValue(value.value),\n }));\n return { ...prop, type: propType, values: enumValues };\n } else {\n throw new Error(\n `Component '${component.tag}', property '${prop.name}': Unsupported union type in Blazor. Supported types: 'bool', 'double', 'enum'. Received: '${prop.type}'.`,\n );\n }\n }\n\n if (propType.includes('object')) {\n prop.complexType = {\n ...prop.complexType,\n parsed: parseCSharpObjectStructure(\n prop.type,\n prop.complexType.original,\n ),\n propClassName: toPascalCase(`${component.tag}-${prop.name}`),\n } as ComponentCompilerPropertyComplexType;\n }\n\n return { ...prop, type: propType, values: transformedValues };\n });\n};\n\nconst blazorDocsOutput = async (docs: JsonDocs, config: Config) => {\n if (!config.rootDir) return;\n\n const outputPath = path.join(config.rootDir, 'meta', 'blazor-docs.json');\n const outputDir = path.dirname(outputPath);\n\n // Ensure the output directory exists\n if (!fs.existsSync(outputDir)) {\n fs.mkdirSync(outputDir, { recursive: true });\n }\n\n const components = docs.components.map(component => {\n const componentFilePath = path.join(\n COMPONENTS_DIR,\n component.tag,\n `${component.tag}.tsx`,\n );\n\n /** Deep copy the component object to avoid mutating the original */\n const augmentedComponent: AugmentedJsonDocsComponent = JSON.parse(\n JSON.stringify(component),\n );\n\n /** Form Association */\n if (fs.existsSync(componentFilePath)) {\n augmentedComponent.formAssociated =\n augmentFormAssociated(componentFilePath);\n }\n /** Form Validation */\n try {\n augmentedComponent.formValidation =\n augmentFormValidation(augmentedComponent);\n } catch (error) {\n console.error(bold(redBright('[ ERROR ] ')), redBright(error.message));\n process.exit(1);\n }\n\n /** Events */\n try {\n augmentedComponent.events = augmentEvents(augmentedComponent, docs);\n } catch (error) {\n console.error(bold(redBright('[ ERROR ] ')), redBright(error.message));\n process.exit(1);\n }\n\n /** Methods */\n try {\n augmentMethods(augmentedComponent);\n } catch (error) {\n console.error(bold(redBright('[ ERROR ] ')), redBright(error.message));\n process.exit(1);\n }\n\n /** Props */\n try {\n augmentProps(augmentedComponent);\n } catch (error) {\n console.error(bold(redBright('[ ERROR ] ')), redBright(error.message));\n process.exit(1);\n }\n\n /** Remove config values with absolute paths */\n delete augmentedComponent.dirPath;\n delete augmentedComponent.readmePath;\n delete augmentedComponent.usagesDir;\n\n return augmentedComponent;\n });\n\n const customDocs = JSON.stringify({ components }, null, 2);\n await fs.promises.writeFile(outputPath, customDocs);\n};\n\nexport { blazorDocsOutput };\n"]}
|
|
1
|
+
{"version":3,"file":"docs-blazor.js","sourceRoot":"","sources":["../../../lib/generators/docs-blazor.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @fileoverview Augmented Metadata for Blazor with validations.\n * Generates a custom blazor-docs.json file from the stencil metadata. It is\n * used to auto-generate the blazor components.\n *\n * @augments formAssociated - Does the component have a form association?\n * @augments formValidation - Does the component have validation tags?\n * @augments blazorTypes - converts ts types to c# (TODO: event types - void support as well)\n * @augments eventNames - names of the events for blazor, looks for bind tags\n *\n * @validates blazorTypes - Union types are not supported in Blazor\n * @validates validators, must be message or error, and only up to one of each\n * TODO: implement validations: bindTag, blazorTypes for events\n * @validates eventNames - `@bind` value should be a property of the component should only be one per prop\n */\n\nimport {\n Config,\n JsonDocs,\n JsonDocsComponent,\n JsonDocsEvent,\n ComponentCompilerPropertyComplexType,\n ComponentCompilerEventComplexType,\n ComponentCompilerMethodComplexType,\n} from '@stencil/core/internal';\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport * as ts from 'typescript';\nimport { bold, redBright } from 'colorette';\n\nimport { toPascalCase, toKebabCase } from 'nova-utils/lib/string.utils';\nimport { convertBlazorEnumValue } from 'nova-utils/lib/enum.utils';\nimport {\n convertToCSharpType,\n parseCSharpObjectStructure,\n} from '../utils/parseToCSharpTypes';\n\nconst COMPONENTS_DIR = path.join(__dirname, '..', '..', 'src', 'components');\n\ntype AugmentedJsonDocsEvent = {\n /**\n * The name of the event.\n */\n name?: string;\n} & JsonDocsEvent;\n\ntype AugmentedJsonDocsComponent = {\n /**\n * Does the component have a form association?\n */\n formAssociated?: boolean;\n\n /**\n * Does the component have validation tags?\n */\n formValidation?: {\n /**\n * Does the component have form validations using @validator tags?\n */\n hasValidations: boolean;\n\n /**\n * The name of the property that contains the error message.\n */\n errorProp?: string;\n\n /**\n * The name of the property that contains the message.\n */\n messageProp?: string;\n };\n\n /**\n * The events for the component.\n */\n events: Array<AugmentedJsonDocsEvent>;\n} & JsonDocsComponent;\n\nconst augmentFormAssociated = (filePath: string): boolean => {\n const fileContent = fs.readFileSync(filePath, 'utf8');\n const sourceFile = ts.createSourceFile(\n filePath,\n fileContent,\n ts.ScriptTarget.Latest,\n true,\n );\n let formAssociated = false;\n\n /**\n * Visits the given TypeScript node.\n * @param {ts.Node} node The TypeScript node to visit.\n */\n function visit(node: ts.Node) {\n if (\n ts.isDecorator(node) &&\n ts.isCallExpression(node.expression) &&\n node.expression.expression.getText() === 'Component'\n ) {\n const arg = node.expression.arguments[0];\n if (ts.isObjectLiteralExpression(arg)) {\n arg.properties.forEach(prop => {\n if (\n ts.isPropertyAssignment(prop) &&\n prop.name.getText() === 'formAssociated'\n ) {\n formAssociated = prop.initializer.getText() === 'true';\n }\n });\n }\n }\n ts.forEachChild(node, visit);\n }\n\n visit(sourceFile);\n return formAssociated;\n};\n\nconst augmentFormValidation = (\n component: AugmentedJsonDocsComponent,\n): AugmentedJsonDocsComponent['formValidation'] => {\n let errorCount = 0;\n let errorProp: string | undefined;\n let messageCount = 0;\n let messageProp: string | undefined;\n let valid = true;\n\n const errorMessages: string[] = [];\n\n /**\n * Validate the format of the @validator tags.\n * Should always be message or error, and only up to one of each.\n */\n component.props.forEach(prop => {\n prop.docsTags.forEach(tag => {\n if (tag.name === 'validator') {\n if (tag.text === 'error') {\n errorCount++;\n errorProp = prop.name;\n } else if (tag.text === 'message') {\n messageCount++;\n messageProp = prop.name;\n } else {\n valid = false;\n errorMessages.push(\n `\\n* The @validator tag for the property ${prop.name} must either be \"error\" or \"message\".`,\n );\n }\n }\n });\n });\n if (errorCount > 1 || messageCount > 1) {\n valid = false;\n errorMessages.push(\n `\\n* Component must have only one of each validator type [\"error\", \"message\"].`,\n );\n }\n if (valid === false) {\n throw new Error(\n `Invalid validators for ${component.tag}: ${errorMessages.join('')}`,\n );\n }\n\n /** Does the component have a form validations using @validator tags? */\n return {\n hasValidations: component.props.some(prop =>\n prop.docsTags.find(tag => tag.name === 'validator'),\n ),\n errorProp,\n messageProp,\n };\n};\n\nconst augmentEvents = (\n component: AugmentedJsonDocsComponent,\n docs: JsonDocs,\n) => {\n return component.events.map(event => {\n // Convert the event name for blazor\n const bindTag = event.docsTags.find(tag => tag.name === 'bind');\n\n if (bindTag) {\n event.name = `${toPascalCase(bindTag.text)}Changed`;\n } else {\n event.name = `${toPascalCase(event.event)}Event`;\n }\n\n // Covert the event payload for blazor typings\n event.detail = convertToCSharpType(event.detail);\n\n if (\n event.complexType?.original?.includes('HTMLNv') &&\n event.complexType?.original?.includes('EventMap')\n ) {\n // Pattern: HTMLXxxElement['yyy'] or HTMLXxxElementEventMap['yyy']\n const pattern = /^HTML(.+?)ElementEventMap?\\['(.+?)'\\]$/;\n const match = event.complexType.original.match(pattern);\n\n if (!match || !match[1] || !match[2])\n throw new Error(\n `Invalid event type: ${event.complexType.original} for ${event.event} in ${component.tag}`,\n );\n\n const sourceComponentPascal = match[1]; // e.g., \"NvFielddropdownitem\"\n const sourceComponentKebab = toKebabCase(sourceComponentPascal);\n const eventName = match[2]; // e.g., \"dropdownItemSelected\"\n\n const sourceComponent = docs.components.find(\n comp => comp.tag === sourceComponentKebab,\n );\n\n if (!sourceComponent)\n throw new Error(\n `Component not found: ${component}, please check the type of the event ${event.event} in ${component.tag}`,\n );\n\n const sourceEvent = sourceComponent.events.find(\n sourceComponentEvent => sourceComponentEvent.event === eventName,\n );\n\n if (!sourceEvent)\n throw new Error(\n `Event not found: ${event.event} in ${component.tag}, please check the type of the event ${event.event} in ${component.tag}`,\n );\n\n event.complexType.original = sourceEvent.complexType.original;\n }\n\n if (event.detail.includes('object')) {\n event.complexType = {\n ...event.complexType,\n parsed: parseCSharpObjectStructure(\n event.complexType.resolved,\n event.complexType.original,\n ),\n eventClassName: toPascalCase(`${component.tag}-${event.name}`),\n } as ComponentCompilerEventComplexType;\n }\n\n return event;\n });\n};\n\nconst augmentMethods = (component: AugmentedJsonDocsComponent) => {\n component.methods = component.methods.map(method => {\n method.complexType = {\n ...method.complexType,\n parameters: method.parameters.map(parameter => {\n const blazorType = convertToCSharpType(parameter.type);\n const parsedType = parseCSharpObjectStructure(parameter.type);\n const parameterClassName =\n blazorType === 'object'\n ? toPascalCase(`${component.tag}-${method.name}-${parameter.name}`)\n : undefined;\n\n return {\n ...parameter,\n originalType: parameter.type,\n type: blazorType,\n parsed: parsedType,\n parameterClassName,\n };\n }),\n } satisfies ComponentCompilerMethodComplexType;\n\n return method;\n });\n};\n\nconst augmentProps = (component: AugmentedJsonDocsComponent) => {\n component.props = component.props.map(prop => {\n if (!prop.values) return prop; // Skip props without values\n\n const transformedValues = prop.values.map(value => {\n return { ...value, type: convertToCSharpType(value.type) };\n });\n\n let propType = transformedValues[0]?.type; // Default to the first value's type\n\n if (transformedValues.length > 1) {\n const isEnum = transformedValues.every(\n value => value.type === 'string' && value.value,\n );\n\n if (isEnum) {\n propType = 'enum';\n const enumValues = transformedValues.map(value => ({\n ...value,\n type: convertBlazorEnumValue(value.value),\n }));\n return { ...prop, type: propType, values: enumValues };\n } else {\n throw new Error(\n `Component '${component.tag}', property '${prop.name}': Unsupported union type in Blazor. Supported types: 'bool', 'double', 'enum'. Received: '${prop.type}'.`,\n );\n }\n }\n\n if (propType.includes('object')) {\n prop.complexType = {\n ...prop.complexType,\n parsed: parseCSharpObjectStructure(\n prop.type,\n prop.complexType.original,\n ),\n propClassName: toPascalCase(`${component.tag}-${prop.name}`),\n } as ComponentCompilerPropertyComplexType;\n }\n\n return { ...prop, type: propType, values: transformedValues };\n });\n};\n\nconst blazorDocsOutput = async (docs: JsonDocs, config: Config) => {\n if (!config.rootDir) return;\n\n const outputPath = path.join(config.rootDir, 'meta', 'blazor-docs.json');\n const outputDir = path.dirname(outputPath);\n\n // Ensure the output directory exists\n if (!fs.existsSync(outputDir)) {\n fs.mkdirSync(outputDir, { recursive: true });\n }\n\n const components = docs.components.map(component => {\n const componentFilePath = path.join(\n COMPONENTS_DIR,\n component.tag,\n `${component.tag}.tsx`,\n );\n\n /** Deep copy the component object to avoid mutating the original */\n const augmentedComponent: AugmentedJsonDocsComponent = JSON.parse(\n JSON.stringify(component),\n );\n\n /** Form Association */\n if (fs.existsSync(componentFilePath)) {\n augmentedComponent.formAssociated =\n augmentFormAssociated(componentFilePath);\n }\n /** Form Validation */\n try {\n augmentedComponent.formValidation =\n augmentFormValidation(augmentedComponent);\n } catch (error) {\n console.error(bold(redBright('[ ERROR ] ')), redBright(error.message));\n process.exit(1);\n }\n\n /** Events */\n try {\n augmentedComponent.events = augmentEvents(augmentedComponent, docs);\n } catch (error) {\n console.error(bold(redBright('[ ERROR ] ')), redBright(error.message));\n process.exit(1);\n }\n\n /** Methods */\n try {\n augmentMethods(augmentedComponent);\n } catch (error) {\n console.error(bold(redBright('[ ERROR ] ')), redBright(error.message));\n process.exit(1);\n }\n\n /** Props */\n try {\n augmentProps(augmentedComponent);\n } catch (error) {\n console.error(bold(redBright('[ ERROR ] ')), redBright(error.message));\n process.exit(1);\n }\n\n /** Remove config values with absolute paths */\n delete augmentedComponent.dirPath;\n delete augmentedComponent.readmePath;\n delete augmentedComponent.usagesDir;\n\n return augmentedComponent;\n });\n\n const customDocs = JSON.stringify({ components }, null, 2);\n await fs.promises.writeFile(outputPath, customDocs);\n};\n\nexport { blazorDocsOutput };\n"]}
|
|
@@ -13,24 +13,23 @@ export function customVueOutputTarget(config) {
|
|
|
13
13
|
type: 'custom',
|
|
14
14
|
name: 'custom-vue-output-target',
|
|
15
15
|
async generator(stencilConfig, compilerCtx, buildCtx, docs) {
|
|
16
|
-
var _a;
|
|
17
16
|
const components = buildCtx.components;
|
|
18
17
|
/** Find the components that have @bind events */
|
|
19
18
|
const componentBindings = getComponentBindings(components);
|
|
20
19
|
/** Parse the component bindings to the component models config object */
|
|
21
20
|
const componentModels = componentBindings.reduce((result, current) => [
|
|
22
21
|
...result,
|
|
23
|
-
...current.events.map(event => {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
targetAttr: (_c = (_b = event.docs.tags.find(tag => tag.name == 'bind')) === null || _b === void 0 ? void 0 : _b.text) !== null && _c !== void 0 ? _c : '',
|
|
29
|
-
});
|
|
30
|
-
}),
|
|
22
|
+
...current.events.map(event => ({
|
|
23
|
+
elements: [current.tagName],
|
|
24
|
+
event: event.event ?? '',
|
|
25
|
+
targetAttr: event.docs.tags.find(tag => tag.name == 'bind')?.text ?? '',
|
|
26
|
+
})),
|
|
31
27
|
], []);
|
|
32
|
-
const vueTarget = vueOutputTarget(
|
|
33
|
-
|
|
28
|
+
const vueTarget = vueOutputTarget({
|
|
29
|
+
...config,
|
|
30
|
+
componentModels,
|
|
31
|
+
});
|
|
32
|
+
vueTarget.validate?.(stencilConfig, []);
|
|
34
33
|
vueTarget.generator(stencilConfig, compilerCtx, buildCtx, docs);
|
|
35
34
|
},
|
|
36
35
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vue-output.js","sourceRoot":"","sources":["../../../lib/generators/vue-output.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,GAGhB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAAuB;IAEvB,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,0BAA0B;QAChC,KAAK,CAAC,SAAS,CAAC,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI
|
|
1
|
+
{"version":3,"file":"vue-output.js","sourceRoot":"","sources":["../../../lib/generators/vue-output.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,GAGhB,MAAM,4BAA4B,CAAC;AAGpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAEjE;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAAuB;IAEvB,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,0BAA0B;QAChC,KAAK,CAAC,SAAS,CAAC,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI;YACxD,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,CAAC;YAEvC,iDAAiD;YACjD,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;YAE3D,yEAAyE;YACzE,MAAM,eAAe,GAA2B,iBAAiB,CAAC,MAAM,CAGtE,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE,CAAC;gBACnB,GAAG,MAAM;gBACT,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBAC9B,QAAQ,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC;oBAC3B,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE;oBACxB,UAAU,EACR,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC,EAAE,IAAI,IAAI,EAAE;iBAC9D,CAAC,CAAC;aACJ,EACD,EAA4B,CAC7B,CAAC;YAEF,MAAM,SAAS,GAAG,eAAe,CAAC;gBAChC,GAAG,MAAM;gBACT,eAAe;aAChB,CAAC,CAAC;YAEH,SAAS,CAAC,QAAQ,EAAE,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;YACxC,SAAS,CAAC,SAAS,CAAC,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;QAClE,CAAC;KACF,CAAC;AACJ,CAAC","sourcesContent":["import {\n vueOutputTarget,\n type OutputTargetVue,\n type ComponentModelConfig,\n} from '@stencil/vue-output-target';\nimport { type OutputTargetCustom } from '@stencil/core/internal';\n\nimport { getComponentBindings } from '../utils/componentBinding';\n\n/**\n * Creates a custom Vue output target for Stencil components.\n * This function extends the standard Vue output target by adding support for\n * @bind events. This enables automatic two-way data binding in Vue.\n *\n * @param {OutputTargetVue} config - The configuration object for the Vue output target.\n * @returns {OutputTargetCustom} A custom output target object for Stencil's compiler.\n */\nexport function customVueOutputTarget(\n config: OutputTargetVue,\n): OutputTargetCustom {\n return {\n type: 'custom',\n name: 'custom-vue-output-target',\n async generator(stencilConfig, compilerCtx, buildCtx, docs) {\n const components = buildCtx.components;\n\n /** Find the components that have @bind events */\n const componentBindings = getComponentBindings(components);\n\n /** Parse the component bindings to the component models config object */\n const componentModels: ComponentModelConfig[] = componentBindings.reduce<\n ComponentModelConfig[]\n >(\n (result, current) => [\n ...result,\n ...current.events.map(event => ({\n elements: [current.tagName],\n event: event.event ?? '',\n targetAttr:\n event.docs.tags.find(tag => tag.name == 'bind')?.text ?? '',\n })),\n ],\n [] as ComponentModelConfig[],\n );\n\n const vueTarget = vueOutputTarget({\n ...config,\n componentModels,\n });\n\n vueTarget.validate?.(stencilConfig, []);\n vueTarget.generator(stencilConfig, compilerCtx, buildCtx, docs);\n },\n };\n}\n"]}
|
|
@@ -12,16 +12,15 @@
|
|
|
12
12
|
*/
|
|
13
13
|
export function getComponentBindings(componentMeta) {
|
|
14
14
|
return componentMeta
|
|
15
|
-
.map(component => {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
})
|
|
15
|
+
.map(component => ({
|
|
16
|
+
tagName: component.tagName,
|
|
17
|
+
properties: component.properties,
|
|
18
|
+
events: component.events
|
|
19
|
+
?.map(event => event.docs.tags.find(tag => tag.name === 'bind')
|
|
20
|
+
? { event: event.name, docs: event.docs }
|
|
21
|
+
: null)
|
|
22
|
+
.filter(event => event != null),
|
|
23
|
+
}))
|
|
25
24
|
.filter(componentBinding => componentBinding.events.length > 0);
|
|
26
25
|
}
|
|
27
26
|
//# sourceMappingURL=componentBinding.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"componentBinding.js","sourceRoot":"","sources":["../../../lib/utils/componentBinding.ts"],"names":[],"mappings":"AAiCA;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,oBAAoB,CAClC,aAAsC;IAEtC,OAAO,aAAa;SACjB,GAAG,CAAC,SAAS,CAAC,EAAE
|
|
1
|
+
{"version":3,"file":"componentBinding.js","sourceRoot":"","sources":["../../../lib/utils/componentBinding.ts"],"names":[],"mappings":"AAiCA;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,oBAAoB,CAClC,aAAsC;IAEtC,OAAO,aAAa;SACjB,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACjB,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,UAAU,EAAE,SAAS,CAAC,UAAU;QAChC,MAAM,EAAE,SAAS,CAAC,MAAM;YACtB,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CACZ,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,MAAM,CAAC;YAC9C,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE;YACzC,CAAC,CAAC,IAAI,CACT;aACA,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC;KAClC,CAAC,CAAC;SACF,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACpE,CAAC","sourcesContent":["import {\n type ComponentCompilerMeta,\n type ComponentCompilerProperty,\n type CompilerJsDoc,\n} from '@stencil/core/internal';\n\ntype ComponentBinding = {\n /**\n * The tag name of the component.\n */\n tagName: string;\n\n /**\n * An array of properties for the component.\n */\n properties: ComponentCompilerProperty[];\n\n /**\n * An array of events that have a '@bind' tag in their documentation.\n */\n events: Array<{\n /**\n * The name of the event.\n */\n event: string;\n\n /**\n * The compiler JSDoc for the event.\n */\n docs: CompilerJsDoc;\n }>;\n};\n\n/**\n * Extracts component two way bindings from component metadata.\n *\n * @param {ComponentCompilerMeta[]} componentMeta - An array of component compiler metadata.\n * @returns {ComponentBinding[]} An array of component bindings.\n * Each binding contains:\n * - element: The tag name of the component.\n * - events: An array of events that have a '@bind' tag in their documentation.\n * Each event object includes:\n * - event: The name of the event.\n * - docs: The compiler JSDoc for the event.\n */\nexport function getComponentBindings(\n componentMeta: ComponentCompilerMeta[],\n): ComponentBinding[] {\n return componentMeta\n .map(component => ({\n tagName: component.tagName,\n properties: component.properties,\n events: component.events\n ?.map(event =>\n event.docs.tags.find(tag => tag.name === 'bind')\n ? { event: event.name, docs: event.docs }\n : null,\n )\n .filter(event => event != null),\n }))\n .filter(componentBinding => componentBinding.events.length > 0);\n}\n"]}
|
|
@@ -1,15 +1,3 @@
|
|
|
1
|
-
var __rest = (this && this.__rest) || function (s, e) {
|
|
2
|
-
var t = {};
|
|
3
|
-
for (var p in s)
|
|
4
|
-
if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
5
|
-
t[p] = s[p];
|
|
6
|
-
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
7
|
-
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
8
|
-
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
9
|
-
t[p[i]] = s[p[i]];
|
|
10
|
-
}
|
|
11
|
-
return t;
|
|
12
|
-
};
|
|
13
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
14
2
|
import extract from "extract-comments";
|
|
15
3
|
/**
|
|
@@ -55,9 +43,9 @@ export const checkForRecursiveType = (schema) => {
|
|
|
55
43
|
const structureKeys = Object.keys(value.structure);
|
|
56
44
|
const keysMatch = structureKeys.length === parentKeys.length &&
|
|
57
45
|
structureKeys.every(k => parentKeys.includes(k));
|
|
58
|
-
const { structure
|
|
46
|
+
const { structure, ...rest } = value;
|
|
59
47
|
if (keysMatch)
|
|
60
|
-
schema[key] =
|
|
48
|
+
schema[key] = { ...rest, recursive: true };
|
|
61
49
|
}
|
|
62
50
|
}
|
|
63
51
|
return schema;
|
|
@@ -171,7 +159,6 @@ export const parseCSharpObjectStructure = (objectTypeString, originalTypeString)
|
|
|
171
159
|
propStrings.push(current.trim());
|
|
172
160
|
// Process each property
|
|
173
161
|
propStrings.forEach(prop => {
|
|
174
|
-
var _a;
|
|
175
162
|
// Find the first colon that's not inside a nested object/array
|
|
176
163
|
let colonIndex = -1;
|
|
177
164
|
let objDepth = 0;
|
|
@@ -215,7 +202,7 @@ export const parseCSharpObjectStructure = (objectTypeString, originalTypeString)
|
|
|
215
202
|
const csharpType = convertToCSharpType(baseType);
|
|
216
203
|
propertyDef.type = isArray ? `${csharpType}[]` : csharpType;
|
|
217
204
|
}
|
|
218
|
-
propertyDef.comment =
|
|
205
|
+
propertyDef.comment = interfaceComments?.[propertyName] ?? 'N/A';
|
|
219
206
|
properties[propertyName] = propertyDef;
|
|
220
207
|
});
|
|
221
208
|
return checkForRecursiveType(properties);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parseToCSharpTypes.js","sourceRoot":"","sources":["../../../lib/utils/parseToCSharpTypes.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,uDAAuD;AACvD,OAAO,OAAO,MAAM,kBAAkB,CAAC;AA8BvC;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CACjC,MAAc,EACY,EAAE;IAC5B,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAClD,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE7C,IACE,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAC7B,UAAU,CAAC,MAAM,GAAG,CAAC;QACrB,UAAU;aACP,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC;aACjC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,WAAW,CAAC,EAC1E,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB,KAAK,QAAQ;YACX,OAAO,QAAQ,CAAC;QAClB,KAAK,SAAS;YACZ,OAAO,MAAM,CAAC;IAClB,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACtC,IAAI,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;IAC7D,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,QAAQ,GAAG,QAAQ,CAAC;IAE5E,OAAO,OAAO,CAAC,CAAC,CAAC,GAAG,mBAAmB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;AACnE,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,MAAS,EACT,EAAE;IACF,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvC,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,WAAW,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACnD,MAAM,SAAS,GACb,aAAa,CAAC,MAAM,KAAK,UAAU,CAAC,MAAM;gBAC1C,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;YAEnD,MAAM,EAAE,SAAS,KAAc,KAAK,EAAd,IAAI,UAAK,KAAK,EAA9B,aAAsB,CAAQ,CAAC;YACrC,IAAI,SAAS;gBAAE,MAAM,CAAC,GAAG,CAAC,mCAAQ,IAAI,KAAE,SAAS,EAAE,IAAI,GAAE,CAAC;QAC5D,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,eAAwB,EAAE,EAAE;IACvE,IAAI,CAAC,eAAe;QAAE,OAAO,EAAE,CAAC;IAEhC,MAAM,QAAQ,GAKT,OAAO,CAAC,eAAe,CAAC,CAAC;IAE9B,MAAM,iBAAiB,GAA2B,EAAE,CAAC;IAErD,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QACzB,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK;aAC9B,KAAK,CAAC,IAAI,CAAC;aACX,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;aACjD,IAAI,CAAC,GAAG,CAAC;aACT,IAAI,EAAE,CAAC;QAEV,MAAM,aAAa,GAAG,eAAe;aAClC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;aACxB,KAAK,CAAC,IAAI,CAAC;aACX,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;aACxB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;aAClC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;aACzC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACtB,iBAAiB,CAAC,aAAa,CAAC,GAAG,WAAW,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,OAAO,iBAAiB,CAAC;AAC3B,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,0BAA0B,GAAG,CACxC,gBAAwB,EACxB,kBAA2B,EACJ,EAAE;IACzB,MAAM,iBAAiB,GAAG,4BAA4B,CAAC,kBAAkB,CAAC,CAAC;IAC3E,qCAAqC;IACrC,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,EAAE,CAAC;IAExC,8CAA8C;IAC9C,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,IAAI,EAAE,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC;IAChD,CAAC;IAED,sDAAsD;IACtD,4CAA4C;IAC5C,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;IACf,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;IAEb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YACvB,IAAI,KAAK,KAAK,CAAC;gBAAE,KAAK,GAAG,CAAC,CAAC;YAC3B,KAAK,EAAE,CAAC;QACV,CAAC;aAAM,IAAI,OAAO,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;YAC9B,KAAK,EAAE,CAAC;YACR,IAAI,KAAK,KAAK,CAAC,EAAE,CAAC;gBAChB,GAAG,GAAG,CAAC,CAAC;gBACR,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,6BAA6B,gBAAgB,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,MAAM,YAAY,GAAG,OAAO,CAAC,SAAS,CAAC,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAE9D,iEAAiE;IACjE,MAAM,UAAU,GAAwB,EAAE,CAAC;IAE3C,kFAAkF;IAClF,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,YAAY,GAAG,CAAC,CAAC;IACrB,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAC7C,MAAM,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;QAE7B,IAAI,IAAI,KAAK,GAAG;YAAE,YAAY,EAAE,CAAC;aAC5B,IAAI,IAAI,KAAK,GAAG;YAAE,YAAY,EAAE,CAAC;aACjC,IAAI,IAAI,KAAK,GAAG;YAAE,OAAO,GAAG,IAAI,CAAC;aACjC,IAAI,IAAI,KAAK,GAAG;YAAE,OAAO,GAAG,KAAK,CAAC;QAEvC,iDAAiD;QACjD,IAAI,IAAI,KAAK,GAAG,IAAI,YAAY,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACnD,IAAI,OAAO,CAAC,IAAI,EAAE;gBAAE,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;YACrD,OAAO,GAAG,EAAE,CAAC;QACf,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,IAAI,CAAC;QAClB,CAAC;IACH,CAAC;IAED,qCAAqC;IACrC,IAAI,OAAO,CAAC,IAAI,EAAE;QAAE,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAErD,wBAAwB;IACxB,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;;QACzB,+DAA+D;QAC/D,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC;QACpB,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,UAAU,GAAG,CAAC,CAAC;QAEnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG;gBAAE,QAAQ,EAAE,CAAC;iBAC3B,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG;gBAAE,QAAQ,EAAE,CAAC;iBAChC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG;gBAAE,UAAU,EAAE,CAAC;iBAClC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG;gBAAE,UAAU,EAAE,CAAC;iBAClC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,QAAQ,KAAK,CAAC,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;gBAC/D,UAAU,GAAG,CAAC,CAAC;gBACf,MAAM;YACR,CAAC;QACH,CAAC;QAED,IAAI,UAAU,KAAK,CAAC,CAAC;YAAE,OAAO,CAAC,0BAA0B;QAEzD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;QACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAEvD,4CAA4C;QAC5C,MAAM,UAAU,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACrC,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAEzD,iCAAiC;QACjC,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;QAEnE,yCAAyC;QACzC,MAAM,WAAW,GAAQ;YACvB,QAAQ,EAAE,UAAU;SACrB,CAAC;QAEF,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAC7B,0BAA0B;YAC1B,MAAM,eAAe,GAAG,0BAA0B,CAAC,QAAQ,CAAC,CAAC;YAC7D,WAAW,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC;YACnD,WAAW,CAAC,SAAS,GAAG,eAAe,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,2BAA2B;YAC3B,MAAM,UAAU,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YACjD,WAAW,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,UAAU,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC;QAC9D,CAAC;QAED,WAAW,CAAC,OAAO,GAAG,MAAA,iBAAiB,aAAjB,iBAAiB,uBAAjB,iBAAiB,CAAG,YAAY,CAAC,mCAAI,KAAK,CAAC;QAEjE,UAAU,CAAC,YAAY,CAAC,GAAG,WAAW,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,OAAO,qBAAqB,CAAC,UAAU,CAAC,CAAC;AAC3C,CAAC,CAAC","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport extract from 'extract-comments';\n\n/**\n * Represents a property in a C# object structure\n */\nexport interface CSharpPropertySchema {\n /** The C# type of the property */\n type: CSharpBaseTypes | `${CSharpBaseTypes}[]` | string;\n /** Whether the property is optional */\n optional: boolean;\n /** The comment associated with the property */\n comment?: string;\n /** The property type references itself (parent) */\n recursive?: boolean;\n /** For complex object types, contains the nested structure */\n structure?: Record<string, CSharpPropertySchema>;\n}\n\n/**\n * Represents a complete C# object structure\n */\nexport type CSharpObjectStructure =\n | Record<string, CSharpPropertySchema>\n | Pick<CSharpPropertySchema, 'type'>;\n\n/**\n * Represents the base types in C#\n */\nexport type CSharpBaseTypes = 'string' | 'double' | 'bool' | 'object';\n\n/**\n * Convert a TypeScript type to its C# equivalent\n * @param { string } tsType The TypeScript type\n * @returns { string } The corresponding C# type\n */\nexport const convertToCSharpType = (\n tsType: string,\n): CSharpBaseTypes | string => {\n const normalizedType = tsType.replace(/\\s+/g, '');\n const unionParts = normalizedType.split('|');\n\n if (\n unionParts.includes('number') &&\n unionParts.length > 1 &&\n unionParts\n .filter(part => part !== 'number')\n .every(part => part === '\"\"' || part === 'null' || part === 'undefined')\n ) {\n return 'double';\n }\n\n switch (tsType) {\n case 'string':\n return 'string';\n case 'number':\n return 'double';\n case 'boolean':\n return 'bool';\n }\n const isArray = tsType.endsWith('[]');\n let baseType = isArray ? tsType.slice(0, -2).trim() : tsType;\n if (baseType.startsWith('{') && baseType.endsWith('}')) baseType = 'object';\n\n return isArray ? `${convertToCSharpType(baseType)}[]` : baseType;\n};\n\n/**\n * Checks for any recursive types (for example with the nv-menu component)\n * and marks them with a \"recursive\" flag, removing the \"structure\" property.\n * @param {CSharpObjectStructure} schema - The schema to check.\n * @returns {CSharpObjectStructure} The updated schema with the \"recursive\" flag.\n */\nexport const checkForRecursiveType = <T extends CSharpObjectStructure>(\n schema: T,\n) => {\n const parentKeys = Object.keys(schema);\n for (const key of parentKeys) {\n const value = schema[key];\n if ('structure' in value) {\n const structureKeys = Object.keys(value.structure);\n const keysMatch =\n structureKeys.length === parentKeys.length &&\n structureKeys.every(k => parentKeys.includes(k));\n\n const { structure, ...rest } = value;\n if (keysMatch) schema[key] = { ...rest, recursive: true };\n }\n }\n return schema;\n};\n\n/**\n * Extracts JSDoc-style comments from a TypeScript interface string\n * and maps them to their respective property names.\n *\n * This function supports multiline comments and flattens them into\n * single-line strings by removing leading asterisks and extra whitespace.\n *\n * Example Output:\n * ```ts\n * {\n * username: \"The username for login must be unique\",\n * password: \"The user's password\"\n * }\n * ```\n *\n * @param { string } interfaceString - A string containing a TypeScript interface definition.\n * @returns { object } An object where each key is a property name and each value is the corresponding comment.\n */\nexport const extractCommentsFromInterface = (interfaceString?: string) => {\n if (!interfaceString) return {};\n\n const comments: Array<{\n /** Comment Content */\n value: string;\n /** Where does the code start after this comment */\n codeStart: number;\n }> = extract(interfaceString);\n\n const commentProperties: Record<string, string> = {};\n\n comments.forEach(comment => {\n const commentText = comment.value\n .split('\\n')\n .map(line => line.replace(/^\\s*\\*\\s?/, '').trim())\n .join(' ')\n .trim();\n\n const propertyValue = interfaceString\n .slice(comment.codeStart)\n .split('\\n')\n .map(line => line.trim())\n .filter(line => line.includes(':'))\n .map(line => line.split(':')[0].trim())[0]\n .replace(/\\?$/, '');\n commentProperties[propertyValue] = commentText;\n });\n\n return commentProperties;\n};\n\n/**\n * Parse a TypeScript object structure into a C# compatible object representation\n * @param { string } objectTypeString The TypeScript object type string (e.g. \"{ label: string; value: string; }\")\n * @param { string } originalTypeString The original TypeScript object type string with comments\n * @returns { object } An object representation of the type structure\n */\nexport const parseCSharpObjectStructure = (\n objectTypeString: string,\n originalTypeString?: string,\n): CSharpObjectStructure => {\n const interfaceComments = extractCommentsFromInterface(originalTypeString);\n // Remove leading/trailing whitespace\n const trimmed = objectTypeString.trim();\n\n // If this isn't an object, handle it directly\n if (!trimmed.startsWith('{')) {\n return { type: convertToCSharpType(trimmed) };\n }\n\n // Find the content between the outermost curly braces\n // We need to properly handle nested objects\n let depth = 0;\n let start = -1;\n let end = -1;\n\n for (let i = 0; i < trimmed.length; i++) {\n if (trimmed[i] === '{') {\n if (depth === 0) start = i;\n depth++;\n } else if (trimmed[i] === '}') {\n depth--;\n if (depth === 0) {\n end = i;\n break;\n }\n }\n }\n\n if (start === -1 || end === -1) {\n throw new Error(`Invalid object structure: ${objectTypeString}`);\n }\n\n const innerContent = trimmed.substring(start + 1, end).trim();\n\n // Parse the properties, respecting nested objects and structures\n const properties: Record<string, any> = {};\n\n // Split the content on semicolons, but only when not inside nested objects/arrays\n const propStrings: string[] = [];\n let current = '';\n let currentDepth = 0;\n let inArray = false;\n\n for (let i = 0; i < innerContent.length; i++) {\n const char = innerContent[i];\n\n if (char === '{') currentDepth++;\n else if (char === '}') currentDepth--;\n else if (char === '[') inArray = true;\n else if (char === ']') inArray = false;\n\n // Only split on semicolons when at the top level\n if (char === ';' && currentDepth === 0 && !inArray) {\n if (current.trim()) propStrings.push(current.trim());\n current = '';\n } else {\n current += char;\n }\n }\n\n // Add the last property if it exists\n if (current.trim()) propStrings.push(current.trim());\n\n // Process each property\n propStrings.forEach(prop => {\n // Find the first colon that's not inside a nested object/array\n let colonIndex = -1;\n let objDepth = 0;\n let arrayDepth = 0;\n\n for (let i = 0; i < prop.length; i++) {\n if (prop[i] === '{') objDepth++;\n else if (prop[i] === '}') objDepth--;\n else if (prop[i] === '[') arrayDepth++;\n else if (prop[i] === ']') arrayDepth--;\n else if (prop[i] === ':' && objDepth === 0 && arrayDepth === 0) {\n colonIndex = i;\n break;\n }\n }\n\n if (colonIndex === -1) return; // Skip invalid properties\n\n const key = prop.substring(0, colonIndex).trim();\n const typeInfo = prop.substring(colonIndex + 1).trim();\n\n // Handle optional properties (those with ?)\n const isOptional = key.endsWith('?');\n const propertyName = isOptional ? key.slice(0, -1) : key;\n\n // Check if this is an array type\n const isArray = typeInfo.endsWith('[]');\n const baseType = isArray ? typeInfo.slice(0, -2).trim() : typeInfo;\n\n // Process the property based on its type\n const propertyDef: any = {\n optional: isOptional,\n };\n\n if (baseType.startsWith('{')) {\n // This is a nested object\n const nestedStructure = parseCSharpObjectStructure(baseType);\n propertyDef.type = isArray ? 'object[]' : 'object';\n propertyDef.structure = nestedStructure;\n } else {\n // This is a primitive type\n const csharpType = convertToCSharpType(baseType);\n propertyDef.type = isArray ? `${csharpType}[]` : csharpType;\n }\n\n propertyDef.comment = interfaceComments?.[propertyName] ?? 'N/A';\n\n properties[propertyName] = propertyDef;\n });\n\n return checkForRecursiveType(properties);\n};\n"]}
|
|
1
|
+
{"version":3,"file":"parseToCSharpTypes.js","sourceRoot":"","sources":["../../../lib/utils/parseToCSharpTypes.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport extract from 'extract-comments';\n\n/**\n * Represents a property in a C# object structure\n */\nexport interface CSharpPropertySchema {\n /** The C# type of the property */\n type: CSharpBaseTypes | `${CSharpBaseTypes}[]` | string;\n /** Whether the property is optional */\n optional: boolean;\n /** The comment associated with the property */\n comment?: string;\n /** The property type references itself (parent) */\n recursive?: boolean;\n /** For complex object types, contains the nested structure */\n structure?: Record<string, CSharpPropertySchema>;\n}\n\n/**\n * Represents a complete C# object structure\n */\nexport type CSharpObjectStructure =\n | Record<string, CSharpPropertySchema>\n | Pick<CSharpPropertySchema, 'type'>;\n\n/**\n * Represents the base types in C#\n */\nexport type CSharpBaseTypes = 'string' | 'double' | 'bool' | 'object';\n\n/**\n * Convert a TypeScript type to its C# equivalent\n * @param { string } tsType The TypeScript type\n * @returns { string } The corresponding C# type\n */\nexport const convertToCSharpType = (\n tsType: string,\n): CSharpBaseTypes | string => {\n const normalizedType = tsType.replace(/\\s+/g, '');\n const unionParts = normalizedType.split('|');\n\n if (\n unionParts.includes('number') &&\n unionParts.length > 1 &&\n unionParts\n .filter(part => part !== 'number')\n .every(part => part === '\"\"' || part === 'null' || part === 'undefined')\n ) {\n return 'double';\n }\n\n switch (tsType) {\n case 'string':\n return 'string';\n case 'number':\n return 'double';\n case 'boolean':\n return 'bool';\n }\n const isArray = tsType.endsWith('[]');\n let baseType = isArray ? tsType.slice(0, -2).trim() : tsType;\n if (baseType.startsWith('{') && baseType.endsWith('}')) baseType = 'object';\n\n return isArray ? `${convertToCSharpType(baseType)}[]` : baseType;\n};\n\n/**\n * Checks for any recursive types (for example with the nv-menu component)\n * and marks them with a \"recursive\" flag, removing the \"structure\" property.\n * @param {CSharpObjectStructure} schema - The schema to check.\n * @returns {CSharpObjectStructure} The updated schema with the \"recursive\" flag.\n */\nexport const checkForRecursiveType = <T extends CSharpObjectStructure>(\n schema: T,\n) => {\n const parentKeys = Object.keys(schema);\n for (const key of parentKeys) {\n const value = schema[key];\n if ('structure' in value) {\n const structureKeys = Object.keys(value.structure);\n const keysMatch =\n structureKeys.length === parentKeys.length &&\n structureKeys.every(k => parentKeys.includes(k));\n\n const { structure, ...rest } = value;\n if (keysMatch) schema[key] = { ...rest, recursive: true };\n }\n }\n return schema;\n};\n\n/**\n * Extracts JSDoc-style comments from a TypeScript interface string\n * and maps them to their respective property names.\n *\n * This function supports multiline comments and flattens them into\n * single-line strings by removing leading asterisks and extra whitespace.\n *\n * Example Output:\n * ```ts\n * {\n * username: \"The username for login must be unique\",\n * password: \"The user's password\"\n * }\n * ```\n *\n * @param { string } interfaceString - A string containing a TypeScript interface definition.\n * @returns { object } An object where each key is a property name and each value is the corresponding comment.\n */\nexport const extractCommentsFromInterface = (interfaceString?: string) => {\n if (!interfaceString) return {};\n\n const comments: Array<{\n /** Comment Content */\n value: string;\n /** Where does the code start after this comment */\n codeStart: number;\n }> = extract(interfaceString);\n\n const commentProperties: Record<string, string> = {};\n\n comments.forEach(comment => {\n const commentText = comment.value\n .split('\\n')\n .map(line => line.replace(/^\\s*\\*\\s?/, '').trim())\n .join(' ')\n .trim();\n\n const propertyValue = interfaceString\n .slice(comment.codeStart)\n .split('\\n')\n .map(line => line.trim())\n .filter(line => line.includes(':'))\n .map(line => line.split(':')[0].trim())[0]\n .replace(/\\?$/, '');\n commentProperties[propertyValue] = commentText;\n });\n\n return commentProperties;\n};\n\n/**\n * Parse a TypeScript object structure into a C# compatible object representation\n * @param { string } objectTypeString The TypeScript object type string (e.g. \"{ label: string; value: string; }\")\n * @param { string } originalTypeString The original TypeScript object type string with comments\n * @returns { object } An object representation of the type structure\n */\nexport const parseCSharpObjectStructure = (\n objectTypeString: string,\n originalTypeString?: string,\n): CSharpObjectStructure => {\n const interfaceComments = extractCommentsFromInterface(originalTypeString);\n // Remove leading/trailing whitespace\n const trimmed = objectTypeString.trim();\n\n // If this isn't an object, handle it directly\n if (!trimmed.startsWith('{')) {\n return { type: convertToCSharpType(trimmed) };\n }\n\n // Find the content between the outermost curly braces\n // We need to properly handle nested objects\n let depth = 0;\n let start = -1;\n let end = -1;\n\n for (let i = 0; i < trimmed.length; i++) {\n if (trimmed[i] === '{') {\n if (depth === 0) start = i;\n depth++;\n } else if (trimmed[i] === '}') {\n depth--;\n if (depth === 0) {\n end = i;\n break;\n }\n }\n }\n\n if (start === -1 || end === -1) {\n throw new Error(`Invalid object structure: ${objectTypeString}`);\n }\n\n const innerContent = trimmed.substring(start + 1, end).trim();\n\n // Parse the properties, respecting nested objects and structures\n const properties: Record<string, any> = {};\n\n // Split the content on semicolons, but only when not inside nested objects/arrays\n const propStrings: string[] = [];\n let current = '';\n let currentDepth = 0;\n let inArray = false;\n\n for (let i = 0; i < innerContent.length; i++) {\n const char = innerContent[i];\n\n if (char === '{') currentDepth++;\n else if (char === '}') currentDepth--;\n else if (char === '[') inArray = true;\n else if (char === ']') inArray = false;\n\n // Only split on semicolons when at the top level\n if (char === ';' && currentDepth === 0 && !inArray) {\n if (current.trim()) propStrings.push(current.trim());\n current = '';\n } else {\n current += char;\n }\n }\n\n // Add the last property if it exists\n if (current.trim()) propStrings.push(current.trim());\n\n // Process each property\n propStrings.forEach(prop => {\n // Find the first colon that's not inside a nested object/array\n let colonIndex = -1;\n let objDepth = 0;\n let arrayDepth = 0;\n\n for (let i = 0; i < prop.length; i++) {\n if (prop[i] === '{') objDepth++;\n else if (prop[i] === '}') objDepth--;\n else if (prop[i] === '[') arrayDepth++;\n else if (prop[i] === ']') arrayDepth--;\n else if (prop[i] === ':' && objDepth === 0 && arrayDepth === 0) {\n colonIndex = i;\n break;\n }\n }\n\n if (colonIndex === -1) return; // Skip invalid properties\n\n const key = prop.substring(0, colonIndex).trim();\n const typeInfo = prop.substring(colonIndex + 1).trim();\n\n // Handle optional properties (those with ?)\n const isOptional = key.endsWith('?');\n const propertyName = isOptional ? key.slice(0, -1) : key;\n\n // Check if this is an array type\n const isArray = typeInfo.endsWith('[]');\n const baseType = isArray ? typeInfo.slice(0, -2).trim() : typeInfo;\n\n // Process the property based on its type\n const propertyDef: any = {\n optional: isOptional,\n };\n\n if (baseType.startsWith('{')) {\n // This is a nested object\n const nestedStructure = parseCSharpObjectStructure(baseType);\n propertyDef.type = isArray ? 'object[]' : 'object';\n propertyDef.structure = nestedStructure;\n } else {\n // This is a primitive type\n const csharpType = convertToCSharpType(baseType);\n propertyDef.type = isArray ? `${csharpType}[]` : csharpType;\n }\n\n propertyDef.comment = interfaceComments?.[propertyName] ?? 'N/A';\n\n properties[propertyName] = propertyDef;\n });\n\n return checkForRecursiveType(properties);\n};\n"]}
|
package/dist/lib/utils/spread.js
CHANGED
|
@@ -51,14 +51,13 @@ export class SpreadPropsDirective extends AsyncDirective {
|
|
|
51
51
|
return nothing;
|
|
52
52
|
}
|
|
53
53
|
update(part, [spreadData]) {
|
|
54
|
-
var _a;
|
|
55
54
|
if (this.element !== part.element) {
|
|
56
55
|
this.element = part.element;
|
|
57
56
|
}
|
|
58
|
-
this.host =
|
|
57
|
+
this.host = part.options?.host || this.element;
|
|
59
58
|
this.apply(spreadData);
|
|
60
59
|
this.groom(spreadData);
|
|
61
|
-
this.prevData =
|
|
60
|
+
this.prevData = { ...spreadData };
|
|
62
61
|
}
|
|
63
62
|
apply(data) {
|
|
64
63
|
if (!data)
|
|
@@ -241,7 +240,7 @@ export class SpreadDirective extends SpreadEventsDirective {
|
|
|
241
240
|
// Set it as a standard attribute for visibility in Storybook
|
|
242
241
|
element.setAttribute('___.' + toKebabCase(key), serialized);
|
|
243
242
|
}
|
|
244
|
-
catch
|
|
243
|
+
catch {
|
|
245
244
|
// If serialization fails, just continue (property is already set correctly)
|
|
246
245
|
}
|
|
247
246
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spread.js","sourceRoot":"","sources":["../../../lib/utils/spread.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @fileoverview this is a modified version of the open-wc/lit-helpers package\n * https://github.com/open-wc/open-wc/blob/480509899d95c9fbc3f6913b1532a8b599df3002/packages/lit-helpers/src/spread.ts\n *\n * This needs to be modified to support kebab-case attributes.\n * So fooBar: \"baz\" becomes foo-bar=\"baz\", the original version rendered it\n * as foobar=\"baz\"\n */\n\n/* eslint-disable @typescript-eslint/no-unsafe-function-type */\nimport { ElementPart, Part } from 'lit';\nimport { nothing } from 'lit/html.js';\nimport { directive } from 'lit/directive.js';\nimport { AsyncDirective } from 'lit/async-directive.js';\nimport { toKebabCase } from 'nova-utils/lib/string.utils';\nimport type {} from '@stencil/core';\n\ntype EventListenerWithOptions = EventListenerOrEventListenerObject &\n Partial<AddEventListenerOptions>;\n\n/**\n * Helper to determine if a value is a complex object that should be set as a property\n * instead of an attribute.\n * @param {unknown} value - The value to check.\n * @returns {boolean} - True if the value is complex, false otherwise.\n */\nconst isComplexValue = (value: unknown) => {\n // Arrays and objects (except for Date which can be serialized) should be properties\n const isComplex =\n value !== null && typeof value === 'object' && !(value instanceof Date);\n\n return isComplex;\n};\n\n/**\n * Usage:\n * import { html, render } from 'lit';\n * import { spreadProps } from '@open-wc/lit-helpers';\n *\n * render(\n * html`\n * <div\n * ${spreadProps({\n * prop1: 'prop1',\n * prop2: ['Prop', '2'],\n * prop3: {\n * prop: 3,\n * }\n * })}\n * ></div>\n * `,\n * document.body,\n * );\n */\nexport class SpreadPropsDirective extends AsyncDirective {\n host!: EventTarget | object | Element;\n element!: Element;\n prevData: { [key: string]: unknown } = {};\n\n /* eslint-disable-next-line @typescript-eslint/no-unused-vars */\n render(_: { [key: string]: unknown }) {\n return nothing;\n }\n update(part: Part, [spreadData]: Parameters<this['render']>) {\n if (this.element !== (part as ElementPart).element) {\n this.element = (part as ElementPart).element;\n }\n this.host = part.options?.host || this.element;\n this.apply(spreadData);\n this.groom(spreadData);\n this.prevData = { ...spreadData };\n }\n\n apply(data: { [key: string]: unknown }) {\n if (!data) return;\n const { prevData, element } = this;\n for (const key in data) {\n const value = data[key];\n if (value === prevData[key]) {\n continue;\n }\n element[key] = value;\n }\n }\n\n groom(data: { [key: string]: unknown }) {\n const { prevData, element } = this;\n if (!prevData) return;\n for (const key in prevData) {\n if (!data || (!(key in data) && element[key] === prevData[key])) {\n element[key] = undefined;\n }\n }\n }\n}\n\nexport const spreadProps = directive(SpreadPropsDirective);\n\n/**\n * Usage:\n * import { html, render } from 'lit';\n * import { spreadEvents } from '@open-wc/lit-helpers';\n *\n * render(\n * html`\n * <div\n * ${spreadEvents({\n * '@my-event': () => console.log('my-event fired'),\n * '@my-other-event': () => console.log('my-other-event fired'),\n * '@my-additional-event':\n * () => console.log('my-additional-event fired'),\n * })}\n * ></div>\n * `,\n * document.body,\n * );\n */\nexport class SpreadEventsDirective extends SpreadPropsDirective {\n eventData: { [key: string]: unknown } = {};\n\n apply(data: { [key: string]: unknown }) {\n if (!data) return;\n for (const key in data) {\n const value = data[key];\n if (value === this.eventData[key]) {\n // do nothing if the same value is being applied again.\n continue;\n }\n this.applyEvent(key, value as EventListenerWithOptions);\n }\n }\n\n applyEvent(eventName: string, eventValue: EventListenerWithOptions) {\n const { prevData, element } = this;\n this.eventData[eventName] = eventValue;\n const prevHandler = prevData[eventName];\n if (prevHandler) {\n element.removeEventListener(eventName, this, eventValue);\n }\n element.addEventListener(eventName, this, eventValue);\n }\n\n groom(data: { [key: string]: unknown }) {\n const { prevData, element } = this;\n if (!prevData) return;\n for (const key in prevData) {\n if (!data || (!(key in data) && element[key] === prevData[key])) {\n this.groomEvent(key, prevData[key] as EventListenerWithOptions);\n }\n }\n }\n\n groomEvent(eventName: string, eventValue: EventListenerWithOptions) {\n const { element } = this;\n delete this.eventData[eventName];\n element.removeEventListener(eventName, this, eventValue);\n }\n\n handleEvent(event: Event) {\n const value: Function | EventListenerObject = this.eventData[event.type] as\n | Function\n | EventListenerObject;\n if (typeof value === 'function') {\n (value as Function).call(this.host, event);\n } else {\n (value as EventListenerObject).handleEvent(event);\n }\n }\n\n disconnected() {\n const { eventData, element } = this;\n for (const key in eventData) {\n // event listener\n const name = key.slice(1);\n const value = eventData[key] as EventListenerWithOptions;\n element.removeEventListener(name, this, value);\n }\n }\n\n reconnected() {\n const { eventData, element } = this;\n for (const key in eventData) {\n // event listener\n const name = key.slice(1);\n const value = eventData[key] as EventListenerWithOptions;\n element.addEventListener(name, this, value);\n }\n }\n}\n\nexport const spreadEvents = directive(SpreadEventsDirective);\n\n/**\n * Usage:\n * import { html, render } from 'lit';\n * import { spread } from '@open-wc/lit-helpers';\n *\n * render(\n * html`\n * <div\n * ${spread({\n * 'my-attribute': 'foo',\n * '?my-boolean-attribute': true,\n * '.myProperty': { foo: 'bar' },\n * '@my-event': () => console.log('my-event fired'),\n * })}\n * ></div>\n * `,\n * document.body,\n * );\n */\nexport class SpreadDirective extends SpreadEventsDirective {\n apply(data: { [key: string]: unknown }) {\n if (!data) return;\n const { prevData, element } = this;\n for (const key in data) {\n const value = data[key];\n if (value === prevData[key]) {\n continue;\n }\n\n // Handle keys that already have directives\n if (key[0] === '@' || key[0] === '.' || key[0] === '?') {\n const name = key.slice(1);\n switch (key[0]) {\n case '@': // event listener\n this.eventData[name] = value;\n this.applyEvent(name, value as EventListenerWithOptions);\n break;\n case '.': // property\n element[name] = value;\n break;\n case '?': // boolean attribute\n if (value) {\n element.setAttribute(toKebabCase(name), '');\n } else {\n element.removeAttribute(toKebabCase(name));\n }\n break;\n }\n } else {\n // Auto-detect how to handle the value\n if (typeof value === 'function') {\n // Assume functions are event handlers\n this.eventData[key] = value;\n this.applyEvent(key, value as EventListenerWithOptions);\n } else if (isComplexValue(value)) {\n // Complex objects become properties\n element[key] = value;\n\n // For Storybook code preview, also set a serialized version as a regular attribute\n // This won't affect functionality but will show up in the DOM\n try {\n // Use JSON.stringify to create a string representation for the preview\n const serialized = JSON.stringify(value).replace(/\"/g, \"'\");\n // Set it as a standard attribute for visibility in Storybook\n element.setAttribute('___.' + toKebabCase(key), serialized);\n } catch {\n // If serialization fails, just continue (property is already set correctly)\n }\n } else if (typeof value === 'boolean') {\n // Booleans become boolean attributes\n if (value) {\n element.setAttribute(toKebabCase(key), '');\n } else {\n element.removeAttribute(toKebabCase(key));\n }\n } else {\n // Everything else becomes standard attributes\n if (value != null) {\n element.setAttribute(toKebabCase(key), String(value));\n } else {\n element.removeAttribute(toKebabCase(key));\n }\n }\n }\n }\n }\n\n groom(data: { [key: string]: unknown }) {\n const { prevData, element } = this;\n if (!prevData) return;\n for (const key in prevData) {\n if (!data || !(key in data)) {\n if (key[0] === '@' || key[0] === '.' || key[0] === '?') {\n const name = key.slice(1);\n switch (key[0]) {\n case '@': // event listener\n this.groomEvent(name, prevData[key] as EventListenerWithOptions);\n break;\n case '.': // property\n element[name] = undefined;\n break;\n case '?': // boolean attribute\n element.removeAttribute(toKebabCase(name));\n break;\n }\n } else {\n const value = prevData[key];\n if (typeof value === 'function') {\n this.groomEvent(key, value as EventListenerWithOptions);\n } else if (isComplexValue(value)) {\n element[key] = undefined;\n // Also remove the standard attribute we added for Storybook preview\n element.removeAttribute(toKebabCase(key));\n } else if (typeof value === 'boolean') {\n element.removeAttribute(toKebabCase(key));\n } else {\n element.removeAttribute(toKebabCase(key));\n }\n }\n }\n }\n }\n}\n\nexport const spread = directive(SpreadDirective);\n"]}
|
|
1
|
+
{"version":3,"file":"spread.js","sourceRoot":"","sources":["../../../lib/utils/spread.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * @fileoverview this is a modified version of the open-wc/lit-helpers package\n * https://github.com/open-wc/open-wc/blob/480509899d95c9fbc3f6913b1532a8b599df3002/packages/lit-helpers/src/spread.ts\n *\n * This needs to be modified to support kebab-case attributes.\n * So fooBar: \"baz\" becomes foo-bar=\"baz\", the original version rendered it\n * as foobar=\"baz\"\n */\n\n/* eslint-disable @typescript-eslint/no-unsafe-function-type */\nimport { ElementPart, Part } from 'lit';\nimport { nothing } from 'lit/html.js';\nimport { directive } from 'lit/directive.js';\nimport { AsyncDirective } from 'lit/async-directive.js';\nimport { toKebabCase } from 'nova-utils/lib/string.utils';\nimport type {} from '@stencil/core';\n\ntype EventListenerWithOptions = EventListenerOrEventListenerObject &\n Partial<AddEventListenerOptions>;\n\n/**\n * Helper to determine if a value is a complex object that should be set as a property\n * instead of an attribute.\n * @param {unknown} value - The value to check.\n * @returns {boolean} - True if the value is complex, false otherwise.\n */\nconst isComplexValue = (value: unknown) => {\n // Arrays and objects (except for Date which can be serialized) should be properties\n const isComplex =\n value !== null && typeof value === 'object' && !(value instanceof Date);\n\n return isComplex;\n};\n\n/**\n * Usage:\n * import { html, render } from 'lit';\n * import { spreadProps } from '@open-wc/lit-helpers';\n *\n * render(\n * html`\n * <div\n * ${spreadProps({\n * prop1: 'prop1',\n * prop2: ['Prop', '2'],\n * prop3: {\n * prop: 3,\n * }\n * })}\n * ></div>\n * `,\n * document.body,\n * );\n */\nexport class SpreadPropsDirective extends AsyncDirective {\n host!: EventTarget | object | Element;\n element!: Element;\n prevData: { [key: string]: unknown } = {};\n\n /* eslint-disable-next-line @typescript-eslint/no-unused-vars */\n render(_: { [key: string]: unknown }) {\n return nothing;\n }\n update(part: Part, [spreadData]: Parameters<this['render']>) {\n if (this.element !== (part as ElementPart).element) {\n this.element = (part as ElementPart).element;\n }\n this.host = part.options?.host || this.element;\n this.apply(spreadData);\n this.groom(spreadData);\n this.prevData = { ...spreadData };\n }\n\n apply(data: { [key: string]: unknown }) {\n if (!data) return;\n const { prevData, element } = this;\n for (const key in data) {\n const value = data[key];\n if (value === prevData[key]) {\n continue;\n }\n element[key] = value;\n }\n }\n\n groom(data: { [key: string]: unknown }) {\n const { prevData, element } = this;\n if (!prevData) return;\n for (const key in prevData) {\n if (!data || (!(key in data) && element[key] === prevData[key])) {\n element[key] = undefined;\n }\n }\n }\n}\n\nexport const spreadProps = directive(SpreadPropsDirective);\n\n/**\n * Usage:\n * import { html, render } from 'lit';\n * import { spreadEvents } from '@open-wc/lit-helpers';\n *\n * render(\n * html`\n * <div\n * ${spreadEvents({\n * '@my-event': () => console.log('my-event fired'),\n * '@my-other-event': () => console.log('my-other-event fired'),\n * '@my-additional-event':\n * () => console.log('my-additional-event fired'),\n * })}\n * ></div>\n * `,\n * document.body,\n * );\n */\nexport class SpreadEventsDirective extends SpreadPropsDirective {\n eventData: { [key: string]: unknown } = {};\n\n apply(data: { [key: string]: unknown }) {\n if (!data) return;\n for (const key in data) {\n const value = data[key];\n if (value === this.eventData[key]) {\n // do nothing if the same value is being applied again.\n continue;\n }\n this.applyEvent(key, value as EventListenerWithOptions);\n }\n }\n\n applyEvent(eventName: string, eventValue: EventListenerWithOptions) {\n const { prevData, element } = this;\n this.eventData[eventName] = eventValue;\n const prevHandler = prevData[eventName];\n if (prevHandler) {\n element.removeEventListener(eventName, this, eventValue);\n }\n element.addEventListener(eventName, this, eventValue);\n }\n\n groom(data: { [key: string]: unknown }) {\n const { prevData, element } = this;\n if (!prevData) return;\n for (const key in prevData) {\n if (!data || (!(key in data) && element[key] === prevData[key])) {\n this.groomEvent(key, prevData[key] as EventListenerWithOptions);\n }\n }\n }\n\n groomEvent(eventName: string, eventValue: EventListenerWithOptions) {\n const { element } = this;\n delete this.eventData[eventName];\n element.removeEventListener(eventName, this, eventValue);\n }\n\n handleEvent(event: Event) {\n const value: Function | EventListenerObject = this.eventData[event.type] as\n | Function\n | EventListenerObject;\n if (typeof value === 'function') {\n (value as Function).call(this.host, event);\n } else {\n (value as EventListenerObject).handleEvent(event);\n }\n }\n\n disconnected() {\n const { eventData, element } = this;\n for (const key in eventData) {\n // event listener\n const name = key.slice(1);\n const value = eventData[key] as EventListenerWithOptions;\n element.removeEventListener(name, this, value);\n }\n }\n\n reconnected() {\n const { eventData, element } = this;\n for (const key in eventData) {\n // event listener\n const name = key.slice(1);\n const value = eventData[key] as EventListenerWithOptions;\n element.addEventListener(name, this, value);\n }\n }\n}\n\nexport const spreadEvents = directive(SpreadEventsDirective);\n\n/**\n * Usage:\n * import { html, render } from 'lit';\n * import { spread } from '@open-wc/lit-helpers';\n *\n * render(\n * html`\n * <div\n * ${spread({\n * 'my-attribute': 'foo',\n * '?my-boolean-attribute': true,\n * '.myProperty': { foo: 'bar' },\n * '@my-event': () => console.log('my-event fired'),\n * })}\n * ></div>\n * `,\n * document.body,\n * );\n */\nexport class SpreadDirective extends SpreadEventsDirective {\n apply(data: { [key: string]: unknown }) {\n if (!data) return;\n const { prevData, element } = this;\n for (const key in data) {\n const value = data[key];\n if (value === prevData[key]) {\n continue;\n }\n\n // Handle keys that already have directives\n if (key[0] === '@' || key[0] === '.' || key[0] === '?') {\n const name = key.slice(1);\n switch (key[0]) {\n case '@': // event listener\n this.eventData[name] = value;\n this.applyEvent(name, value as EventListenerWithOptions);\n break;\n case '.': // property\n element[name] = value;\n break;\n case '?': // boolean attribute\n if (value) {\n element.setAttribute(toKebabCase(name), '');\n } else {\n element.removeAttribute(toKebabCase(name));\n }\n break;\n }\n } else {\n // Auto-detect how to handle the value\n if (typeof value === 'function') {\n // Assume functions are event handlers\n this.eventData[key] = value;\n this.applyEvent(key, value as EventListenerWithOptions);\n } else if (isComplexValue(value)) {\n // Complex objects become properties\n element[key] = value;\n\n // For Storybook code preview, also set a serialized version as a regular attribute\n // This won't affect functionality but will show up in the DOM\n try {\n // Use JSON.stringify to create a string representation for the preview\n const serialized = JSON.stringify(value).replace(/\"/g, \"'\");\n // Set it as a standard attribute for visibility in Storybook\n element.setAttribute('___.' + toKebabCase(key), serialized);\n } catch {\n // If serialization fails, just continue (property is already set correctly)\n }\n } else if (typeof value === 'boolean') {\n // Booleans become boolean attributes\n if (value) {\n element.setAttribute(toKebabCase(key), '');\n } else {\n element.removeAttribute(toKebabCase(key));\n }\n } else {\n // Everything else becomes standard attributes\n if (value != null) {\n element.setAttribute(toKebabCase(key), String(value));\n } else {\n element.removeAttribute(toKebabCase(key));\n }\n }\n }\n }\n }\n\n groom(data: { [key: string]: unknown }) {\n const { prevData, element } = this;\n if (!prevData) return;\n for (const key in prevData) {\n if (!data || !(key in data)) {\n if (key[0] === '@' || key[0] === '.' || key[0] === '?') {\n const name = key.slice(1);\n switch (key[0]) {\n case '@': // event listener\n this.groomEvent(name, prevData[key] as EventListenerWithOptions);\n break;\n case '.': // property\n element[name] = undefined;\n break;\n case '?': // boolean attribute\n element.removeAttribute(toKebabCase(name));\n break;\n }\n } else {\n const value = prevData[key];\n if (typeof value === 'function') {\n this.groomEvent(key, value as EventListenerWithOptions);\n } else if (isComplexValue(value)) {\n element[key] = undefined;\n // Also remove the standard attribute we added for Storybook preview\n element.removeAttribute(toKebabCase(key));\n } else if (typeof value === 'boolean') {\n element.removeAttribute(toKebabCase(key));\n } else {\n element.removeAttribute(toKebabCase(key));\n }\n }\n }\n }\n }\n}\n\nexport const spread = directive(SpreadDirective);\n"]}
|
package/dist/native/index.esm.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export{a as ButtonEmphasis,B as ButtonSize,b as ButtonType,C as CUSTOM_DAY_NAMES,i as CUSTOM_MONTH_NAMES,D as DeprecatedSemanticColors,F as FeedbackColors,G as GlobalFilterPosition,I as IconButtonShape,e as LabelPlacement,L as LoaderColors,c as NotificationEmphasis,N as NotificationPosition,S as SemanticSizes,h as SortingPossibility,f as TextInputAutocomplete,g as TimeType,T as ToggleButtonEmphasis,d as ToggleButtonSize,W as WEEK_ABBREVIATIONS}from"./p-BReL3Lsa.js";
|
|
1
|
+
export{a as ButtonEmphasis,B as ButtonSize,b as ButtonType,C as CUSTOM_DAY_NAMES,i as CUSTOM_MONTH_NAMES,D as DeprecatedSemanticColors,F as FeedbackColors,G as GlobalFilterPosition,I as IconButtonShape,e as LabelPlacement,L as LoaderColors,c as NotificationEmphasis,N as NotificationPosition,S as SemanticSizes,h as SortingPossibility,f as TextInputAutocomplete,g as TimeType,T as ToggleButtonEmphasis,d as ToggleButtonSize,W as WEEK_ABBREVIATIONS}from"./p-BReL3Lsa.js";export{e as eventUtils}from"./p-B6GgGra-.js";export{u as uriUtils}from"./p-CnI0auJM.js";import{u as o}from"./p-sqVK8yoD.js";import{u as r}from"./p-13YSIyGW.js";import{u as t}from"./p-Blc6XEY7.js";import{u as l}from"./p-DmUOtOcY.js";import{p as s,t as n}from"./p-CgHCo_Ho.js";import"./p-xlgmw4x8.js";function p(e){const o=new Proxy({},{get(e,o){return o}});return e(o)}var m=Object.freeze({__proto__:null,nameof:p});function w(e,o){if(!e||!o)return false;return e.toLowerCase().startsWith(o.toLowerCase())}var y=Object.freeze({__proto__:null,startsWithIgnoreCase:w});var k=Object.freeze({__proto__:null,parallel:s,timeline:n,useCollapse:o,useFade:r,useGrow:t,useSlide:l});const v=["access-point-off","access-point","accessible","activity","address-book","adjustments-horizontal","adjustments-up","adjustments","affiliate","air-conditioning","alert-circle","alert-square-rounded","alert-triangle","align-center","align-left","align-right","app-window","apps","archive","areas","arrow-back-up","arrow-back","arrow-down-left","arrow-down-right","arrow-down","arrow-forward-up","arrow-forward","arrow-left","arrow-right","arrow-up-left","arrow-up-right","arrow-up","arrows-diagonal","arrows-exchange","arrows-maximize","arrows-minimize","arrows-move","aspect-ratio","atom","ban","basket","battery-1","battery-2","battery-3","battery-4","battery-automotive","battery-charging","battery-eco","battery-off","battery","bell-bolt","bell-off","bell-ringing","bell","bike","bluetooth-connected","bluetooth-off","bluetooth","bolt-off","bolt","book","bookmark-off","bookmark","bookmarks","box-align-top","box-multiple","brand-facebook","brand-instagram","brand-linkedin","brand-x","brand-youtube","briefcase","brightness-down","brightness-up","browser-check","browser-plus","browser-x","browser","brush","building-bank","building-factory","building-lighthouse","building-store","building","bulb-off","bulb","cake","calendar-time","calendar","camera-off","camera","car-crane","car","caravan","cash-banknote","cash","cast","cell","charging-pile","chart-arcs","chart-area-line","chart-area","chart-arrows-vertical","chart-arrows","chart-bar","chart-bubble","chart-circles","chart-donut","chart-dots","chart-line","chart-pie","chart-radar","check","checkbox","checklist","checks","chevron-down","chevron-left","chevron-right","chevron-top","chevrons-left","chevrons-right","circle-caret-right","circle-check","circle-x","circuit-alternate","circuit-ground-digital","clipboard-check","clipboard-list","clipboard-plus","clipboard-text","clipboard-x","clipboard","clock-edit","clock","cloud-data-connection","cloud-download","cloud-rain","cloud-snow","cloud-upload","cloud","color-picker","color-swatch","columns-1","columns-2","columns-3","compass","contract","cookie","copy","cpu","crane","credit-card","crop","cross","crown","currency-bitcoin","currency-dollar","currency-ethereum","currency-euro","cut","dashboard","database","device-desktop","device-floppy","device-gamepad","device-laptop","device-mobile-rotated","device-mobile","device-tablet","device-watch","devices","dialpad","direction-horizontal","direction-sign","direction","discount","door-enter","door-exit","door-off","dots-vertical","dots","download","drone","droplet-filled","droplet-half","droplet","droplets","edit","empty","engine","equal-not","eraser-off","eraser","external-link","eye-check","eye-off","eye","eyeglass2","face-id","feather","file-alert","file-analytics","file-check","file-code","file-download","file-export","file-horizontal","file-import","file-plus","file-search","file-text-bookmark","file-text","file-type-bmp","file-type-css","file-type-csv","file-type-doc","file-type-html","file-type-jpg","file-type-js","file-type-pdf","file-type-png","file-type-ppt","file-type-xls","file-type-xml","file-type-zip","file-upload","file-x","file-zip","file","files-off","files","filter-off","filter-sort","filter","fingerprint","fire-extinguisher","flag","flame","flip-horizontal","flip-vertical","folder-minus","folder-off","folder-plus","folder-x","folder","folders","frame","gas-station","gauge-off","gauge","gift","git-branch-delete","git-branch","git-cherry-pick","git-commit","git-compare","git-fork","git-merge","git-pull-request-closed","git-pull-request-draft","git-pull-request","gps","grid-dots","grip-horizontal","grip-vertical","hand-stop","hand-waving","hash","haze","headphones-off","headphones","headset","heart-off","heart","heartbeat","helicopter","helmet-swopp","helmet","help","history","home","hourglass-empty","hourglass-high","hourglass-low","hourglass-off","hourglass","inbox","info-circle","keyboard-hide","keyboard-show","keyboard","layout-board-split","layout-dashboard","layout-grid","layout-sidebar-left-collapse","layout-sidebar-left-expand","layout-sidebar-right-collapse","layout-sidebar-right-expand","layout","leaf","lifebuoy","link","list-search","list","loader","location","lock-off","lock-open","lock","login","logout","mail-forward","mail-opened","mail","map-pin-2","map-pin-off","map-pin","map","master-data","menu","message-dots","message-off","message","messages","microphone-off","microphone","minus","mist","moon","motorbike","mouse","movie","network","news","note","notebook","notes","offshore-station","package","palette","paperclip","pencil","phone-call","phone-calling","phone-check","phone-incoming","phone-off","phone-outgoing","phone","photo-off","photo","pig","pin","pinned-off","pinned","plane-off","plane","plant","player-pause","player-play","player-skip-back","player-skip-forward","player-stop","player-track-next","player-track-prev","plug-connected","plug","plus","power-ac","power-dc","power","presentation-analytics","presentation","printer","propeller","published","puzzle-2","puzzle","pylon","qrcode","quotes-open","quotes","radar","radio","radioactive","receipt-dollar","receipt-euro","receipt","recharging","recycle","refresh-alert","refresh-off","refresh","repeat-once","repeat","replace","report-analytics","report-medical","report-search","report","ripple-off","ripple","rocket","rotate-2","rotate-clockwise-2","rotate-clockwise","rotate-dot","rotate","router","ruler-measure","sailboat","satellite","scale","school","scissors","scooter-electric","screenshot","search","seeding","select","selector","send","server","settings","shape","share-2","share","shield-check","shield-lock","shield-off","shield-x","shield","ship-off","ship","shopping-cart","sitemap","slash","smart-home","snowflake","solar-panel","sort-ascending-letters","sort-ascending-numbers","sort-descending-letters","sort-descending-numbers","spacing-horizontal","spacing-vertical","sparkles","speakerphone","stack","stairs","star","sun","sunrise","sunset","switch-horizontal","switch-vertical","table","tag","tank-empty-fill","tank-full-fill","tank-medium-fill","temperature-off","temperature","template","terminal","text-size","text","thumb-down","thumb-up","ticket","timeline","tir","tool","tools","train","trash-off","trash","tree","trees","truck-delivery","truck","umbrella","unlink","upload","user-circle","user-exclamation","user-minus","user-off","user-plus","user-worker","user","users","versions","video-minus","video-off","video-plus","video","volume-2","volume-3","volume","wallet","wand","wave","waves","wifi-off","wifi","wind-direction","wind","windmill","wood","world-code","world","writing","x","zoom-reset"];export{k as animations,m as classUtils,v as iconNames,y as stringUtils};
|
|
2
2
|
//# sourceMappingURL=index.esm.js.map
|