@vef-framework/components 1.0.64 → 1.0.66
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/es/index.js +2 -81
- package/es/internal/index.js +2 -2
- package/es/internal/modern-normalize.css.js +2 -4
- package/es/internal/utils.js +2 -6
- package/es/vef-access-denied/access-denied-icon.js +2 -928
- package/es/vef-access-denied/index.js +10 -45
- package/es/vef-action-buttons/index.js +2 -75
- package/es/vef-auto-sizer/index.js +2 -6
- package/es/vef-avatar/index.js +2 -20
- package/es/vef-avatar-group/index.js +2 -25
- package/es/vef-badge/index.js +2 -47
- package/es/vef-bool/hooks/use-bool-instance.js +2 -34
- package/es/vef-bool/index.js +2 -60
- package/es/vef-breadcrumb/index.js +2 -48
- package/es/vef-button/components/base-button.js +2 -73
- package/es/vef-button/index.js +2 -151
- package/es/vef-card/index.js +2 -25
- package/es/vef-card-meta/index.js +2 -12
- package/es/vef-checkbox/hooks/use-checkbox-instance.js +2 -20
- package/es/vef-checkbox/hooks/use-data-options.js +2 -40
- package/es/vef-checkbox/index.js +4 -88
- package/es/vef-col/index.js +2 -11
- package/es/vef-color-picker/index.js +2 -46
- package/es/vef-compact/index.js +2 -15
- package/es/vef-config-provider/global-style.js +16 -23
- package/es/vef-config-provider/hooks/use-ui-config.js +2 -125
- package/es/vef-config-provider/index.js +4 -121
- package/es/vef-config-provider/store.js +2 -21
- package/es/vef-container/index.js +2 -18
- package/es/vef-crud-page/components/crud-actions.js +2 -32
- package/es/vef-crud-page/components/crud-filter.js +2 -54
- package/es/vef-crud-page/components/crud-footer.js +4 -116
- package/es/vef-crud-page/components/crud-form-modal.js +2 -53
- package/es/vef-crud-page/components/crud-header.js +2 -29
- package/es/vef-crud-page/components/crud-table.js +2 -76
- package/es/vef-crud-page/hooks/use-action-buttons.js +2 -37
- package/es/vef-crud-page/hooks/use-crud-context.js +2 -20
- package/es/vef-crud-page/hooks/use-crud-schema.js +2 -114
- package/es/vef-crud-page/hooks/use-operation-buttons.js +2 -60
- package/es/vef-crud-page/index.js +2 -150
- package/es/vef-crud-page/store.js +2 -142
- package/es/vef-divider/index.js +2 -24
- package/es/vef-drawer/components/action-button-wrapper.js +2 -49
- package/es/vef-drawer/components/button-props.js +1 -2
- package/es/vef-drawer/components/cancel-action-button.js +2 -21
- package/es/vef-drawer/components/ok-action-button.js +2 -20
- package/es/vef-drawer/context.js +2 -15
- package/es/vef-drawer/index.js +4 -154
- package/es/vef-dropdown/index.js +2 -92
- package/es/vef-dynamic-icon/index.js +2 -46
- package/es/vef-dynamic-icon/props.js +2 -6
- package/es/vef-empty/index.js +2 -37
- package/es/vef-empty-placeholder/index.js +5 -19
- package/es/vef-error/error-icon.js +2 -757
- package/es/vef-error/index.js +10 -48
- package/es/vef-filter/components/action-buttons.js +6 -119
- package/es/vef-filter/components/advanced-filter.js +9 -71
- package/es/vef-filter/components/basic-filter.js +5 -35
- package/es/vef-filter/components/fields/index.js +2 -11
- package/es/vef-filter/components/fields/input-number.js +2 -90
- package/es/vef-filter/components/fields/input.js +2 -67
- package/es/vef-filter/components/filter-field.js +2 -19
- package/es/vef-filter/components/filter-item.js +2 -112
- package/es/vef-filter/event.js +2 -44
- package/es/vef-filter/helper.js +2 -15
- package/es/vef-filter/hooks/use-action-handlers.js +2 -70
- package/es/vef-filter/hooks/use-computed-values.js +2 -55
- package/es/vef-filter/hooks/use-filter-context.js +2 -18
- package/es/vef-filter/hooks/use-filter-initialization.js +2 -37
- package/es/vef-filter/hooks/use-filter-instance.js +2 -26
- package/es/vef-filter/hooks/use-filter-items.js +2 -23
- package/es/vef-filter/hooks/use-filter-values-change.js +2 -30
- package/es/vef-filter/hooks/use-label-config.js +2 -27
- package/es/vef-filter/index.js +3 -141
- package/es/vef-filter/store.js +2 -71
- package/es/vef-flex/index.js +2 -31
- package/es/vef-float-button/index.js +2 -49
- package/es/vef-float-button-group/index.js +2 -20
- package/es/vef-form/components/fields/index.js +2 -11
- package/es/vef-form/components/fields/input-number.js +2 -123
- package/es/vef-form/components/fields/input.js +2 -132
- package/es/vef-form/components/form-actions.js +4 -58
- package/es/vef-form/components/form-content.js +3 -144
- package/es/vef-form/components/form-field.js +2 -22
- package/es/vef-form/components/form-group.js +4 -64
- package/es/vef-form/components/form-hidden-item.js +2 -36
- package/es/vef-form/components/form-item.js +2 -79
- package/es/vef-form/components/form-row.js +2 -98
- package/es/vef-form/event.js +2 -44
- package/es/vef-form/helper.js +2 -15
- package/es/vef-form/hooks/use-action-handlers.js +2 -130
- package/es/vef-form/hooks/use-columns-layout.js +2 -122
- package/es/vef-form/hooks/use-computed-values.js +2 -55
- package/es/vef-form/hooks/use-form-context.js +2 -14
- package/es/vef-form/hooks/use-form-initialization.js +2 -45
- package/es/vef-form/hooks/use-form-instance.js +2 -26
- package/es/vef-form/hooks/use-form-values-change.js +2 -30
- package/es/vef-form/hooks/use-label-width.js +2 -18
- package/es/vef-form/index.js +4 -174
- package/es/vef-form/store.js +2 -65
- package/es/vef-form/validation-rules.js +2 -286
- package/es/vef-form-drawer/index.js +2 -98
- package/es/vef-form-modal/index.js +2 -95
- package/es/vef-generic-select/index.js +2 -81
- package/es/vef-grid/index.js +7 -83
- package/es/vef-grid/props.js +2 -4
- package/es/vef-grid-item/index.js +2 -52
- package/es/vef-icon/index.js +2 -45
- package/es/vef-icon-select/index.js +12 -146
- package/es/vef-input/hooks/use-input-instance.js +2 -15
- package/es/vef-input/index.js +2 -64
- package/es/vef-input-number/hooks/use-input-number-instance.js +2 -13
- package/es/vef-input-number/index.js +2 -148
- package/es/vef-layout/common-styles.js +5 -10
- package/es/vef-layout/components/content.js +2 -13
- package/es/vef-layout/components/font-size.js +2 -68
- package/es/vef-layout/components/fullscreen.js +2 -23
- package/es/vef-layout/components/header-action-icons.js +7 -29
- package/es/vef-layout/components/header-content.js +2 -19
- package/es/vef-layout/components/header.js +7 -69
- package/es/vef-layout/components/icon-boy.js +2 -69
- package/es/vef-layout/components/icon-girl.js +2 -76
- package/es/vef-layout/components/icon-menu-fold-left.js +2 -23
- package/es/vef-layout/components/icon-menu-unfold-left.js +2 -23
- package/es/vef-layout/components/menu-groups.js +16 -123
- package/es/vef-layout/components/message.js +2 -11
- package/es/vef-layout/components/search.js +2 -11
- package/es/vef-layout/components/sider.js +6 -54
- package/es/vef-layout/components/title.js +9 -53
- package/es/vef-layout/components/user-avatar.js +10 -80
- package/es/vef-layout/hooks/use-layout-context.js +2 -10
- package/es/vef-layout/index.js +3 -33
- package/es/vef-layout/logo.svg.js +2 -4
- package/es/vef-layout/store.js +2 -16
- package/es/vef-loading-placeholder/index.js +6 -42
- package/es/vef-login/index.js +22 -152
- package/es/vef-login/login-icon.js +2 -668
- package/es/vef-menu/index.js +5 -77
- package/es/vef-modal/components/action-button-wrapper.js +2 -49
- package/es/vef-modal/components/button-props.js +1 -2
- package/es/vef-modal/components/cancel-action-button.js +2 -18
- package/es/vef-modal/components/ok-action-button.js +2 -20
- package/es/vef-modal/context.js +2 -15
- package/es/vef-modal/index.js +3 -239
- package/es/vef-not-found/index.js +10 -45
- package/es/vef-not-found/not-found-icon.js +2 -844
- package/es/vef-page/index.js +11 -87
- package/es/vef-pagination/index.js +2 -57
- package/es/vef-pagination/props.js +2 -13
- package/es/vef-paragraph/index.js +2 -89
- package/es/vef-password/hooks/use-password-instance.js +2 -13
- package/es/vef-password/index.js +2 -67
- package/es/vef-popconfirm/index.js +2 -56
- package/es/vef-popover/index.js +2 -29
- package/es/vef-radio/hooks/use-data-options.js +2 -40
- package/es/vef-radio/hooks/use-radio-instance.js +2 -20
- package/es/vef-radio/index.js +4 -88
- package/es/vef-rate/hooks/use-rate-instance.js +2 -13
- package/es/vef-rate/index.js +2 -30
- package/es/vef-responsive-container/index.js +3 -54
- package/es/vef-responsive-item/index.js +3 -23
- package/es/vef-ribbon/index.js +2 -38
- package/es/vef-row/index.js +2 -12
- package/es/vef-scroll-area/components/scrollbar.js +8 -34
- package/es/vef-scroll-area/index.js +4 -69
- package/es/vef-select/components/option.js +4 -23
- package/es/vef-select/hooks/use-data-options.js +2 -47
- package/es/vef-select/hooks/use-field-names.js +2 -21
- package/es/vef-select/hooks/use-render-label.js +3 -23
- package/es/vef-select/hooks/use-render-option.js +2 -19
- package/es/vef-select/hooks/use-select-instance.js +2 -20
- package/es/vef-select/index.js +2 -100
- package/es/vef-slider/hooks/use-slider-instance.js +2 -13
- package/es/vef-slider/index.js +2 -34
- package/es/vef-sortable-list/components/overlay-item.js +3 -31
- package/es/vef-sortable-list/components/sortable-item.js +3 -75
- package/es/vef-sortable-list/hooks/use-merged-items.js +2 -21
- package/es/vef-sortable-list/index.js +2 -114
- package/es/vef-space/index.js +2 -25
- package/es/vef-spin/index.js +2 -12
- package/es/vef-splitter/index.js +2 -20
- package/es/vef-splitter-panel/index.js +2 -12
- package/es/vef-status/index.js +2 -37
- package/es/vef-table/components/columns/bool.js +2 -91
- package/es/vef-table/components/columns/code.js +2 -10
- package/es/vef-table/components/columns/data-dictionary.js +2 -92
- package/es/vef-table/components/columns/enum.js +2 -101
- package/es/vef-table/components/columns/file.js +2 -10
- package/es/vef-table/components/columns/icon.js +2 -10
- package/es/vef-table/components/columns/id.js +2 -82
- package/es/vef-table/components/columns/image.js +2 -11
- package/es/vef-table/components/columns/index.js +2 -33
- package/es/vef-table/components/columns/markdown.js +2 -10
- package/es/vef-table/components/columns/number.js +2 -83
- package/es/vef-table/components/columns/render.js +2 -28
- package/es/vef-table/components/columns/rich-text.js +2 -10
- package/es/vef-table/components/columns/text.js +2 -88
- package/es/vef-table/components/columns-settings.js +11 -195
- package/es/vef-table/components/operation-buttons.js +3 -230
- package/es/vef-table/components/settings-icon.js +4 -19
- package/es/vef-table/components/table-footer.js +4 -102
- package/es/vef-table/helper.js +2 -15
- package/es/vef-table/hooks/use-computed-batch-buttons.js +2 -33
- package/es/vef-table/hooks/use-computed-columns.js +2 -20
- package/es/vef-table/hooks/use-computed-values.js +2 -38
- package/es/vef-table/hooks/use-data.js +2 -53
- package/es/vef-table/hooks/use-default-column-configs.js +2 -27
- package/es/vef-table/hooks/use-display-value.js +2 -36
- package/es/vef-table/hooks/use-helper-columns.js +2 -67
- package/es/vef-table/hooks/use-operation-column-width.js +2 -50
- package/es/vef-table/hooks/use-pagination-props.js +2 -44
- package/es/vef-table/hooks/use-row-props.js +2 -39
- package/es/vef-table/hooks/use-row-selection-config.js +2 -112
- package/es/vef-table/hooks/use-selected-rows.js +2 -26
- package/es/vef-table/hooks/use-table-columns.js +2 -56
- package/es/vef-table/hooks/use-table-context.js +2 -21
- package/es/vef-table/hooks/use-table-instance.js +2 -15
- package/es/vef-table/hooks/use-table-summary.js +2 -42
- package/es/vef-table/hooks/use-table-width.js +2 -13
- package/es/vef-table/index.js +6 -227
- package/es/vef-table/store.js +2 -17
- package/es/vef-tabs/index.js +2 -25
- package/es/vef-tag/index.js +2 -28
- package/es/vef-temporal-picker/helper.js +2 -57
- package/es/vef-temporal-picker/hooks/use-dayjs-value.js +2 -18
- package/es/vef-temporal-picker/hooks/use-temporal-limit.js +2 -34
- package/es/vef-temporal-picker/hooks/use-temporal-picker-instance.js +2 -19
- package/es/vef-temporal-picker/index.js +2 -125
- package/es/vef-temporal-range-picker/helper.js +2 -57
- package/es/vef-temporal-range-picker/hooks/use-dayjs-values.js +2 -23
- package/es/vef-temporal-range-picker/hooks/use-temporal-limit.js +2 -34
- package/es/vef-temporal-range-picker/hooks/use-temporal-range-picker-instance.js +2 -19
- package/es/vef-temporal-range-picker/index.js +2 -128
- package/es/vef-temporal-range-picker/props.js +2 -4
- package/es/vef-text/index.js +2 -80
- package/es/vef-textarea/hooks/use-textarea-instance.js +2 -13
- package/es/vef-textarea/index.js +2 -67
- package/es/vef-title/index.js +7 -89
- package/es/vef-tooltip/index.js +2 -35
- package/es/vef-tree-select/hooks/use-change-handler.js +2 -33
- package/es/vef-tree-select/hooks/use-data-options.js +2 -45
- package/es/vef-tree-select/hooks/use-tree-select-instance.js +2 -20
- package/es/vef-tree-select/index.js +2 -86
- package/es/vef-virtual-grid/index.js +4 -107
- package/es/vef-virtual-list/index.js +5 -215
- package/lib/index.cjs +2 -168
- package/lib/internal/index.cjs +2 -10
- package/lib/internal/modern-normalize.css.cjs +2 -8
- package/lib/internal/utils.cjs +2 -10
- package/lib/vef-access-denied/access-denied-icon.cjs +2 -932
- package/lib/vef-access-denied/index.cjs +10 -49
- package/lib/vef-access-denied/props.cjs +2 -4
- package/lib/vef-action-buttons/index.cjs +2 -79
- package/lib/vef-action-buttons/props.cjs +2 -4
- package/lib/vef-auto-sizer/index.cjs +2 -10
- package/lib/vef-auto-sizer/props.cjs +2 -4
- package/lib/vef-avatar/index.cjs +2 -24
- package/lib/vef-avatar/props.cjs +2 -4
- package/lib/vef-avatar-group/index.cjs +2 -29
- package/lib/vef-avatar-group/props.cjs +2 -4
- package/lib/vef-badge/index.cjs +2 -51
- package/lib/vef-badge/props.cjs +2 -4
- package/lib/vef-bool/hooks/use-bool-instance.cjs +2 -38
- package/lib/vef-bool/index.cjs +2 -64
- package/lib/vef-bool/props.cjs +2 -4
- package/lib/vef-breadcrumb/index.cjs +2 -52
- package/lib/vef-breadcrumb/props.cjs +2 -4
- package/lib/vef-button/components/base-button.cjs +2 -77
- package/lib/vef-button/index.cjs +2 -155
- package/lib/vef-button/props.cjs +2 -4
- package/lib/vef-card/index.cjs +2 -29
- package/lib/vef-card/props.cjs +2 -4
- package/lib/vef-card-meta/index.cjs +2 -16
- package/lib/vef-card-meta/props.cjs +2 -4
- package/lib/vef-checkbox/hooks/use-checkbox-instance.cjs +2 -24
- package/lib/vef-checkbox/hooks/use-data-options.cjs +2 -44
- package/lib/vef-checkbox/index.cjs +4 -92
- package/lib/vef-checkbox/props.cjs +2 -4
- package/lib/vef-col/index.cjs +2 -15
- package/lib/vef-col/props.cjs +2 -4
- package/lib/vef-color-picker/index.cjs +2 -50
- package/lib/vef-color-picker/props.cjs +2 -4
- package/lib/vef-compact/index.cjs +2 -19
- package/lib/vef-compact/props.cjs +2 -4
- package/lib/vef-config-provider/global-style.cjs +16 -28
- package/lib/vef-config-provider/hooks/use-ui-config.cjs +2 -129
- package/lib/vef-config-provider/index.cjs +4 -125
- package/lib/vef-config-provider/props.cjs +2 -4
- package/lib/vef-config-provider/store.cjs +2 -27
- package/lib/vef-container/index.cjs +2 -22
- package/lib/vef-container/props.cjs +2 -4
- package/lib/vef-crud-page/components/crud-actions.cjs +2 -36
- package/lib/vef-crud-page/components/crud-filter.cjs +2 -58
- package/lib/vef-crud-page/components/crud-footer.cjs +4 -120
- package/lib/vef-crud-page/components/crud-form-modal.cjs +2 -57
- package/lib/vef-crud-page/components/crud-header.cjs +2 -33
- package/lib/vef-crud-page/components/crud-table.cjs +2 -80
- package/lib/vef-crud-page/hooks/use-action-buttons.cjs +2 -41
- package/lib/vef-crud-page/hooks/use-crud-context.cjs +2 -24
- package/lib/vef-crud-page/hooks/use-crud-schema.cjs +2 -118
- package/lib/vef-crud-page/hooks/use-operation-buttons.cjs +2 -64
- package/lib/vef-crud-page/index.cjs +2 -154
- package/lib/vef-crud-page/props.cjs +2 -4
- package/lib/vef-crud-page/store.cjs +2 -148
- package/lib/vef-crud-page/types.cjs +2 -4
- package/lib/vef-divider/index.cjs +2 -28
- package/lib/vef-divider/props.cjs +2 -4
- package/lib/vef-drawer/components/action-button-wrapper.cjs +2 -53
- package/lib/vef-drawer/components/button-props.cjs +2 -4
- package/lib/vef-drawer/components/cancel-action-button.cjs +2 -25
- package/lib/vef-drawer/components/ok-action-button.cjs +2 -24
- package/lib/vef-drawer/context.cjs +2 -21
- package/lib/vef-drawer/index.cjs +4 -159
- package/lib/vef-drawer/props.cjs +2 -4
- package/lib/vef-dropdown/index.cjs +2 -96
- package/lib/vef-dropdown/props.cjs +2 -4
- package/lib/vef-dynamic-icon/index.cjs +2 -50
- package/lib/vef-dynamic-icon/props.cjs +2 -10
- package/lib/vef-empty/index.cjs +2 -41
- package/lib/vef-empty/props.cjs +2 -4
- package/lib/vef-empty-placeholder/index.cjs +5 -23
- package/lib/vef-empty-placeholder/props.cjs +2 -4
- package/lib/vef-error/error-icon.cjs +2 -761
- package/lib/vef-error/index.cjs +10 -52
- package/lib/vef-error/props.cjs +2 -4
- package/lib/vef-filter/components/action-buttons.cjs +6 -123
- package/lib/vef-filter/components/advanced-filter.cjs +9 -75
- package/lib/vef-filter/components/basic-filter.cjs +5 -39
- package/lib/vef-filter/components/fields/index.cjs +2 -15
- package/lib/vef-filter/components/fields/input-number.cjs +2 -94
- package/lib/vef-filter/components/fields/input.cjs +2 -71
- package/lib/vef-filter/components/fields/props.cjs +2 -4
- package/lib/vef-filter/components/filter-field.cjs +2 -23
- package/lib/vef-filter/components/filter-item.cjs +2 -116
- package/lib/vef-filter/event.cjs +2 -48
- package/lib/vef-filter/helper.cjs +2 -19
- package/lib/vef-filter/hooks/use-action-handlers.cjs +2 -74
- package/lib/vef-filter/hooks/use-computed-values.cjs +2 -59
- package/lib/vef-filter/hooks/use-filter-context.cjs +2 -24
- package/lib/vef-filter/hooks/use-filter-initialization.cjs +2 -41
- package/lib/vef-filter/hooks/use-filter-instance.cjs +2 -30
- package/lib/vef-filter/hooks/use-filter-items.cjs +2 -27
- package/lib/vef-filter/hooks/use-filter-values-change.cjs +2 -34
- package/lib/vef-filter/hooks/use-label-config.cjs +2 -31
- package/lib/vef-filter/index.cjs +3 -145
- package/lib/vef-filter/props.cjs +2 -4
- package/lib/vef-filter/store.cjs +2 -77
- package/lib/vef-filter/types.cjs +2 -4
- package/lib/vef-flex/index.cjs +2 -35
- package/lib/vef-flex/props.cjs +2 -4
- package/lib/vef-float-button/index.cjs +2 -53
- package/lib/vef-float-button/props.cjs +2 -4
- package/lib/vef-float-button-group/index.cjs +2 -24
- package/lib/vef-float-button-group/props.cjs +2 -4
- package/lib/vef-form/components/fields/index.cjs +2 -15
- package/lib/vef-form/components/fields/input-number.cjs +2 -127
- package/lib/vef-form/components/fields/input.cjs +2 -136
- package/lib/vef-form/components/fields/props.cjs +2 -4
- package/lib/vef-form/components/form-actions.cjs +4 -62
- package/lib/vef-form/components/form-content.cjs +3 -148
- package/lib/vef-form/components/form-field.cjs +2 -26
- package/lib/vef-form/components/form-group.cjs +4 -68
- package/lib/vef-form/components/form-hidden-item.cjs +2 -40
- package/lib/vef-form/components/form-item.cjs +2 -83
- package/lib/vef-form/components/form-row.cjs +2 -102
- package/lib/vef-form/event.cjs +2 -48
- package/lib/vef-form/helper.cjs +2 -19
- package/lib/vef-form/hooks/use-action-handlers.cjs +2 -134
- package/lib/vef-form/hooks/use-columns-layout.cjs +2 -126
- package/lib/vef-form/hooks/use-computed-values.cjs +2 -59
- package/lib/vef-form/hooks/use-form-context.cjs +2 -20
- package/lib/vef-form/hooks/use-form-initialization.cjs +2 -49
- package/lib/vef-form/hooks/use-form-instance.cjs +2 -30
- package/lib/vef-form/hooks/use-form-values-change.cjs +2 -34
- package/lib/vef-form/hooks/use-label-width.cjs +2 -22
- package/lib/vef-form/index.cjs +4 -178
- package/lib/vef-form/props.cjs +2 -4
- package/lib/vef-form/store.cjs +2 -71
- package/lib/vef-form/types.cjs +2 -4
- package/lib/vef-form/validation-rules.cjs +2 -312
- package/lib/vef-form-drawer/index.cjs +2 -102
- package/lib/vef-form-drawer/props.cjs +2 -4
- package/lib/vef-form-modal/index.cjs +2 -99
- package/lib/vef-form-modal/props.cjs +2 -4
- package/lib/vef-generic-select/index.cjs +2 -85
- package/lib/vef-generic-select/props.cjs +2 -4
- package/lib/vef-grid/index.cjs +7 -87
- package/lib/vef-grid/props.cjs +2 -8
- package/lib/vef-grid-item/index.cjs +2 -56
- package/lib/vef-grid-item/props.cjs +2 -4
- package/lib/vef-icon/index.cjs +2 -49
- package/lib/vef-icon/props.cjs +2 -4
- package/lib/vef-icon-select/index.cjs +12 -150
- package/lib/vef-icon-select/props.cjs +2 -4
- package/lib/vef-input/hooks/use-input-instance.cjs +2 -19
- package/lib/vef-input/index.cjs +2 -68
- package/lib/vef-input/props.cjs +2 -4
- package/lib/vef-input-number/hooks/use-input-number-instance.cjs +2 -17
- package/lib/vef-input-number/index.cjs +2 -152
- package/lib/vef-input-number/props.cjs +2 -4
- package/lib/vef-layout/common-styles.cjs +5 -14
- package/lib/vef-layout/components/content.cjs +2 -17
- package/lib/vef-layout/components/font-size.cjs +2 -72
- package/lib/vef-layout/components/fullscreen.cjs +2 -27
- package/lib/vef-layout/components/header-action-icons.cjs +7 -33
- package/lib/vef-layout/components/header-content.cjs +2 -23
- package/lib/vef-layout/components/header.cjs +7 -73
- package/lib/vef-layout/components/icon-boy.cjs +2 -73
- package/lib/vef-layout/components/icon-girl.cjs +2 -80
- package/lib/vef-layout/components/icon-menu-fold-left.cjs +2 -27
- package/lib/vef-layout/components/icon-menu-unfold-left.cjs +2 -27
- package/lib/vef-layout/components/menu-groups.cjs +16 -127
- package/lib/vef-layout/components/message.cjs +2 -15
- package/lib/vef-layout/components/search.cjs +2 -15
- package/lib/vef-layout/components/sider.cjs +6 -58
- package/lib/vef-layout/components/title.cjs +9 -57
- package/lib/vef-layout/components/user-avatar.cjs +10 -84
- package/lib/vef-layout/hooks/use-layout-context.cjs +2 -16
- package/lib/vef-layout/index.cjs +3 -37
- package/lib/vef-layout/logo.svg.cjs +2 -8
- package/lib/vef-layout/props.cjs +2 -4
- package/lib/vef-layout/store.cjs +2 -22
- package/lib/vef-loading-placeholder/index.cjs +6 -46
- package/lib/vef-loading-placeholder/props.cjs +2 -4
- package/lib/vef-login/index.cjs +22 -156
- package/lib/vef-login/login-icon.cjs +2 -672
- package/lib/vef-login/props.cjs +2 -4
- package/lib/vef-menu/index.cjs +5 -81
- package/lib/vef-menu/props.cjs +2 -4
- package/lib/vef-modal/components/action-button-wrapper.cjs +2 -53
- package/lib/vef-modal/components/button-props.cjs +2 -4
- package/lib/vef-modal/components/cancel-action-button.cjs +2 -22
- package/lib/vef-modal/components/ok-action-button.cjs +2 -24
- package/lib/vef-modal/context.cjs +2 -21
- package/lib/vef-modal/index.cjs +3 -244
- package/lib/vef-modal/props.cjs +2 -4
- package/lib/vef-not-found/index.cjs +10 -49
- package/lib/vef-not-found/not-found-icon.cjs +2 -848
- package/lib/vef-not-found/props.cjs +2 -4
- package/lib/vef-page/index.cjs +11 -91
- package/lib/vef-page/props.cjs +2 -4
- package/lib/vef-pagination/index.cjs +2 -61
- package/lib/vef-pagination/props.cjs +2 -17
- package/lib/vef-paragraph/index.cjs +2 -93
- package/lib/vef-paragraph/props.cjs +2 -4
- package/lib/vef-password/hooks/use-password-instance.cjs +2 -17
- package/lib/vef-password/index.cjs +2 -71
- package/lib/vef-password/props.cjs +2 -4
- package/lib/vef-popconfirm/index.cjs +2 -60
- package/lib/vef-popconfirm/props.cjs +2 -4
- package/lib/vef-popover/index.cjs +2 -33
- package/lib/vef-popover/props.cjs +2 -4
- package/lib/vef-radio/hooks/use-data-options.cjs +2 -44
- package/lib/vef-radio/hooks/use-radio-instance.cjs +2 -24
- package/lib/vef-radio/index.cjs +4 -92
- package/lib/vef-radio/props.cjs +2 -4
- package/lib/vef-rate/hooks/use-rate-instance.cjs +2 -17
- package/lib/vef-rate/index.cjs +2 -34
- package/lib/vef-rate/props.cjs +2 -4
- package/lib/vef-responsive-container/index.cjs +3 -58
- package/lib/vef-responsive-container/props.cjs +2 -4
- package/lib/vef-responsive-item/index.cjs +3 -27
- package/lib/vef-responsive-item/props.cjs +2 -4
- package/lib/vef-ribbon/index.cjs +2 -42
- package/lib/vef-ribbon/props.cjs +2 -4
- package/lib/vef-row/index.cjs +2 -16
- package/lib/vef-row/props.cjs +2 -4
- package/lib/vef-scroll-area/components/scrollbar.cjs +8 -38
- package/lib/vef-scroll-area/index.cjs +4 -73
- package/lib/vef-scroll-area/props.cjs +2 -4
- package/lib/vef-select/components/option.cjs +4 -27
- package/lib/vef-select/hooks/use-data-options.cjs +2 -51
- package/lib/vef-select/hooks/use-field-names.cjs +2 -25
- package/lib/vef-select/hooks/use-render-label.cjs +3 -27
- package/lib/vef-select/hooks/use-render-option.cjs +2 -23
- package/lib/vef-select/hooks/use-select-instance.cjs +2 -24
- package/lib/vef-select/index.cjs +2 -104
- package/lib/vef-select/props.cjs +2 -4
- package/lib/vef-slider/hooks/use-slider-instance.cjs +2 -17
- package/lib/vef-slider/index.cjs +2 -38
- package/lib/vef-slider/props.cjs +2 -4
- package/lib/vef-sortable-list/components/overlay-item.cjs +3 -35
- package/lib/vef-sortable-list/components/sortable-item.cjs +3 -79
- package/lib/vef-sortable-list/hooks/use-merged-items.cjs +2 -25
- package/lib/vef-sortable-list/index.cjs +2 -118
- package/lib/vef-sortable-list/props.cjs +2 -4
- package/lib/vef-space/index.cjs +2 -29
- package/lib/vef-space/props.cjs +2 -4
- package/lib/vef-spin/index.cjs +2 -16
- package/lib/vef-spin/props.cjs +2 -4
- package/lib/vef-splitter/index.cjs +2 -24
- package/lib/vef-splitter/props.cjs +2 -4
- package/lib/vef-splitter-panel/index.cjs +2 -16
- package/lib/vef-splitter-panel/props.cjs +2 -4
- package/lib/vef-status/index.cjs +2 -41
- package/lib/vef-status/props.cjs +2 -4
- package/lib/vef-table/components/columns/bool.cjs +2 -95
- package/lib/vef-table/components/columns/code.cjs +2 -14
- package/lib/vef-table/components/columns/data-dictionary.cjs +2 -96
- package/lib/vef-table/components/columns/enum.cjs +2 -105
- package/lib/vef-table/components/columns/file.cjs +2 -14
- package/lib/vef-table/components/columns/icon.cjs +2 -14
- package/lib/vef-table/components/columns/id.cjs +2 -86
- package/lib/vef-table/components/columns/image.cjs +2 -15
- package/lib/vef-table/components/columns/index.cjs +2 -37
- package/lib/vef-table/components/columns/markdown.cjs +2 -14
- package/lib/vef-table/components/columns/number.cjs +2 -87
- package/lib/vef-table/components/columns/props.cjs +2 -4
- package/lib/vef-table/components/columns/render.cjs +2 -32
- package/lib/vef-table/components/columns/rich-text.cjs +2 -14
- package/lib/vef-table/components/columns/text.cjs +2 -92
- package/lib/vef-table/components/columns-settings.cjs +11 -199
- package/lib/vef-table/components/operation-buttons.cjs +3 -234
- package/lib/vef-table/components/settings-icon.cjs +4 -23
- package/lib/vef-table/components/table-footer.cjs +4 -106
- package/lib/vef-table/helper.cjs +2 -19
- package/lib/vef-table/hooks/use-computed-batch-buttons.cjs +2 -37
- package/lib/vef-table/hooks/use-computed-columns.cjs +2 -24
- package/lib/vef-table/hooks/use-computed-values.cjs +2 -42
- package/lib/vef-table/hooks/use-data.cjs +2 -57
- package/lib/vef-table/hooks/use-default-column-configs.cjs +2 -31
- package/lib/vef-table/hooks/use-display-value.cjs +2 -40
- package/lib/vef-table/hooks/use-helper-columns.cjs +2 -71
- package/lib/vef-table/hooks/use-operation-column-width.cjs +2 -54
- package/lib/vef-table/hooks/use-pagination-props.cjs +2 -48
- package/lib/vef-table/hooks/use-row-props.cjs +2 -43
- package/lib/vef-table/hooks/use-row-selection-config.cjs +2 -116
- package/lib/vef-table/hooks/use-selected-rows.cjs +2 -30
- package/lib/vef-table/hooks/use-table-columns.cjs +2 -60
- package/lib/vef-table/hooks/use-table-context.cjs +2 -27
- package/lib/vef-table/hooks/use-table-instance.cjs +2 -19
- package/lib/vef-table/hooks/use-table-summary.cjs +2 -46
- package/lib/vef-table/hooks/use-table-width.cjs +2 -17
- package/lib/vef-table/index.cjs +6 -231
- package/lib/vef-table/props.cjs +2 -4
- package/lib/vef-table/store.cjs +2 -23
- package/lib/vef-table/types.cjs +2 -4
- package/lib/vef-tabs/index.cjs +2 -29
- package/lib/vef-tabs/props.cjs +2 -4
- package/lib/vef-tag/index.cjs +2 -32
- package/lib/vef-tag/props.cjs +2 -4
- package/lib/vef-temporal-picker/helper.cjs +2 -61
- package/lib/vef-temporal-picker/hooks/use-dayjs-value.cjs +2 -22
- package/lib/vef-temporal-picker/hooks/use-temporal-limit.cjs +2 -38
- package/lib/vef-temporal-picker/hooks/use-temporal-picker-instance.cjs +2 -23
- package/lib/vef-temporal-picker/index.cjs +2 -129
- package/lib/vef-temporal-picker/props.cjs +2 -4
- package/lib/vef-temporal-range-picker/helper.cjs +2 -61
- package/lib/vef-temporal-range-picker/hooks/use-dayjs-values.cjs +2 -27
- package/lib/vef-temporal-range-picker/hooks/use-temporal-limit.cjs +2 -38
- package/lib/vef-temporal-range-picker/hooks/use-temporal-range-picker-instance.cjs +2 -23
- package/lib/vef-temporal-range-picker/index.cjs +2 -132
- package/lib/vef-temporal-range-picker/props.cjs +2 -8
- package/lib/vef-text/index.cjs +2 -84
- package/lib/vef-text/props.cjs +2 -4
- package/lib/vef-textarea/hooks/use-textarea-instance.cjs +2 -17
- package/lib/vef-textarea/index.cjs +2 -71
- package/lib/vef-textarea/props.cjs +2 -4
- package/lib/vef-title/index.cjs +7 -93
- package/lib/vef-title/props.cjs +2 -4
- package/lib/vef-tooltip/index.cjs +2 -39
- package/lib/vef-tooltip/props.cjs +2 -4
- package/lib/vef-tree-select/hooks/use-change-handler.cjs +2 -37
- package/lib/vef-tree-select/hooks/use-data-options.cjs +2 -49
- package/lib/vef-tree-select/hooks/use-tree-select-instance.cjs +2 -24
- package/lib/vef-tree-select/index.cjs +2 -90
- package/lib/vef-tree-select/props.cjs +2 -4
- package/lib/vef-virtual-grid/index.cjs +4 -111
- package/lib/vef-virtual-grid/props.cjs +2 -4
- package/lib/vef-virtual-list/index.cjs +5 -219
- package/lib/vef-virtual-list/props.cjs +2 -4
- package/package.json +4 -4
- package/types/vef-config-provider/hooks/use-ui-config.d.ts +0 -1
|
@@ -1,117 +1,3 @@
|
|
|
1
|
-
/*! VefFramework version: 1.0.
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: 'Module' } });
|
|
5
|
-
|
|
6
|
-
const jsxRuntime = require('@emotion/react/jsx-runtime');
|
|
7
|
-
const hooks = require('@vef-framework/hooks');
|
|
8
|
-
const shared = require('@vef-framework/shared');
|
|
9
|
-
const antd = require('antd');
|
|
10
|
-
const react = require('react');
|
|
11
|
-
const useComputedValues = require('../hooks/use-computed-values.cjs');
|
|
12
|
-
const filterField = require('./filter-field.cjs');
|
|
13
|
-
|
|
14
|
-
const { Item } = antd.Form;
|
|
15
|
-
const defaultBasicItemWidth = 180;
|
|
16
|
-
const defaultBasicItemWithLabelWidth = 220;
|
|
17
|
-
function VefFilterItemBase({
|
|
18
|
-
item: {
|
|
19
|
-
name,
|
|
20
|
-
show,
|
|
21
|
-
disabled,
|
|
22
|
-
label,
|
|
23
|
-
tip,
|
|
24
|
-
required,
|
|
25
|
-
width,
|
|
26
|
-
advanced = false,
|
|
27
|
-
span: _,
|
|
28
|
-
virtual: __,
|
|
29
|
-
...componentProps
|
|
30
|
-
},
|
|
31
|
-
...restProps
|
|
32
|
-
}) {
|
|
33
|
-
const formDisabled = hooks.useContextDisabled();
|
|
34
|
-
const [showValue, disabledValue, labelValue, tipValue, requiredValue, widthValue] = useComputedValues.useComputedValues([
|
|
35
|
-
{
|
|
36
|
-
key: "show",
|
|
37
|
-
rawValue: show,
|
|
38
|
-
defaultValue: true
|
|
39
|
-
},
|
|
40
|
-
{
|
|
41
|
-
key: "disabled",
|
|
42
|
-
rawValue: disabled,
|
|
43
|
-
defaultValue: false
|
|
44
|
-
},
|
|
45
|
-
{
|
|
46
|
-
key: "label",
|
|
47
|
-
rawValue: label
|
|
48
|
-
},
|
|
49
|
-
{
|
|
50
|
-
key: "tip",
|
|
51
|
-
rawValue: tip
|
|
52
|
-
},
|
|
53
|
-
{
|
|
54
|
-
key: "required",
|
|
55
|
-
rawValue: required,
|
|
56
|
-
defaultValue: false
|
|
57
|
-
},
|
|
58
|
-
{
|
|
59
|
-
key: "width",
|
|
60
|
-
rawValue: width,
|
|
61
|
-
defaultValue: label ? defaultBasicItemWithLabelWidth : defaultBasicItemWidth
|
|
62
|
-
}
|
|
63
|
-
]);
|
|
64
|
-
const requiredRuleObject = react.useMemo(() => {
|
|
65
|
-
if (!requiredValue) {
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
return [
|
|
69
|
-
{
|
|
70
|
-
required: true
|
|
71
|
-
}
|
|
72
|
-
];
|
|
73
|
-
}, [requiredValue]);
|
|
74
|
-
const itemCss = react.useMemo(() => {
|
|
75
|
-
if (advanced) {
|
|
76
|
-
return;
|
|
77
|
-
}
|
|
78
|
-
return {
|
|
79
|
-
width: widthValue
|
|
80
|
-
};
|
|
81
|
-
}, [advanced, widthValue]);
|
|
82
|
-
if (!showValue) {
|
|
83
|
-
return null;
|
|
84
|
-
}
|
|
85
|
-
return /* @__PURE__ */ jsxRuntime.jsx(
|
|
86
|
-
Item,
|
|
87
|
-
{
|
|
88
|
-
css: itemCss,
|
|
89
|
-
help: false,
|
|
90
|
-
label: labelValue,
|
|
91
|
-
name,
|
|
92
|
-
preserve: false,
|
|
93
|
-
rules: requiredRuleObject,
|
|
94
|
-
tooltip: tipValue,
|
|
95
|
-
...restProps,
|
|
96
|
-
children: /* @__PURE__ */ jsxRuntime.jsx(
|
|
97
|
-
filterField.default,
|
|
98
|
-
{
|
|
99
|
-
componentProps,
|
|
100
|
-
disabled: formDisabled || disabledValue,
|
|
101
|
-
label: labelValue,
|
|
102
|
-
name
|
|
103
|
-
}
|
|
104
|
-
)
|
|
105
|
-
}
|
|
106
|
-
);
|
|
107
|
-
}
|
|
108
|
-
const VefFilterItem = react.memo(
|
|
109
|
-
VefFilterItemBase,
|
|
110
|
-
(prevProps, nextProps) => shared.isDeepEqual(
|
|
111
|
-
shared.omit(prevProps, ["item"]),
|
|
112
|
-
shared.omit(nextProps, ["item"])
|
|
113
|
-
)
|
|
114
|
-
);
|
|
115
|
-
|
|
116
|
-
exports.default = VefFilterItem;
|
|
1
|
+
/*! VefFramework version: 1.0.66, build time: 2025-01-10T02:50:16.681Z, made by Venus. */
|
|
2
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const e=require("@emotion/react/jsx-runtime"),r=require("@vef-framework/hooks"),a=require("@vef-framework/shared"),u=require("antd"),t=require("react"),l=require("../hooks/use-computed-values.cjs"),i=require("./filter-field.cjs"),{Item:s}=u.Form;const o=t.memo((function VefFilterItemBase({item:{name:a,show:u,disabled:o,label:d,tip:m,required:n,width:f,advanced:c=!1,span:p,virtual:w,...V},...q}){const b=r.useContextDisabled(),[h,k,v,y,j,x]=l.useComputedValues([{key:"show",rawValue:u,defaultValue:!0},{key:"disabled",rawValue:o,defaultValue:!1},{key:"label",rawValue:d},{key:"tip",rawValue:m},{key:"required",rawValue:n,defaultValue:!1},{key:"width",rawValue:f,defaultValue:d?220:180}]),M=t.useMemo((()=>{if(j)return[{required:!0}]}),[j]),g=t.useMemo((()=>{if(!c)return{width:x}}),[c,x]);return h?e.jsx(s,{css:g,help:!1,label:v,name:a,preserve:!1,rules:M,tooltip:y,...q,children:e.jsx(i.default,{componentProps:V,disabled:b||k,label:v,name:a})}):null}),((e,r)=>a.isDeepEqual(a.omit(e,["item"]),a.omit(r,["item"]))));exports.default=o;
|
|
117
3
|
/*! VefFramework is a blazingly high-level, modern, flexible, easy-to-use UI framework made by Venus. Follow me on Github: https://github.com/ilxqx! @ilxqx */
|
package/lib/vef-filter/event.cjs
CHANGED
|
@@ -1,49 +1,3 @@
|
|
|
1
|
-
/*! VefFramework version: 1.0.
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
5
|
-
|
|
6
|
-
const shared = require('@vef-framework/shared');
|
|
7
|
-
|
|
8
|
-
var __typeError = (msg) => {
|
|
9
|
-
throw TypeError(msg);
|
|
10
|
-
};
|
|
11
|
-
var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
|
|
12
|
-
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
|
|
13
|
-
var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
|
|
14
|
-
var _emitter;
|
|
15
|
-
const changeEvent = Symbol("change");
|
|
16
|
-
const submitResultEvent = Symbol("submitResult");
|
|
17
|
-
class FilterEventBus {
|
|
18
|
-
constructor() {
|
|
19
|
-
/**
|
|
20
|
-
* The emitter.
|
|
21
|
-
*/
|
|
22
|
-
__privateAdd(this, _emitter, shared.createEventEmitter());
|
|
23
|
-
}
|
|
24
|
-
clear() {
|
|
25
|
-
__privateGet(this, _emitter).all.clear();
|
|
26
|
-
}
|
|
27
|
-
onChange(handler) {
|
|
28
|
-
__privateGet(this, _emitter).on(changeEvent, handler);
|
|
29
|
-
}
|
|
30
|
-
offChange(handler) {
|
|
31
|
-
__privateGet(this, _emitter).off(changeEvent, handler);
|
|
32
|
-
}
|
|
33
|
-
emitChange(value) {
|
|
34
|
-
__privateGet(this, _emitter).emit(changeEvent, value);
|
|
35
|
-
}
|
|
36
|
-
onSubmitResult(handler) {
|
|
37
|
-
__privateGet(this, _emitter).on(submitResultEvent, handler);
|
|
38
|
-
}
|
|
39
|
-
offSubmitResult(handler) {
|
|
40
|
-
__privateGet(this, _emitter).off(submitResultEvent, handler);
|
|
41
|
-
}
|
|
42
|
-
emitSubmitResult(value) {
|
|
43
|
-
__privateGet(this, _emitter).emit(submitResultEvent, value);
|
|
44
|
-
}
|
|
45
|
-
}
|
|
46
|
-
_emitter = new WeakMap();
|
|
47
|
-
|
|
48
|
-
exports.FilterEventBus = FilterEventBus;
|
|
1
|
+
/*! VefFramework version: 1.0.66, build time: 2025-01-10T02:50:16.681Z, made by Venus. */
|
|
2
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@vef-framework/shared");var t,__typeError=e=>{throw TypeError(e)},__privateGet=(e,t,a)=>(((e,t,a)=>{t.has(e)||__typeError("Cannot "+a)})(e,t,"read from private field"),a?a.call(e):t.get(e));const a=Symbol("change"),r=Symbol("submitResult");t=new WeakMap,exports.FilterEventBus=class FilterEventBus{constructor(){var a,r,s;a=this,r=t,s=e.createEventEmitter(),r.has(a)?__typeError("Cannot add the same private member more than once"):r instanceof WeakSet?r.add(a):r.set(a,s)}clear(){__privateGet(this,t).all.clear()}onChange(e){__privateGet(this,t).on(a,e)}offChange(e){__privateGet(this,t).off(a,e)}emitChange(e){__privateGet(this,t).emit(a,e)}onSubmitResult(e){__privateGet(this,t).on(r,e)}offSubmitResult(e){__privateGet(this,t).off(r,e)}emitSubmitResult(e){__privateGet(this,t).emit(r,e)}};
|
|
49
3
|
/*! VefFramework is a blazingly high-level, modern, flexible, easy-to-use UI framework made by Venus. Follow me on Github: https://github.com/ilxqx! @ilxqx */
|
|
@@ -1,20 +1,3 @@
|
|
|
1
|
-
/*! VefFramework version: 1.0.
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
5
|
-
|
|
6
|
-
const shared = require('@vef-framework/shared');
|
|
7
|
-
|
|
8
|
-
function computeValue(value, values, defaultValue) {
|
|
9
|
-
if (shared.isFunction(value)) {
|
|
10
|
-
return value(values);
|
|
11
|
-
}
|
|
12
|
-
if (shared.isExpression(value)) {
|
|
13
|
-
const fn = shared.compileDynamicFn(value, "values", `return ${value.expression}`);
|
|
14
|
-
return fn(values);
|
|
15
|
-
}
|
|
16
|
-
return value ?? defaultValue;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
exports.computeValue = computeValue;
|
|
1
|
+
/*! VefFramework version: 1.0.66, build time: 2025-01-10T02:50:16.681Z, made by Venus. */
|
|
2
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@vef-framework/shared");exports.computeValue=function computeValue(r,t,n){if(e.isFunction(r))return r(t);if(e.isExpression(r)){return e.compileDynamicFn(r,"values",`return ${r.expression}`)(t)}return r??n};
|
|
20
3
|
/*! VefFramework is a blazingly high-level, modern, flexible, easy-to-use UI framework made by Venus. Follow me on Github: https://github.com/ilxqx! @ilxqx */
|
|
@@ -1,75 +1,3 @@
|
|
|
1
|
-
/*! VefFramework version: 1.0.
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
5
|
-
|
|
6
|
-
const shared = require('@vef-framework/shared');
|
|
7
|
-
const react = require('react');
|
|
8
|
-
const store = require('../store.cjs');
|
|
9
|
-
|
|
10
|
-
function useActionHandlers({
|
|
11
|
-
onBeforeConfirm,
|
|
12
|
-
onConfirm,
|
|
13
|
-
onReset
|
|
14
|
-
}) {
|
|
15
|
-
const [
|
|
16
|
-
form,
|
|
17
|
-
eventBus,
|
|
18
|
-
getValues,
|
|
19
|
-
initialValues,
|
|
20
|
-
invokeValueChangeHandlers,
|
|
21
|
-
virtualFieldNames,
|
|
22
|
-
setIsLoading
|
|
23
|
-
] = store.useFilterStore((state) => [
|
|
24
|
-
state.form,
|
|
25
|
-
state.eventBus,
|
|
26
|
-
state.getValues,
|
|
27
|
-
state.initialValues,
|
|
28
|
-
state.invokeValueChangeHandlers,
|
|
29
|
-
state.virtualFieldNames,
|
|
30
|
-
state.setIsLoading
|
|
31
|
-
]);
|
|
32
|
-
const handleReset = react.useCallback(() => {
|
|
33
|
-
const values = getValues();
|
|
34
|
-
form.resetFields();
|
|
35
|
-
invokeValueChangeHandlers();
|
|
36
|
-
eventBus.emitChange(initialValues);
|
|
37
|
-
onReset?.(values);
|
|
38
|
-
}, [eventBus, form, getValues, initialValues, invokeValueChangeHandlers, onReset]);
|
|
39
|
-
const handleConfirm = react.useMemo(() => {
|
|
40
|
-
if (!shared.isFunction(onConfirm)) {
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
return async (values) => {
|
|
44
|
-
setIsLoading(true);
|
|
45
|
-
let valuesToUse = values;
|
|
46
|
-
try {
|
|
47
|
-
if (shared.isFunction(onBeforeConfirm)) {
|
|
48
|
-
valuesToUse = await onBeforeConfirm(valuesToUse);
|
|
49
|
-
}
|
|
50
|
-
const valuesToConfirm = shared.omit(valuesToUse, virtualFieldNames);
|
|
51
|
-
await onConfirm(valuesToConfirm);
|
|
52
|
-
eventBus.emitSubmitResult(true);
|
|
53
|
-
} catch (error) {
|
|
54
|
-
eventBus.emitSubmitResult(false);
|
|
55
|
-
throw error;
|
|
56
|
-
} finally {
|
|
57
|
-
setIsLoading(false);
|
|
58
|
-
}
|
|
59
|
-
};
|
|
60
|
-
}, [onBeforeConfirm, onConfirm, eventBus, setIsLoading, virtualFieldNames]);
|
|
61
|
-
const handleConfirmFailed = react.useCallback(({ errorFields }) => {
|
|
62
|
-
eventBus.emitSubmitResult(false);
|
|
63
|
-
if (errorFields.length > 0) {
|
|
64
|
-
shared.showWarningMessage(errorFields.flatMap((field) => field.errors).join(", "));
|
|
65
|
-
}
|
|
66
|
-
}, [eventBus]);
|
|
67
|
-
return {
|
|
68
|
-
handleReset,
|
|
69
|
-
handleConfirm,
|
|
70
|
-
handleConfirmFailed
|
|
71
|
-
};
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
exports.useActionHandlers = useActionHandlers;
|
|
1
|
+
/*! VefFramework version: 1.0.66, build time: 2025-01-10T02:50:16.681Z, made by Venus. */
|
|
2
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@vef-framework/shared"),t=require("react"),r=require("../store.cjs");exports.useActionHandlers=function useActionHandlers({onBeforeConfirm:i,onConfirm:n,onReset:s}){const[a,o,l,u,c,m,d]=r.useFilterStore((e=>[e.form,e.eventBus,e.getValues,e.initialValues,e.invokeValueChangeHandlers,e.virtualFieldNames,e.setIsLoading]));return{handleReset:t.useCallback((()=>{const e=l();a.resetFields(),c(),o.emitChange(u),s?.(e)}),[o,a,l,u,c,s]),handleConfirm:t.useMemo((()=>{if(e.isFunction(n))return async t=>{d(!0);let r=t;try{e.isFunction(i)&&(r=await i(r));const t=e.omit(r,m);await n(t),o.emitSubmitResult(!0)}catch(e){throw o.emitSubmitResult(!1),e}finally{d(!1)}}}),[i,n,o,d,m]),handleConfirmFailed:t.useCallback((({errorFields:t})=>{o.emitSubmitResult(!1),t.length>0&&e.showWarningMessage(t.flatMap((e=>e.errors)).join(", "))}),[o])}};
|
|
75
3
|
/*! VefFramework is a blazingly high-level, modern, flexible, easy-to-use UI framework made by Venus. Follow me on Github: https://github.com/ilxqx! @ilxqx */
|
|
@@ -1,60 +1,3 @@
|
|
|
1
|
-
/*! VefFramework version: 1.0.
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
5
|
-
|
|
6
|
-
const hooks = require('@vef-framework/hooks');
|
|
7
|
-
const shared = require('@vef-framework/shared');
|
|
8
|
-
const helper = require('../helper.cjs');
|
|
9
|
-
const store = require('../store.cjs');
|
|
10
|
-
|
|
11
|
-
function useComputedValues(values, returnAsObject = false) {
|
|
12
|
-
const [eventBus, getValues] = store.useFilterStore((state) => [state.eventBus, state.getValues]);
|
|
13
|
-
const forceUpdate = hooks.useUpdater();
|
|
14
|
-
const currentValues = getValues();
|
|
15
|
-
const computedValues = hooks.useDeepMemo(() => values.reduce((acc, it) => {
|
|
16
|
-
const {
|
|
17
|
-
key,
|
|
18
|
-
rawValue,
|
|
19
|
-
defaultValue
|
|
20
|
-
} = it;
|
|
21
|
-
const computedValue = helper.computeValue(rawValue, currentValues, defaultValue);
|
|
22
|
-
acc[key] = computedValue;
|
|
23
|
-
return acc;
|
|
24
|
-
}, {}), [currentValues, values]);
|
|
25
|
-
hooks.useDeepLayoutEffect(() => {
|
|
26
|
-
const realComputedValues = values.filter(({ rawValue }) => shared.isFunctionOrExpression(rawValue));
|
|
27
|
-
const shouldListenChangeEvent = realComputedValues.length > 0;
|
|
28
|
-
if (shouldListenChangeEvent) {
|
|
29
|
-
const handleChange = (newValues) => {
|
|
30
|
-
for (const value of realComputedValues) {
|
|
31
|
-
const {
|
|
32
|
-
key,
|
|
33
|
-
rawValue,
|
|
34
|
-
defaultValue
|
|
35
|
-
} = value;
|
|
36
|
-
const computedValue = computedValues[key];
|
|
37
|
-
const refreshedValue = helper.computeValue(rawValue, newValues, defaultValue);
|
|
38
|
-
if (!shared.isDeepEqual(refreshedValue, computedValue)) {
|
|
39
|
-
forceUpdate();
|
|
40
|
-
break;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
};
|
|
44
|
-
eventBus.onChange(handleChange);
|
|
45
|
-
return () => {
|
|
46
|
-
eventBus.offChange(handleChange);
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
}, [computedValues, eventBus, forceUpdate, values]);
|
|
50
|
-
if (returnAsObject) {
|
|
51
|
-
return values.reduce((acc, { key }) => {
|
|
52
|
-
acc[key] = computedValues[key];
|
|
53
|
-
return acc;
|
|
54
|
-
}, {});
|
|
55
|
-
}
|
|
56
|
-
return values.map(({ key }) => computedValues[key]);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
exports.useComputedValues = useComputedValues;
|
|
1
|
+
/*! VefFramework version: 1.0.66, build time: 2025-01-10T02:50:16.681Z, made by Venus. */
|
|
2
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@vef-framework/hooks"),r=require("@vef-framework/shared"),u=require("../helper.cjs"),t=require("../store.cjs");exports.useComputedValues=function useComputedValues(o,s=!1){const[a,n]=t.useFilterStore((e=>[e.eventBus,e.getValues])),l=e.useUpdater(),c=n(),f=e.useDeepMemo((()=>o.reduce(((e,r)=>{const{key:t,rawValue:o,defaultValue:s}=r,a=u.computeValue(o,c,s);return e[t]=a,e}),{})),[c,o]);return e.useDeepLayoutEffect((()=>{const e=o.filter((({rawValue:e})=>r.isFunctionOrExpression(e)));if(e.length>0){const handleChange=t=>{for(const o of e){const{key:e,rawValue:s,defaultValue:a}=o,n=f[e],c=u.computeValue(s,t,a);if(!r.isDeepEqual(c,n)){l();break}}};return a.onChange(handleChange),()=>{a.offChange(handleChange)}}}),[f,a,l,o]),s?o.reduce(((e,{key:r})=>(e[r]=f[r],e)),{}):o.map((({key:e})=>f[e]))};
|
|
60
3
|
/*! VefFramework is a blazingly high-level, modern, flexible, easy-to-use UI framework made by Venus. Follow me on Github: https://github.com/ilxqx! @ilxqx */
|
|
@@ -1,25 +1,3 @@
|
|
|
1
|
-
/*! VefFramework version: 1.0.
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
5
|
-
|
|
6
|
-
const shared = require('@vef-framework/shared');
|
|
7
|
-
|
|
8
|
-
const {
|
|
9
|
-
useContextSelector,
|
|
10
|
-
useContext,
|
|
11
|
-
ContextProvider: FilterContextProvider
|
|
12
|
-
} = shared.createSelectableContext({
|
|
13
|
-
labelPosition: "top",
|
|
14
|
-
labelAlign: "right",
|
|
15
|
-
externalLoading: false,
|
|
16
|
-
showCollapseButton: false,
|
|
17
|
-
handleReset: shared.noop
|
|
18
|
-
});
|
|
19
|
-
const useFilterContextSelector = useContextSelector;
|
|
20
|
-
const useFilterContext = useContext;
|
|
21
|
-
|
|
22
|
-
exports.FilterContextProvider = FilterContextProvider;
|
|
23
|
-
exports.useFilterContext = useFilterContext;
|
|
24
|
-
exports.useFilterContextSelector = useFilterContextSelector;
|
|
1
|
+
/*! VefFramework version: 1.0.66, build time: 2025-01-10T02:50:16.681Z, made by Venus. */
|
|
2
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@vef-framework/shared"),{useContextSelector:t,useContext:o,ContextProvider:r}=e.createSelectableContext({labelPosition:"top",labelAlign:"right",externalLoading:!1,showCollapseButton:!1,handleReset:e.noop}),l=t,n=o;exports.FilterContextProvider=r,exports.useFilterContext=n,exports.useFilterContextSelector=l;
|
|
25
3
|
/*! VefFramework is a blazingly high-level, modern, flexible, easy-to-use UI framework made by Venus. Follow me on Github: https://github.com/ilxqx! @ilxqx */
|
|
@@ -1,42 +1,3 @@
|
|
|
1
|
-
/*! VefFramework version: 1.0.
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
5
|
-
|
|
6
|
-
const shared = require('@vef-framework/shared');
|
|
7
|
-
const react = require('react');
|
|
8
|
-
|
|
9
|
-
function useFilterInitialization(schema, initialValues) {
|
|
10
|
-
return react.useMemo(() => {
|
|
11
|
-
const mergedInitialValues = {
|
|
12
|
-
...initialValues
|
|
13
|
-
};
|
|
14
|
-
const valueChangeHandlers = {};
|
|
15
|
-
const virtualFieldNames = [];
|
|
16
|
-
for (const item of schema) {
|
|
17
|
-
const {
|
|
18
|
-
name,
|
|
19
|
-
onChange,
|
|
20
|
-
defaultValue,
|
|
21
|
-
virtual
|
|
22
|
-
} = item;
|
|
23
|
-
if (!shared.isNullish(defaultValue) && shared.isNullish(mergedInitialValues[name])) {
|
|
24
|
-
mergedInitialValues[name] = defaultValue;
|
|
25
|
-
}
|
|
26
|
-
if (shared.isFunction(onChange)) {
|
|
27
|
-
valueChangeHandlers[name] = onChange;
|
|
28
|
-
}
|
|
29
|
-
if (virtual === true) {
|
|
30
|
-
virtualFieldNames.push(name);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
return {
|
|
34
|
-
mergedInitialValues,
|
|
35
|
-
valueChangeHandlers,
|
|
36
|
-
virtualFieldNames
|
|
37
|
-
};
|
|
38
|
-
}, []);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
exports.useFilterInitialization = useFilterInitialization;
|
|
1
|
+
/*! VefFramework version: 1.0.66, build time: 2025-01-10T02:50:16.681Z, made by Venus. */
|
|
2
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@vef-framework/shared"),i=require("react");exports.useFilterInitialization=function useFilterInitialization(t,r){return i.useMemo((()=>{const i={...r},n={},a=[];for(const r of t){const{name:t,onChange:s,defaultValue:u,virtual:l}=r;!e.isNullish(u)&&e.isNullish(i[t])&&(i[t]=u),e.isFunction(s)&&(n[t]=s),!0===l&&a.push(t)}return{mergedInitialValues:i,valueChangeHandlers:n,virtualFieldNames:a}}),[])};
|
|
42
3
|
/*! VefFramework is a blazingly high-level, modern, flexible, easy-to-use UI framework made by Venus. Follow me on Github: https://github.com/ilxqx! @ilxqx */
|
|
@@ -1,31 +1,3 @@
|
|
|
1
|
-
/*! VefFramework version: 1.0.
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
5
|
-
|
|
6
|
-
const react = require('react');
|
|
7
|
-
const store = require('../store.cjs');
|
|
8
|
-
|
|
9
|
-
function useFilterInstance(ref, reset) {
|
|
10
|
-
const [form, eventBus, getValues, setValues] = store.useFilterStore((state) => [state.form, state.eventBus, state.getValues, state.setValues]);
|
|
11
|
-
react.useImperativeHandle(ref, () => ({
|
|
12
|
-
confirm: () => new Promise((resolve, reject) => {
|
|
13
|
-
const handleResult = (result) => {
|
|
14
|
-
eventBus.offSubmitResult(handleResult);
|
|
15
|
-
if (result) {
|
|
16
|
-
resolve();
|
|
17
|
-
} else {
|
|
18
|
-
reject(result);
|
|
19
|
-
}
|
|
20
|
-
};
|
|
21
|
-
eventBus.onSubmitResult(handleResult);
|
|
22
|
-
form.submit();
|
|
23
|
-
}),
|
|
24
|
-
reset,
|
|
25
|
-
getValues,
|
|
26
|
-
setValues
|
|
27
|
-
}));
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
exports.useFilterInstance = useFilterInstance;
|
|
1
|
+
/*! VefFramework version: 1.0.66, build time: 2025-01-10T02:50:16.681Z, made by Venus. */
|
|
2
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react"),t=require("../store.cjs");exports.useFilterInstance=function useFilterInstance(s,r){const[u,o,n,i]=t.useFilterStore((e=>[e.form,e.eventBus,e.getValues,e.setValues]));e.useImperativeHandle(s,(()=>({confirm:()=>new Promise(((e,t)=>{const handleResult=s=>{o.offSubmitResult(handleResult),s?e():t(s)};o.onSubmitResult(handleResult),u.submit()})),reset:r,getValues:n,setValues:i})))};
|
|
31
3
|
/*! VefFramework is a blazingly high-level, modern, flexible, easy-to-use UI framework made by Venus. Follow me on Github: https://github.com/ilxqx! @ilxqx */
|
|
@@ -1,28 +1,3 @@
|
|
|
1
|
-
/*! VefFramework version: 1.0.
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
5
|
-
|
|
6
|
-
const react = require('react');
|
|
7
|
-
|
|
8
|
-
function useFilterItems(schema) {
|
|
9
|
-
return react.useMemo(() => {
|
|
10
|
-
const basicItems = [];
|
|
11
|
-
const advancedItems = [];
|
|
12
|
-
for (const item of schema) {
|
|
13
|
-
const { advanced = false } = item;
|
|
14
|
-
if (advanced) {
|
|
15
|
-
advancedItems.push(item);
|
|
16
|
-
} else {
|
|
17
|
-
basicItems.push(item);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
return {
|
|
21
|
-
basicItems,
|
|
22
|
-
advancedItems
|
|
23
|
-
};
|
|
24
|
-
}, []);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
exports.useFilterItems = useFilterItems;
|
|
1
|
+
/*! VefFramework version: 1.0.66, build time: 2025-01-10T02:50:16.681Z, made by Venus. */
|
|
2
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react");exports.useFilterItems=function useFilterItems(t){return e.useMemo((()=>{const e=[],s=[];for(const r of t){const{advanced:t=!1}=r;t?s.push(r):e.push(r)}return{basicItems:e,advancedItems:s}}),[])};
|
|
28
3
|
/*! VefFramework is a blazingly high-level, modern, flexible, easy-to-use UI framework made by Venus. Follow me on Github: https://github.com/ilxqx! @ilxqx */
|
|
@@ -1,35 +1,3 @@
|
|
|
1
|
-
/*! VefFramework version: 1.0.
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
5
|
-
|
|
6
|
-
const shared = require('@vef-framework/shared');
|
|
7
|
-
const react = require('react');
|
|
8
|
-
const store = require('../store.cjs');
|
|
9
|
-
|
|
10
|
-
function useFilterValuesChange(onChange) {
|
|
11
|
-
const [eventBus, invokeValueChangeHandlers] = store.useFilterStore((state) => [state.eventBus, state.invokeValueChangeHandlers]);
|
|
12
|
-
const handleValuesChange = react.useMemo(() => (_, values) => {
|
|
13
|
-
eventBus.emitChange(values);
|
|
14
|
-
}, [eventBus]);
|
|
15
|
-
react.useEffect(() => {
|
|
16
|
-
if (shared.isFunction(onChange)) {
|
|
17
|
-
const handleChange = (values) => {
|
|
18
|
-
onChange(values);
|
|
19
|
-
};
|
|
20
|
-
eventBus.onChange(handleChange);
|
|
21
|
-
return () => {
|
|
22
|
-
eventBus.offChange(handleChange);
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
}, [eventBus, onChange]);
|
|
26
|
-
react.useLayoutEffect(() => {
|
|
27
|
-
invokeValueChangeHandlers();
|
|
28
|
-
}, []);
|
|
29
|
-
return {
|
|
30
|
-
handleValuesChange
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
exports.useFilterValuesChange = useFilterValuesChange;
|
|
1
|
+
/*! VefFramework version: 1.0.66, build time: 2025-01-10T02:50:16.681Z, made by Venus. */
|
|
2
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@vef-framework/shared"),r=require("react"),t=require("../store.cjs");exports.useFilterValuesChange=function useFilterValuesChange(n){const[s,u]=t.useFilterStore((e=>[e.eventBus,e.invokeValueChangeHandlers])),a=r.useMemo((()=>(e,r)=>{s.emitChange(r)}),[s]);return r.useEffect((()=>{if(e.isFunction(n)){const handleChange=e=>{n(e)};return s.onChange(handleChange),()=>{s.offChange(handleChange)}}}),[s,n]),r.useLayoutEffect((()=>{u()}),[]),{handleValuesChange:a}};
|
|
35
3
|
/*! VefFramework is a blazingly high-level, modern, flexible, easy-to-use UI framework made by Venus. Follow me on Github: https://github.com/ilxqx! @ilxqx */
|
|
@@ -1,32 +1,3 @@
|
|
|
1
|
-
/*! VefFramework version: 1.0.
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
5
|
-
|
|
6
|
-
const shared = require('@vef-framework/shared');
|
|
7
|
-
const react = require('react');
|
|
8
|
-
|
|
9
|
-
function useLabelConfig(labelPosition, labelWidth) {
|
|
10
|
-
const labelWidthToUse = react.useMemo(() => {
|
|
11
|
-
if (labelPosition === "top" || !labelWidth) {
|
|
12
|
-
return;
|
|
13
|
-
}
|
|
14
|
-
if (labelWidth < 60 || labelWidth > 120) {
|
|
15
|
-
shared.showWarningMessage("The labelWidth of VefFilter component must be between 60 and 120, otherwise it will be 60 or 120.");
|
|
16
|
-
}
|
|
17
|
-
return Math.min(Math.max(labelWidth, 60), 120);
|
|
18
|
-
}, [labelPosition, labelWidth]);
|
|
19
|
-
const labelCol = react.useMemo(() => {
|
|
20
|
-
if (!labelWidthToUse) {
|
|
21
|
-
return;
|
|
22
|
-
}
|
|
23
|
-
return { flex: `0 0 ${labelWidthToUse}px` };
|
|
24
|
-
}, [labelWidthToUse]);
|
|
25
|
-
return {
|
|
26
|
-
labelCol,
|
|
27
|
-
labelWidthToUse
|
|
28
|
-
};
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
exports.useLabelConfig = useLabelConfig;
|
|
1
|
+
/*! VefFramework version: 1.0.66, build time: 2025-01-10T02:50:16.681Z, made by Venus. */
|
|
2
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("@vef-framework/shared"),t=require("react");exports.useLabelConfig=function useLabelConfig(r,o){const i=t.useMemo((()=>{if("top"!==r&&o)return(o<60||o>120)&&e.showWarningMessage("The labelWidth of VefFilter component must be between 60 and 120, otherwise it will be 60 or 120."),Math.min(Math.max(o,60),120)}),[r,o]);return{labelCol:t.useMemo((()=>{if(i)return{flex:`0 0 ${i}px`}}),[i]),labelWidthToUse:i}};
|
|
32
3
|
/*! VefFramework is a blazingly high-level, modern, flexible, easy-to-use UI framework made by Venus. Follow me on Github: https://github.com/ilxqx! @ilxqx */
|