bitboss-ui 3.0.0-beta.63 → 3.0.0-beta.65
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/README.md +25 -20
- package/bin/bitboss-ui.mjs +73 -7
- package/dist/ai/BbAlert.md +10 -1
- package/dist/ai/BbBadge.md +35 -3
- package/dist/ai/BbBadgeButton.md +4 -2
- package/dist/ai/BbBaseButton.md +9 -3
- package/dist/ai/BbBreadcrumbs.md +2 -2
- package/dist/ai/BbButton.md +113 -8
- package/dist/ai/BbCheckbox.md +1 -1
- package/dist/ai/BbCheckboxGroup.md +94 -6
- package/dist/ai/BbColorInput.md +4 -1
- package/dist/ai/BbColorPalette.md +2 -1
- package/dist/ai/BbConfirm.md +7 -3
- package/dist/ai/BbDatePicker.md +2 -1
- package/dist/ai/BbDatePickerInput.md +4 -1
- package/dist/ai/BbDialog.md +12 -11
- package/dist/ai/BbDropdown.md +189 -38
- package/dist/ai/BbDropdownButton.md +27 -7
- package/dist/ai/BbForm.md +55 -22
- package/dist/ai/BbHost.md +2 -2
- package/dist/ai/BbHoverCard.md +7 -3
- package/dist/ai/BbIcon.md +12 -6
- package/dist/ai/BbIndicator.md +11 -1
- package/dist/ai/BbNumberInput.md +4 -1
- package/dist/ai/BbOffCanvas.md +37 -3
- package/dist/ai/BbPopover.md +2 -1
- package/dist/ai/BbRadio.md +1 -1
- package/dist/ai/BbRadioGroup.md +102 -10
- package/dist/ai/BbSelect.md +52 -17
- package/dist/ai/BbSelectPopover.md +93 -26
- package/dist/ai/BbSwitch.md +1 -1
- package/dist/ai/BbSwitchGroup.md +30 -3
- package/dist/ai/BbTable.md +17 -10
- package/dist/ai/BbTabs.md +8 -3
- package/dist/ai/BbTabsList.md +4 -1
- package/dist/ai/BbTag.md +5 -2
- package/dist/ai/BbTextInput.md +4 -1
- package/dist/ai/BbTextarea.md +4 -1
- package/dist/ai/BbTimePicker.md +2 -1
- package/dist/ai/BbTimePickerInput.md +4 -1
- package/dist/ai/BbToast.md +9 -3
- package/dist/ai/BbTooltip.md +71 -9
- package/dist/ai/ChipsBox.md +1 -1
- package/dist/ai/CommonField.md +1 -1
- package/dist/ai/OptionsContainer.md +42 -0
- package/dist/ai/changelog.json +494 -6
- package/dist/ai/components.json +50 -48
- package/dist/ai/composables/useBbConfig.md +8 -1
- package/dist/ai/composables/useConfirm.md +39 -1
- package/dist/ai/design-tokens.json +6 -6
- package/dist/ai/guides/agent-contract.md +2 -2
- package/dist/ai/guides/ai-router.md +24 -23
- package/dist/ai/guides/app-layout.md +5 -0
- package/dist/ai/guides/component-picker.md +9 -2
- package/dist/ai/guides/design-language.md +24 -24
- package/dist/ai/guides/design-tokens.md +15 -8
- package/dist/ai/guides/icons-policy.md +9 -2
- package/dist/ai/guides/inertia-helpers.md +1183 -301
- package/dist/ai/guides/installation-and-plugin-setup.md +12 -2
- package/dist/ai/guides/migration/adoption-checklist.md +235 -0
- package/dist/ai/guides/migration/components/bb-checkbox-group.md +16 -15
- package/dist/ai/guides/migration/components/bb-dialog.md +9 -9
- package/dist/ai/guides/migration/components/bb-dropdown.md +7 -2
- package/dist/ai/guides/migration/components/bb-popover.md +4 -2
- package/dist/ai/guides/migration/components/bb-select.md +19 -0
- package/dist/ai/guides/migration/components/bb-table.md +1 -0
- package/dist/ai/guides/migration/components/bb-toast.md +4 -0
- package/dist/ai/guides/migration/components/bb-tooltip.md +15 -12
- package/dist/ai/guides/migration/components/use-confirm.md +25 -2
- package/dist/ai/guides/migration/v2-to-v3.md +211 -9
- package/dist/ai/guides/migration/v3-beta-css-classes.md +7 -3
- package/dist/ai/guides/options-items-playbook.md +2 -1
- package/dist/ai/guides/passthrough.md +149 -85
- package/dist/ai/guides/preset-components.md +140 -15
- package/dist/ai/helpers/definePreset.json +7 -0
- package/dist/ai/helpers/definePreset.ts +123 -11
- package/dist/ai/helpers/inertia/manifest.json +151 -62
- package/dist/ai/helpers/inertia/messages.ts +33 -0
- package/dist/ai/helpers/inertia/useConfirmOnRouteLeave.ts +120 -20
- package/dist/ai/helpers/inertia/useHasChanged.ts +34 -16
- package/dist/ai/helpers/inertia/useLazyProp.ts +102 -36
- package/dist/ai/helpers/inertia/useLazyPropGetter.ts +3 -1
- package/dist/ai/helpers/inertia/usePaginatedResponseContext.ts +154 -34
- package/dist/ai/helpers/inertia/usePromiseForm.ts +121 -14
- package/dist/ai/helpers/inertia/useQuery.ts +133 -11
- package/dist/ai/helpers/inertia/useQueryObject.ts +74 -67
- package/dist/ai/helpers/inertia/useResourceContext.ts +60 -14
- package/dist/ai/helpers/inertia/useRouteQuery.ts +38 -27
- package/dist/ai/helpers/inertia/useScreenSizes.ts +9 -7
- package/dist/ai/helpers/inertia/useTableContext.ts +5 -2
- package/dist/ai/helpers/inertia/utils.ts +14 -0
- package/dist/ai/index.md +1 -0
- package/dist/ai/manifest/common.json +0 -1
- package/dist/ai/manifest/components/BbAlert.json +7 -2
- package/dist/ai/manifest/components/BbBadge.json +13 -4
- package/dist/ai/manifest/components/BbBadge.tree.json +2 -0
- package/dist/ai/manifest/components/BbBadgeButton.json +4 -2
- package/dist/ai/manifest/components/BbBaseButton.json +4 -2
- package/dist/ai/manifest/components/BbBreadcrumbs.tree.json +1 -1
- package/dist/ai/manifest/components/BbButton.json +14 -3
- package/dist/ai/manifest/components/BbButton.tree.json +5 -1
- package/dist/ai/manifest/components/BbCheckboxGroup.json +13 -8
- package/dist/ai/manifest/components/BbCheckboxGroup.tree.json +11 -1
- package/dist/ai/manifest/components/BbColorInput.json +18 -15
- package/dist/ai/manifest/components/BbColorPalette.json +1 -1
- package/dist/ai/manifest/components/BbConfirm.json +4 -2
- package/dist/ai/manifest/components/BbConfirm.tree.json +1 -1
- package/dist/ai/manifest/components/BbDatePicker.json +1 -1
- package/dist/ai/manifest/components/BbDatePickerInput.json +17 -14
- package/dist/ai/manifest/components/BbDialog.tree.json +2 -1
- package/dist/ai/manifest/components/BbDropdown.json +24 -19
- package/dist/ai/manifest/components/BbDropdown.tree.json +9 -2
- package/dist/ai/manifest/components/BbDropdownButton.json +33 -20
- package/dist/ai/manifest/components/BbDropdownButton.tree.json +2 -2
- package/dist/ai/manifest/components/BbForm.json +2 -2
- package/dist/ai/manifest/components/BbHost.tree.json +1 -1
- package/dist/ai/manifest/components/BbHoverCard.json +1 -1
- package/dist/ai/manifest/components/BbIndicator.json +8 -2
- package/dist/ai/manifest/components/BbNumberInput.json +5 -2
- package/dist/ai/manifest/components/BbOffCanvas.json +2 -2
- package/dist/ai/manifest/components/BbOffCanvas.tree.json +1 -1
- package/dist/ai/manifest/components/BbPopover.json +1 -1
- package/dist/ai/manifest/components/BbRadioGroup.json +17 -12
- package/dist/ai/manifest/components/BbRadioGroup.tree.json +8 -1
- package/dist/ai/manifest/components/BbSelect.json +21 -18
- package/dist/ai/manifest/components/BbSelect.tree.json +2 -2
- package/dist/ai/manifest/components/BbSelectPopover.json +10 -10
- package/dist/ai/manifest/components/BbSelectPopover.tree.json +3 -2
- package/dist/ai/manifest/components/BbSwitchGroup.json +1 -1
- package/dist/ai/manifest/components/BbSwitchGroup.tree.json +3 -1
- package/dist/ai/manifest/components/BbTable.tree.json +14 -1
- package/dist/ai/manifest/components/BbTabs.json +9 -6
- package/dist/ai/manifest/components/BbTabs.tree.json +1 -1
- package/dist/ai/manifest/components/BbTabsList.json +6 -3
- package/dist/ai/manifest/components/BbTag.json +19 -16
- package/dist/ai/manifest/components/BbTag.tree.json +1 -1
- package/dist/ai/manifest/components/BbTextInput.json +6 -3
- package/dist/ai/manifest/components/BbTextarea.json +6 -3
- package/dist/ai/manifest/components/BbTimePicker.json +1 -1
- package/dist/ai/manifest/components/BbTimePickerInput.json +10 -7
- package/dist/ai/manifest/components/BbToast.json +7 -2
- package/dist/ai/manifest/components/BbToast.tree.json +4 -2
- package/dist/ai/manifest/components/BbTooltip.json +6 -5
- package/dist/ai/manifest/components/ChipsBox.tree.json +1 -1
- package/dist/ai/manifest/components/CommonField.json +1 -1
- package/dist/ai/manifest/components/OptionsContainer.json +3 -1
- package/dist/ai/manifest/components/OptionsContainer.tree.json +38 -0
- package/dist/ai/manifest/index.json +3 -3
- package/dist/ai/manifest/meta.json +5 -3
- package/dist/ai/manifest/types.advanced.json +5 -2
- package/dist/ai/manifest/types.api.json +9 -7
- package/dist/ai/recipes/inertia/approvals-inbox.md +1 -1
- package/dist/ai/recipes/inertia/inline-edit-workspace.md +1 -1
- package/dist/ai/recipes/inertia/layout-scaffold.md +19 -6
- package/dist/ai/recipes/inertia/ownership-atlas.md +1 -1
- package/dist/ai/recipes/inertia/records-workspace.md +50 -14
- package/dist/ai/recipes/inertia/upload-center.md +1 -1
- package/dist/ai/recipes/nuxt/layout-scaffold.md +19 -6
- package/dist/ai/recipes/nuxt/records-workspace.md +42 -12
- package/dist/ai/recipes/vue/layout-scaffold.md +19 -6
- package/dist/ai/recipes/vue/records-workspace.md +42 -12
- package/dist/ai/source/BbAlert.md +94 -76
- package/dist/ai/source/BbBadge.md +174 -72
- package/dist/ai/source/BbBadgeButton.md +130 -65
- package/dist/ai/source/BbBaseButton.md +46 -124
- package/dist/ai/source/BbBaseCheckboxIcon.md +38 -0
- package/dist/ai/source/BbBaseRadioIcon.md +18 -0
- package/dist/ai/source/BbBaseSwitchIcon.md +51 -0
- package/dist/ai/source/BbButton.md +153 -36
- package/dist/ai/source/BbCheckboxGroup.md +142 -18
- package/dist/ai/source/BbColorInput.md +240 -204
- package/dist/ai/source/BbColorPalette.md +7 -4
- package/dist/ai/source/BbConfirm.md +34 -11
- package/dist/ai/source/BbConfirmPortal.md +24 -9
- package/dist/ai/source/BbDatePicker.md +11 -7
- package/dist/ai/source/BbDatePickerInput.md +306 -269
- package/dist/ai/source/BbDialog.md +49 -14
- package/dist/ai/source/BbDropdown.md +314 -197
- package/dist/ai/source/BbDropdownButton.md +197 -31
- package/dist/ai/source/BbDropdownGroup.md +274 -176
- package/dist/ai/source/BbForm.md +50 -6
- package/dist/ai/source/BbHoverCard.md +12 -5
- package/dist/ai/source/BbIcon.md +4 -3
- package/dist/ai/source/BbIndicator.md +73 -52
- package/dist/ai/source/BbNumberInput.md +293 -257
- package/dist/ai/source/BbOffCanvas.md +55 -29
- package/dist/ai/source/BbPopover.md +14 -10
- package/dist/ai/source/BbRadioGroup.md +413 -297
- package/dist/ai/source/BbSelect.md +549 -435
- package/dist/ai/source/BbSelectPopover.md +153 -34
- package/dist/ai/source/BbSwitchGroup.md +70 -10
- package/dist/ai/source/BbTable.md +369 -37
- package/dist/ai/source/BbTabs.md +115 -39
- package/dist/ai/source/BbTabsList.md +106 -38
- package/dist/ai/source/BbTabsPanels.md +96 -36
- package/dist/ai/source/BbTabsRoot.md +96 -36
- package/dist/ai/source/BbTag.md +267 -233
- package/dist/ai/source/BbTextInput.md +261 -225
- package/dist/ai/source/BbTextarea.md +251 -215
- package/dist/ai/source/BbTimePicker.md +11 -7
- package/dist/ai/source/BbTimePickerInput.md +257 -220
- package/dist/ai/source/BbToast.md +73 -32
- package/dist/ai/source/BbToastPortal.md +65 -30
- package/dist/ai/source/BbTooltip.md +148 -113
- package/dist/ai/source/CommonPopover.md +6 -1
- package/dist/ai/source/FlatListBox.md +19 -9
- package/dist/ai/source/GroupedListBox.md +19 -9
- package/dist/ai/source/OptionsContainer.md +25 -9
- package/dist/components/BbAlert/BbAlert.vue_vue_type_script_setup_true_lang.js +61 -36
- package/dist/components/BbAlert/types.d.ts +9 -5
- package/dist/components/BbAlert/types.js +8 -3
- package/dist/components/BbBadge/BadgeBodyContent.vue.d.ts +3 -3
- package/dist/components/BbBadge/BadgeBodyContent.vue_vue_type_script_setup_true_lang.js +26 -17
- package/dist/components/BbBadge/BbBadge.vue_vue_type_script_setup_true_lang.js +103 -50
- package/dist/components/BbBadge/BbBadgeButton.vue_vue_type_script_setup_true_lang.js +20 -15
- package/dist/components/BbBadge/badgeButtonContext.d.ts +12 -1
- package/dist/components/BbBadge/types.d.ts +45 -15
- package/dist/components/BbBadge/types.js +12 -3
- package/dist/components/BbBaseButton/BbBaseButton.vue_vue_type_script_setup_true_lang.js +89 -126
- package/dist/components/BbBaseButton/types.d.ts +23 -4
- package/dist/components/BbBaseButton/types.js +7 -1
- package/dist/components/BbBaseButton/useLinkState.d.ts +41 -0
- package/dist/components/BbBaseButton/useLinkState.js +70 -0
- package/dist/components/BbButton/BbButton.vue_vue_type_script_setup_true_lang.js +130 -74
- package/dist/components/BbButton/types.d.ts +50 -13
- package/dist/components/BbButton/types.js +10 -3
- package/dist/components/BbCheckboxGroup/BbCheckboxGroup.vue_vue_type_script_setup_true_lang.js +148 -95
- package/dist/components/BbCheckboxGroup/types.d.ts +34 -11
- package/dist/components/BbCheckboxGroup/types.js +9 -4
- package/dist/components/BbCollapsible/BbCollapsible.vue.d.ts +1 -1
- package/dist/components/BbColorInput/BbColorInput.vue_vue_type_script_setup_true_lang.js +134 -93
- package/dist/components/BbColorInput/types.d.ts +11 -4
- package/dist/components/BbColorInput/types.js +9 -3
- package/dist/components/BbConfirm/BbConfirm.vue_vue_type_script_setup_true_lang.js +82 -59
- package/dist/components/BbConfirm/types.d.ts +9 -4
- package/dist/components/BbConfirm/types.js +8 -3
- package/dist/components/BbDatePicker/BbDatePicker.vue.d.ts +1 -1
- package/dist/components/BbDatePicker/BbDatePicker.vue_vue_type_script_setup_true_lang.js +68 -67
- package/dist/components/BbDatePickerInput/BbDatePickerInput.vue.d.ts +1 -1
- package/dist/components/BbDatePickerInput/BbDatePickerInput.vue_vue_type_script_setup_true_lang.js +259 -215
- package/dist/components/BbDatePickerInput/types.d.ts +12 -5
- package/dist/components/BbDatePickerInput/types.js +9 -3
- package/dist/components/BbDialog/BbDialog.vue_vue_type_script_setup_true_lang.js +223 -219
- package/dist/components/BbDialog/useDialogStack.d.ts +1 -1
- package/dist/components/BbDropdown/AdaptiveDropdown.vue_vue_type_script_setup_true_lang.js +104 -89
- package/dist/components/BbDropdown/BbDropdown.vue.d.ts +1 -0
- package/dist/components/BbDropdown/BbDropdown.vue_vue_type_script_setup_true_lang.js +323 -285
- package/dist/components/BbDropdown/BbDropdownList.vue.d.ts +1 -0
- package/dist/components/BbDropdown/BbDropdownList.vue_vue_type_script_setup_true_lang.js +411 -319
- package/dist/components/BbDropdown/DropdownPipelineResolver.vue_vue_type_script_setup_true_lang.js +100 -98
- package/dist/components/BbDropdown/DropdownRow.vue.d.ts +4 -3
- package/dist/components/BbDropdown/DropdownRow.vue_vue_type_script_setup_true_lang.js +49 -28
- package/dist/components/BbDropdown/normalizeGroups.d.ts +6 -0
- package/dist/components/BbDropdown/normalizeGroups.js +21 -15
- package/dist/components/BbDropdown/types.d.ts +59 -12
- package/dist/components/BbDropdown/types.js +16 -3
- package/dist/components/BbDropdown/useDropdownContext.d.ts +6 -0
- package/dist/components/BbDropdownButton/BbDropdownButton.vue.d.ts +2 -1
- package/dist/components/BbDropdownButton/BbDropdownButton.vue_vue_type_script_setup_true_lang.js +179 -68
- package/dist/components/BbDropdownButton/types.d.ts +44 -16
- package/dist/components/BbDropdownButton/types.js +28 -3
- package/dist/components/BbForm/BbForm.vue_vue_type_script_setup_true_lang.js +111 -89
- package/dist/components/BbForm/formSchema.d.ts +13 -0
- package/dist/components/BbHoverCard/BbHoverCard.vue_vue_type_script_setup_true_lang.js +100 -100
- package/dist/components/BbIndicator/BbIndicator.vue_vue_type_script_setup_true_lang.js +40 -25
- package/dist/components/BbIndicator/types.d.ts +9 -5
- package/dist/components/BbIndicator/types.js +8 -3
- package/dist/components/BbNumberInput/BbNumberInput.vue_vue_type_script_setup_true_lang.js +243 -202
- package/dist/components/BbNumberInput/types.d.ts +12 -5
- package/dist/components/BbNumberInput/types.js +9 -3
- package/dist/components/BbOffCanvas/BbOffCanvas.vue.d.ts +1 -1
- package/dist/components/BbOffCanvas/BbOffCanvas.vue_vue_type_script_setup_true_lang.js +401 -399
- package/dist/components/BbOffCanvas/types.d.ts +6 -2
- package/dist/components/BbPopover/BbPopover.vue_vue_type_script_setup_true_lang.js +81 -80
- package/dist/components/BbRadioGroup/BbRadioGroup.vue_vue_type_script_setup_true_lang.js +158 -105
- package/dist/components/BbRadioGroup/types.d.ts +21 -7
- package/dist/components/BbRadioGroup/types.js +9 -4
- package/dist/components/BbSelect/BbSelect.vue.d.ts +4 -3
- package/dist/components/BbSelect/BbSelect.vue_vue_type_script_setup_true_lang.js +181 -137
- package/dist/components/BbSelect/types.d.ts +36 -22
- package/dist/components/BbSelect/types.js +22 -3
- package/dist/components/BbSelectPopover/BbSelectPopover.vue.d.ts +4 -4
- package/dist/components/BbSelectPopover/BbSelectPopover.vue_vue_type_script_setup_true_lang.js +600 -577
- package/dist/components/BbSelectPopover/knownItems.d.ts +5 -0
- package/dist/components/BbSelectPopover/types.d.ts +46 -12
- package/dist/components/BbSmoothHeight/BbSmoothHeight.vue.d.ts +1 -1
- package/dist/components/BbSwitchGroup/BbSwitchGroup.vue_vue_type_script_setup_true_lang.js +2 -2
- package/dist/components/BbSwitchGroup/types.d.ts +14 -4
- package/dist/components/BbSwitchGroup/types.js +8 -3
- package/dist/components/BbTable/BbTable.vue_vue_type_script_setup_true_lang.js +1102 -995
- package/dist/components/BbTable/estimatedFloors.golden.d.ts +25 -0
- package/dist/components/BbTable/measuredFloors.d.ts +46 -0
- package/dist/components/BbTable/measuredFloors.js +322 -0
- package/dist/components/BbTable/measuredFloorsTestKit.d.ts +27 -0
- package/dist/components/BbTable/textRuler.d.ts +71 -0
- package/dist/components/BbTable/textRuler.js +121 -0
- package/dist/components/BbTable/utils.d.ts +113 -6
- package/dist/components/BbTable/utils.js +118 -65
- package/dist/components/BbTabs/BbTabs.vue_vue_type_script_setup_true_lang.js +53 -35
- package/dist/components/BbTabs/BbTabsList.vue_vue_type_script_setup_true_lang.js +62 -45
- package/dist/components/BbTabs/types.d.ts +26 -11
- package/dist/components/BbTabs/types.js +23 -8
- package/dist/components/BbTag/BbTag.vue_vue_type_script_setup_true_lang.js +205 -164
- package/dist/components/BbTag/types.d.ts +11 -4
- package/dist/components/BbTag/types.js +9 -3
- package/dist/components/BbTextInput/BbTextInput.vue_vue_type_script_setup_true_lang.js +98 -57
- package/dist/components/BbTextInput/types.d.ts +12 -5
- package/dist/components/BbTextInput/types.js +9 -3
- package/dist/components/BbTextarea/BbTextarea.vue_vue_type_script_setup_true_lang.js +137 -96
- package/dist/components/BbTextarea/types.d.ts +12 -5
- package/dist/components/BbTextarea/types.js +9 -3
- package/dist/components/BbTimePicker/BbTimePicker.vue_vue_type_script_setup_true_lang.js +105 -104
- package/dist/components/BbTimePickerInput/BbTimePickerInput.vue_vue_type_script_setup_true_lang.js +241 -197
- package/dist/components/BbTimePickerInput/types.d.ts +12 -5
- package/dist/components/BbTimePickerInput/types.js +9 -3
- package/dist/components/BbToast/BbToast.vue_vue_type_script_setup_true_lang.js +74 -32
- package/dist/components/BbToast/BbToastMessage.vue_vue_type_script_setup_true_lang.js +47 -47
- package/dist/components/BbToast/types.d.ts +10 -5
- package/dist/components/BbToast/types.js +18 -3
- package/dist/components/BbTooltip/BbTooltip.vue_vue_type_script_setup_true_lang.js +85 -71
- package/dist/components/BbTooltip/types.d.ts +13 -8
- package/dist/components/BbTooltip/types.js +8 -3
- package/dist/components/CommonField/CommonField.vue.d.ts +1 -1
- package/dist/components/CommonPopover/CommonPopover.vue.d.ts +1 -1
- package/dist/components/CommonPopover/CommonPopover.vue_vue_type_script_setup_true_lang.js +69 -69
- package/dist/components/FlatListBox/FlatListBox.vue_vue_type_script_setup_true_lang.js +53 -50
- package/dist/components/GroupedListBox/GroupedListBox.vue_vue_type_script_setup_true_lang.js +146 -143
- package/dist/components/OptionsContainer/OptionsContainer.vue_vue_type_script_setup_true_lang.js +7 -2
- package/dist/components/OptionsContainer/types.d.ts +14 -3
- package/dist/composables/useBbConfig.d.ts +1 -0
- package/dist/composables/useBbConfig.js +11 -7
- package/dist/composables/useBbFormContext.d.ts +4 -3
- package/dist/composables/useBbTabsContext.js +99 -85
- package/dist/composables/useChoiceIndicator.d.ts +58 -0
- package/dist/composables/useChoiceIndicator.js +197 -0
- package/dist/composables/useConfirm.d.ts +4 -4
- package/dist/composables/usePassthrough.d.ts +54 -1
- package/dist/composables/usePassthrough.js +100 -71
- package/dist/directives/bbTooltip.d.ts +12 -6
- package/dist/directives/createPopoverDirective.js +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/llms-full.txt +3467 -801
- package/dist/llms-medium.txt +71 -53
- package/dist/llms.txt +2 -1
- package/dist/passthrough-deduper.js +6 -3
- package/dist/project-dts.d.ts +24 -0
- package/dist/project-dts.js +43 -17
- package/dist/styles.css +2 -2
- package/dist/types/AlertVariant.d.ts +14 -0
- package/dist/types/AlertVariant.js +9 -0
- package/dist/types/BadgeVariant.d.ts +14 -0
- package/dist/types/BadgeVariant.js +9 -0
- package/dist/types/ButtonVariant.d.ts +16 -0
- package/dist/types/ButtonVariant.js +11 -0
- package/dist/types/CheckboxVariant.d.ts +38 -0
- package/dist/types/CheckboxVariant.js +4 -0
- package/dist/types/CommonProps.d.ts +4 -3
- package/dist/types/Config.d.ts +7 -0
- package/dist/types/ConfirmVariant.d.ts +12 -0
- package/dist/types/ConfirmVariant.js +4 -0
- package/dist/types/DropdownItemVariant.d.ts +12 -0
- package/dist/types/DropdownItemVariant.js +4 -0
- package/dist/types/IndicatorVariant.d.ts +15 -0
- package/dist/types/IndicatorVariant.js +10 -0
- package/dist/types/InputVariant.d.ts +13 -0
- package/dist/types/InputVariant.js +8 -0
- package/dist/types/RadioVariant.d.ts +38 -0
- package/dist/types/RadioVariant.js +4 -0
- package/dist/types/TabsVariant.d.ts +13 -0
- package/dist/types/TabsVariant.js +8 -0
- package/dist/types/ToastVariant.d.ts +15 -0
- package/dist/types/ToastVariant.js +10 -0
- package/dist/types/TooltipVariant.d.ts +12 -0
- package/dist/types/TooltipVariant.js +4 -0
- package/dist/types/passthrough.d.ts +83 -15
- package/dist/types/passthrough.js +2 -2
- package/dist/types/ptComponentMap.d.ts +35 -23
- package/dist/utilities/functions/extractDomContainer.d.ts +20 -1
- package/dist/utilities/functions/extractDomContainer.js +8 -3
- package/dist/utils/focusVisibility.d.ts +6 -0
- package/dist/utils/focusVisibility.js +4 -1
- package/dist/utils/passthroughDeduper.d.ts +14 -0
- package/dist/utils/versionCheck.js +1 -1
- package/dist/vite-plugin.d.ts +64 -7
- package/dist/vite.js +385 -259
- package/llms.txt +2 -1
- package/package.json +5 -4
- package/scripts/lib/adoption-checklist.json +312 -0
- package/scripts/lib/eslint-plugin.d.ts +13 -0
- package/scripts/lib/eslint-plugin.mjs +75 -11
- package/scripts/lib/helpers-add.mjs +26 -2
- package/scripts/lib/idiom-scan.mjs +65 -0
- package/scripts/lib/mcp-config.mjs +203 -9
- package/scripts/lib/migrate-fix.mjs +42 -1
- package/scripts/lib/project-variant-dts.mjs +18 -0
- package/scripts/lib/validate-bb-markup.mjs +99 -2
package/dist/vite.js
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import { validatePtGlobalMap as e, validatePtScopes as t } from "./utils/passthrough.js";
|
|
2
2
|
import { BB_LAYERS as n, TAILWIND_V3_LAYERS as r, TAILWIND_V4_LAYERS as i, validateCssLayers as a } from "./utils/cssLayers.js";
|
|
3
3
|
import { BUILTIN_LOCALE_KEYS as o, DICTIONARY_HOME as s, LOCALE_TABLE as c, aliasesOf as l, localeKeyOf as u, nearestLocaleKey as d } from "./i18n/regions.js";
|
|
4
|
-
import { DEFAULT_MAX_FILE_SIZE as f, IconScanner as p, extractIconCandidates as
|
|
5
|
-
import { regionHints as
|
|
6
|
-
import { DEFAULT_VARIANT_REGISTRIES as
|
|
4
|
+
import { DEFAULT_MAX_FILE_SIZE as f, IconScanner as p, extractIconCandidates as ee, globToRegExp as te, hasGlobMagic as ne, iconLiteralRegExp as m, iconScanCacheFile as re } from "./icon-scan.js";
|
|
5
|
+
import { regionHints as h } from "./i18n/regionHints.js";
|
|
6
|
+
import { DEFAULT_VARIANT_REGISTRIES as g, VARIANT_PT_COMPONENTS as _, VARIANT_REGISTRY_OPTIONS as v, customVariants as ie, emptyStringControls as ae, isInTypeScriptProgram as oe, projectVariantRegistries as se, resolveProjectDtsPath as ce, variantIconsOf as le, writeProjectDts as ue } from "./project-dts.js";
|
|
7
7
|
import { existsSync as y, mkdirSync as b, readFileSync as x, readdirSync as S, writeFileSync as C } from "node:fs";
|
|
8
|
-
import { basename as
|
|
9
|
-
import { fileURLToPath as
|
|
8
|
+
import { basename as de, dirname as w, isAbsolute as T, join as E, relative as fe, resolve as D } from "node:path";
|
|
9
|
+
import { fileURLToPath as pe } from "node:url";
|
|
10
10
|
import { createRequire as O } from "node:module";
|
|
11
|
-
import { convertParsedSVG as k, getIconData as A, iconToHTML as
|
|
11
|
+
import { convertParsedSVG as k, getIconData as A, iconToHTML as j, iconToSVG as me, parseSVGContent as he, stringToIcon as ge } from "@iconify/utils";
|
|
12
12
|
//#region src/vite-plugin.ts
|
|
13
|
-
function
|
|
14
|
-
let t =
|
|
13
|
+
function _e(e) {
|
|
14
|
+
let t = me(e, {
|
|
15
15
|
width: "unset",
|
|
16
16
|
height: "unset"
|
|
17
17
|
});
|
|
18
|
-
return
|
|
18
|
+
return j(t.body, t.attributes);
|
|
19
19
|
}
|
|
20
20
|
function M(e, t) {
|
|
21
21
|
try {
|
|
@@ -25,10 +25,10 @@ function M(e, t) {
|
|
|
25
25
|
return null;
|
|
26
26
|
}
|
|
27
27
|
}
|
|
28
|
-
function
|
|
28
|
+
function ve(e, t) {
|
|
29
29
|
return e !== "heroicons" || !/-(?:20|16)-/.test(t);
|
|
30
30
|
}
|
|
31
|
-
function
|
|
31
|
+
function ye(e) {
|
|
32
32
|
let t = D(e);
|
|
33
33
|
for (;;) {
|
|
34
34
|
let e = E(t, "node_modules", "@iconify-json");
|
|
@@ -38,9 +38,9 @@ function N(e) {
|
|
|
38
38
|
t = n;
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
|
-
function
|
|
41
|
+
function be(e) {
|
|
42
42
|
try {
|
|
43
|
-
let t =
|
|
43
|
+
let t = ye(e);
|
|
44
44
|
if (!t) return [];
|
|
45
45
|
let n = w(w(t));
|
|
46
46
|
return S(t, { encoding: "utf-8" }).flatMap((t) => {
|
|
@@ -51,7 +51,7 @@ function ge(e) {
|
|
|
51
51
|
return [];
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
|
-
function
|
|
54
|
+
function xe(e) {
|
|
55
55
|
try {
|
|
56
56
|
let t = O(E(e, "package.json")), n = JSON.parse(x(t.resolve("@iconify/collections/collections.json"), "utf-8"));
|
|
57
57
|
return new Set(Object.keys(n));
|
|
@@ -59,16 +59,16 @@ function _e(e) {
|
|
|
59
59
|
return /* @__PURE__ */ new Set();
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
|
-
var
|
|
63
|
-
function
|
|
62
|
+
var Se = "(key, loaded, known, all, ip) => {\n const c = key.indexOf(':'); const p = key.slice(0, c); const n = key.slice(c + 1);\n if (p === 'local' || !/^[a-z][a-z0-9-]*$/.test(p) || !/^[a-z0-9][a-z0-9-]*$/.test(n)) return null;\n const installed = loaded.size ? `installed sets: ${[...loaded].join(', ')}` : 'no @iconify-json/* set is installed';\n const fix = `If the name is composed at runtime or comes from a database, add it to the plugin's \\`iconWhitelist\\``;\n if (loaded.has(p)) {\n const set = all(p);\n if (set && set.includes(n)) return `[bitboss-ui] icon \"${key}\" exists in the ${p} icon set but is not bundled: no scanned source file contains the literal \"${key}\" and it is not in \\`iconWhitelist\\`. Write it as a literal, or — if the name is composed at runtime or comes from a database — add it to the plugin's \\`iconWhitelist\\`.`;\n const names = set ?? known(p);\n const sq = n.replace(/-/g, '');\n const sug = names.find((x) => x.replace(/-/g, '') === sq) ?? (n.length >= 3 ? names.find((x) => x.includes(n) || (x.length >= 3 && n.includes(x))) : undefined);\n const hint = sug ? ` — did you mean \"${p}:${sug}\"?` : '';\n if (set) return `[bitboss-ui] icon \"${key}\" does not exist in the ${p} icon set${hint}`;\n return `[bitboss-ui] icon \"${key}\" is not bundled: it is not among the ${p} names found as literals in scanned source, nor in \\`iconWhitelist\\`${hint}. ${fix}; if it is a typo, fix the name.`;\n }\n const pkg = `@iconify-json/${p}`; const cmd = `run: npm install -D ${pkg}`;\n if (ip.has(p)) return `[bitboss-ui] \"${key}\" requires \"${pkg}\" — ${cmd} (${installed})`;\n if (ip.size) return `[bitboss-ui] \"${key}\" — \"${p}\" is neither an installed icon set nor a known Iconify prefix (${installed})`;\n return `[bitboss-ui] \"${key}\" — no installed icon set has the prefix \"${p}\" (${installed}). If \"${p}\" is an Iconify set, ${cmd}`;\n}", N = Function(`return ${Se};`)();
|
|
63
|
+
function Ce(e, t) {
|
|
64
64
|
return [...Object.keys(e.icons), ...Object.keys(e.aliases ?? {})].filter((n) => (!t || t(n)) && A(e, n) !== null);
|
|
65
65
|
}
|
|
66
|
-
function
|
|
66
|
+
function we(e, t, n, r) {
|
|
67
67
|
let i = /* @__PURE__ */ new Set(), a = [], o = new Set(t.keys()), s = /* @__PURE__ */ new Map(), c = (e) => {
|
|
68
68
|
let r = s.get(e);
|
|
69
69
|
if (!r) {
|
|
70
70
|
let i = t.get(e);
|
|
71
|
-
r = i ?
|
|
71
|
+
r = i ? Ce(i, n.get(e)) : [], s.set(e, r);
|
|
72
72
|
}
|
|
73
73
|
return r;
|
|
74
74
|
};
|
|
@@ -83,11 +83,11 @@ function be(e, t, n, r) {
|
|
|
83
83
|
continue;
|
|
84
84
|
}
|
|
85
85
|
if (!o.has(u)) {
|
|
86
|
-
a.push(
|
|
86
|
+
a.push(N(e, o, c, (e) => o.has(e) ? c(e) : null, new Set(r)) ?? `[bitboss-ui] iconWhitelist entry "${s}" does not resolve`);
|
|
87
87
|
continue;
|
|
88
88
|
}
|
|
89
|
-
if (
|
|
90
|
-
let t =
|
|
89
|
+
if (ne(d)) {
|
|
90
|
+
let t = te(d), n = c(u).filter((e) => t.test(e));
|
|
91
91
|
if (n.length === 0) {
|
|
92
92
|
a.push(`[bitboss-ui] iconWhitelist glob "${e}" matches no icon in the ${u} icon set`);
|
|
93
93
|
continue;
|
|
@@ -100,14 +100,14 @@ function be(e, t, n, r) {
|
|
|
100
100
|
i.add(e);
|
|
101
101
|
continue;
|
|
102
102
|
}
|
|
103
|
-
a.push(
|
|
103
|
+
a.push(N(e, o, c, c, new Set(r)) ?? `[bitboss-ui] iconWhitelist entry "${s}" does not resolve`);
|
|
104
104
|
}
|
|
105
105
|
return {
|
|
106
106
|
icons: [...i],
|
|
107
107
|
errors: a
|
|
108
108
|
};
|
|
109
109
|
}
|
|
110
|
-
function
|
|
110
|
+
function Te(e, t) {
|
|
111
111
|
let n = E(e, "node_modules", ".cache", "bitboss-ui", "version"), r = null;
|
|
112
112
|
try {
|
|
113
113
|
r = x(n, "utf-8").trim() || null;
|
|
@@ -118,20 +118,20 @@ function xe(e, t) {
|
|
|
118
118
|
} catch {}
|
|
119
119
|
return !r || t === "0" ? null : `[bitboss-ui] upgraded ${r} → ${t}. What breaks between them: npx bitboss-ui changelog --since ${r}`;
|
|
120
120
|
}
|
|
121
|
-
function
|
|
122
|
-
let t =
|
|
121
|
+
function Ee(e) {
|
|
122
|
+
let t = fe(process.cwd(), e);
|
|
123
123
|
return t && !t.startsWith("..") && !T(t) ? t : e;
|
|
124
124
|
}
|
|
125
|
-
var
|
|
126
|
-
function
|
|
125
|
+
var P = /* @__PURE__ */ new Set();
|
|
126
|
+
function De(e) {
|
|
127
127
|
try {
|
|
128
128
|
return JSON.parse(x(E(e, "..", "package.json"), "utf-8")).version ?? "0";
|
|
129
129
|
} catch {
|
|
130
130
|
return "0";
|
|
131
131
|
}
|
|
132
132
|
}
|
|
133
|
-
var
|
|
134
|
-
function
|
|
133
|
+
var F = w(pe(import.meta.url));
|
|
134
|
+
function I(e, t) {
|
|
135
135
|
let n = Array.from({ length: t.length + 1 }, (e, t) => t);
|
|
136
136
|
for (let r = 1; r <= e.length; r++) {
|
|
137
137
|
let i = n[0];
|
|
@@ -143,53 +143,68 @@ function we(e, t) {
|
|
|
143
143
|
}
|
|
144
144
|
return n[t.length];
|
|
145
145
|
}
|
|
146
|
-
var
|
|
146
|
+
var L = (e, t) => {
|
|
147
147
|
let n = null, r = Infinity;
|
|
148
148
|
for (let i of t) {
|
|
149
|
-
let t =
|
|
149
|
+
let t = I(e.toLowerCase(), i.toLowerCase());
|
|
150
150
|
t < r && (r = t, n = i);
|
|
151
151
|
}
|
|
152
152
|
return n && r <= Math.max(2, Math.floor(e.length / 3)) ? n : null;
|
|
153
|
-
},
|
|
154
|
-
for (let e of [E(
|
|
153
|
+
}, R = () => {
|
|
154
|
+
for (let e of [E(F, "ai", "components.json"), E(F, "..", "dist", "ai", "components.json")]) if (y(e)) return e;
|
|
155
155
|
return null;
|
|
156
|
-
}
|
|
157
|
-
function R(e, t = L(), n = "pt") {
|
|
158
|
-
if (!e || !t) return null;
|
|
159
|
-
let r;
|
|
156
|
+
}, z = (e) => {
|
|
160
157
|
try {
|
|
161
|
-
|
|
158
|
+
let { components: t } = JSON.parse(x(e, "utf-8"));
|
|
159
|
+
return Array.isArray(t) ? new Map(t.map((e) => [e.name, e])) : null;
|
|
162
160
|
} catch {
|
|
163
161
|
return null;
|
|
164
162
|
}
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
163
|
+
}, Oe = (e) => Object.keys(_).filter((t) => _[t].includes(e));
|
|
164
|
+
function ke(e, t = R()) {
|
|
165
|
+
let n = t ? z(t) : null;
|
|
166
|
+
if (!n) return null;
|
|
167
|
+
for (let t of Object.keys(_)) {
|
|
168
|
+
let r = v[t], i = ie(g[t], e[r]);
|
|
169
|
+
if (i.length) for (let e of _[t]) {
|
|
170
|
+
let t = n.get(e);
|
|
171
|
+
if (!t) continue;
|
|
172
|
+
let a = new Set(Oe(e).flatMap((e) => [...g[e]])), o = new Set(t.props.map((e) => e.name.split(":")).filter((e) => e[0] === "pt" && e[2] && !a.has(e[2])).map((e) => e[2])), s = i.find((e) => o.has(e));
|
|
173
|
+
if (s) return `[bitboss-ui] ${r}: "${s}" is a passthrough state of ${e}, so \`pt:<part>:${s}\` could not tell the state from the variant. Give the variant another name.`;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
return null;
|
|
177
|
+
}
|
|
178
|
+
function Ae(e, t = R(), n = "pt", r = {}) {
|
|
179
|
+
if (!e || !t) return null;
|
|
180
|
+
let i = z(t);
|
|
181
|
+
if (!i) return null;
|
|
182
|
+
for (let [t, a] of Object.entries(e)) {
|
|
168
183
|
let e = i.get(t);
|
|
169
184
|
if (!e) {
|
|
170
|
-
let e =
|
|
185
|
+
let e = L(t, [...i.keys()]);
|
|
171
186
|
return `[bitboss-ui] ${n}.${t}: no component is called "${t}"${e ? ` — did you mean "${e}"?` : ""}. A pt map is keyed by component name (ai/guides/passthrough.md).`;
|
|
172
187
|
}
|
|
173
|
-
let
|
|
174
|
-
if (!
|
|
175
|
-
let
|
|
176
|
-
for (let e of Object.keys(
|
|
177
|
-
if (
|
|
178
|
-
let [
|
|
179
|
-
return `[bitboss-ui] ${n}.${t}["${e}"] matches nothing and would be ignored. ${
|
|
188
|
+
let o = e.props.map((e) => e.name).filter((e) => e.startsWith("pt:"));
|
|
189
|
+
if (!o.length) return `[bitboss-ui] ${n}.${t}: ${t} declares no passthrough parts.`;
|
|
190
|
+
let s = [...new Set(o.map((e) => e.split(":")[1]))], c = [...new Set(o.map((e) => e.split(":")[2]).filter(Boolean))];
|
|
191
|
+
for (let e of Object.keys(a ?? {})) {
|
|
192
|
+
if (o.includes(`pt:${e}`)) continue;
|
|
193
|
+
let [i, a] = e.split(":");
|
|
194
|
+
if (!(a && e.split(":").length === 2 && Oe(t).some((e) => ie(g[e], r[v[e]]).includes(a) && g[e].some((e) => o.includes(`pt:${i}:${e}`))))) return `[bitboss-ui] ${n}.${t}["${e}"] matches nothing and would be ignored. ${s.includes(i) ? c.length === 0 ? `${t} has no states — use "${i}" alone.` : `"${a}" is not a state of ${t}. States: ${c.join(", ")}.` : `"${i}" is not a part of ${t}. Parts: ${s.join(", ")}.`}`;
|
|
180
195
|
}
|
|
181
196
|
}
|
|
182
197
|
return null;
|
|
183
198
|
}
|
|
184
|
-
var
|
|
199
|
+
var je = E(F, "i18n", "locales"), Me = (e) => {
|
|
185
200
|
let t = d(e);
|
|
186
201
|
return t ? ` — did you mean '${t}'?` : "";
|
|
187
202
|
};
|
|
188
|
-
function
|
|
203
|
+
function Ne(e) {
|
|
189
204
|
let t = e.customLocaleKeys ?? [], n = u(e.locale) ?? "en", r = [], i = /* @__PURE__ */ new Set([n, "en"]);
|
|
190
205
|
for (let n of e.enabledLocales ?? []) {
|
|
191
206
|
let e = u(n);
|
|
192
|
-
e ? i.add(e) : t.includes(n) || r.push(`[bitboss-ui] \`enabledLocales\` entry '${n}' is not a built-in locale${
|
|
207
|
+
e ? i.add(e) : t.includes(n) || r.push(`[bitboss-ui] \`enabledLocales\` entry '${n}' is not a built-in locale${Me(n)} — ignored.`);
|
|
193
208
|
}
|
|
194
209
|
return {
|
|
195
210
|
enabled: [...i].sort(),
|
|
@@ -197,22 +212,22 @@ function De(e) {
|
|
|
197
212
|
warnings: r
|
|
198
213
|
};
|
|
199
214
|
}
|
|
200
|
-
function
|
|
215
|
+
function Pe(e) {
|
|
201
216
|
let t = /* @__PURE__ */ new Map();
|
|
202
217
|
for (let n of e) {
|
|
203
218
|
let e = c[n].dictionary;
|
|
204
|
-
t.has(e) || t.set(e, JSON.parse(x(E(
|
|
219
|
+
t.has(e) || t.set(e, JSON.parse(x(E(je, `${e}.json`), "utf-8")));
|
|
205
220
|
}
|
|
206
221
|
let n = [...t].map(([e, t]) => `\t${JSON.stringify(e)}: ${JSON.stringify(t)},`), r = [];
|
|
207
222
|
for (let n of e) {
|
|
208
223
|
let { tag: e, dictionary: i } = c[n];
|
|
209
224
|
if (s[i] === e) continue;
|
|
210
|
-
let a =
|
|
225
|
+
let a = h(t.get(i).datePickerInput, e);
|
|
211
226
|
a && r.push(`\t${JSON.stringify(n)}: ${JSON.stringify({ datePickerInput: a })},`);
|
|
212
227
|
}
|
|
213
228
|
return `export const locales = {\n${n.join("\n")}\n};\nexport const regionFormats = {\n${r.join("\n")}\n};\n`;
|
|
214
229
|
}
|
|
215
|
-
function
|
|
230
|
+
function Fe(e) {
|
|
216
231
|
let t = O(import.meta.url), n = [], r = [];
|
|
217
232
|
for (let i of e) {
|
|
218
233
|
let e = u(i), a = e ? c[e].dayjs : i;
|
|
@@ -230,32 +245,117 @@ function ke(e) {
|
|
|
230
245
|
missing: r
|
|
231
246
|
};
|
|
232
247
|
}
|
|
233
|
-
function
|
|
248
|
+
function Ie(e) {
|
|
234
249
|
let t = [...new Set(e.map(({ pack: e }) => e))];
|
|
235
250
|
return `${t.map((e, t) => `import l${t} from ${JSON.stringify(`dayjs/locale/${e}`)};`).join("\n")}\nexport const dayjsLocales = {\n${e.map(({ key: e, pack: n }) => `\t${JSON.stringify(e)}: l${t.indexOf(n)},`).join("\n")}\n};\n`;
|
|
236
251
|
}
|
|
237
|
-
function
|
|
252
|
+
function Le(e, t, n = F, r) {
|
|
238
253
|
if (e === !1) return "export default null;\n";
|
|
239
|
-
let
|
|
254
|
+
let i;
|
|
240
255
|
if (e === void 0) {
|
|
241
256
|
let e = E(n, "passthrough-deduper.js");
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
257
|
+
i = y(e) ? e : E(n, "utils/passthroughDeduper.ts");
|
|
258
|
+
let a = r ?? Ve(t);
|
|
259
|
+
if (Object.keys(a).length) return `import { createPassthroughDeduper } from ${JSON.stringify(i)};\nexport default createPassthroughDeduper(${JSON.stringify(a)});\n`;
|
|
260
|
+
} else i = e.startsWith(".") || T(e) ? D(t, e) : e;
|
|
261
|
+
return `export { default } from ${JSON.stringify(i)};\n`;
|
|
262
|
+
}
|
|
263
|
+
var B = [
|
|
264
|
+
"inset-shadow",
|
|
265
|
+
"drop-shadow",
|
|
266
|
+
"text-shadow",
|
|
267
|
+
"font-weight",
|
|
268
|
+
"perspective",
|
|
269
|
+
"breakpoint",
|
|
270
|
+
"container",
|
|
271
|
+
"tracking",
|
|
272
|
+
"leading",
|
|
273
|
+
"animate",
|
|
274
|
+
"aspect",
|
|
275
|
+
"radius",
|
|
276
|
+
"shadow",
|
|
277
|
+
"color",
|
|
278
|
+
"blur",
|
|
279
|
+
"ease",
|
|
280
|
+
"font",
|
|
281
|
+
"text"
|
|
282
|
+
], V = /* @__PURE__ */ new Set([
|
|
283
|
+
"node_modules",
|
|
284
|
+
"dist",
|
|
285
|
+
"build",
|
|
286
|
+
".nuxt",
|
|
287
|
+
".output",
|
|
288
|
+
".git",
|
|
289
|
+
".vite",
|
|
290
|
+
"vendor",
|
|
291
|
+
"storage",
|
|
292
|
+
"public",
|
|
293
|
+
"coverage"
|
|
294
|
+
]);
|
|
295
|
+
function Re(e) {
|
|
296
|
+
let t = {};
|
|
297
|
+
for (let n of e.matchAll(/@theme\b[^{]*\{([^}]*)\}/g)) for (let [, e] of n[1].matchAll(/--([a-z0-9-]+)\s*:/g)) {
|
|
298
|
+
if (e.includes("--")) continue;
|
|
299
|
+
let n = B.find((t) => e.startsWith(`${t}-`));
|
|
300
|
+
n && (t[n] ??= /* @__PURE__ */ new Set()).add(e.slice(n.length + 1));
|
|
301
|
+
}
|
|
302
|
+
return Object.fromEntries(Object.entries(t).map(([e, t]) => [e, [...t]]));
|
|
303
|
+
}
|
|
304
|
+
function H(e) {
|
|
305
|
+
let t = {};
|
|
306
|
+
for (let n of e) for (let [e, r] of Object.entries(n)) for (let n of r) (t[e] ??= /* @__PURE__ */ new Set()).add(n);
|
|
307
|
+
return Object.fromEntries(Object.keys(t).sort().map((e) => [e, [...t[e]].sort()]));
|
|
245
308
|
}
|
|
246
|
-
function
|
|
309
|
+
function ze(e, t) {
|
|
310
|
+
if (!t.endsWith(".css")) return !1;
|
|
311
|
+
let n = fe(e, t);
|
|
312
|
+
if (!n || n.startsWith("..") || T(n)) return !1;
|
|
313
|
+
let r = n.split(/[\\/]/);
|
|
314
|
+
return r.length <= 7 && !r.some((e) => V.has(e));
|
|
315
|
+
}
|
|
316
|
+
function Be(e) {
|
|
317
|
+
let t = /* @__PURE__ */ new Map(), n = (e, r) => {
|
|
318
|
+
let i = (() => {
|
|
319
|
+
try {
|
|
320
|
+
return S(e, { withFileTypes: !0 });
|
|
321
|
+
} catch {
|
|
322
|
+
return [];
|
|
323
|
+
}
|
|
324
|
+
})();
|
|
325
|
+
for (let a of i) {
|
|
326
|
+
let i = E(e, a.name);
|
|
327
|
+
if (a.isDirectory()) r < 6 && !V.has(a.name) && n(i, r + 1);
|
|
328
|
+
else if (a.name.endsWith(".css")) {
|
|
329
|
+
let e = U(i);
|
|
330
|
+
Object.keys(e).length && t.set(i, e);
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
};
|
|
334
|
+
return e && n(e, 0), t;
|
|
335
|
+
}
|
|
336
|
+
var U = (e) => {
|
|
337
|
+
try {
|
|
338
|
+
return Re(x(e, "utf-8"));
|
|
339
|
+
} catch {
|
|
340
|
+
return {};
|
|
341
|
+
}
|
|
342
|
+
};
|
|
343
|
+
function Ve(e) {
|
|
344
|
+
return H(Be(e).values());
|
|
345
|
+
}
|
|
346
|
+
function He(e) {
|
|
247
347
|
return e === void 0 || e === !1 || typeof e == "string" && e.trim() ? null : "[bitboss-ui] passthroughDeduper must be false or a module path whose default export is (className: string) => string, e.g. passthroughDeduper: './src/utils/cn.ts'. Remove the key to use the bundled tailwind-merge.";
|
|
248
348
|
}
|
|
249
|
-
function
|
|
349
|
+
function Ue(e) {
|
|
250
350
|
return e === void 0 || typeof e == "number" && Number.isInteger(e) && e >= 0 ? null : `[bitboss-ui] autoDisableWritingThreshold must be a non-negative integer (received ${JSON.stringify(e)}); 0 turns the 'auto' rule off. Remove the key for the default, 6.`;
|
|
251
351
|
}
|
|
252
|
-
var
|
|
352
|
+
var We = "@inertiajs/vue3", Ge = [
|
|
253
353
|
"dependencies",
|
|
254
354
|
"devDependencies",
|
|
255
355
|
"peerDependencies",
|
|
256
356
|
"optionalDependencies"
|
|
257
357
|
];
|
|
258
|
-
function
|
|
358
|
+
function Ke(e) {
|
|
259
359
|
let t = D(e);
|
|
260
360
|
for (;;) {
|
|
261
361
|
let e = E(t, "package.json");
|
|
@@ -269,13 +369,13 @@ function Fe(e) {
|
|
|
269
369
|
t = n;
|
|
270
370
|
}
|
|
271
371
|
}
|
|
272
|
-
function
|
|
273
|
-
return
|
|
372
|
+
function qe(e, t) {
|
|
373
|
+
return Ge.some((n) => {
|
|
274
374
|
let r = e[n];
|
|
275
375
|
return typeof r == "object" && !!r && t in r;
|
|
276
376
|
});
|
|
277
377
|
}
|
|
278
|
-
function
|
|
378
|
+
function Je(e, t) {
|
|
279
379
|
let n = t.split("/"), r = D(e);
|
|
280
380
|
for (;;) {
|
|
281
381
|
if (y(E(r, "node_modules", ...n))) return !0;
|
|
@@ -284,14 +384,14 @@ function Le(e, t) {
|
|
|
284
384
|
r = e;
|
|
285
385
|
}
|
|
286
386
|
}
|
|
287
|
-
function
|
|
288
|
-
let t =
|
|
289
|
-
return !t || !
|
|
387
|
+
function Ye(e) {
|
|
388
|
+
let t = Ke(e);
|
|
389
|
+
return !t || !qe(t, We) ? !1 : Je(e, We);
|
|
290
390
|
}
|
|
291
|
-
function
|
|
391
|
+
function Xe(e) {
|
|
292
392
|
return e ? "export { Link as InertiaLink } from '@inertiajs/vue3';\n" : "export const InertiaLink = null;\n";
|
|
293
393
|
}
|
|
294
|
-
var
|
|
394
|
+
var Ze = [
|
|
295
395
|
"@floating-ui/vue",
|
|
296
396
|
"@tanstack/vue-virtual",
|
|
297
397
|
"@vueuse/core",
|
|
@@ -307,34 +407,34 @@ var H = [
|
|
|
307
407
|
"mime",
|
|
308
408
|
"object-code",
|
|
309
409
|
"tailwind-merge"
|
|
310
|
-
],
|
|
311
|
-
function
|
|
312
|
-
return typeof e == "string" ? e ===
|
|
410
|
+
], Qe = ["bitboss-ui"], $e = We, W = "bitboss-ui";
|
|
411
|
+
function et(e) {
|
|
412
|
+
return typeof e == "string" ? e === W : (e.lastIndex = 0, e.test(W));
|
|
313
413
|
}
|
|
314
|
-
function
|
|
315
|
-
return e === !0 ? [] : e == null || e === !1 ? [
|
|
414
|
+
function tt(e) {
|
|
415
|
+
return e === !0 ? [] : e == null || e === !1 ? [W] : (Array.isArray(e) ? e : [e]).some(et) ? [] : [W];
|
|
316
416
|
}
|
|
317
|
-
var
|
|
318
|
-
function
|
|
417
|
+
var nt = "virtual:bitboss-ui/icons", rt = "\0virtual:bitboss-ui/icons", it = "virtual:bitboss-ui/config", at = "\0virtual:bitboss-ui/config", ot = "virtual:bitboss-ui/dayjs-locales", st = "\0virtual:bitboss-ui/dayjs-locales", ct = "virtual:bitboss-ui/locales", lt = "\0virtual:bitboss-ui/locales", ut = "virtual:bitboss-ui/styles", dt = "\0virtual:bitboss-ui/styles", ft = "virtual:bitboss-ui/vee-validate-missing", pt = "\0virtual:bitboss-ui/vee-validate-missing", mt = "bitboss-ui:vee-validate-missing", G = "[bitboss-ui] BbForm needs vee-validate, which is not installed: run `npm i vee-validate` (an optional peer, >=4.10.0 <5). An app without forms needs nothing.", ht = ["useForm", "useField"];
|
|
418
|
+
function gt() {
|
|
319
419
|
return [
|
|
320
|
-
`const fail = () => { throw new Error(${JSON.stringify(
|
|
321
|
-
...
|
|
420
|
+
`const fail = () => { throw new Error(${JSON.stringify(G)} + ' (${mt})'); };`,
|
|
421
|
+
...ht.map((e) => `export const ${e} = fail;`),
|
|
322
422
|
""
|
|
323
423
|
].join("\n");
|
|
324
424
|
}
|
|
325
|
-
function
|
|
425
|
+
function _t(e) {
|
|
326
426
|
return /import\s*\{[^}]*\bBbForm\b[^}]*\}\s*from\s*['"]bitboss-ui(?:\/validated)?['"]/.test(e) || /<(?:BbForm|bb-form)[\s>/]/.test(e) || /resolveComponent\(\s*['"](?:BbForm|bb-form)['"]/.test(e);
|
|
327
427
|
}
|
|
328
|
-
var
|
|
329
|
-
function
|
|
330
|
-
let e = E(
|
|
428
|
+
var vt = "virtual:bitboss-ui/link", yt = "\0virtual:bitboss-ui/link", bt = "virtual:bitboss-ui/passthrough-deduper", xt = "\0virtual:bitboss-ui/passthrough-deduper";
|
|
429
|
+
function St() {
|
|
430
|
+
let e = E(F, "styles.css");
|
|
331
431
|
return y(e) ? x(e, "utf-8") : ["main.css", "variables.css"].map((e) => {
|
|
332
|
-
let t = E(
|
|
432
|
+
let t = E(F, "assets/css", e);
|
|
333
433
|
return y(t) ? x(t, "utf-8") : "";
|
|
334
434
|
}).join("\n");
|
|
335
435
|
}
|
|
336
|
-
var
|
|
337
|
-
function
|
|
436
|
+
var Ct = "local", wt = "./assets/icons";
|
|
437
|
+
function Tt(e) {
|
|
338
438
|
let t = {};
|
|
339
439
|
try {
|
|
340
440
|
let n = S(e, {
|
|
@@ -342,15 +442,15 @@ function ft(e) {
|
|
|
342
442
|
encoding: "utf-8"
|
|
343
443
|
}).filter((e) => e.endsWith(".svg"));
|
|
344
444
|
for (let r of n) {
|
|
345
|
-
let n =
|
|
445
|
+
let n = de(r, ".svg");
|
|
346
446
|
try {
|
|
347
|
-
let i =
|
|
447
|
+
let i = he(x(E(e, r), "utf-8")), a = i && k(i);
|
|
348
448
|
a && (t[n] = a);
|
|
349
449
|
} catch {}
|
|
350
450
|
}
|
|
351
451
|
} catch {}
|
|
352
452
|
return {
|
|
353
|
-
prefix:
|
|
453
|
+
prefix: Ct,
|
|
354
454
|
info: {
|
|
355
455
|
name: "Local",
|
|
356
456
|
author: { name: "Icons automatically inferred from the icons installed locally" },
|
|
@@ -359,38 +459,38 @@ function ft(e) {
|
|
|
359
459
|
icons: t
|
|
360
460
|
};
|
|
361
461
|
}
|
|
362
|
-
var
|
|
462
|
+
var K = "./.vscode/bitboss-ui.local-icons.json", q = "iconify.customCollectionJsonPaths", J = "tailwindCSS.classAttributes", Y = "tailwindCSS.experimental.classRegex", X = "editor.quickSuggestions", Z = "pt(?::[\\w-]+)*", Et = [
|
|
363
463
|
"class",
|
|
364
464
|
"className",
|
|
365
465
|
"ngClass",
|
|
366
466
|
"class:list"
|
|
367
|
-
],
|
|
467
|
+
], Dt = "(?:^|[\\s:(])(?:v-bind:)?pt(?::[\\w-]+)*\\s*=\\s*", Ot = [
|
|
368
468
|
"\\?\\s*'([^\\s':][^']*)'",
|
|
369
469
|
"'([^\\s':][^']*)'(?!\\s*:)",
|
|
370
470
|
"\\?\\s*\"([^\\s\":][^\"]*)\"",
|
|
371
471
|
"\"([^\\s\":][^\"]*)\"(?!\\s*:)",
|
|
372
472
|
"\\?\\s*`([^\\s`:][^`]*)`",
|
|
373
473
|
"`([^\\s`:][^`]*)`(?!\\s*:)"
|
|
374
|
-
],
|
|
375
|
-
`${
|
|
376
|
-
`${
|
|
474
|
+
], Q = [
|
|
475
|
+
`${Dt}"([\\s\\S]*?)"`,
|
|
476
|
+
`${Dt}'([\\s\\S]*?)'`,
|
|
377
477
|
"\\bpt\\s*:\\s*\\{([\\s\\S]*?)\\}"
|
|
378
|
-
].flatMap((e) =>
|
|
379
|
-
[
|
|
380
|
-
[
|
|
381
|
-
[
|
|
382
|
-
[
|
|
478
|
+
].flatMap((e) => Ot.map((t) => [e, t])), kt = { strings: "on" }, At = () => ({
|
|
479
|
+
[q]: [K],
|
|
480
|
+
[J]: [...Et, Z],
|
|
481
|
+
[Y]: Q,
|
|
482
|
+
[X]: kt
|
|
383
483
|
});
|
|
384
|
-
function
|
|
385
|
-
let n = E(t,
|
|
484
|
+
function jt(e, t) {
|
|
485
|
+
let n = E(t, K);
|
|
386
486
|
try {
|
|
387
|
-
return b(w(n), { recursive: !0 }), C(n, JSON.stringify(
|
|
487
|
+
return b(w(n), { recursive: !0 }), C(n, JSON.stringify(Tt(e)), "utf-8"), null;
|
|
388
488
|
} catch (e) {
|
|
389
|
-
return `[bitboss-ui] could not write ${
|
|
489
|
+
return `[bitboss-ui] could not write ${K} (${e instanceof Error ? e.message : String(e)}) — the Iconify editor extension will not preview local icons. ${Rt}`;
|
|
390
490
|
}
|
|
391
491
|
}
|
|
392
|
-
function
|
|
393
|
-
if (e ===
|
|
492
|
+
function Mt(e, t) {
|
|
493
|
+
if (e === wt) return null;
|
|
394
494
|
let n = 0;
|
|
395
495
|
try {
|
|
396
496
|
n = S(t, {
|
|
@@ -402,7 +502,7 @@ function yt(e, t) {
|
|
|
402
502
|
}
|
|
403
503
|
return n > 0 ? null : `[bitboss-ui] iconDir "${e}" resolves to ${t}, which contains no .svg files — no \`local:\` icon will render. A relative iconDir resolves from the Vite root (under Nuxt, \`app/\`).`;
|
|
404
504
|
}
|
|
405
|
-
function
|
|
505
|
+
function Nt(e) {
|
|
406
506
|
let t = "", n = !1, r = !1, i = !1;
|
|
407
507
|
for (let a = 0; a < e.length; a++) {
|
|
408
508
|
let o = e[a], s = e[a + 1];
|
|
@@ -434,8 +534,8 @@ function bt(e) {
|
|
|
434
534
|
}
|
|
435
535
|
return t;
|
|
436
536
|
}
|
|
437
|
-
var
|
|
438
|
-
function
|
|
537
|
+
var Pt = (e) => e === " " || e === " " || e === "\n" || e === "\r";
|
|
538
|
+
function Ft(e, t) {
|
|
439
539
|
let n = !1, r = !1;
|
|
440
540
|
for (let i = t; i < e.length; i++) {
|
|
441
541
|
let t = e[i], a = e[i + 1];
|
|
@@ -455,11 +555,11 @@ function St(e, t) {
|
|
|
455
555
|
r = !0, i++;
|
|
456
556
|
continue;
|
|
457
557
|
}
|
|
458
|
-
if (!
|
|
558
|
+
if (!Pt(t)) return i;
|
|
459
559
|
}
|
|
460
560
|
return -1;
|
|
461
561
|
}
|
|
462
|
-
function
|
|
562
|
+
function It(e, t) {
|
|
463
563
|
let n = !1, r = !1, i = !1, a = -1, o = 0, s = null;
|
|
464
564
|
for (let c = 0; c < e.length; c++) {
|
|
465
565
|
let l = e[c], u = e[c + 1];
|
|
@@ -491,19 +591,19 @@ function Ct(e, t) {
|
|
|
491
591
|
i = !0, a = c;
|
|
492
592
|
continue;
|
|
493
593
|
}
|
|
494
|
-
if (!
|
|
594
|
+
if (!Pt(l)) {
|
|
495
595
|
if (l === ":" && s !== null) {
|
|
496
596
|
let n = s === t;
|
|
497
597
|
if (s = null, !n) continue;
|
|
498
|
-
let r =
|
|
499
|
-
return r === -1 || e[r] !== "[" ? null :
|
|
598
|
+
let r = Ft(e, c + 1);
|
|
599
|
+
return r === -1 || e[r] !== "[" ? null : Lt(e, r);
|
|
500
600
|
}
|
|
501
601
|
s = null, l === "{" || l === "[" ? o++ : (l === "}" || l === "]") && o--;
|
|
502
602
|
}
|
|
503
603
|
}
|
|
504
604
|
return null;
|
|
505
605
|
}
|
|
506
|
-
function
|
|
606
|
+
function Lt(e, t) {
|
|
507
607
|
let n = !1, r = !1, i = !1, a = 0, o = -1;
|
|
508
608
|
for (let s = t; s < e.length; s++) {
|
|
509
609
|
let c = e[s], l = e[s + 1];
|
|
@@ -535,7 +635,7 @@ function wt(e, t) {
|
|
|
535
635
|
i = !0, o = s + 1;
|
|
536
636
|
continue;
|
|
537
637
|
}
|
|
538
|
-
if (!
|
|
638
|
+
if (!Pt(c)) {
|
|
539
639
|
if (c === "[" || c === "{") {
|
|
540
640
|
a++, s > t && (o = s + 1);
|
|
541
641
|
continue;
|
|
@@ -554,10 +654,10 @@ function wt(e, t) {
|
|
|
554
654
|
}
|
|
555
655
|
return null;
|
|
556
656
|
}
|
|
557
|
-
var
|
|
558
|
-
function
|
|
657
|
+
var Rt = "Set `vscodeSettings: false` in the plugin options to disable this write.", $ = `add "${q}": ["${K}"], "${J}" (include ${JSON.stringify(Z)}), and "${Y}" for passthrough IntelliSense`, zt = (e) => Array.isArray(e) && e.some((e) => typeof e == "string" && (e === "pt(?::[\\w-]+)*" || e === "pt" || e.startsWith("pt:") || e.startsWith("pt("))), Bt = (e) => Array.isArray(e) ? Q.filter((t) => !e.some((e) => JSON.stringify(e) === JSON.stringify(t))) : [...Q], Vt = (e) => JSON.stringify(e, null, " ").replace(/\n/g, "\n ");
|
|
658
|
+
function Ht(e, t, n) {
|
|
559
659
|
if (n.length === 0) return e;
|
|
560
|
-
let r =
|
|
660
|
+
let r = It(e, t);
|
|
561
661
|
if (!r) return null;
|
|
562
662
|
if (r.lastSignificantEnd === -1) return e.slice(0, r.close) + n.join(", ") + e.slice(r.close);
|
|
563
663
|
if (e.slice(r.open + 1, r.close).includes("\n")) {
|
|
@@ -566,17 +666,17 @@ function Ot(e, t, n) {
|
|
|
566
666
|
}
|
|
567
667
|
return e.slice(0, r.lastSignificantEnd) + `, ${n.join(", ")}` + e.slice(r.lastSignificantEnd);
|
|
568
668
|
}
|
|
569
|
-
function
|
|
669
|
+
function Ut(e, t, n) {
|
|
570
670
|
if (t.length === 0) return e;
|
|
571
|
-
let r =
|
|
671
|
+
let r = Ft(e, 0);
|
|
572
672
|
if (r === -1 || e[r] !== "{") return null;
|
|
573
673
|
let i = t.map((e, r) => {
|
|
574
674
|
let i = r === t.length - 1, a = n || !i ? "," : "", o = n || !i ? "" : "\n";
|
|
575
|
-
return `\n\t${JSON.stringify(e.key)}: ${
|
|
675
|
+
return `\n\t${JSON.stringify(e.key)}: ${Vt(e.value)}${a}${o}`;
|
|
576
676
|
}).join("");
|
|
577
677
|
return e.slice(0, r + 1) + i + e.slice(r + 1);
|
|
578
678
|
}
|
|
579
|
-
function
|
|
679
|
+
function Wt(e, t) {
|
|
580
680
|
let n = E(e, ".vscode"), r = E(n, "settings.json"), i = "";
|
|
581
681
|
try {
|
|
582
682
|
i = x(r, "utf-8");
|
|
@@ -587,62 +687,62 @@ function At(e, t) {
|
|
|
587
687
|
try {
|
|
588
688
|
return b(n, { recursive: !0 }), C(r, e, "utf-8"), !0;
|
|
589
689
|
} catch (e) {
|
|
590
|
-
return t.warn(`[bitboss-ui] could not write .vscode/settings.json (${e instanceof Error ? e.message : String(e)}) — ${$}. ${
|
|
690
|
+
return t.warn(`[bitboss-ui] could not write .vscode/settings.json (${e instanceof Error ? e.message : String(e)}) — ${$}. ${Rt}`), !1;
|
|
591
691
|
}
|
|
592
692
|
};
|
|
593
693
|
if (!i.trim()) {
|
|
594
|
-
if (!s(JSON.stringify(
|
|
595
|
-
t.info(`[bitboss-ui] .vscode/settings.json: wrote "${
|
|
694
|
+
if (!s(JSON.stringify(At(), null, " ") + "\n")) return;
|
|
695
|
+
t.info(`[bitboss-ui] .vscode/settings.json: wrote "${K}" on "${q}", Tailwind "${J}" / "${Y}" for passthrough, and "${X}". ${Rt}`);
|
|
596
696
|
return;
|
|
597
697
|
}
|
|
598
698
|
let c;
|
|
599
699
|
try {
|
|
600
|
-
c = JSON.parse(
|
|
700
|
+
c = JSON.parse(Nt(i));
|
|
601
701
|
} catch {
|
|
602
702
|
t.warn(`[bitboss-ui] Could not parse .vscode/settings.json — ${$}.`);
|
|
603
703
|
return;
|
|
604
704
|
}
|
|
605
705
|
let l = (e) => {
|
|
606
706
|
try {
|
|
607
|
-
return c = JSON.parse(
|
|
707
|
+
return c = JSON.parse(Nt(e)), i = e, !0;
|
|
608
708
|
} catch {
|
|
609
709
|
return t.warn(`[bitboss-ui] Could not parse .vscode/settings.json after splice — ${$}.`), !1;
|
|
610
710
|
}
|
|
611
711
|
}, u = (e, n, r) => {
|
|
612
712
|
if (!Array.isArray(c[e])) return t.warn(`[bitboss-ui] .vscode/settings.json has a non-array "${e}" — ${$}.`), !1;
|
|
613
|
-
let a =
|
|
713
|
+
let a = Ht(i, e, n);
|
|
614
714
|
return a ? l(a) ? (o(r), !0) : !1 : (t.warn(`[bitboss-ui] Could not locate "${e}" in .vscode/settings.json — ${$}.`), !1);
|
|
615
715
|
};
|
|
616
|
-
if (!i.includes("./.vscode/bitboss-ui.local-icons.json") &&
|
|
617
|
-
let e =
|
|
618
|
-
e.length > 0 && u(
|
|
716
|
+
if (!i.includes("./.vscode/bitboss-ui.local-icons.json") && q in c && u(q, [JSON.stringify(K)], `added "${K}" to "${q}"`), J in c && !zt(c[J]) && u(J, [JSON.stringify(Z)], `added ${JSON.stringify(Z)} to "${J}"`), Y in c) {
|
|
717
|
+
let e = Bt(c[Y]);
|
|
718
|
+
e.length > 0 && u(Y, e.map((e) => JSON.stringify(e)), `added ${e.length} "${Y}" ${e.length === 1 ? "entry" : "entries"} for passthrough`);
|
|
619
719
|
}
|
|
620
720
|
let d = [];
|
|
621
|
-
if (!(
|
|
622
|
-
key: K,
|
|
623
|
-
value: [G]
|
|
624
|
-
}), q in c || d.push({
|
|
721
|
+
if (!(q in c) && !i.includes("./.vscode/bitboss-ui.local-icons.json") && d.push({
|
|
625
722
|
key: q,
|
|
626
|
-
value: [
|
|
723
|
+
value: [K]
|
|
627
724
|
}), J in c || d.push({
|
|
628
725
|
key: J,
|
|
629
|
-
value: Z
|
|
726
|
+
value: [...Et, Z]
|
|
630
727
|
}), Y in c || d.push({
|
|
631
728
|
key: Y,
|
|
632
|
-
value:
|
|
729
|
+
value: Q
|
|
730
|
+
}), X in c || d.push({
|
|
731
|
+
key: X,
|
|
732
|
+
value: kt
|
|
633
733
|
}), d.length > 0) {
|
|
634
|
-
let e = Object.keys(c).length > 0, n =
|
|
734
|
+
let e = Object.keys(c).length > 0, n = Ut(i, d, e);
|
|
635
735
|
if (!n) t.warn(`[bitboss-ui] .vscode/settings.json is not a JSON object — ${$}.`);
|
|
636
736
|
else if (l(n)) for (let e of d) o(`added "${e.key}"`);
|
|
637
737
|
}
|
|
638
|
-
a.length !== 0 && s(i) && t.info(`[bitboss-ui] .vscode/settings.json: ${a.join("; ")}. ${
|
|
738
|
+
a.length !== 0 && s(i) && t.info(`[bitboss-ui] .vscode/settings.json: ${a.join("; ")}. ${Rt}`);
|
|
639
739
|
}
|
|
640
|
-
var
|
|
641
|
-
async function
|
|
740
|
+
var Gt = "virtual:bb-icon/", Kt = "\0virtual:bb-icon/";
|
|
741
|
+
async function qt(e, t) {
|
|
642
742
|
try {
|
|
643
743
|
let { ensureMcpConfigs: n, missingMcpPeers: r } = await import(
|
|
644
744
|
/* @vite-ignore */
|
|
645
|
-
new URL("data:text/javascript;base64,LyoqCiAqIFNoYXJlZCB3cml0ZXJzIHRoYXQgcmVnaXN0ZXIgdGhlIGJpdGJvc3MtdWkgTUNQIHNlcnZlciBpbiBlYWNoIGFnZW50CiAqIGhhcm5lc3MncyBjb25maWcgZmlsZS4gVXNlZCBieSBgYml0Ym9zcy11aSBhaS1pbml0YCAoYmluOyBvbiBieSBkZWZhdWx0LAogKiBgLS1uby1tY3BgIHNraXBzIGl0KSBhbmQsIG9wdC1pbiwKICogYnkgdGhlIGRldiBzZXJ2ZXIgKHZpdGUvbnV4dCBwbHVnaW4gYG1jcDogdHJ1ZWApLgogKgogKiBFdmVyeSB3cml0ZXIgaXMgbWVyZ2Utc2FmZSAobmV2ZXIgZGlzdHVyYnMgb3RoZXIgc2VydmVycyksIGlkZW1wb3RlbnQKICogKHJldHVybnMgYHVuY2hhbmdlZGAgd2hlbiB0aGUgZW50cnkgYWxyZWFkeSBtYXRjaGVzKSwgYW5kIHJlcG9ydHMgd2hhdCBpdAogKiBkaWQgc28gY2FsbGVycyBjYW4gbG9nIGl0LiBIYXJuZXNzIGNvbmZpZyBzaGFwZXMgZGlmZmVyOgogKiAgIC0gQ2xhdWRlIENvZGUgLyBDdXJzb3IgICAgICAgICAgICDihpIgYHsgbWNwU2VydmVyczogeyBuYW1lOiB7IGNvbW1hbmQsIGFyZ3MgfSB9IH1gCiAqICAgLSBWUyBDb2RlIC8gQ29waWxvdCAgICAgICAgICAgICAgIOKGkiBgeyBzZXJ2ZXJzOiB7IG5hbWU6IHsgdHlwZTogJ3N0ZGlvJywg4oCmIH0gfSB9YAogKiAoVlMgQ29kZSBrZXlzIHRoZSBjb250YWluZXIgYHNlcnZlcnNgIGFuZCByZXF1aXJlcyBhbiBleHBsaWNpdCBgdHlwZWAuKQogKi8KCmltcG9ydCB7IGV4aXN0c1N5bmMsIG1rZGlyU3luYywgcmVhZEZpbGVTeW5jLCB3cml0ZUZpbGVTeW5jIH0gZnJvbSAnbm9kZTpmcyc7CmltcG9ydCB7IHJlZnVzZUxpbmtlZFRhcmdldCB9IGZyb20gJy4vbGlua2VkLXRhcmdldC5tanMnOwppbXBvcnQgeyBkaXJuYW1lLCBqb2luLCByZXNvbHZlIH0gZnJvbSAnbm9kZTpwYXRoJzsKCmV4cG9ydCBjb25zdCBNQ1BfU0VSVkVSX05BTUUgPSAnYml0Ym9zcy11aSc7CmNvbnN0IENPTU1BTkQgPSAnbm9kZSc7CgovKioKICogUGF0aCB0byB0aGUgaW5zdGFsbGVkIENMSSwgcmVsYXRpdmUgdG8gdGhlIHByb2plY3Qgcm9vdC4KICoKICogUmVsYXRpdmUgb24gcHVycG9zZTogaGFybmVzc2VzIHNwYXduIGEgc3RkaW8gc2VydmVyIHdpdGggdGhlIHByb2plY3Qgcm9vdCBhcwogKiBpdHMgd29ya2luZyBkaXJlY3RvcnksIGFuZCBhIHJlbGF0aXZlIHBhdGggaXMgd2hhdCBsZXRzIGEgY29tbWl0dGVkCiAqIGAubWNwLmpzb25gIHdvcmsgb24gYSB0ZWFtbWF0ZSdzIG1hY2hpbmUuIEFuIGFic29sdXRlIHBhdGggd291bGQgcGluIHRoZQogKiBjb25maWcgdG8gd2hvZXZlciByYW4gYGFpLWluaXRgLgogKgogKiBGb3J3YXJkIHNsYXNoZXMgZXZlbiBvbiBXaW5kb3dzIOKAlCBOb2RlIGFjY2VwdHMgdGhlbSwgYW5kIEpTT04gY29uZmlncyBhcmUKICogc2hhcmVkIGFjcm9zcyBwbGF0Zm9ybXMuCiAqLwpleHBvcnQgY29uc3QgTUNQX0JJTl9QQVRIID0gJ25vZGVfbW9kdWxlcy9iaXRib3NzLXVpL2Jpbi9iaXRib3NzLXVpLm1qcyc7CgovKioKICogVGhlIE1DUCBzZXJ2ZXIncyBvd24gcnVudGltZSBuZWVkcywgZGVjbGFyZWQgYXMgT1BUSU9OQUwgcGVlcnMgcmF0aGVyIHRoYW4KICogZGVwZW5kZW5jaWVzOiB0b2dldGhlciB0aGV5IGFyZSB+MTIgTUIg4oCUIG1vcmUgdGhhbiBldmVyeSBydW50aW1lIGRlcGVuZGVuY3kKICogb2YgdGhlIGNvbXBvbmVudCBsaWJyYXJ5IGNvbWJpbmVkIOKAlCBhbmQgbm90aGluZyBidXQgYGJpdGJvc3MtdWkgbWNwYCBsb2FkcwogKiB0aGVtLgogKi8KZXhwb3J0IGNvbnN0IE1DUF9QRUVSUyA9IFsnQG1vZGVsY29udGV4dHByb3RvY29sL3NkaycsICd6b2QnXTsKCi8qKgogKiBEaXJlY3RvcnkgcHJvYmUsIHdhbGtpbmcgdXAgZnJvbSBgZGlyYC4gRGVsaWJlcmF0ZWx5IE5PVCBgcmVxdWlyZS5yZXNvbHZlYDoKICogYW4gRVNNLW9ubHkgcGFja2FnZSB3aG9zZSBgZXhwb3J0c2AgbWFwIGRlY2xhcmVzIG5vIGByZXF1aXJlYCBjb25kaXRpb24KICogdGhyb3dzIEVSUl9QQUNLQUdFX1BBVEhfTk9UX0VYUE9SVEVEIG9uIGEgcGVyZmVjdGx5IGdvb2QgaW5zdGFsbCDigJQgdGhlIHNhbWUKICogdHJhcCBkb2N1bWVudGVkIG9uIGBoYXNJbmVydGlhYCBpbiB0aGUgVml0ZSBwbHVnaW4uIEEgZGlyZWN0b3J5IGNoZWNrIGlzCiAqIGV4cG9ydHMtbWFwLWFnbm9zdGljLgogKi8KZnVuY3Rpb24gaXNJbnN0YWxsZWRGcm9tKGRpciwgbmFtZSkgewoJY29uc3Qgc2VnbWVudHMgPSBuYW1lLnNwbGl0KCcvJyk7CglsZXQgY3VycmVudCA9IHJlc29sdmUoZGlyKTsKCWZvciAoOzspIHsKCQlpZiAoZXhpc3RzU3luYyhqb2luKGN1cnJlbnQsICdub2RlX21vZHVsZXMnLCAuLi5zZWdtZW50cykpKSByZXR1cm4gdHJ1ZTsKCQljb25zdCBwYXJlbnQgPSBkaXJuYW1lKGN1cnJlbnQpOwoJCWlmIChwYXJlbnQgPT09IGN1cnJlbnQpIHJldHVybiBmYWxzZTsKCQljdXJyZW50ID0gcGFyZW50OwoJfQp9CgovKioKICogV2hpY2ggTUNQIHBlZXJzIHRoZSBwcm9qZWN0IGlzIG1pc3NpbmcsIHNvIGEgY2FsbGVyIHJlZ2lzdGVyaW5nIHRoZSBzZXJ2ZXIKICogY2FuIHNheSBzbyBOT1cgcmF0aGVyIHRoYW4gbGV0IHRoZSBoYXJuZXNzIGRpc2NvdmVyIGl0IG9uIGZpcnN0IGxhdW5jaCDigJQgdGhlCiAqIGNvbmZpZyBpcyB3cml0dGVuIGJ5IGBhaS1pbml0YCAvIHRoZSBkZXYgc2VydmVyLCBidXQgdGhlIGZhaWx1cmUgd291bGQKICogc3VyZmFjZSBtdWNoIGxhdGVyLCBpbnNpZGUgYW4gYWdlbnQsIGFzIGEgc2VydmVyIHRoYXQgd291bGQgbm90IHN0YXJ0LgogKgogKiBSZXR1cm5zIGBbXWAgd2hlbiBldmVyeXRoaW5nIG5lZWRlZCBpcyBwcmVzZW50LgogKi8KZXhwb3J0IGZ1bmN0aW9uIG1pc3NpbmdNY3BQZWVycyhyb290KSB7CglyZXR1cm4gTUNQX1BFRVJTLmZpbHRlcigobmFtZSkgPT4gIWlzSW5zdGFsbGVkRnJvbShyb290LCBuYW1lKSk7Cn0KCi8qKgogKiBJbnZva2UgdGhlIElOU1RBTExFRCBiaW5hcnkgZGlyZWN0bHksIG5ldmVyIGBucHhgICgyMDI2LTA5LTA5LCBzdXBlcnNlZGluZwogKiB0aGUgMjAyNi0wOC0wNiBwaW5uZWQtbnB4IHJ1bGluZyDigJQgc2VlIGJlbG93KS4KICoKICogVGhlIDIwMjYtMDgtMDYgcmV2aWV3IHBpbm5lZCB0aGUgc3BlYyB0byB0aGlzIHBhY2thZ2UncyBvd24gdmVyc2lvbiBiZWNhdXNlCiAqIE1DUCBob3N0cyBzcGF3biB0aGUgZW50cnkgd2l0aCBub24tVFRZIHN0ZGlvLCB3aGVyZSBgbnB4YCBpbnN0YWxscyB3aXRob3V0CiAqIHByb21wdGluZzogYW4gdW5waW5uZWQgYG5weCBiaXRib3NzLXVpIG1jcGAgd291bGQgc2lsZW50bHkgZG93bmxvYWQgYW5kCiAqIGV4ZWN1dGUgd2hhdGV2ZXIgYGJpdGJvc3MtdWlAbGF0ZXN0YCByZXNvbHZlZCB0bywgYW5kIGFuc3dlciBmcm9tIGEKICogZGlmZmVyZW50IHZlcnNpb24ncyBrbm93bGVkZ2UgYmFzZSB0aGFuIHRoZSBwcm9qZWN0IHVzZXMuCiAqCiAqIFRoZSBwaW4gZml4ZWQgdGhhdCBhbmQgYnJva2UgdGhlIHNlcnZlciBvdXRyaWdodC4gYG5weCBiaXRib3NzLXVpQHgueS56IG1jcGAKICogcnVucyB0aGUgcGFja2FnZSBPVVQgT0YgVEhFIE5QWCBDQUNIRSwgYW5kIHRoZSBNQ1AgZW50cnkgcmVzb2x2ZXMgaXRzCiAqIG9wdGlvbmFsIHBlZXJzIChgQG1vZGVsY29udGV4dHByb3RvY29sL3Nka2AsIGB6b2RgKSByZWxhdGl2ZSB0byB0aGUgcGFja2FnZQogKiBpdCBpcyBydW5uaW5nIGZyb20uIFRoZSBjYWNoZSBkaXJlY3RvcnkgbmV2ZXIgaGFzIHRoZW0sIHNvIHRoZSBzZXJ2ZXIgY2Fubm90CiAqIHN0YXJ0IG5vIG1hdHRlciB3aGF0IHRoZSBwcm9qZWN0IGhhcyBpbnN0YWxsZWQg4oCUIHJlcG9ydGVkIGZyb20gYSBjb25zdW1lcgogKiBwcm9qZWN0IHdpdGggYm90aCBwZWVycyBwcmVzZW50LgogKgogKiBBIHBhdGggdG8gdGhlIGxvY2FsIGJpbmFyeSBzYXRpc2ZpZXMgdGhlIG9yaWdpbmFsIHJ1bGluZyBNT1JFIGNvbXBsZXRlbHkKICogdGhhbiB0aGUgcGluIGRpZDogaXQgY2Fubm90IHJlYWNoIHRoZSByZWdpc3RyeSBhdCBhbGwsIHNvIHRoZXJlIGlzIG5vdGhpbmcKICogdG8gZG93bmxvYWQgYW5kIG5vIGBsYXRlc3RgIHRvIGRyaWZ0IHRvLiBJdCBhbHNvIHJldGlyZXMgdGhlIHBpbidzIG93bgogKiBtYWludGVuYW5jZSBwcm9ibGVtLCB3aGVyZSBhIGNvbmZpZyB3cml0dGVuIGF0IG9uZSB2ZXJzaW9uIGtlcHQgbmFtaW5nIHRoYXQKICogdmVyc2lvbiBhZnRlciBhbiB1cGdyYWRlLCBsZXR0aW5nIGFuIGFnZW50IHF1ZXJ5IGEgbWFuaWZlc3QgdGhhdCBkaXNhZ3JlZWQKICogd2l0aCB0aGUgY29kZSBpdCB3YXMgd3JpdGluZyBhZ2FpbnN0LiBUaGUgYmluYXJ5IG9uIGRpc2sgSVMgdGhlIGluc3RhbGxlZAogKiB2ZXJzaW9uLCBieSBjb25zdHJ1Y3Rpb24uCiAqLwpjb25zdCBBUkdTID0gW01DUF9CSU5fUEFUSCwgJ21jcCddOwoKY29uc3Qgc3RkaW9FbnRyeSA9ICgpID0+ICh7IGNvbW1hbmQ6IENPTU1BTkQsIGFyZ3M6IFsuLi5BUkdTXSB9KTsKY29uc3QgdnNjb2RlRW50cnkgPSAoKSA9PiAoewoJdHlwZTogJ3N0ZGlvJywKCWNvbW1hbmQ6IENPTU1BTkQsCglhcmdzOiBbLi4uQVJHU10sCn0pOwoKZnVuY3Rpb24gd3JpdGVKc29uKHBhdGgsIGRhdGEpIHsKCW1rZGlyU3luYyhkaXJuYW1lKHBhdGgpLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTsKCXdyaXRlRmlsZVN5bmMocGF0aCwgYCR7SlNPTi5zdHJpbmdpZnkoZGF0YSwgbnVsbCwgJ1x0Jyl9XG5gLCAndXRmLTgnKTsKfQoKLyoqCiAqIE1lcmdlIHRoZSBzZXJ2ZXIgZW50cnkgaW50byBgcGF0aGAncyBgPGNvbnRhaW5lcktleT5gIG1hcC4gUmV0dXJucwogKiBgeyBwYXRoLCBsYWJlbCwgYWN0aW9uIH1gIHdpdGggYWN0aW9uIOKIiCBjcmVhdGVkfHVwZGF0ZWR8dW5jaGFuZ2VkfHNraXBwZWQuCiAqLwpmdW5jdGlvbiBlbnN1cmVFbnRyeShwYXRoLCBjb250YWluZXJLZXksIGVudHJ5LCBsYWJlbCkgewoJdHJ5IHsKCQlyZWZ1c2VMaW5rZWRUYXJnZXQocGF0aCk7Cgl9IGNhdGNoIChlcnJvcikgewoJCXJldHVybiB7IHBhdGgsIGxhYmVsLCBhY3Rpb246ICdza2lwcGVkJywgcmVhc29uOiBlcnJvci5tZXNzYWdlIH07Cgl9CglsZXQgY29uZmlnID0ge307Cgljb25zdCBleGlzdGVkID0gZXhpc3RzU3luYyhwYXRoKTsKCWlmIChleGlzdGVkKSB7CgkJdHJ5IHsKCQkJY29uZmlnID0gSlNPTi5wYXJzZShyZWFkRmlsZVN5bmMocGF0aCwgJ3V0Zi04JykpOwoJCX0gY2F0Y2ggKGVycm9yKSB7CgkJCWNvbnN0IG1lc3NhZ2UgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IubWVzc2FnZSA6IFN0cmluZyhlcnJvcik7CgkJCXJldHVybiB7CgkJCQlwYXRoLAoJCQkJbGFiZWwsCgkJCQlhY3Rpb246ICdza2lwcGVkJywKCQkJCXJlYXNvbjogYGludmFsaWQgSlNPTiAoJHttZXNzYWdlfSlgLAoJCQl9OwoJCX0KCX0KCWlmICghY29uZmlnW2NvbnRhaW5lcktleV0gfHwgdHlwZW9mIGNvbmZpZ1tjb250YWluZXJLZXldICE9PSAnb2JqZWN0JykgewoJCWNvbmZpZ1tjb250YWluZXJLZXldID0ge307Cgl9CgoJY29uc3QgcHJldmlvdXMgPSBjb25maWdbY29udGFpbmVyS2V5XVtNQ1BfU0VSVkVSX05BTUVdOwoJaWYgKHByZXZpb3VzICYmIEpTT04uc3RyaW5naWZ5KHByZXZpb3VzKSA9PT0gSlNPTi5zdHJpbmdpZnkoZW50cnkpKSB7CgkJcmV0dXJuIHsgcGF0aCwgbGFiZWwsIGFjdGlvbjogJ3VuY2hhbmdlZCcgfTsKCX0KCgljb25maWdbY29udGFpbmVyS2V5XVtNQ1BfU0VSVkVSX05BTUVdID0gZW50cnk7Cgl0cnkgewoJCXdyaXRlSnNvbihwYXRoLCBjb25maWcpOwoJfSBjYXRjaCAoZXJyb3IpIHsKCQljb25zdCBtZXNzYWdlID0gZXJyb3IgaW5zdGFuY2VvZiBFcnJvciA/IGVycm9yLm1lc3NhZ2UgOiBTdHJpbmcoZXJyb3IpOwoJCXJldHVybiB7IHBhdGgsIGxhYmVsLCBhY3Rpb246ICdza2lwcGVkJywgcmVhc29uOiBtZXNzYWdlIH07Cgl9CglyZXR1cm4geyBwYXRoLCBsYWJlbCwgYWN0aW9uOiBleGlzdGVkID8gJ3VwZGF0ZWQnIDogJ2NyZWF0ZWQnIH07Cn0KCi8qKiBDbGF1ZGUgQ29kZSDigJQgcHJvamVjdC1yb290IGAubWNwLmpzb25gLiAqLwpleHBvcnQgY29uc3Qgd3JpdGVDbGF1ZGVDb2RlQ29uZmlnID0gKHJvb3QpID0+CgllbnN1cmVFbnRyeSgKCQlqb2luKHJvb3QsICcubWNwLmpzb24nKSwKCQknbWNwU2VydmVycycsCgkJc3RkaW9FbnRyeSgpLAoJCSdDbGF1ZGUgQ29kZScKCSk7CgovKiogQ3Vyc29yIOKAlCBwcm9qZWN0IGAuY3Vyc29yL21jcC5qc29uYC4gKi8KZXhwb3J0IGNvbnN0IHdyaXRlQ3Vyc29yQ29uZmlnID0gKHJvb3QpID0+CgllbnN1cmVFbnRyeSgKCQlqb2luKHJvb3QsICcuY3Vyc29yJywgJ21jcC5qc29uJyksCgkJJ21jcFNlcnZlcnMnLAoJCXN0ZGlvRW50cnkoKSwKCQknQ3Vyc29yJwoJKTsKCi8qKiBWUyBDb2RlIC8gR2l0SHViIENvcGlsb3Qg4oCUIHByb2plY3QgYC52c2NvZGUvbWNwLmpzb25gIChgc2VydmVyc2AgKyBgdHlwZWApLiAqLwpleHBvcnQgY29uc3Qgd3JpdGVWc2NvZGVDb25maWcgPSAocm9vdCkgPT4KCWVuc3VyZUVudHJ5KAoJCWpvaW4ocm9vdCwgJy52c2NvZGUnLCAnbWNwLmpzb24nKSwKCQknc2VydmVycycsCgkJdnNjb2RlRW50cnkoKSwKCQknVlMgQ29kZSAvIENvcGlsb3QnCgkpOwoKLyoqCiAqIFJlZ2lzdGVyIHRoZSBzZXJ2ZXIgaW4gZXZlcnkgcHJvamVjdC1zY29wZWQgaGFybmVzcy4gV2luZHN1cmYgaXMgbm90IGFtb25nCiAqIHRoZW06IGl0IHJlYWRzIG9ubHkgYSBHTE9CQUwgKGhvbWUtZGlyKSBjb25maWcsIGFuZCBkZXRlY3Rpbmcgd2hldGhlciBpdCBpcwogKiBpbnN0YWxsZWQgcHJvdmVkIHVucmVsaWFibGUgKGEgbGVmdG92ZXIgYH4vLmNvZGVpdW1gIGZyb20gYW4gdW5pbnN0YWxsZWQKICogV2luZHN1cmYpLCBzbyBhIGRlZmF1bHQgcnVuIG11c3Qgbm90IHdyaXRlIG91dHNpZGUgdGhlIHByb2plY3QuIEl0cwogKiBgLndpbmRzdXJmL3J1bGVzYCBwb2ludGVyIGZpbGUgaXMgc3RpbGwgd3JpdHRlbiBieSBgYWktaW5pdGAuCiAqLwpleHBvcnQgZnVuY3Rpb24gZW5zdXJlTWNwQ29uZmlncyhyb290KSB7CglyZXR1cm4gWwoJCXdyaXRlQ2xhdWRlQ29kZUNvbmZpZyhyb290KSwKCQl3cml0ZUN1cnNvckNvbmZpZyhyb290KSwKCQl3cml0ZVZzY29kZUNvbmZpZyhyb290KSwKCV07Cn0KCi8qKgogKiBUaGUgcGFja2FnZSBtYW5hZ2VyIGEgcHJvamVjdCB1c2VzLCBmcm9tIHRoZSBuZWFyZXN0IGxvY2tmaWxlIHdhbGtpbmcgdXAKICogKGEgd29ya3NwYWNlIHBhY2thZ2Ugc2l0cyBiZWxvdyB0aGUgbG9ja2ZpbGUpLiBgbnBtYCB3aGVuIG5vbmUgaXMgZm91bmQuCiAqLwpleHBvcnQgZnVuY3Rpb24gZGV0ZWN0UGFja2FnZU1hbmFnZXIocm9vdCkgewoJbGV0IGN1cnJlbnQgPSByZXNvbHZlKHJvb3QpOwoJZm9yICg7OykgewoJCWlmIChleGlzdHNTeW5jKGpvaW4oY3VycmVudCwgJ3BucG0tbG9jay55YW1sJykpKSByZXR1cm4gJ3BucG0nOwoJCWlmIChleGlzdHNTeW5jKGpvaW4oY3VycmVudCwgJ3lhcm4ubG9jaycpKSkgcmV0dXJuICd5YXJuJzsKCQlpZiAoCgkJCWV4aXN0c1N5bmMoam9pbihjdXJyZW50LCAnYnVuLmxvY2snKSkgfHwKCQkJZXhpc3RzU3luYyhqb2luKGN1cnJlbnQsICdidW4ubG9ja2InKSkKCQkpCgkJCXJldHVybiAnYnVuJzsKCQlpZiAoZXhpc3RzU3luYyhqb2luKGN1cnJlbnQsICdwYWNrYWdlLWxvY2suanNvbicpKSkgcmV0dXJuICducG0nOwoJCWNvbnN0IHBhcmVudCA9IGRpcm5hbWUoY3VycmVudCk7CgkJaWYgKHBhcmVudCA9PT0gY3VycmVudCkgcmV0dXJuICducG0nOwoJCWN1cnJlbnQgPSBwYXJlbnQ7Cgl9Cn0KCi8qKgogKiBUaGUgYXJndiB0aGF0IGFkZHMgYHBhY2thZ2VzYCBhcyBkZXYgZGVwZW5kZW5jaWVzIHdpdGggYG1hbmFnZXJgLiBCYXJlCiAqIG5hbWVzLCBubyB2ZXJzaW9uIHJhbmdlczogdGhlIHBlZXIgcmFuZ2VzIChgPj0xLjI5LjBgLCBgXjMuMjUgfHwgXjQuMGApIGFyZQogKiBvcGVuLWVuZGVkLCBzbyB0aGUgbGF0ZXN0IHJlbGVhc2UgYWx3YXlzIHNhdGlzZmllcyB0aGVtIOKAlCBhbmQgYSByYW5nZSB3aXRoCiAqIGB8fGAgb3Igc3BhY2VzIHdvdWxkIG5lZWQgc2hlbGwgcXVvdGluZyBvbiBXaW5kb3dzLCB3aGVyZSB0aGUgY29tbWFuZCBydW5zCiAqIHRocm91Z2ggYSBzaGVsbC4KICovCmV4cG9ydCBmdW5jdGlvbiBkZXZJbnN0YWxsQ29tbWFuZChtYW5hZ2VyLCBwYWNrYWdlcykgewoJY29uc3QgdmVyYiA9IHsKCQlucG06IFsnaW5zdGFsbCcsICctLXNhdmUtZGV2J10sCgkJcG5wbTogWydhZGQnLCAnLUQnXSwKCQl5YXJuOiBbJ2FkZCcsICctRCddLAoJCWJ1bjogWydhZGQnLCAnLWQnXSwKCX1bbWFuYWdlcl0gPz8gWydpbnN0YWxsJywgJy0tc2F2ZS1kZXYnXTsKCXJldHVybiBbbWFuYWdlciwgLi4udmVyYiwgLi4ucGFja2FnZXNdOwp9Cg==", "" + import.meta.url).href
|
|
745
|
+
new URL("data:text/javascript;base64,LyoqCiAqIFNoYXJlZCB3cml0ZXJzIHRoYXQgcmVnaXN0ZXIgdGhlIGJpdGJvc3MtdWkgTUNQIHNlcnZlciBpbiBlYWNoIGFnZW50CiAqIGhhcm5lc3MncyBjb25maWcgZmlsZS4gVXNlZCBieSBgYml0Ym9zcy11aSBhaS1pbml0YCAoYmluOyBvbiBieSBkZWZhdWx0LAogKiBgLS1uby1tY3BgIHNraXBzIGl0KSBhbmQsIG9wdC1pbiwKICogYnkgdGhlIGRldiBzZXJ2ZXIgKHZpdGUvbnV4dCBwbHVnaW4gYG1jcDogdHJ1ZWApLgogKgogKiBFdmVyeSB3cml0ZXIgaXMgbWVyZ2Utc2FmZSAobmV2ZXIgZGlzdHVyYnMgb3RoZXIgc2VydmVycyksIGlkZW1wb3RlbnQKICogKHJldHVybnMgYHVuY2hhbmdlZGAgd2hlbiB0aGUgZW50cnkgYWxyZWFkeSBtYXRjaGVzKSwgYW5kIHJlcG9ydHMgd2hhdCBpdAogKiBkaWQgc28gY2FsbGVycyBjYW4gbG9nIGl0LiBIYXJuZXNzIGNvbmZpZyBzaGFwZXMgZGlmZmVyOgogKiAgIC0gQ2xhdWRlIENvZGUgLyBDdXJzb3IgICAgICAgICAgICDihpIgYHsgbWNwU2VydmVyczogeyBuYW1lOiB7IGNvbW1hbmQsIGFyZ3MgfSB9IH1gCiAqICAgLSBWUyBDb2RlIC8gQ29waWxvdCAgICAgICAgICAgICAgIOKGkiBgeyBzZXJ2ZXJzOiB7IG5hbWU6IHsgdHlwZTogJ3N0ZGlvJywg4oCmIH0gfSB9YAogKiAgIC0gWmVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICDihpIgYHsgY29udGV4dF9zZXJ2ZXJzOiB7IG5hbWU6IHsgY29tbWFuZCwgYXJncyB9IH0gfWAKICogKFZTIENvZGUga2V5cyB0aGUgY29udGFpbmVyIGBzZXJ2ZXJzYCBhbmQgcmVxdWlyZXMgYW4gZXhwbGljaXQgYHR5cGVgLikKICovCgppbXBvcnQgeyBleGlzdHNTeW5jLCBta2RpclN5bmMsIHJlYWRGaWxlU3luYywgd3JpdGVGaWxlU3luYyB9IGZyb20gJ25vZGU6ZnMnOwppbXBvcnQgeyByZWZ1c2VMaW5rZWRUYXJnZXQgfSBmcm9tICcuL2xpbmtlZC10YXJnZXQubWpzJzsKaW1wb3J0IHsgZGlybmFtZSwgam9pbiwgcmVzb2x2ZSB9IGZyb20gJ25vZGU6cGF0aCc7CgpleHBvcnQgY29uc3QgTUNQX1NFUlZFUl9OQU1FID0gJ2JpdGJvc3MtdWknOwpjb25zdCBDT01NQU5EID0gJ25vZGUnOwoKLyoqCiAqIFBhdGggdG8gdGhlIGluc3RhbGxlZCBDTEksIHJlbGF0aXZlIHRvIHRoZSBwcm9qZWN0IHJvb3QuCiAqCiAqIFJlbGF0aXZlIG9uIHB1cnBvc2U6IGhhcm5lc3NlcyBzcGF3biBhIHN0ZGlvIHNlcnZlciB3aXRoIHRoZSBwcm9qZWN0IHJvb3QgYXMKICogaXRzIHdvcmtpbmcgZGlyZWN0b3J5LCBhbmQgYSByZWxhdGl2ZSBwYXRoIGlzIHdoYXQgbGV0cyBhIGNvbW1pdHRlZAogKiBgLm1jcC5qc29uYCB3b3JrIG9uIGEgdGVhbW1hdGUncyBtYWNoaW5lLiBBbiBhYnNvbHV0ZSBwYXRoIHdvdWxkIHBpbiB0aGUKICogY29uZmlnIHRvIHdob2V2ZXIgcmFuIGBhaS1pbml0YC4KICoKICogRm9yd2FyZCBzbGFzaGVzIGV2ZW4gb24gV2luZG93cyDigJQgTm9kZSBhY2NlcHRzIHRoZW0sIGFuZCBKU09OIGNvbmZpZ3MgYXJlCiAqIHNoYXJlZCBhY3Jvc3MgcGxhdGZvcm1zLgogKi8KZXhwb3J0IGNvbnN0IE1DUF9CSU5fUEFUSCA9ICdub2RlX21vZHVsZXMvYml0Ym9zcy11aS9iaW4vYml0Ym9zcy11aS5tanMnOwoKLyoqCiAqIFRoZSBNQ1Agc2VydmVyJ3Mgb3duIHJ1bnRpbWUgbmVlZHMsIGRlY2xhcmVkIGFzIE9QVElPTkFMIHBlZXJzIHJhdGhlciB0aGFuCiAqIGRlcGVuZGVuY2llczogdG9nZXRoZXIgdGhleSBhcmUgfjEyIE1CIOKAlCBtb3JlIHRoYW4gZXZlcnkgcnVudGltZSBkZXBlbmRlbmN5CiAqIG9mIHRoZSBjb21wb25lbnQgbGlicmFyeSBjb21iaW5lZCDigJQgYW5kIG5vdGhpbmcgYnV0IGBiaXRib3NzLXVpIG1jcGAgbG9hZHMKICogdGhlbS4KICovCmV4cG9ydCBjb25zdCBNQ1BfUEVFUlMgPSBbJ0Btb2RlbGNvbnRleHRwcm90b2NvbC9zZGsnLCAnem9kJ107CgovKioKICogRGlyZWN0b3J5IHByb2JlLCB3YWxraW5nIHVwIGZyb20gYGRpcmAuIERlbGliZXJhdGVseSBOT1QgYHJlcXVpcmUucmVzb2x2ZWA6CiAqIGFuIEVTTS1vbmx5IHBhY2thZ2Ugd2hvc2UgYGV4cG9ydHNgIG1hcCBkZWNsYXJlcyBubyBgcmVxdWlyZWAgY29uZGl0aW9uCiAqIHRocm93cyBFUlJfUEFDS0FHRV9QQVRIX05PVF9FWFBPUlRFRCBvbiBhIHBlcmZlY3RseSBnb29kIGluc3RhbGwg4oCUIHRoZSBzYW1lCiAqIHRyYXAgZG9jdW1lbnRlZCBvbiBgaGFzSW5lcnRpYWAgaW4gdGhlIFZpdGUgcGx1Z2luLiBBIGRpcmVjdG9yeSBjaGVjayBpcwogKiBleHBvcnRzLW1hcC1hZ25vc3RpYy4KICovCmZ1bmN0aW9uIGlzSW5zdGFsbGVkRnJvbShkaXIsIG5hbWUpIHsKCWNvbnN0IHNlZ21lbnRzID0gbmFtZS5zcGxpdCgnLycpOwoJbGV0IGN1cnJlbnQgPSByZXNvbHZlKGRpcik7Cglmb3IgKDs7KSB7CgkJaWYgKGV4aXN0c1N5bmMoam9pbihjdXJyZW50LCAnbm9kZV9tb2R1bGVzJywgLi4uc2VnbWVudHMpKSkgcmV0dXJuIHRydWU7CgkJY29uc3QgcGFyZW50ID0gZGlybmFtZShjdXJyZW50KTsKCQlpZiAocGFyZW50ID09PSBjdXJyZW50KSByZXR1cm4gZmFsc2U7CgkJY3VycmVudCA9IHBhcmVudDsKCX0KfQoKLyoqCiAqIFdoaWNoIE1DUCBwZWVycyB0aGUgcHJvamVjdCBpcyBtaXNzaW5nLCBzbyBhIGNhbGxlciByZWdpc3RlcmluZyB0aGUgc2VydmVyCiAqIGNhbiBzYXkgc28gTk9XIHJhdGhlciB0aGFuIGxldCB0aGUgaGFybmVzcyBkaXNjb3ZlciBpdCBvbiBmaXJzdCBsYXVuY2gg4oCUIHRoZQogKiBjb25maWcgaXMgd3JpdHRlbiBieSBgYWktaW5pdGAgLyB0aGUgZGV2IHNlcnZlciwgYnV0IHRoZSBmYWlsdXJlIHdvdWxkCiAqIHN1cmZhY2UgbXVjaCBsYXRlciwgaW5zaWRlIGFuIGFnZW50LCBhcyBhIHNlcnZlciB0aGF0IHdvdWxkIG5vdCBzdGFydC4KICoKICogUmV0dXJucyBgW11gIHdoZW4gZXZlcnl0aGluZyBuZWVkZWQgaXMgcHJlc2VudC4KICovCmV4cG9ydCBmdW5jdGlvbiBtaXNzaW5nTWNwUGVlcnMocm9vdCkgewoJcmV0dXJuIE1DUF9QRUVSUy5maWx0ZXIoKG5hbWUpID0+ICFpc0luc3RhbGxlZEZyb20ocm9vdCwgbmFtZSkpOwp9CgovKioKICogSW52b2tlIHRoZSBJTlNUQUxMRUQgYmluYXJ5IGRpcmVjdGx5LCBuZXZlciBgbnB4YCAoMjAyNi0wOS0wOSwgc3VwZXJzZWRpbmcKICogdGhlIDIwMjYtMDgtMDYgcGlubmVkLW5weCBydWxpbmcg4oCUIHNlZSBiZWxvdykuCiAqCiAqIFRoZSAyMDI2LTA4LTA2IHJldmlldyBwaW5uZWQgdGhlIHNwZWMgdG8gdGhpcyBwYWNrYWdlJ3Mgb3duIHZlcnNpb24gYmVjYXVzZQogKiBNQ1AgaG9zdHMgc3Bhd24gdGhlIGVudHJ5IHdpdGggbm9uLVRUWSBzdGRpbywgd2hlcmUgYG5weGAgaW5zdGFsbHMgd2l0aG91dAogKiBwcm9tcHRpbmc6IGFuIHVucGlubmVkIGBucHggYml0Ym9zcy11aSBtY3BgIHdvdWxkIHNpbGVudGx5IGRvd25sb2FkIGFuZAogKiBleGVjdXRlIHdoYXRldmVyIGBiaXRib3NzLXVpQGxhdGVzdGAgcmVzb2x2ZWQgdG8sIGFuZCBhbnN3ZXIgZnJvbSBhCiAqIGRpZmZlcmVudCB2ZXJzaW9uJ3Mga25vd2xlZGdlIGJhc2UgdGhhbiB0aGUgcHJvamVjdCB1c2VzLgogKgogKiBUaGUgcGluIGZpeGVkIHRoYXQgYW5kIGJyb2tlIHRoZSBzZXJ2ZXIgb3V0cmlnaHQuIGBucHggYml0Ym9zcy11aUB4LnkueiBtY3BgCiAqIHJ1bnMgdGhlIHBhY2thZ2UgT1VUIE9GIFRIRSBOUFggQ0FDSEUsIGFuZCB0aGUgTUNQIGVudHJ5IHJlc29sdmVzIGl0cwogKiBvcHRpb25hbCBwZWVycyAoYEBtb2RlbGNvbnRleHRwcm90b2NvbC9zZGtgLCBgem9kYCkgcmVsYXRpdmUgdG8gdGhlIHBhY2thZ2UKICogaXQgaXMgcnVubmluZyBmcm9tLiBUaGUgY2FjaGUgZGlyZWN0b3J5IG5ldmVyIGhhcyB0aGVtLCBzbyB0aGUgc2VydmVyIGNhbm5vdAogKiBzdGFydCBubyBtYXR0ZXIgd2hhdCB0aGUgcHJvamVjdCBoYXMgaW5zdGFsbGVkIOKAlCByZXBvcnRlZCBmcm9tIGEgY29uc3VtZXIKICogcHJvamVjdCB3aXRoIGJvdGggcGVlcnMgcHJlc2VudC4KICoKICogQSBwYXRoIHRvIHRoZSBsb2NhbCBiaW5hcnkgc2F0aXNmaWVzIHRoZSBvcmlnaW5hbCBydWxpbmcgTU9SRSBjb21wbGV0ZWx5CiAqIHRoYW4gdGhlIHBpbiBkaWQ6IGl0IGNhbm5vdCByZWFjaCB0aGUgcmVnaXN0cnkgYXQgYWxsLCBzbyB0aGVyZSBpcyBub3RoaW5nCiAqIHRvIGRvd25sb2FkIGFuZCBubyBgbGF0ZXN0YCB0byBkcmlmdCB0by4gSXQgYWxzbyByZXRpcmVzIHRoZSBwaW4ncyBvd24KICogbWFpbnRlbmFuY2UgcHJvYmxlbSwgd2hlcmUgYSBjb25maWcgd3JpdHRlbiBhdCBvbmUgdmVyc2lvbiBrZXB0IG5hbWluZyB0aGF0CiAqIHZlcnNpb24gYWZ0ZXIgYW4gdXBncmFkZSwgbGV0dGluZyBhbiBhZ2VudCBxdWVyeSBhIG1hbmlmZXN0IHRoYXQgZGlzYWdyZWVkCiAqIHdpdGggdGhlIGNvZGUgaXQgd2FzIHdyaXRpbmcgYWdhaW5zdC4gVGhlIGJpbmFyeSBvbiBkaXNrIElTIHRoZSBpbnN0YWxsZWQKICogdmVyc2lvbiwgYnkgY29uc3RydWN0aW9uLgogKi8KY29uc3QgQVJHUyA9IFtNQ1BfQklOX1BBVEgsICdtY3AnXTsKCmNvbnN0IHN0ZGlvRW50cnkgPSAoKSA9PiAoeyBjb21tYW5kOiBDT01NQU5ELCBhcmdzOiBbLi4uQVJHU10gfSk7CmNvbnN0IHZzY29kZUVudHJ5ID0gKCkgPT4gKHsKCXR5cGU6ICdzdGRpbycsCgljb21tYW5kOiBDT01NQU5ELAoJYXJnczogWy4uLkFSR1NdLAp9KTsKCmZ1bmN0aW9uIHdyaXRlSnNvbihwYXRoLCBkYXRhKSB7Cglta2RpclN5bmMoZGlybmFtZShwYXRoKSwgeyByZWN1cnNpdmU6IHRydWUgfSk7Cgl3cml0ZUZpbGVTeW5jKHBhdGgsIGAke0pTT04uc3RyaW5naWZ5KGRhdGEsIG51bGwsICdcdCcpfVxuYCwgJ3V0Zi04Jyk7Cn0KCi8qKgogKiBgdGV4dGAgd2l0aCBpdHMgSlNPTkMgZXh0cmFzIChsaW5lL2Jsb2NrIGNvbW1lbnRzLCB0cmFpbGluZyBjb21tYXMpIGJsYW5rZWQKICogdG8gc3BhY2VzLCBuZXdsaW5lcyBrZXB0LCBzbyBldmVyeSBvZmZzZXQgc3RpbGwgcG9pbnRzIGF0IHRoZSBzYW1lCiAqIGNoYXJhY3RlciBvZiBgdGV4dGAuIFRoYXQgbGV0cyBhIHNjYW4gb2YgdGhlIHJlc3VsdCBzcGxpY2UgaW50byB0aGUKICogb3JpZ2luYWwgd2l0aG91dCB0b3VjaGluZyB0aGUgY29tbWVudHMuIFN0cmluZy1saXRlcmFsIGF3YXJlOiBhbgogKiBgaHR0cHM6Ly9gIHZhbHVlIGlzIG5vdCBhIGNvbW1lbnQuCiAqLwpmdW5jdGlvbiBibGFua0pzb25jKHRleHQpIHsKCWNvbnN0IG91dCA9IHRleHQuc3BsaXQoJycpOwoJbGV0IGkgPSAwOwoJY29uc3QgYmxhbmsgPSAoZnJvbSwgdG8pID0+IHsKCQlmb3IgKGxldCBrID0gZnJvbTsgayA8IHRvOyBrKyspIGlmIChvdXRba10gIT09ICdcbicpIG91dFtrXSA9ICcgJzsKCX07Cgl3aGlsZSAoaSA8IHRleHQubGVuZ3RoKSB7CgkJY29uc3QgY2ggPSB0ZXh0W2ldOwoJCWlmIChjaCA9PT0gJyInKSB7CgkJCWkgPSBzdHJpbmdFbmQodGV4dCwgaSk7CgkJfSBlbHNlIGlmIChjaCA9PT0gJy8nICYmIHRleHRbaSArIDFdID09PSAnLycpIHsKCQkJY29uc3QgZW5kID0gdGV4dC5pbmRleE9mKCdcbicsIGkpOwoJCQljb25zdCB0byA9IGVuZCA9PT0gLTEgPyB0ZXh0Lmxlbmd0aCA6IGVuZDsKCQkJYmxhbmsoaSwgdG8pOwoJCQlpID0gdG87CgkJfSBlbHNlIGlmIChjaCA9PT0gJy8nICYmIHRleHRbaSArIDFdID09PSAnKicpIHsKCQkJY29uc3QgZW5kID0gdGV4dC5pbmRleE9mKCcqLycsIGkgKyAyKTsKCQkJY29uc3QgdG8gPSBlbmQgPT09IC0xID8gdGV4dC5sZW5ndGggOiBlbmQgKyAyOwoJCQlibGFuayhpLCB0byk7CgkJCWkgPSB0bzsKCQl9IGVsc2UgewoJCQlpKys7CgkJfQoJfQoJLy8gVHJhaWxpbmcgY29tbWFzLCBvbiB0aGUgY29tbWVudC1mcmVlIHRleHQ6IGAsYCB0aGVuIG9ubHkgYmxhbmtzIHRvIGB9YC9gXWAuCgljb25zdCBibGFua2VkID0gb3V0LmpvaW4oJycpOwoJcmV0dXJuIGJsYW5rZWQucmVwbGFjZSgvLChccypbfVxdXSkvZywgJyAkMScpOwp9CgovKiogSW5kZXgganVzdCBwYXN0IHRoZSBzdHJpbmcgbGl0ZXJhbCBvcGVuaW5nIGF0IGBpYC4gKi8KZnVuY3Rpb24gc3RyaW5nRW5kKHRleHQsIGkpIHsKCWZvciAobGV0IGsgPSBpICsgMTsgayA8IHRleHQubGVuZ3RoOyBrKyspIHsKCQlpZiAodGV4dFtrXSA9PT0gJ1xcJykgaysrOwoJCWVsc2UgaWYgKHRleHRba10gPT09ICciJykgcmV0dXJuIGsgKyAxOwoJfQoJcmV0dXJuIHRleHQubGVuZ3RoOwp9Cgpjb25zdCBza2lwQmxhbmtzID0gKHMsIGkpID0+IHsKCXdoaWxlIChpIDwgcy5sZW5ndGggJiYgL1xzLy50ZXN0KHNbaV0pKSBpKys7CglyZXR1cm4gaTsKfTsKCi8qKiBJbmRleCBqdXN0IHBhc3QgdGhlIEpTT04gdmFsdWUgc3RhcnRpbmcgYXQgYGlgIG9mIGNvbW1lbnQtZnJlZSBgc2AuICovCmZ1bmN0aW9uIHZhbHVlRW5kKHMsIGkpIHsKCWlmIChzW2ldID09PSAnIicpIHJldHVybiBzdHJpbmdFbmQocywgaSk7CglpZiAoc1tpXSAhPT0gJ3snICYmIHNbaV0gIT09ICdbJykgewoJCXdoaWxlIChpIDwgcy5sZW5ndGggJiYgIS9bXHMsfVxdXS8udGVzdChzW2ldKSkgaSsrOwoJCXJldHVybiBpOwoJfQoJbGV0IGRlcHRoID0gMDsKCWZvciAobGV0IGsgPSBpOyBrIDwgcy5sZW5ndGg7IGsrKykgewoJCWlmIChzW2tdID09PSAnIicpIGsgPSBzdHJpbmdFbmQocywgaykgLSAxOwoJCWVsc2UgaWYgKHNba10gPT09ICd7JyB8fCBzW2tdID09PSAnWycpIGRlcHRoKys7CgkJZWxzZSBpZiAoKHNba10gPT09ICd9JyB8fCBzW2tdID09PSAnXScpICYmIC0tZGVwdGggPT09IDApIHJldHVybiBrICsgMTsKCX0KCXJldHVybiBzLmxlbmd0aDsKfQoKLyoqIFRoZSBtZW1iZXJzIG9mIHRoZSBvYmplY3Qgd2hvc2UgYHtgIGlzIGF0IGBvcGVuYCBpbiBjb21tZW50LWZyZWUgYHNgLiAqLwpmdW5jdGlvbiBvYmplY3RNZW1iZXJzKHMsIG9wZW4pIHsKCWNvbnN0IG1lbWJlcnMgPSBbXTsKCWxldCBpID0gc2tpcEJsYW5rcyhzLCBvcGVuICsgMSk7Cgl3aGlsZSAoc1tpXSA9PT0gJyInKSB7CgkJY29uc3Qga2V5RW5kID0gc3RyaW5nRW5kKHMsIGkpOwoJCWNvbnN0IGtleSA9IEpTT04ucGFyc2Uocy5zbGljZShpLCBrZXlFbmQpKTsKCQljb25zdCB2YWx1ZVN0YXJ0ID0gc2tpcEJsYW5rcyhzLCBza2lwQmxhbmtzKHMsIGtleUVuZCkgKyAxKTsKCQljb25zdCBlbmQgPSB2YWx1ZUVuZChzLCB2YWx1ZVN0YXJ0KTsKCQltZW1iZXJzLnB1c2goeyBrZXksIHZhbHVlU3RhcnQsIHZhbHVlRW5kOiBlbmQgfSk7CgkJaSA9IHNraXBCbGFua3MocywgZW5kKTsKCQlpZiAoc1tpXSA9PT0gJywnKSBpID0gc2tpcEJsYW5rcyhzLCBpICsgMSk7Cgl9CglyZXR1cm4gbWVtYmVyczsKfQoKLyoqCiAqIGByYXdgIChKU09OQykgd2l0aCBgY29uZmlnW2NvbnRhaW5lcktleV1bTUNQX1NFUlZFUl9OQU1FXWAgc2V0IHRvIGBlbnRyeWAsCiAqIHNwbGljZWQgaW50byB0aGUgdGV4dCBzbyBpdHMgY29tbWVudHMgYW5kIGxheW91dCBzdXJ2aXZlLiBUaGUgbGFzdAogKiBkdXBsaWNhdGUga2V5IHdpbnMsIGFzIGluIGBKU09OLnBhcnNlYC4gTnVsbCB3aGVuIHRoZSByb290IGlzIG5vdCBhbiBvYmplY3QuCiAqLwpmdW5jdGlvbiBzcGxpY2VFbnRyeShyYXcsIGNvbnRhaW5lcktleSwgZW50cnkpIHsKCWNvbnN0IHMgPSBibGFua0pzb25jKHJhdyk7Cgljb25zdCByb290ID0gc2tpcEJsYW5rcyhzLCAwKTsKCWlmIChzW3Jvb3RdICE9PSAneycpIHJldHVybiBudWxsOwoJY29uc3QgdW5pdCA9IHJhdy5tYXRjaCgvXihbIFx0XSspXFMvbSk/LlsxXSA/PyAnXHQnOwoJY29uc3QgaW5kZW50QXQgPSAob2Zmc2V0KSA9PgoJCXJhdy5zbGljZShyYXcubGFzdEluZGV4T2YoJ1xuJywgb2Zmc2V0KSArIDEpLm1hdGNoKC9eWyBcdF0qLylbMF07Cgljb25zdCBmb3JtYXQgPSAodmFsdWUsIGluZGVudCkgPT4KCQlKU09OLnN0cmluZ2lmeSh2YWx1ZSwgbnVsbCwgdW5pdCkucmVwbGFjZSgvXG4vZywgYFxuJHtpbmRlbnR9YCk7Cgljb25zdCByZXBsYWNlID0gKG1lbWJlciwgdmFsdWUpID0+CgkJcmF3LnNsaWNlKDAsIG1lbWJlci52YWx1ZVN0YXJ0KSArCgkJZm9ybWF0KHZhbHVlLCBpbmRlbnRBdChtZW1iZXIudmFsdWVTdGFydCkpICsKCQlyYXcuc2xpY2UobWVtYmVyLnZhbHVlRW5kKTsKCS8vIEEgbmV3IGZpcnN0IG1lbWJlciwgcmlnaHQgYWZ0ZXIgdGhlIG9iamVjdCdzIGB7YC4KCWNvbnN0IGluc2VydCA9IChvcGVuLCBrZXksIHZhbHVlKSA9PiB7CgkJY29uc3QgaW5kZW50ID0gaW5kZW50QXQob3BlbikgKyB1bml0OwoJCWNvbnN0IGVtcHR5ID0gb2JqZWN0TWVtYmVycyhzLCBvcGVuKS5sZW5ndGggPT09IDA7CgkJY29uc3QgY2xvc2UgPSBlbXB0eSA/IHZhbHVlRW5kKHMsIG9wZW4pIC0gMSA6IC0xOwoJCWNvbnN0IHRhaWwgPSBlbXB0eQoJCQk/IHJhdy5zbGljZShvcGVuICsgMSwgY2xvc2UpLmluY2x1ZGVzKCdcbicpCgkJCQk/ICcnCgkJCQk6IGBcbiR7aW5kZW50QXQob3Blbil9YAoJCQk6ICcsJzsKCQlyZXR1cm4gKAoJCQlyYXcuc2xpY2UoMCwgb3BlbiArIDEpICsKCQkJYFxuJHtpbmRlbnR9JHtKU09OLnN0cmluZ2lmeShrZXkpfTogJHtmb3JtYXQodmFsdWUsIGluZGVudCl9JHt0YWlsfWAgKwoJCQlyYXcuc2xpY2Uob3BlbiArIDEpCgkJKTsKCX07CgoJY29uc3QgY29udGFpbmVyID0gb2JqZWN0TWVtYmVycyhzLCByb290KS5maW5kTGFzdCgKCQkobSkgPT4gbS5rZXkgPT09IGNvbnRhaW5lcktleQoJKTsKCWlmICghY29udGFpbmVyKQoJCXJldHVybiBpbnNlcnQocm9vdCwgY29udGFpbmVyS2V5LCB7IFtNQ1BfU0VSVkVSX05BTUVdOiBlbnRyeSB9KTsKCWlmIChzW2NvbnRhaW5lci52YWx1ZVN0YXJ0XSAhPT0gJ3snKQoJCXJldHVybiByZXBsYWNlKGNvbnRhaW5lciwgeyBbTUNQX1NFUlZFUl9OQU1FXTogZW50cnkgfSk7Cgljb25zdCBleGlzdGluZyA9IG9iamVjdE1lbWJlcnMocywgY29udGFpbmVyLnZhbHVlU3RhcnQpLmZpbmRMYXN0KAoJCShtKSA9PiBtLmtleSA9PT0gTUNQX1NFUlZFUl9OQU1FCgkpOwoJcmV0dXJuIGV4aXN0aW5nCgkJPyByZXBsYWNlKGV4aXN0aW5nLCBlbnRyeSkKCQk6IGluc2VydChjb250YWluZXIudmFsdWVTdGFydCwgTUNQX1NFUlZFUl9OQU1FLCBlbnRyeSk7Cn0KCi8qKiBKU09OIHdpdGggb2JqZWN0IGtleXMgc29ydGVkOiBhIHNwbGljZSBtYXkgcGxhY2UgYSBuZXcga2V5IGZpcnN0LiAqLwpjb25zdCBjYW5vbmljYWwgPSAodmFsdWUpID0+CglKU09OLnN0cmluZ2lmeSh2YWx1ZSwgKF8sIHYpID0+CgkJdiAmJiB0eXBlb2YgdiA9PT0gJ29iamVjdCcgJiYgIUFycmF5LmlzQXJyYXkodikKCQkJPyBPYmplY3QuZnJvbUVudHJpZXMoCgkJCQkJT2JqZWN0LmVudHJpZXModikuc29ydCgoW2FdLCBbYl0pID0+IChhIDwgYiA/IC0xIDogMSkpCgkJCQkpCgkJCTogdgoJKTsKCi8qKgogKiBNZXJnZSB0aGUgc2VydmVyIGVudHJ5IGludG8gYHBhdGhgJ3MgYDxjb250YWluZXJLZXk+YCBtYXAuIFJldHVybnMKICogYHsgcGF0aCwgbGFiZWwsIGFjdGlvbiB9YCB3aXRoIGFjdGlvbiDiiIggY3JlYXRlZHx1cGRhdGVkfHVuY2hhbmdlZHxza2lwcGVkLgogKgogKiBTdHJpY3QgSlNPTiBpcyByZXdyaXR0ZW4gd2hvbGUuIEpTT05DIChjb21tZW50cywgdHJhaWxpbmcgY29tbWFzOiBWUyBDb2RlJ3MKICogYG1jcC5qc29uYCwgWmVkJ3MgYHNldHRpbmdzLmpzb25gLCB3aGljaCBaZWQgaXRzZWxmIGNyZWF0ZXMgd2l0aCBhIGNvbW1lbnQKICogaGVhZGVyKSBpcyBzcGxpY2VkIGluc3RlYWQsIHNvIHRoZSB1c2VyJ3MgY29tbWVudHMgc3Vydml2ZS4KICovCmZ1bmN0aW9uIGVuc3VyZUVudHJ5KHBhdGgsIGNvbnRhaW5lcktleSwgZW50cnksIGxhYmVsKSB7Cgl0cnkgewoJCXJlZnVzZUxpbmtlZFRhcmdldChwYXRoKTsKCX0gY2F0Y2ggKGVycm9yKSB7CgkJcmV0dXJuIHsgcGF0aCwgbGFiZWwsIGFjdGlvbjogJ3NraXBwZWQnLCByZWFzb246IGVycm9yLm1lc3NhZ2UgfTsKCX0KCWxldCBjb25maWcgPSB7fTsKCWxldCByYXcgPSBudWxsOwoJY29uc3QgZXhpc3RlZCA9IGV4aXN0c1N5bmMocGF0aCk7CglpZiAoZXhpc3RlZCkgewoJCWNvbnN0IHRleHQgPSByZWFkRmlsZVN5bmMocGF0aCwgJ3V0Zi04Jyk7CgkJdHJ5IHsKCQkJY29uZmlnID0gSlNPTi5wYXJzZSh0ZXh0KTsKCQl9IGNhdGNoIChlcnJvcikgewoJCQl0cnkgewoJCQkJY29uZmlnID0gSlNPTi5wYXJzZShibGFua0pzb25jKHRleHQpKTsKCQkJCXJhdyA9IHRleHQ7CgkJCX0gY2F0Y2ggewoJCQkJY29uc3QgbWVzc2FnZSA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKTsKCQkJCXJldHVybiB7CgkJCQkJcGF0aCwKCQkJCQlsYWJlbCwKCQkJCQlhY3Rpb246ICdza2lwcGVkJywKCQkJCQlyZWFzb246IGBpbnZhbGlkIEpTT04gKCR7bWVzc2FnZX0pYCwKCQkJCX07CgkJCX0KCQl9Cgl9CglpZiAoIWNvbmZpZyB8fCB0eXBlb2YgY29uZmlnICE9PSAnb2JqZWN0JyB8fCBBcnJheS5pc0FycmF5KGNvbmZpZykpIHsKCQlyZXR1cm4gewoJCQlwYXRoLAoJCQlsYWJlbCwKCQkJYWN0aW9uOiAnc2tpcHBlZCcsCgkJCXJlYXNvbjogJ3RoZSB0b3AgbGV2ZWwgaXMgbm90IGFuIG9iamVjdCcsCgkJfTsKCX0KCWlmICghY29uZmlnW2NvbnRhaW5lcktleV0gfHwgdHlwZW9mIGNvbmZpZ1tjb250YWluZXJLZXldICE9PSAnb2JqZWN0JykgewoJCWNvbmZpZ1tjb250YWluZXJLZXldID0ge307Cgl9CgoJY29uc3QgcHJldmlvdXMgPSBjb25maWdbY29udGFpbmVyS2V5XVtNQ1BfU0VSVkVSX05BTUVdOwoJaWYgKHByZXZpb3VzICYmIEpTT04uc3RyaW5naWZ5KHByZXZpb3VzKSA9PT0gSlNPTi5zdHJpbmdpZnkoZW50cnkpKSB7CgkJcmV0dXJuIHsgcGF0aCwgbGFiZWwsIGFjdGlvbjogJ3VuY2hhbmdlZCcgfTsKCX0KCgljb25maWdbY29udGFpbmVyS2V5XVtNQ1BfU0VSVkVSX05BTUVdID0gZW50cnk7Cgl0cnkgewoJCWlmIChyYXcgPT09IG51bGwpIHsKCQkJd3JpdGVKc29uKHBhdGgsIGNvbmZpZyk7CgkJfSBlbHNlIHsKCQkJY29uc3QgbmV4dCA9IHNwbGljZUVudHJ5KHJhdywgY29udGFpbmVyS2V5LCBlbnRyeSk7CgkJCS8vIFRoZSBzcGxpY2UgbXVzdCByZWFkIGJhY2sgYXMgZXhhY3RseSB0aGUgbWVyZ2VkIGNvbmZpZywgb3IgdGhlCgkJCS8vIGZpbGUgaXMgbGVmdCBhcyBpdCB3YXMuCgkJCWlmICgKCQkJCW5leHQgPT09IG51bGwgfHwKCQkJCWNhbm9uaWNhbChKU09OLnBhcnNlKGJsYW5rSnNvbmMobmV4dCkpKSAhPT0gY2Fub25pY2FsKGNvbmZpZykKCQkJKSB7CgkJCQlyZXR1cm4gewoJCQkJCXBhdGgsCgkJCQkJbGFiZWwsCgkJCQkJYWN0aW9uOiAnc2tpcHBlZCcsCgkJCQkJcmVhc29uOiBgY291bGQgbm90IG1lcmdlIGludG8gaXRzIGNvbW1lbnRzIOKAlCBhZGQgIiR7TUNQX1NFUlZFUl9OQU1FfSIgdW5kZXIgIiR7Y29udGFpbmVyS2V5fSIgeW91cnNlbGZgLAoJCQkJfTsKCQkJfQoJCQl3cml0ZUZpbGVTeW5jKHBhdGgsIG5leHQsICd1dGYtOCcpOwoJCX0KCX0gY2F0Y2ggKGVycm9yKSB7CgkJY29uc3QgbWVzc2FnZSA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvci5tZXNzYWdlIDogU3RyaW5nKGVycm9yKTsKCQlyZXR1cm4geyBwYXRoLCBsYWJlbCwgYWN0aW9uOiAnc2tpcHBlZCcsIHJlYXNvbjogbWVzc2FnZSB9OwoJfQoJcmV0dXJuIHsgcGF0aCwgbGFiZWwsIGFjdGlvbjogZXhpc3RlZCA/ICd1cGRhdGVkJyA6ICdjcmVhdGVkJyB9Owp9CgovKiogQ2xhdWRlIENvZGUg4oCUIHByb2plY3Qtcm9vdCBgLm1jcC5qc29uYC4gKi8KZXhwb3J0IGNvbnN0IHdyaXRlQ2xhdWRlQ29kZUNvbmZpZyA9IChyb290KSA9PgoJZW5zdXJlRW50cnkoCgkJam9pbihyb290LCAnLm1jcC5qc29uJyksCgkJJ21jcFNlcnZlcnMnLAoJCXN0ZGlvRW50cnkoKSwKCQknQ2xhdWRlIENvZGUnCgkpOwoKLyoqIEN1cnNvciDigJQgcHJvamVjdCBgLmN1cnNvci9tY3AuanNvbmAuICovCmV4cG9ydCBjb25zdCB3cml0ZUN1cnNvckNvbmZpZyA9IChyb290KSA9PgoJZW5zdXJlRW50cnkoCgkJam9pbihyb290LCAnLmN1cnNvcicsICdtY3AuanNvbicpLAoJCSdtY3BTZXJ2ZXJzJywKCQlzdGRpb0VudHJ5KCksCgkJJ0N1cnNvcicKCSk7CgovKiogVlMgQ29kZSAvIEdpdEh1YiBDb3BpbG90IOKAlCBwcm9qZWN0IGAudnNjb2RlL21jcC5qc29uYCAoYHNlcnZlcnNgICsgYHR5cGVgKS4gKi8KZXhwb3J0IGNvbnN0IHdyaXRlVnNjb2RlQ29uZmlnID0gKHJvb3QpID0+CgllbnN1cmVFbnRyeSgKCQlqb2luKHJvb3QsICcudnNjb2RlJywgJ21jcC5qc29uJyksCgkJJ3NlcnZlcnMnLAoJCXZzY29kZUVudHJ5KCksCgkJJ1ZTIENvZGUgLyBDb3BpbG90JwoJKTsKCi8qKgogKiBaZWQg4oCUIHByb2plY3QgYC56ZWQvc2V0dGluZ3MuanNvbmAgKGBjb250ZXh0X3NlcnZlcnNgLCBhIGZsYXQKICogYHsgY29tbWFuZCwgYXJncyB9YCkuIFplZCBzdGFydHMgYSBwcm9qZWN0J3Mgc2VydmVycyBvbmNlIHRoZSBwcm9qZWN0IGlzCiAqIHRydXN0ZWQuCiAqLwpleHBvcnQgY29uc3Qgd3JpdGVaZWRDb25maWcgPSAocm9vdCkgPT4KCWVuc3VyZUVudHJ5KAoJCWpvaW4ocm9vdCwgJy56ZWQnLCAnc2V0dGluZ3MuanNvbicpLAoJCSdjb250ZXh0X3NlcnZlcnMnLAoJCXN0ZGlvRW50cnkoKSwKCQknWmVkJwoJKTsKCi8qKgogKiBSZWdpc3RlciB0aGUgc2VydmVyIGluIGV2ZXJ5IHByb2plY3Qtc2NvcGVkIGhhcm5lc3MuIFdpbmRzdXJmIGlzIG5vdCBhbW9uZwogKiB0aGVtOiBpdCByZWFkcyBvbmx5IGEgR0xPQkFMIChob21lLWRpcikgY29uZmlnLCBhbmQgZGV0ZWN0aW5nIHdoZXRoZXIgaXQgaXMKICogaW5zdGFsbGVkIHByb3ZlZCB1bnJlbGlhYmxlIChhIGxlZnRvdmVyIGB+Ly5jb2RlaXVtYCBmcm9tIGFuIHVuaW5zdGFsbGVkCiAqIFdpbmRzdXJmKSwgc28gYSBkZWZhdWx0IHJ1biBtdXN0IG5vdCB3cml0ZSBvdXRzaWRlIHRoZSBwcm9qZWN0LiBJdHMKICogYC53aW5kc3VyZi9ydWxlc2AgcG9pbnRlciBmaWxlIGlzIHN0aWxsIHdyaXR0ZW4gYnkgYGFpLWluaXRgLgogKi8KZXhwb3J0IGZ1bmN0aW9uIGVuc3VyZU1jcENvbmZpZ3Mocm9vdCkgewoJcmV0dXJuIFsKCQl3cml0ZUNsYXVkZUNvZGVDb25maWcocm9vdCksCgkJd3JpdGVDdXJzb3JDb25maWcocm9vdCksCgkJd3JpdGVWc2NvZGVDb25maWcocm9vdCksCgkJd3JpdGVaZWRDb25maWcocm9vdCksCgldOwp9CgovKioKICogVGhlIHBhY2thZ2UgbWFuYWdlciBhIHByb2plY3QgdXNlcywgZnJvbSB0aGUgbmVhcmVzdCBsb2NrZmlsZSB3YWxraW5nIHVwCiAqIChhIHdvcmtzcGFjZSBwYWNrYWdlIHNpdHMgYmVsb3cgdGhlIGxvY2tmaWxlKS4gYG5wbWAgd2hlbiBub25lIGlzIGZvdW5kLgogKi8KZXhwb3J0IGZ1bmN0aW9uIGRldGVjdFBhY2thZ2VNYW5hZ2VyKHJvb3QpIHsKCWxldCBjdXJyZW50ID0gcmVzb2x2ZShyb290KTsKCWZvciAoOzspIHsKCQlpZiAoZXhpc3RzU3luYyhqb2luKGN1cnJlbnQsICdwbnBtLWxvY2sueWFtbCcpKSkgcmV0dXJuICdwbnBtJzsKCQlpZiAoZXhpc3RzU3luYyhqb2luKGN1cnJlbnQsICd5YXJuLmxvY2snKSkpIHJldHVybiAneWFybic7CgkJaWYgKAoJCQlleGlzdHNTeW5jKGpvaW4oY3VycmVudCwgJ2J1bi5sb2NrJykpIHx8CgkJCWV4aXN0c1N5bmMoam9pbihjdXJyZW50LCAnYnVuLmxvY2tiJykpCgkJKQoJCQlyZXR1cm4gJ2J1bic7CgkJaWYgKGV4aXN0c1N5bmMoam9pbihjdXJyZW50LCAncGFja2FnZS1sb2NrLmpzb24nKSkpIHJldHVybiAnbnBtJzsKCQljb25zdCBwYXJlbnQgPSBkaXJuYW1lKGN1cnJlbnQpOwoJCWlmIChwYXJlbnQgPT09IGN1cnJlbnQpIHJldHVybiAnbnBtJzsKCQljdXJyZW50ID0gcGFyZW50OwoJfQp9CgovKioKICogVGhlIGFyZ3YgdGhhdCBhZGRzIGBwYWNrYWdlc2AgYXMgZGV2IGRlcGVuZGVuY2llcyB3aXRoIGBtYW5hZ2VyYC4gQmFyZQogKiBuYW1lcywgbm8gdmVyc2lvbiByYW5nZXM6IHRoZSBwZWVyIHJhbmdlcyAoYD49MS4yOS4wYCwgYF4zLjI1IHx8IF40LjBgKSBhcmUKICogb3Blbi1lbmRlZCwgc28gdGhlIGxhdGVzdCByZWxlYXNlIGFsd2F5cyBzYXRpc2ZpZXMgdGhlbSDigJQgYW5kIGEgcmFuZ2Ugd2l0aAogKiBgfHxgIG9yIHNwYWNlcyB3b3VsZCBuZWVkIHNoZWxsIHF1b3Rpbmcgb24gV2luZG93cywgd2hlcmUgdGhlIGNvbW1hbmQgcnVucwogKiB0aHJvdWdoIGEgc2hlbGwuCiAqLwpleHBvcnQgZnVuY3Rpb24gZGV2SW5zdGFsbENvbW1hbmQobWFuYWdlciwgcGFja2FnZXMpIHsKCWNvbnN0IHZlcmIgPSB7CgkJbnBtOiBbJ2luc3RhbGwnLCAnLS1zYXZlLWRldiddLAoJCXBucG06IFsnYWRkJywgJy1EJ10sCgkJeWFybjogWydhZGQnLCAnLUQnXSwKCQlidW46IFsnYWRkJywgJy1kJ10sCgl9W21hbmFnZXJdID8/IFsnaW5zdGFsbCcsICctLXNhdmUtZGV2J107CglyZXR1cm4gW21hbmFnZXIsIC4uLnZlcmIsIC4uLnBhY2thZ2VzXTsKfQo=", "" + import.meta.url).href
|
|
646
746
|
), i = n(e), a = i.filter((e) => e.action === "created" || e.action === "updated");
|
|
647
747
|
for (let e of a) t.info(`[bitboss-ui] MCP: ${e.action} config for ${e.label}`);
|
|
648
748
|
for (let e of i.filter((e) => e.action === "skipped")) t.warn(`[bitboss-ui] MCP: skipped ${e.label}${e.reason ? ` (${e.reason})` : ""}`);
|
|
@@ -654,94 +754,96 @@ async function Nt(e, t) {
|
|
|
654
754
|
t.warn(`[bitboss-ui] MCP: could not register dev server (${n})`);
|
|
655
755
|
}
|
|
656
756
|
}
|
|
657
|
-
var
|
|
658
|
-
function
|
|
757
|
+
var Jt = (e) => e, Yt = Symbol.for("bitboss-ui:editorRoot");
|
|
758
|
+
function Xt(n = {}) {
|
|
659
759
|
let r = {
|
|
660
|
-
iconDir:
|
|
760
|
+
iconDir: wt,
|
|
661
761
|
...n
|
|
662
|
-
}, i = n[
|
|
762
|
+
}, i = n[Yt];
|
|
663
763
|
if ("cssLayers" in r && r.cssLayers === void 0) throw Error("[bitboss-ui] cssLayers is present but undefined. If you passed an imported constant such as TAILWIND_V4_LAYERS, the installed bitboss-ui does not export it (older dist?) — upgrade, or pass the array literal. Remove the key entirely for an unlayered sheet.");
|
|
664
764
|
let s = a(r.cssLayers, { resetCss: r.resetCss ?? !1 });
|
|
665
765
|
if (s) throw Error(s);
|
|
666
766
|
let c = e(r.pt);
|
|
667
767
|
if (c) throw Error(c);
|
|
668
|
-
let d =
|
|
768
|
+
let d = ke(r);
|
|
669
769
|
if (d) throw Error(d);
|
|
670
|
-
let f =
|
|
770
|
+
let f = Ae(r.pt, void 0, "pt", r);
|
|
671
771
|
if (f) throw Error(f);
|
|
772
|
+
let ee = t(r.ptScopes);
|
|
773
|
+
if (ee) throw Error(ee);
|
|
672
774
|
for (let [e, t] of Object.entries(r.ptScopes ?? {})) {
|
|
673
|
-
let n =
|
|
775
|
+
let n = Ae(t, void 0, `ptScopes.${e}`, r);
|
|
674
776
|
if (n) throw Error(n);
|
|
675
777
|
}
|
|
676
|
-
let
|
|
677
|
-
if (
|
|
678
|
-
let
|
|
679
|
-
if (
|
|
680
|
-
let
|
|
681
|
-
let r =
|
|
682
|
-
!r ||
|
|
683
|
-
},
|
|
778
|
+
let te = He(r.passthroughDeduper);
|
|
779
|
+
if (te) throw Error(te);
|
|
780
|
+
let ne = Ue(r.autoDisableWritingThreshold);
|
|
781
|
+
if (ne) throw Error(ne);
|
|
782
|
+
let m, h, _, b, S = !0, C = [], w = !1, T, E, pe = !1, O = (e, t, n) => {
|
|
783
|
+
let r = jt(e, t);
|
|
784
|
+
!r || pe || (pe = !0, n(r));
|
|
785
|
+
}, k = {
|
|
684
786
|
info: (e) => console.warn(e),
|
|
685
787
|
warn: (e) => console.warn(e)
|
|
686
|
-
},
|
|
788
|
+
}, j = [], me = [], he = [], { enabled: M, defaultLocale: ye, warnings: N } = Ne({
|
|
687
789
|
locale: r.locale,
|
|
688
790
|
enabledLocales: r.enabledLocales,
|
|
689
|
-
customLocaleKeys:
|
|
690
|
-
}),
|
|
691
|
-
|
|
692
|
-
for (let e of
|
|
693
|
-
|
|
694
|
-
},
|
|
695
|
-
let n =
|
|
791
|
+
customLocaleKeys: j
|
|
792
|
+
}), I = Fe([...M, ...j]), L = /* @__PURE__ */ new Map(), R = /* @__PURE__ */ new Map(), z = /* @__PURE__ */ new Set(), Oe = () => {
|
|
793
|
+
L.clear(), R.clear(), z = xe(m);
|
|
794
|
+
for (let e of be(m)) L.set(e.prefix, e), R.set(e.prefix, (t) => ve(e.prefix, t));
|
|
795
|
+
B = null, V = null;
|
|
796
|
+
}, je = (e, t) => {
|
|
797
|
+
let n = L.get(e);
|
|
696
798
|
if (!n) return !1;
|
|
697
|
-
let r =
|
|
799
|
+
let r = R.get(e);
|
|
698
800
|
return A(n, t) !== null && (!r || r(t));
|
|
699
|
-
},
|
|
801
|
+
}, B = null, V = null, U = null, Ve = () => V || (V = (async () => {
|
|
700
802
|
let e = r.iconsScanner ?? {}, t = JSON.stringify({
|
|
701
|
-
version:
|
|
702
|
-
sets: Array.from(
|
|
803
|
+
version: De(F),
|
|
804
|
+
sets: Array.from(L.entries()).map(([e, t]) => [e, t.lastModified ?? 0]).sort(([e], [t]) => e < t ? -1 : +(e > t)),
|
|
703
805
|
include: e.include ?? [],
|
|
704
806
|
exclude: e.exclude ?? [],
|
|
705
807
|
maxFileSize: e.maxFileSize ?? null
|
|
706
808
|
}), n = new p({
|
|
707
|
-
root:
|
|
708
|
-
outDir:
|
|
809
|
+
root: m,
|
|
810
|
+
outDir: T ?? D(m, "dist"),
|
|
709
811
|
scanner: e,
|
|
710
|
-
prefixes: Array.from(
|
|
711
|
-
resolves:
|
|
712
|
-
cacheFile:
|
|
812
|
+
prefixes: Array.from(L.keys()),
|
|
813
|
+
resolves: je,
|
|
814
|
+
cacheFile: re(m),
|
|
713
815
|
cacheKey: t
|
|
714
816
|
}), i = await n.scan();
|
|
715
|
-
if (i.cold &&
|
|
817
|
+
if (i.cold && k.info(`[bitboss-ui] icon scan: ${i.files} files in ${i.elapsed}ms${i.workers ? ` on ${i.workers} threads` : ""} (${n.icons.size} provider icons referenced)`), B = n, U) for (let e of n.includeDirs) U.add(e);
|
|
716
818
|
return n;
|
|
717
|
-
})(),
|
|
819
|
+
})(), V);
|
|
718
820
|
return {
|
|
719
821
|
name: "bitboss-ui:icon-registry",
|
|
720
822
|
configEnvironment(e, t) {
|
|
721
823
|
if (e !== "client") return;
|
|
722
|
-
let n = t.optimizeDeps?.include ?? [], r =
|
|
824
|
+
let n = t.optimizeDeps?.include ?? [], r = C.filter((e) => !n.includes(e));
|
|
723
825
|
if (r.length) return { optimizeDeps: { include: r } };
|
|
724
826
|
},
|
|
725
827
|
config(e) {
|
|
726
828
|
let t = e.optimizeDeps?.include ?? [], n = e.optimizeDeps?.exclude ?? [], r = e.root ?? process.cwd();
|
|
727
|
-
|
|
728
|
-
let i =
|
|
729
|
-
|
|
829
|
+
S = Je(r, "vee-validate");
|
|
830
|
+
let i = Ye(r) ? [...Ze, $e] : Ze, a = I.found.map(({ pack: e }) => `dayjs/locale/${e}`);
|
|
831
|
+
C = [...i, ...a];
|
|
730
832
|
let o = (e.build?.assetsDir ?? "assets").replace(/\/+$/, ""), s = e.build?.rollupOptions?.output, c = (Array.isArray(s) ? s[0] : s)?.chunkFileNames, l = e.ssr;
|
|
731
833
|
l && l.noExternal === !1 && delete l.noExternal;
|
|
732
|
-
let u =
|
|
834
|
+
let u = tt(l?.noExternal);
|
|
733
835
|
return {
|
|
734
|
-
...
|
|
836
|
+
...S ? {} : { resolve: { alias: [{
|
|
735
837
|
find: /^vee-validate$/,
|
|
736
|
-
replacement:
|
|
838
|
+
replacement: ft
|
|
737
839
|
}] } },
|
|
738
840
|
optimizeDeps: {
|
|
739
841
|
include: [...i, ...a].filter((e) => !t.includes(e)),
|
|
740
|
-
exclude:
|
|
842
|
+
exclude: Qe.filter((e) => !n.includes(e))
|
|
741
843
|
},
|
|
742
844
|
...u.length ? { ssr: { noExternal: u } } : {},
|
|
743
845
|
build: { rollupOptions: { output: { chunkFileNames(e) {
|
|
744
|
-
if (e.facadeModuleId?.startsWith(
|
|
846
|
+
if (e.facadeModuleId?.startsWith(Kt)) {
|
|
745
847
|
let t = e.facadeModuleId.slice(17);
|
|
746
848
|
return `${o}/icons/${t.replace("/", "_")}-[hash].js`;
|
|
747
849
|
}
|
|
@@ -750,27 +852,27 @@ function It(n = {}) {
|
|
|
750
852
|
};
|
|
751
853
|
},
|
|
752
854
|
transform(e, t) {
|
|
753
|
-
return
|
|
855
|
+
return S || t.includes("/node_modules/") || t.startsWith("\0") || !/\.(vue|[cm]?[jt]sx?)(\?|$)/.test(t) || _t(e) && this.error(`${G}\n used in ${fe(m || process.cwd(), t.split("?")[0])}`), null;
|
|
754
856
|
},
|
|
755
857
|
renderChunk(e) {
|
|
756
|
-
return !
|
|
858
|
+
return !S && e.includes(mt) && this.error(G), null;
|
|
757
859
|
},
|
|
758
860
|
configResolved(e) {
|
|
759
|
-
|
|
861
|
+
m = e.root, b = i ?? m, w = e.command === "build", T = D(m, e.build?.outDir ?? "dist"), E = e.build?.rollupOptions?.input, e.logger && (k = e.logger);
|
|
760
862
|
},
|
|
761
863
|
resolveId(e) {
|
|
762
|
-
if (e ===
|
|
763
|
-
if (e ===
|
|
764
|
-
if (e ===
|
|
765
|
-
if (e ===
|
|
766
|
-
if (e ===
|
|
767
|
-
if (e ===
|
|
768
|
-
if (e ===
|
|
769
|
-
if (e ===
|
|
770
|
-
if (e.startsWith(
|
|
864
|
+
if (e === nt) return rt;
|
|
865
|
+
if (e === it) return at;
|
|
866
|
+
if (e === ot) return st;
|
|
867
|
+
if (e === ct) return lt;
|
|
868
|
+
if (e === ut) return dt;
|
|
869
|
+
if (e === vt) return yt;
|
|
870
|
+
if (e === ft) return pt;
|
|
871
|
+
if (e === bt) return xt;
|
|
872
|
+
if (e.startsWith(Gt)) return "\0" + e;
|
|
771
873
|
},
|
|
772
874
|
async load(e) {
|
|
773
|
-
if (e ===
|
|
875
|
+
if (e === at) {
|
|
774
876
|
let { iconDir: e, enabledLocales: t, passthroughDeduper: n, ptScopes: i, ...a } = r, o = {
|
|
775
877
|
inertiaLinkName: "Link",
|
|
776
878
|
nuxtLinkName: "NuxtLink",
|
|
@@ -798,10 +900,11 @@ function It(n = {}) {
|
|
|
798
900
|
confirm: { ...a.confirm },
|
|
799
901
|
pt: a.pt ?? {},
|
|
800
902
|
variantIcons: {
|
|
801
|
-
toast:
|
|
802
|
-
alert:
|
|
903
|
+
toast: le(r.toastVariants),
|
|
904
|
+
alert: le(r.alertVariants)
|
|
803
905
|
},
|
|
804
|
-
|
|
906
|
+
variantNames: Object.fromEntries(Object.keys(v).map((e) => [v[e], ie(g[e], r[v[e]])])),
|
|
907
|
+
defaultLocale: ye,
|
|
805
908
|
iconDefaultSizes: {
|
|
806
909
|
xs: 12,
|
|
807
910
|
sm: 16,
|
|
@@ -832,60 +935,65 @@ function It(n = {}) {
|
|
|
832
935
|
};
|
|
833
936
|
return `import { reactive } from 'vue';\nexport const config = reactive(${JSON.stringify(o)});\nexport const ptScopes = ${JSON.stringify(i ?? {})};\n`;
|
|
834
937
|
}
|
|
835
|
-
if (e ===
|
|
836
|
-
if (e ===
|
|
837
|
-
if (e ===
|
|
838
|
-
if (e ===
|
|
839
|
-
if (e ===
|
|
840
|
-
if (e ===
|
|
841
|
-
|
|
842
|
-
|
|
938
|
+
if (e === lt) return Pe(M);
|
|
939
|
+
if (e === st) return Ie(I.found);
|
|
940
|
+
if (e === dt) return `export default ${JSON.stringify(St())};`;
|
|
941
|
+
if (e === pt) return gt();
|
|
942
|
+
if (e === yt) return Xe(Ye(m));
|
|
943
|
+
if (e === xt) {
|
|
944
|
+
if (r.passthroughDeduper !== void 0) return Le(r.passthroughDeduper, m);
|
|
945
|
+
h ??= Be(m);
|
|
946
|
+
let e = H(h.values());
|
|
947
|
+
return _ = JSON.stringify(e), Le(void 0, m, void 0, e);
|
|
948
|
+
}
|
|
949
|
+
if (e.startsWith(Kt)) {
|
|
950
|
+
let t = e.slice(17), n = t.indexOf("/"), r = t.slice(0, n), i = t.slice(n + 1), a = L.get(r);
|
|
843
951
|
a || this.error(`[bitboss-ui] cannot load "${r}:${i}" — @iconify-json/${r} is not installed.\n Run: npm install -D @iconify-json/${r}`);
|
|
844
952
|
let o = A(a, i);
|
|
845
|
-
return o || this.error(`[bitboss-ui] icon "${i}" does not exist in the ${r} icon set`), `export default ${JSON.stringify(
|
|
953
|
+
return o || this.error(`[bitboss-ui] icon "${i}" does not exist in the ${r} icon set`), `export default ${JSON.stringify(_e(o))};`;
|
|
846
954
|
}
|
|
847
|
-
if (e !==
|
|
848
|
-
let t = D(
|
|
955
|
+
if (e !== rt) return;
|
|
956
|
+
let t = D(m, r.iconDir), n = "/" + fe(m, t).replace(/\\/g, "/") + "/**/*.svg", i = await Ve(), a = we(r.iconWhitelist ?? [], L, R, z);
|
|
849
957
|
a.errors.length > 0 && this.error(a.errors.length === 1 ? a.errors[0] : `[bitboss-ui] iconWhitelist has ${a.errors.length} entries that do not resolve:\n - ${a.errors.map((e) => e.replace(/^\[bitboss-ui\] /, "")).join("\n - ")}`);
|
|
850
958
|
let o = /* @__PURE__ */ new Set([...i.icons, ...a.icons]), s = Array.from(o).sort().flatMap((e) => {
|
|
851
|
-
let t =
|
|
852
|
-
return t ? [`\t${JSON.stringify(e)}: () => import(${JSON.stringify(
|
|
853
|
-
}).join("\n"), c =
|
|
854
|
-
return `const _local = import.meta.glob(${JSON.stringify(n)}, { query: '?raw', import: 'default' });\nconst _localIcons = Object.fromEntries(Object.entries(_local).map(([k, l]) => { const f = k.split(/[/\\\\]+/).pop(); return [\`local:\${f.replace(/\\.svg$/i, '')}\`, l]; }));\nconst _icons = {\n` + (s ? s + "\n" : "") + `\t..._localIcons,\n};\nconst _ip = new Set(${JSON.stringify(Array.from(
|
|
959
|
+
let t = ge(e);
|
|
960
|
+
return t ? [`\t${JSON.stringify(e)}: () => import(${JSON.stringify(Gt + t.prefix + "/" + t.name)}).then(m => m.default),`] : [];
|
|
961
|
+
}).join("\n"), c = w ? null : Object.fromEntries(Array.from(L.entries()).map(([e, t]) => [e, Ce(t, R.get(e))]));
|
|
962
|
+
return `const _local = import.meta.glob(${JSON.stringify(n)}, { query: '?raw', import: 'default' });\nconst _localIcons = Object.fromEntries(Object.entries(_local).map(([k, l]) => { const f = k.split(/[/\\\\]+/).pop(); return [\`local:\${f.replace(/\\.svg$/i, '')}\`, l]; }));\nconst _icons = {\n` + (s ? s + "\n" : "") + `\t..._localIcons,\n};\nconst _ip = new Set(${JSON.stringify(Array.from(z))});\nconst _loaded = new Set(${JSON.stringify(Array.from(L.keys()))});\nconst _all = ${c ? JSON.stringify(c) : "null"};\nconst _diag = ${Se};\nconst _fail = (msg) => () => { const _e = new Error(); import.meta.hot?.send('bitboss-ui:icon-missing', { msg, stack: _e.stack }); return Promise.reject(new Error(msg)); };\nexport const icons = new Proxy(_icons, {\n\tget(t, k) {\n\t\tif (k in t || typeof k !== 'string' || !k.includes(':')) return t[k];\n\t\tconst _msg = _diag(k, _loaded, (p) => Object.keys(t).filter((x) => x.startsWith(p + ':')).map((x) => x.slice(p.length + 1)), (p) => (_all && _all[p]) || null, _ip);\n\t\treturn _msg ? _fail(_msg) : undefined;\n\t},\n});\n`;
|
|
855
963
|
},
|
|
856
964
|
buildStart() {
|
|
857
|
-
|
|
858
|
-
let e = D(
|
|
859
|
-
if (t && this.warn(t), !
|
|
860
|
-
let e =
|
|
965
|
+
Oe();
|
|
966
|
+
let e = D(m, r.iconDir), t = Mt(r.iconDir, e);
|
|
967
|
+
if (t && this.warn(t), !w) {
|
|
968
|
+
let e = Te(b, De(F));
|
|
861
969
|
e && this.warn(e);
|
|
862
970
|
}
|
|
863
|
-
!
|
|
971
|
+
!w && r.vscodeSettings !== !1 && (O(e, b, (e) => this.warn(e)), Wt(b, {
|
|
864
972
|
info: (e) => this.info(e),
|
|
865
973
|
warn: (e) => this.warn(e)
|
|
866
974
|
}));
|
|
867
|
-
for (let e of
|
|
868
|
-
for (let e of
|
|
869
|
-
for (let e of
|
|
870
|
-
for (let e of
|
|
871
|
-
r.locale && !u(r.locale) && !
|
|
872
|
-
let n =
|
|
873
|
-
root:
|
|
874
|
-
input:
|
|
975
|
+
for (let e of me) this.warn(e);
|
|
976
|
+
for (let e of N) this.warn(e);
|
|
977
|
+
for (let e of he) this.warn(e);
|
|
978
|
+
for (let e of I.missing) this.warn(`[bitboss-ui] locale '${e}' has no dayjs counterpart (dayjs/locale/${e}) — its calendars fall back to English. Dayjs locale names: https://github.com/iamkun/dayjs/tree/dev/src/locale`);
|
|
979
|
+
r.locale && !u(r.locale) && !j.includes(r.locale) && this.warn(`[bitboss-ui] \`locale: '${r.locale}'\` is not a built-in locale${Me(r.locale)} — the library ships ${o.length} locales. Strings fall back to the default locale.`);
|
|
980
|
+
let n = ce({
|
|
981
|
+
root: m,
|
|
982
|
+
input: E,
|
|
875
983
|
dts: r.dts
|
|
876
984
|
});
|
|
877
985
|
if (n) {
|
|
878
|
-
let e =
|
|
879
|
-
...
|
|
880
|
-
LocaleRegistry: [...
|
|
986
|
+
let e = ue(n, {
|
|
987
|
+
...se(r),
|
|
988
|
+
LocaleRegistry: [...M.flatMap((e) => [e, ...l(e)]), ...j],
|
|
881
989
|
PtScopeRegistry: Object.keys(r.ptScopes ?? {}),
|
|
882
|
-
EmptyStringControlRegistry:
|
|
883
|
-
}), t =
|
|
884
|
-
e === "changed" ? this.info(`[bitboss-ui] Wrote ${t} — commit this file so CI and teammates get matching types.`) : typeof e == "object" && !
|
|
990
|
+
EmptyStringControlRegistry: ae(r.formControls)
|
|
991
|
+
}), t = Ee(n);
|
|
992
|
+
e === "changed" ? this.info(`[bitboss-ui] Wrote ${t} — commit this file so CI and teammates get matching types.`) : typeof e == "object" && !P.has("write") && (P.add("write"), this.warn(`[bitboss-ui] could not write ${t} (${e.error}). The committed copy still types the app; regenerate it where the project is writable.`)), !P.has("program") && y(n) && (P.add("program"), oe(m, n) === !1 && this.warn(`[bitboss-ui] ${t} is outside your TypeScript project — custom names will look like typos. Set \`dts\` to a path inside your app sources (for example resources/js/).`));
|
|
885
993
|
}
|
|
886
994
|
},
|
|
887
995
|
configureServer(e) {
|
|
888
|
-
r.mcp &&
|
|
996
|
+
r.mcp && qt(i ?? e.config.root, e.config.logger);
|
|
889
997
|
let t = D(e.config.root, r.iconDir), n = (e) => e.startsWith(t) && e.endsWith(".svg");
|
|
890
998
|
e.ws.on("bitboss-ui:icon-missing", (t) => {
|
|
891
999
|
if (process.env.VITEST || e.config.mode === "test") return;
|
|
@@ -899,40 +1007,58 @@ function It(n = {}) {
|
|
|
899
1007
|
}
|
|
900
1008
|
});
|
|
901
1009
|
});
|
|
902
|
-
let a = async () => {
|
|
903
|
-
|
|
1010
|
+
let a = async (t, n) => {
|
|
1011
|
+
if (r.passthroughDeduper !== void 0 || !h || !ze(m, t)) return;
|
|
1012
|
+
let i = n ? {} : Re((() => {
|
|
1013
|
+
try {
|
|
1014
|
+
return x(t, "utf-8");
|
|
1015
|
+
} catch {
|
|
1016
|
+
return "";
|
|
1017
|
+
}
|
|
1018
|
+
})());
|
|
1019
|
+
if (Object.keys(i).length) h.set(t, i);
|
|
1020
|
+
else if (!h.delete(t)) return;
|
|
1021
|
+
let a = JSON.stringify(H(h.values()));
|
|
1022
|
+
if (a === _) return;
|
|
1023
|
+
_ = a;
|
|
1024
|
+
let o = e.moduleGraph.getModuleById(xt);
|
|
1025
|
+
o && await e.reloadModule(o);
|
|
1026
|
+
};
|
|
1027
|
+
e.watcher.on("change", (e) => void a(e, !1)), e.watcher.on("add", (e) => void a(e, !1)), e.watcher.on("unlink", (e) => void a(e, !0));
|
|
1028
|
+
let o = async () => {
|
|
1029
|
+
let t = e.moduleGraph.getModuleById(rt);
|
|
904
1030
|
t && await e.reloadModule(t);
|
|
905
|
-
},
|
|
906
|
-
clearTimeout(
|
|
907
|
-
},
|
|
908
|
-
|
|
909
|
-
if (!
|
|
1031
|
+
}, s, c = () => {
|
|
1032
|
+
clearTimeout(s), s = setTimeout(() => void B?.persist(), 500);
|
|
1033
|
+
}, l = Promise.resolve(), u = (e, t) => {
|
|
1034
|
+
l = l.then(async () => {
|
|
1035
|
+
if (!B) return;
|
|
910
1036
|
let n;
|
|
911
|
-
if (
|
|
912
|
-
let e =
|
|
913
|
-
|
|
914
|
-
let t =
|
|
1037
|
+
if (de(t) === ".gitignore") {
|
|
1038
|
+
let e = B.icons;
|
|
1039
|
+
B.resetGitignores(), await B.scan();
|
|
1040
|
+
let t = B.icons;
|
|
915
1041
|
n = e.size !== t.size || [...e].some((e) => !t.has(e));
|
|
916
|
-
} else n = e === "unlink" ?
|
|
917
|
-
|
|
1042
|
+
} else n = e === "unlink" ? B.removeFile(t) : await B.updateFile(t);
|
|
1043
|
+
c(), n && await o();
|
|
918
1044
|
}).catch((e) => {
|
|
919
|
-
|
|
1045
|
+
k.warn(`[bitboss-ui] icon scan: could not update ${t} (${e instanceof Error ? e.message : String(e)})`);
|
|
920
1046
|
});
|
|
921
1047
|
};
|
|
922
|
-
if (
|
|
1048
|
+
if (U = e.watcher, B) for (let e of B.includeDirs) U.add(e);
|
|
923
1049
|
for (let a of [
|
|
924
1050
|
"add",
|
|
925
1051
|
"change",
|
|
926
1052
|
"unlink"
|
|
927
1053
|
]) e.watcher.on(a, (o) => {
|
|
928
1054
|
if (n(o)) {
|
|
929
|
-
r.vscodeSettings !== !1 &&
|
|
1055
|
+
r.vscodeSettings !== !1 && O(t, i ?? e.config.root, (e) => k.warn(e));
|
|
930
1056
|
return;
|
|
931
1057
|
}
|
|
932
|
-
|
|
1058
|
+
u(a, o);
|
|
933
1059
|
});
|
|
934
1060
|
}
|
|
935
1061
|
};
|
|
936
1062
|
}
|
|
937
1063
|
//#endregion
|
|
938
|
-
export { n as BB_LAYERS, o as BUILTIN_LOCALE_KEYS, f as DEFAULT_MAX_FILE_SIZE,
|
|
1064
|
+
export { n as BB_LAYERS, o as BUILTIN_LOCALE_KEYS, f as DEFAULT_MAX_FILE_SIZE, g as DEFAULT_VARIANT_REGISTRIES, p as IconScanner, K as LOCAL_ICONS_JSON_PATH, Qe as REQUIRED_OPTIMIZE_DEPS_EXCLUDE, Ze as REQUIRED_OPTIMIZE_DEPS_INCLUDE, W as SSR_NO_EXTERNAL, Et as TAILWIND_CLASS_ATTRIBUTES_DEFAULTS, Z as TAILWIND_PT_CLASS_ATTRIBUTE, Q as TAILWIND_PT_CLASS_REGEX, r as TAILWIND_V3_LAYERS, i as TAILWIND_V4_LAYERS, G as VEE_MISSING_MESSAGE, Xt as bitbossUi, Ve as collectThemeNames, At as defaultVscodeSettings, Jt as definePt, N as diagnoseMissingIcon, we as expandIconWhitelist, ee as extractIconCandidates, Ie as generateDayjsLocalesModule, Xe as generateLinkModule, Pe as generateLocalesModule, Le as generatePassthroughDeduperModule, gt as generateVeeMissingModule, Ye as hasInertia, m as iconLiteralRegExp, re as iconScanCacheFile, ze as isAppThemeCss, Mt as localIconDirWarning, H as mergeThemeNames, Fe as resolveDayjsLocales, Ne as resolveEnabledLocales, tt as resolveSsrNoExternal, Be as scanThemeFiles, Nt as stripJsonComments, Re as themeNamesInCss, Wt as updateVscodeSettings, Te as upgradeHint, _t as usesBbForm, Ue as validateAutoDisableWritingThreshold, He as validatePassthroughDeduper, Ae as validatePtGlobalMapNames, ke as validateVariantNames, jt as writeLocalIconifyCollection };
|