luxen-ui 0.7.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/cli.mjs +189 -18
- package/cdn/chunks/decorate.js +1 -1
- package/cdn/chunks/floating-ui.dom.js +1 -1
- package/cdn/chunks/floating-ui.dom.js.map +1 -1
- package/cdn/chunks/lit-html.js +3 -0
- package/cdn/chunks/lit-html.js.map +1 -0
- package/cdn/chunks/lit.js +1 -2
- package/cdn/chunks/lit.js.map +1 -1
- package/cdn/chunks/static-html.js +2 -0
- package/cdn/chunks/static-html.js.map +1 -0
- package/cdn/custom-elements.json +3174 -16266
- package/cdn/elements/avatar/avatar.d.ts +13 -0
- package/cdn/elements/avatar/avatar.d.ts.map +1 -1
- package/cdn/elements/avatar/avatar.js +8 -8
- package/cdn/elements/avatar/avatar.js.map +1 -1
- package/cdn/elements/button/button.meta.d.ts +33 -0
- package/cdn/elements/button/button.meta.d.ts.map +1 -0
- package/cdn/elements/button/button.meta.js +0 -0
- package/cdn/elements/button-group/button-group.d.ts +33 -0
- package/cdn/elements/button-group/button-group.d.ts.map +1 -0
- package/cdn/elements/button-group/button-group.js +2 -0
- package/cdn/elements/button-group/button-group.js.map +1 -0
- package/cdn/elements/button-group/index.d.ts +2 -0
- package/cdn/elements/button-group/index.d.ts.map +1 -0
- package/cdn/elements/button-group/index.js +2 -0
- package/cdn/elements/button-group/index.js.map +1 -0
- package/cdn/elements/carousel/carousel.d.ts +6 -0
- package/cdn/elements/carousel/carousel.d.ts.map +1 -1
- package/cdn/elements/carousel/carousel.js +5 -5
- package/cdn/elements/carousel/carousel.js.map +1 -1
- package/cdn/elements/carousel-item/carousel-item.d.ts +2 -0
- package/cdn/elements/carousel-item/carousel-item.d.ts.map +1 -1
- package/cdn/elements/carousel-item/carousel-item.js +1 -1
- package/cdn/elements/carousel-item/carousel-item.js.map +1 -1
- package/cdn/elements/checkbox/checkbox.meta.d.ts +31 -0
- package/cdn/elements/checkbox/checkbox.meta.d.ts.map +1 -0
- package/cdn/elements/checkbox/checkbox.meta.js +0 -0
- package/cdn/elements/close-button/close-button.meta.d.ts +24 -0
- package/cdn/elements/close-button/close-button.meta.d.ts.map +1 -0
- package/cdn/elements/close-button/close-button.meta.js +0 -0
- package/cdn/elements/dialog/dialog.d.ts +12 -6
- package/cdn/elements/dialog/dialog.d.ts.map +1 -1
- package/cdn/elements/dialog/dialog.js +8 -5
- package/cdn/elements/dialog/dialog.js.map +1 -1
- package/cdn/elements/dialog/dialog.styles.js +1 -1
- package/cdn/elements/dialog/dialog.styles.js.map +1 -1
- package/cdn/elements/disclosure/disclosure.meta.d.ts +28 -0
- package/cdn/elements/disclosure/disclosure.meta.d.ts.map +1 -0
- package/cdn/elements/disclosure/disclosure.meta.js +0 -0
- package/cdn/elements/divider/divider.d.ts +1 -1
- package/cdn/elements/divider/divider.js.map +1 -1
- package/cdn/elements/drawer/drawer.d.ts +5 -0
- package/cdn/elements/drawer/drawer.d.ts.map +1 -1
- package/cdn/elements/drawer/drawer.js +1 -1
- package/cdn/elements/drawer/drawer.js.map +1 -1
- package/cdn/elements/dropdown/dropdown.d.ts +11 -1
- package/cdn/elements/dropdown/dropdown.d.ts.map +1 -1
- package/cdn/elements/dropdown/dropdown.js +2 -2
- package/cdn/elements/dropdown/dropdown.js.map +1 -1
- package/cdn/elements/dropdown-item/dropdown-item.d.ts +2 -0
- package/cdn/elements/dropdown-item/dropdown-item.d.ts.map +1 -1
- package/cdn/elements/dropdown-item/dropdown-item.js +5 -5
- package/cdn/elements/dropdown-item/dropdown-item.js.map +1 -1
- package/cdn/elements/dropdown-label/dropdown-label.d.ts +17 -0
- package/cdn/elements/dropdown-label/dropdown-label.d.ts.map +1 -0
- package/cdn/elements/dropdown-label/dropdown-label.js +4 -0
- package/cdn/elements/dropdown-label/dropdown-label.js.map +1 -0
- package/cdn/elements/dropdown-label/index.d.ts +2 -0
- package/cdn/elements/dropdown-label/index.d.ts.map +1 -0
- package/cdn/elements/dropdown-label/index.js +2 -0
- package/cdn/elements/dropdown-label/index.js.map +1 -0
- package/cdn/elements/form-field/form-field.d.ts +62 -0
- package/cdn/elements/form-field/form-field.d.ts.map +1 -0
- package/cdn/elements/form-field/form-field.js +2 -0
- package/cdn/elements/form-field/form-field.js.map +1 -0
- package/cdn/elements/form-field/index.d.ts +2 -0
- package/cdn/elements/form-field/index.d.ts.map +1 -0
- package/cdn/elements/form-field/index.js +2 -0
- package/cdn/elements/form-field/index.js.map +1 -0
- package/cdn/elements/icon/icon.js +1 -1
- package/cdn/elements/icon/icon.js.map +1 -1
- package/cdn/elements/input-otp/input-otp.d.ts +2 -0
- package/cdn/elements/input-otp/input-otp.d.ts.map +1 -1
- package/cdn/elements/input-otp/input-otp.js.map +1 -1
- package/cdn/elements/input-stepper/input-stepper.d.ts +2 -0
- package/cdn/elements/input-stepper/input-stepper.d.ts.map +1 -1
- package/cdn/elements/input-stepper/input-stepper.js +1 -1
- package/cdn/elements/input-stepper/input-stepper.js.map +1 -1
- package/cdn/elements/kbd/kbd.meta.d.ts +14 -0
- package/cdn/elements/kbd/kbd.meta.d.ts.map +1 -0
- package/cdn/elements/kbd/kbd.meta.js +0 -0
- package/cdn/elements/popover/popover.js +2 -2
- package/cdn/elements/popover/popover.js.map +1 -1
- package/cdn/elements/progress/progress.meta.d.ts +22 -0
- package/cdn/elements/progress/progress.meta.d.ts.map +1 -0
- package/cdn/elements/progress/progress.meta.js +0 -0
- package/cdn/elements/prose-editor/prose-editor.d.ts +12 -1
- package/cdn/elements/prose-editor/prose-editor.d.ts.map +1 -1
- package/cdn/elements/prose-editor/prose-editor.js +42 -42
- package/cdn/elements/prose-editor/prose-editor.js.map +1 -1
- package/cdn/elements/rating/rating.d.ts +2 -0
- package/cdn/elements/rating/rating.d.ts.map +1 -1
- package/cdn/elements/rating/rating.js +5 -5
- package/cdn/elements/rating/rating.js.map +1 -1
- package/cdn/elements/select/select.meta.d.ts +28 -0
- package/cdn/elements/select/select.meta.d.ts.map +1 -0
- package/cdn/elements/select/select.meta.js +0 -0
- package/cdn/elements/skeleton/skeleton.d.ts +3 -0
- package/cdn/elements/skeleton/skeleton.d.ts.map +1 -1
- package/cdn/elements/skeleton/skeleton.js.map +1 -1
- package/cdn/elements/spinner/spinner.js +1 -1
- package/cdn/elements/spinner/spinner.js.map +1 -1
- package/cdn/elements/sticky-bar/sticky-bar.js +1 -1
- package/cdn/elements/sticky-bar/sticky-bar.js.map +1 -1
- package/cdn/elements/stories-viewer/stories-viewer.d.ts +1 -1
- package/cdn/elements/stories-viewer/stories-viewer.d.ts.map +1 -1
- package/cdn/elements/stories-viewer/stories-viewer.js +27 -27
- package/cdn/elements/stories-viewer/stories-viewer.js.map +1 -1
- package/cdn/elements/story/story.d.ts +10 -1
- package/cdn/elements/story/story.d.ts.map +1 -1
- package/cdn/elements/story/story.js +20 -20
- package/cdn/elements/story/story.js.map +1 -1
- package/cdn/elements/toast/toast.d.ts +5 -0
- package/cdn/elements/toast/toast.d.ts.map +1 -1
- package/cdn/elements/toast/toast.js.map +1 -1
- package/cdn/elements/tooltip/tooltip.js +2 -2
- package/cdn/elements/tooltip/tooltip.js.map +1 -1
- package/cdn/elements/tree/tree.d.ts +2 -0
- package/cdn/elements/tree/tree.d.ts.map +1 -1
- package/cdn/elements/tree/tree.js +1 -1
- package/cdn/elements/tree/tree.js.map +1 -1
- package/cdn/elements/tree-item/tree-item.d.ts +2 -0
- package/cdn/elements/tree-item/tree-item.d.ts.map +1 -1
- package/cdn/elements/tree-item/tree-item.js +6 -6
- package/cdn/elements/tree-item/tree-item.js.map +1 -1
- package/cdn/registry.d.ts +1 -1
- package/cdn/registry.d.ts.map +1 -1
- package/cdn/registry.js.map +1 -1
- package/cdn/shared/controllers/has-slot-controller.d.ts +37 -0
- package/cdn/shared/controllers/has-slot-controller.d.ts.map +1 -0
- package/cdn/shared/controllers/has-slot-controller.js +2 -0
- package/cdn/shared/controllers/has-slot-controller.js.map +1 -0
- package/cdn/shared/controllers/popover.d.ts +2 -0
- package/cdn/shared/controllers/popover.d.ts.map +1 -1
- package/cdn/shared/controllers/popover.js +1 -1
- package/cdn/shared/controllers/popover.js.map +1 -1
- package/cdn/shared/styles/checkbox-appearance.styles.d.ts +9 -0
- package/cdn/shared/styles/checkbox-appearance.styles.d.ts.map +1 -0
- package/cdn/shared/styles/checkbox-appearance.styles.js +2 -0
- package/cdn/shared/styles/checkbox-appearance.styles.js.map +1 -0
- package/cdn/shared/styles/host.styles.js +1 -1
- package/cdn/standalone.css +337 -9
- package/cdn/standalone.js +513 -46
- package/cdn/standalone.js.map +1 -1
- package/cdn/static-tag.d.ts +17 -0
- package/cdn/static-tag.d.ts.map +1 -0
- package/cdn/static-tag.js +2 -0
- package/cdn/static-tag.js.map +1 -0
- package/cdn/styles/elements/button-group.css +88 -0
- package/cdn/styles/elements/button.css +7 -2
- package/cdn/styles/elements/checkbox.css +101 -0
- package/cdn/styles/elements/form-field.css +67 -0
- package/cdn/styles/elements/input-stepper/default.css +10 -4
- package/cdn/styles/elements/input-stepper/rounded.css +9 -3
- package/cdn/styles/preset.css +49 -0
- package/cdn/styles/tokens/forms.css +52 -0
- package/cdn/styles/tokens.css +49 -0
- package/dist/css/elements/button-group.css +88 -0
- package/dist/css/elements/button.css +7 -2
- package/dist/css/elements/checkbox.css +101 -0
- package/dist/css/elements/form-field.css +67 -0
- package/dist/css/elements/input-stepper/default.css +10 -4
- package/dist/css/elements/input-stepper/rounded.css +9 -3
- package/dist/css/preset.css +49 -0
- package/dist/css/tokens/forms.css +52 -0
- package/dist/css/tokens.css +49 -0
- package/dist/custom-elements.json +3174 -16266
- package/dist/elements/avatar/avatar.css +37 -10
- package/dist/elements/avatar/avatar.d.ts +13 -0
- package/dist/elements/avatar/avatar.d.ts.map +1 -1
- package/dist/elements/avatar/avatar.js +14 -1
- package/dist/elements/button/button.meta.d.ts +33 -0
- package/dist/elements/button/button.meta.d.ts.map +1 -0
- package/dist/elements/button/button.meta.js +44 -0
- package/dist/elements/button-group/button-group.d.ts +33 -0
- package/dist/elements/button-group/button-group.d.ts.map +1 -0
- package/dist/elements/button-group/button-group.js +57 -0
- package/dist/elements/button-group/index.d.ts +2 -0
- package/dist/elements/button-group/index.d.ts.map +1 -0
- package/dist/elements/button-group/index.js +4 -0
- package/dist/elements/carousel/carousel.d.ts +6 -0
- package/dist/elements/carousel/carousel.d.ts.map +1 -1
- package/dist/elements/carousel/carousel.js +6 -0
- package/dist/elements/carousel-item/carousel-item.d.ts +2 -0
- package/dist/elements/carousel-item/carousel-item.d.ts.map +1 -1
- package/dist/elements/carousel-item/carousel-item.js +2 -0
- package/dist/elements/checkbox/checkbox.meta.d.ts +31 -0
- package/dist/elements/checkbox/checkbox.meta.d.ts.map +1 -0
- package/dist/elements/checkbox/checkbox.meta.js +41 -0
- package/dist/elements/close-button/close-button.meta.d.ts +24 -0
- package/dist/elements/close-button/close-button.meta.d.ts.map +1 -0
- package/dist/elements/close-button/close-button.meta.js +30 -0
- package/dist/elements/dialog/dialog.css +15 -0
- package/dist/elements/dialog/dialog.d.ts +12 -6
- package/dist/elements/dialog/dialog.d.ts.map +1 -1
- package/dist/elements/dialog/dialog.js +21 -7
- package/dist/elements/disclosure/disclosure.meta.d.ts +28 -0
- package/dist/elements/disclosure/disclosure.meta.d.ts.map +1 -0
- package/dist/elements/disclosure/disclosure.meta.js +34 -0
- package/dist/elements/divider/divider.d.ts +1 -1
- package/dist/elements/divider/divider.js +1 -1
- package/dist/elements/drawer/drawer.d.ts +5 -0
- package/dist/elements/drawer/drawer.d.ts.map +1 -1
- package/dist/elements/drawer/drawer.js +5 -0
- package/dist/elements/dropdown/dropdown.css +0 -1
- package/dist/elements/dropdown/dropdown.d.ts +11 -1
- package/dist/elements/dropdown/dropdown.d.ts.map +1 -1
- package/dist/elements/dropdown/dropdown.js +23 -4
- package/dist/elements/dropdown-item/dropdown-item.d.ts +2 -0
- package/dist/elements/dropdown-item/dropdown-item.d.ts.map +1 -1
- package/dist/elements/dropdown-item/dropdown-item.js +2 -0
- package/dist/elements/dropdown-label/dropdown-label.css +18 -0
- package/dist/elements/dropdown-label/dropdown-label.d.ts +17 -0
- package/dist/elements/dropdown-label/dropdown-label.d.ts.map +1 -0
- package/dist/elements/dropdown-label/dropdown-label.js +31 -0
- package/dist/elements/dropdown-label/index.d.ts +2 -0
- package/dist/elements/dropdown-label/index.d.ts.map +1 -0
- package/dist/elements/dropdown-label/index.js +4 -0
- package/dist/elements/form-field/form-field.d.ts +62 -0
- package/dist/elements/form-field/form-field.d.ts.map +1 -0
- package/dist/elements/form-field/form-field.js +191 -0
- package/dist/elements/form-field/index.d.ts +2 -0
- package/dist/elements/form-field/index.d.ts.map +1 -0
- package/dist/elements/form-field/index.js +4 -0
- package/dist/elements/input-otp/input-otp.d.ts +2 -0
- package/dist/elements/input-otp/input-otp.d.ts.map +1 -1
- package/dist/elements/input-otp/input-otp.js +2 -0
- package/dist/elements/input-stepper/input-stepper.d.ts +2 -0
- package/dist/elements/input-stepper/input-stepper.d.ts.map +1 -1
- package/dist/elements/input-stepper/input-stepper.js +5 -1
- package/dist/elements/kbd/kbd.meta.d.ts +14 -0
- package/dist/elements/kbd/kbd.meta.d.ts.map +1 -0
- package/dist/elements/kbd/kbd.meta.js +20 -0
- package/dist/elements/progress/progress.meta.d.ts +22 -0
- package/dist/elements/progress/progress.meta.d.ts.map +1 -0
- package/dist/elements/progress/progress.meta.js +28 -0
- package/dist/elements/prose-editor/prose-editor.d.ts +12 -1
- package/dist/elements/prose-editor/prose-editor.d.ts.map +1 -1
- package/dist/elements/prose-editor/prose-editor.js +58 -13
- package/dist/elements/rating/rating.d.ts +2 -0
- package/dist/elements/rating/rating.d.ts.map +1 -1
- package/dist/elements/rating/rating.js +2 -0
- package/dist/elements/select/select.meta.d.ts +28 -0
- package/dist/elements/select/select.meta.d.ts.map +1 -0
- package/dist/elements/select/select.meta.js +34 -0
- package/dist/elements/skeleton/skeleton.d.ts +3 -0
- package/dist/elements/skeleton/skeleton.d.ts.map +1 -1
- package/dist/elements/skeleton/skeleton.js +3 -0
- package/dist/elements/stories-viewer/stories-viewer.d.ts +1 -1
- package/dist/elements/stories-viewer/stories-viewer.d.ts.map +1 -1
- package/dist/elements/stories-viewer/stories-viewer.js +23 -19
- package/dist/elements/story/story.d.ts +10 -1
- package/dist/elements/story/story.d.ts.map +1 -1
- package/dist/elements/story/story.js +29 -17
- package/dist/elements/toast/toast.d.ts +5 -0
- package/dist/elements/toast/toast.d.ts.map +1 -1
- package/dist/elements/toast/toast.js +5 -0
- package/dist/elements/tree/tree.d.ts +2 -0
- package/dist/elements/tree/tree.d.ts.map +1 -1
- package/dist/elements/tree/tree.js +13 -1
- package/dist/elements/tree-item/tree-item.css +6 -12
- package/dist/elements/tree-item/tree-item.d.ts +2 -0
- package/dist/elements/tree-item/tree-item.d.ts.map +1 -1
- package/dist/elements/tree-item/tree-item.js +5 -2
- package/dist/metadata/avatar.json +93 -0
- package/dist/metadata/badge.json +59 -0
- package/dist/metadata/button-group.json +49 -0
- package/dist/metadata/button.json +138 -0
- package/dist/metadata/carousel-item.json +32 -0
- package/dist/metadata/carousel.json +388 -0
- package/dist/metadata/checkbox.json +89 -0
- package/dist/metadata/close-button.json +90 -0
- package/dist/metadata/dialog.json +163 -0
- package/dist/metadata/disclosure.json +88 -0
- package/dist/metadata/divider.json +65 -0
- package/dist/metadata/drawer.json +176 -0
- package/dist/metadata/dropdown-item.json +85 -0
- package/dist/metadata/dropdown-label.json +37 -0
- package/dist/metadata/dropdown.json +165 -0
- package/dist/metadata/form-field.json +87 -0
- package/dist/metadata/icon.json +49 -0
- package/dist/metadata/index.json +4342 -0
- package/dist/metadata/input-otp.json +86 -0
- package/dist/metadata/input-stepper.json +122 -0
- package/dist/metadata/kbd.json +37 -0
- package/dist/metadata/popover.json +157 -0
- package/dist/metadata/progress.json +71 -0
- package/dist/metadata/prose-editor.json +365 -0
- package/dist/metadata/rating.json +126 -0
- package/dist/metadata/select.json +82 -0
- package/dist/metadata/skeleton.json +56 -0
- package/dist/metadata/spinner.json +47 -0
- package/dist/metadata/sticky-bar.json +93 -0
- package/dist/metadata/stories-viewer.json +316 -0
- package/dist/metadata/stories.json +109 -0
- package/dist/metadata/story.json +148 -0
- package/dist/metadata/tabs.json +74 -0
- package/dist/metadata/toast.json +122 -0
- package/dist/metadata/tooltip.json +144 -0
- package/dist/metadata/tree-item.json +199 -0
- package/dist/metadata/tree.json +130 -0
- package/dist/registry.d.ts +1 -1
- package/dist/registry.d.ts.map +1 -1
- package/dist/shared/controllers/has-slot-controller.d.ts +37 -0
- package/dist/shared/controllers/has-slot-controller.d.ts.map +1 -0
- package/dist/shared/controllers/has-slot-controller.js +66 -0
- package/dist/shared/controllers/popover.d.ts +2 -0
- package/dist/shared/controllers/popover.d.ts.map +1 -1
- package/dist/shared/controllers/popover.js +14 -1
- package/dist/shared/styles/checkbox-appearance.css +92 -0
- package/dist/shared/styles/checkbox-appearance.styles.d.ts +9 -0
- package/dist/shared/styles/checkbox-appearance.styles.d.ts.map +1 -0
- package/dist/shared/styles/checkbox-appearance.styles.js +9 -0
- package/dist/static-tag.d.ts +17 -0
- package/dist/static-tag.d.ts.map +1 -0
- package/dist/static-tag.js +22 -0
- package/dist/templates/elements/avatar.md +30 -31
- package/dist/templates/elements/badge.md +9 -15
- package/dist/templates/elements/button-group.md +164 -0
- package/dist/templates/elements/button.md +39 -51
- package/dist/templates/elements/checkbox.md +200 -0
- package/dist/templates/elements/close-button.md +24 -36
- package/dist/templates/elements/dialog.md +73 -54
- package/dist/templates/elements/drawer.md +39 -52
- package/dist/templates/elements/form-field.md +115 -0
- package/dist/templates/elements/progress.md +13 -23
- package/dist/templates/elements/prose-editor.md +71 -76
- package/dist/templates/elements/select.md +20 -31
- package/dist/templates/elements/sticky-bar.md +16 -60
- package/dist/templates/elements/toast.md +33 -53
- package/dist/templates/elements/tree.md +46 -74
- package/elements.json +73 -1
- package/package.json +10 -3
- package/templates/SKILL.md.tpl +20 -2
- package/templates/integration.md.tpl +1 -1
package/bin/cli.mjs
CHANGED
|
@@ -122,7 +122,7 @@ const DEFAULT_CONFIG = {
|
|
|
122
122
|
name: 'luxen-ui',
|
|
123
123
|
displayName: 'Luxen UI',
|
|
124
124
|
description:
|
|
125
|
-
|
|
125
|
+
"Build, edit, migrate, or review UI with Luxen UI, a CSS-first web component library. Provides CSS classes for native HTML elements plus custom elements (l-badge, l-dialog, l-toast). Use whenever a task touches UI in a project using Luxen UI — creating or styling interfaces, editing or refactoring existing components, reviewing UI, or migrating from another component library to Luxen (replacing another library's web components with Luxen elements). Each element has a per-element spec under references/.",
|
|
126
126
|
// Prefixes use the Vite plugin convention: bare identifier without trailing
|
|
127
127
|
// dash. `elementPrefix: 'pulse'` means tags are `<pulse-badge>`, type selectors
|
|
128
128
|
// are `pulse-badge`. `cssPrefix: 'pulse'` controls `.pulse-button` classes,
|
|
@@ -133,6 +133,13 @@ const DEFAULT_CONFIG = {
|
|
|
133
133
|
jsImportPath: 'luxen-ui',
|
|
134
134
|
themeCss: null,
|
|
135
135
|
out: null,
|
|
136
|
+
// Mockup / Claude Design mode is off by default. It produces the heavy
|
|
137
|
+
// standalone bundle (assets/<name>-standalone.{js,css}, ~1.7 MB committed),
|
|
138
|
+
// assets/claude-design.md, references/mockups.md, and the "Mode 2" section in
|
|
139
|
+
// SKILL.md. The common case (integration via npm + bundler, read by Claude
|
|
140
|
+
// Code / Cursor) never needs these, so opt in with `--with-mockups` or
|
|
141
|
+
// `mockups: true` in the config.
|
|
142
|
+
mockups: false,
|
|
136
143
|
};
|
|
137
144
|
|
|
138
145
|
async function cmdGenerateSkill(args) {
|
|
@@ -140,12 +147,22 @@ async function cmdGenerateSkill(args) {
|
|
|
140
147
|
const config = await loadConfig(opts.config);
|
|
141
148
|
const ctx = buildContext(config, opts);
|
|
142
149
|
|
|
150
|
+
if (ctx.themeCss && !ctx.mockups) {
|
|
151
|
+
console.warn(
|
|
152
|
+
'⚠ themeCss is only applied to the standalone bundle, which is skipped without --with-mockups. Ignoring it.',
|
|
153
|
+
);
|
|
154
|
+
}
|
|
155
|
+
|
|
143
156
|
await runGenerateSkill(ctx);
|
|
144
157
|
|
|
145
158
|
console.log(`✓ Skill generated at ${relative(process.cwd(), ctx.outDir)}`);
|
|
146
159
|
console.log('');
|
|
147
160
|
console.log('Next steps:');
|
|
148
161
|
console.log(` • Commit ${ctx.outDir} so AI agents (and the rest of your team) can read it.`);
|
|
162
|
+
if (!ctx.mockups) {
|
|
163
|
+
console.log(' • Mockup / Claude Design assets were skipped (standalone bundle, mockups.md,');
|
|
164
|
+
console.log(' claude-design.md). Re-run with --with-mockups to include them.');
|
|
165
|
+
}
|
|
149
166
|
console.log(` • Re-run \`luxen-ui generate-skill\` whenever luxen-ui or your tokens change.`);
|
|
150
167
|
}
|
|
151
168
|
|
|
@@ -159,6 +176,8 @@ function parseFlags(argv) {
|
|
|
159
176
|
else if (arg === '--css-prefix') opts.cssPrefix = argv[++i];
|
|
160
177
|
else if (arg === '--name') opts.name = argv[++i];
|
|
161
178
|
else if (arg === '--theme-css') opts.themeCss = argv[++i];
|
|
179
|
+
else if (arg === '--with-mockups') opts.mockups = true;
|
|
180
|
+
else if (arg === '--no-mockups') opts.mockups = false;
|
|
162
181
|
else if (arg === '-h' || arg === '--help') usageGenerateSkill(0);
|
|
163
182
|
else {
|
|
164
183
|
console.error(`✗ Unknown flag: ${arg}`);
|
|
@@ -215,8 +234,7 @@ function stripUndefined(obj) {
|
|
|
215
234
|
async function runGenerateSkill(ctx) {
|
|
216
235
|
ensureDir(ctx.outDir);
|
|
217
236
|
ensureDir(join(ctx.outDir, 'references'));
|
|
218
|
-
ensureDir(join(ctx.outDir, 'assets'));
|
|
219
|
-
ensureDir(join(ctx.outDir, 'assets', 'css'));
|
|
237
|
+
if (ctx.mockups) ensureDir(join(ctx.outDir, 'assets'));
|
|
220
238
|
|
|
221
239
|
// 1. Read templates (hand-written) and pre-transformed element docs (build).
|
|
222
240
|
const tplDir = resolve(ctx.pkgRoot, 'templates');
|
|
@@ -245,9 +263,11 @@ async function runGenerateSkill(ctx) {
|
|
|
245
263
|
elementsTable: buildElementsTable(skillElements, ctx),
|
|
246
264
|
elementsList: buildElementsList(skillElements),
|
|
247
265
|
tagsList: buildTagsList(elements.elements),
|
|
266
|
+
// Drives the conditional "Mode 2" section in SKILL.md ({{#mockups}}…).
|
|
267
|
+
mockups: ctx.mockups,
|
|
248
268
|
};
|
|
249
269
|
|
|
250
|
-
// 3. Render SKILL.md
|
|
270
|
+
// 3. Render SKILL.md + integration.md (always). claude-design.md is mockup-only.
|
|
251
271
|
await renderTemplate(join(tplDir, 'SKILL.md.tpl'), join(ctx.outDir, 'SKILL.md'), vars, ctx);
|
|
252
272
|
await renderTemplate(
|
|
253
273
|
join(tplDir, 'integration.md.tpl'),
|
|
@@ -255,12 +275,14 @@ async function runGenerateSkill(ctx) {
|
|
|
255
275
|
vars,
|
|
256
276
|
ctx,
|
|
257
277
|
);
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
278
|
+
if (ctx.mockups) {
|
|
279
|
+
await renderTemplate(
|
|
280
|
+
join(tplDir, 'claude-design.md.tpl'),
|
|
281
|
+
join(ctx.outDir, 'assets', 'claude-design.md'),
|
|
282
|
+
vars,
|
|
283
|
+
ctx,
|
|
284
|
+
);
|
|
285
|
+
}
|
|
264
286
|
|
|
265
287
|
// 4. Per-element references (with prefix + package-name substitution).
|
|
266
288
|
for (const el of skillElements) {
|
|
@@ -271,6 +293,18 @@ async function runGenerateSkill(ctx) {
|
|
|
271
293
|
writeFileSync(dst, out, 'utf-8');
|
|
272
294
|
}
|
|
273
295
|
|
|
296
|
+
// 4b. Design-token reference — generated from the shipped token CSS, prefix-
|
|
297
|
+
// substituted (`--l-*` → css prefix; Tailwind utility names pass through).
|
|
298
|
+
writeFileSync(
|
|
299
|
+
join(ctx.outDir, 'references', 'tokens.md'),
|
|
300
|
+
applyPackageName(applyPrefix(buildTokensDoc(ctx), ctx), ctx),
|
|
301
|
+
'utf-8',
|
|
302
|
+
);
|
|
303
|
+
|
|
304
|
+
// Everything below is mockup / Claude Design mode only — the standalone
|
|
305
|
+
// bundle and the docs that point at it. Skipped unless `--with-mockups`.
|
|
306
|
+
if (!ctx.mockups) return;
|
|
307
|
+
|
|
274
308
|
// 5. mockups.md — rendered from template (local-assets paths, prefix-aware
|
|
275
309
|
// since assets/cdn/ has been substituted to the consumer's prefix).
|
|
276
310
|
await renderTemplate(
|
|
@@ -336,8 +370,21 @@ async function renderTemplate(srcPath, dstPath, vars, ctx) {
|
|
|
336
370
|
writeFileSync(dstPath, final, 'utf-8');
|
|
337
371
|
}
|
|
338
372
|
|
|
373
|
+
// Minimal Mustache: section blocks plus `{{var}}` substitution.
|
|
374
|
+
// {{#key}}…{{/key}} → kept only when vars[key] is truthy
|
|
375
|
+
// {{^key}}…{{/key}} → kept only when vars[key] is falsy (inverted)
|
|
376
|
+
// Sections don't nest. Stripping a multi-line block leaves a blank-line gap, so
|
|
377
|
+
// 3+ newlines are collapsed to 2 afterwards — safe here because none of the
|
|
378
|
+
// templates rely on triple newlines (verified at authoring time).
|
|
339
379
|
function applyMustache(content, vars) {
|
|
340
|
-
|
|
380
|
+
content = content.replace(/\{\{\^(\w+)\}\}([\s\S]*?)\{\{\/\1\}\}/g, (m, key, inner) =>
|
|
381
|
+
vars[key] ? '' : inner,
|
|
382
|
+
);
|
|
383
|
+
content = content.replace(/\{\{#(\w+)\}\}([\s\S]*?)\{\{\/\1\}\}/g, (m, key, inner) =>
|
|
384
|
+
vars[key] ? inner : '',
|
|
385
|
+
);
|
|
386
|
+
content = content.replace(/\{\{(\w+)\}\}/g, (m, key) => (key in vars ? String(vars[key]) : m));
|
|
387
|
+
return content.replace(/\n{3,}/g, '\n\n');
|
|
341
388
|
}
|
|
342
389
|
|
|
343
390
|
// Substitutes the npm package name `luxen-ui` with the consumer's name in
|
|
@@ -365,6 +412,12 @@ function applyPackageName(content, ctx) {
|
|
|
365
412
|
function applyPrefix(content, ctx) {
|
|
366
413
|
const { elementPrefix: e, cssPrefix: c } = ctx;
|
|
367
414
|
if (e === 'l' && c === 'l') return content;
|
|
415
|
+
// CSS classes live in `class="…"`. Every `l-` token there is a css-prefix
|
|
416
|
+
// surface regardless of quoting — do this *before* the generic quoted-form
|
|
417
|
+
// rules below, which assume a quoted `l-` is a tag name (true for JS/JSON
|
|
418
|
+
// strings, false for HTML class attributes). Once a class value is rewritten
|
|
419
|
+
// to the css prefix it carries no `l-` token, so the later rules skip it.
|
|
420
|
+
content = applyClassAttrPrefix(content, c);
|
|
368
421
|
return content
|
|
369
422
|
.replace(/<l-/g, `<${e}-`)
|
|
370
423
|
.replace(/<\/l-/g, `</${e}-`)
|
|
@@ -381,6 +434,18 @@ function applyPrefix(content, ctx) {
|
|
|
381
434
|
.replace(/\nl-/g, `\n${e}-`);
|
|
382
435
|
}
|
|
383
436
|
|
|
437
|
+
// Rewrites every `l-` token inside an HTML `class="…"` / `class='…'` value to
|
|
438
|
+
// the css prefix. Classes are a css-prefix surface (mirrors `.l-` in
|
|
439
|
+
// applyPrefixCss), but in markdown they appear quoted inside class attributes,
|
|
440
|
+
// where applyPrefix's quoted-form rules would otherwise mistake them for tag
|
|
441
|
+
// names. When cssPrefix === 'l' this is a no-op.
|
|
442
|
+
function applyClassAttrPrefix(content, c) {
|
|
443
|
+
return content.replace(
|
|
444
|
+
/class=(["'])(.*?)\1/g,
|
|
445
|
+
(_, q, val) => `class=${q}${val.replace(/\bl-/g, `${c}-`)}${q}`,
|
|
446
|
+
);
|
|
447
|
+
}
|
|
448
|
+
|
|
384
449
|
// Prefix substitution for CSS files. Three surfaces, two prefixes (mirrors
|
|
385
450
|
// postcss-plugin-prefix):
|
|
386
451
|
// - CSS variables `--l-*` → cssPrefix
|
|
@@ -445,6 +510,100 @@ function buildElementsList(elements) {
|
|
|
445
510
|
return elements.map((e) => e.displayName).join(', ') + '.';
|
|
446
511
|
}
|
|
447
512
|
|
|
513
|
+
// Builds references/tokens.md from the shipped token CSS — a read-only inventory
|
|
514
|
+
// of the design system's semantic surface so an agent uses real tokens instead
|
|
515
|
+
// of improvising values. Two sources:
|
|
516
|
+
// - dist/css/tokens/aliases.css → the `--l-*` custom properties + their
|
|
517
|
+
// descriptions (consumers reference these directly in element CSS knobs).
|
|
518
|
+
// - dist/css/tailwind/preset.css → the semantic Tailwind utility classes
|
|
519
|
+
// (`text-primary`, `bg-fill-brand`, `border-interactive`, …) generated from
|
|
520
|
+
// those aliases.
|
|
521
|
+
// The result is run through applyPrefix at the call site, so `--l-*` becomes the
|
|
522
|
+
// consumer's css prefix; Tailwind utility names are unprefixed and pass through.
|
|
523
|
+
const TOKEN_GROUPS = [
|
|
524
|
+
{ title: 'Text colors', test: (n) => n.startsWith('--l-color-text-') },
|
|
525
|
+
{ title: 'Backgrounds', test: (n) => /^--l-color-(surface|bg-)/.test(n) },
|
|
526
|
+
{ title: 'Borders & dividers', test: (n) => /^--l-color-(border|divider)/.test(n) },
|
|
527
|
+
{ title: 'Effects', test: (n) => /^--l-(backdrop|focus-ring)/.test(n) },
|
|
528
|
+
{ title: 'Control sizes', test: (n) => n.startsWith('--l-size-control-') },
|
|
529
|
+
];
|
|
530
|
+
|
|
531
|
+
function buildTokensDoc(ctx) {
|
|
532
|
+
const aliasesPath = resolve(ctx.pkgRoot, 'dist/css/tokens/aliases.css');
|
|
533
|
+
const presetPath = resolve(ctx.pkgRoot, 'dist/css/tailwind/preset.css');
|
|
534
|
+
if (!existsSync(aliasesPath)) {
|
|
535
|
+
console.error(`✗ Missing ${aliasesPath}.`);
|
|
536
|
+
console.error(" This file is generated by luxen-ui's build. Reinstall the package.");
|
|
537
|
+
process.exit(1);
|
|
538
|
+
}
|
|
539
|
+
|
|
540
|
+
// Each entry is a single `/* description */` immediately above a `--l-…:`
|
|
541
|
+
// property. The tempered `(?:(?!\*\/)[\s\S])*?` keeps the comment body from
|
|
542
|
+
// spanning across `*/`, so the file-header comments don't get glued onto the
|
|
543
|
+
// first token's description.
|
|
544
|
+
const aliases = readFileSync(aliasesPath, 'utf-8');
|
|
545
|
+
const entries = [];
|
|
546
|
+
const varRe = /\/\*((?:(?!\*\/)[\s\S])*?)\*\/\s*(--l-[\w-]+)\s*:/g;
|
|
547
|
+
for (let m; (m = varRe.exec(aliases)); ) {
|
|
548
|
+
entries.push({ name: m[2], desc: m[1].replace(/\s+/g, ' ').trim() });
|
|
549
|
+
}
|
|
550
|
+
|
|
551
|
+
const groups = TOKEN_GROUPS.map((g) => ({
|
|
552
|
+
title: g.title,
|
|
553
|
+
rows: entries.filter((e) => g.test(e.name)),
|
|
554
|
+
})).filter((g) => g.rows.length);
|
|
555
|
+
const otherRows = entries.filter((e) => !TOKEN_GROUPS.some((g) => g.test(e.name)));
|
|
556
|
+
if (otherRows.length) groups.push({ title: 'Other', rows: otherRows });
|
|
557
|
+
|
|
558
|
+
const sections = groups.map((g) => {
|
|
559
|
+
const rows = g.rows.map((r) => `| \`${r.name}\` | ${r.desc} |`).join('\n');
|
|
560
|
+
return `### ${g.title}\n\n| Token | Usage |\n|-------|-------|\n${rows}`;
|
|
561
|
+
});
|
|
562
|
+
|
|
563
|
+
// Semantic Tailwind utilities from the preset's @theme inline namespaces.
|
|
564
|
+
const utilities = buildUtilityClasses(presetPath);
|
|
565
|
+
|
|
566
|
+
const parts = [
|
|
567
|
+
`# ${ctx.displayName} — design tokens`,
|
|
568
|
+
'',
|
|
569
|
+
'Read-only reference for the design system. Use these semantic tokens and utility classes for colors, spacing, and typography instead of arbitrary values — they adapt to theming and dark mode automatically.',
|
|
570
|
+
'',
|
|
571
|
+
'## CSS custom properties',
|
|
572
|
+
'',
|
|
573
|
+
'Reference these in element CSS custom properties and your own styles (e.g. `color: var(--l-color-text-secondary)`).',
|
|
574
|
+
'',
|
|
575
|
+
sections.join('\n\n'),
|
|
576
|
+
];
|
|
577
|
+
if (utilities) parts.push('', '## Utility classes', '', utilities);
|
|
578
|
+
return parts.join('\n') + '\n';
|
|
579
|
+
}
|
|
580
|
+
|
|
581
|
+
// Maps the preset's semantic per-property namespaces to their Tailwind utility
|
|
582
|
+
// prefixes. Skips commented-out lines (palette families the consumer can opt in).
|
|
583
|
+
const UTILITY_NAMESPACES = [
|
|
584
|
+
{ ns: '--text-color-', util: 'text-' },
|
|
585
|
+
{ ns: '--background-color-', util: 'bg-' },
|
|
586
|
+
{ ns: '--border-color-', util: 'border-' },
|
|
587
|
+
];
|
|
588
|
+
|
|
589
|
+
function buildUtilityClasses(presetPath) {
|
|
590
|
+
if (!existsSync(presetPath)) return '';
|
|
591
|
+
const lines = readFileSync(presetPath, 'utf-8').split('\n');
|
|
592
|
+
const blocks = [];
|
|
593
|
+
for (const { ns, util } of UTILITY_NAMESPACES) {
|
|
594
|
+
const names = [];
|
|
595
|
+
for (const raw of lines) {
|
|
596
|
+
const line = raw.trim();
|
|
597
|
+
if (line.startsWith('/*') || line.startsWith('*')) continue;
|
|
598
|
+
const m = line.match(new RegExp(`^${ns}([\\w-]+)\\s*:`));
|
|
599
|
+
if (m) names.push(`\`${util}${m[1]}\``);
|
|
600
|
+
}
|
|
601
|
+
if (names.length) blocks.push(`- **${util}***: ${names.join(', ')}`);
|
|
602
|
+
}
|
|
603
|
+
if (!blocks.length) return '';
|
|
604
|
+
return ['Semantic utility classes generated from the tokens above:', '', ...blocks].join('\n');
|
|
605
|
+
}
|
|
606
|
+
|
|
448
607
|
// Builds the comma-separated `l-foo` tag list for mockups.md (from manifest
|
|
449
608
|
// entries flagged `inMockups`, excluding native CSS-only elements). The result
|
|
450
609
|
// is processed by applyPrefix at render time, so the tags reflect the consumer's
|
|
@@ -486,6 +645,10 @@ function usageGenerateSkill(code = 1) {
|
|
|
486
645
|
' --css-prefix <p> CSS class/var prefix without trailing dash (default: l)',
|
|
487
646
|
);
|
|
488
647
|
console.error(' --theme-css <path> Optional CSS file with token overrides');
|
|
648
|
+
console.error(
|
|
649
|
+
' --with-mockups Also emit the standalone bundle + mockup/Claude Design',
|
|
650
|
+
);
|
|
651
|
+
console.error(' docs (off by default)');
|
|
489
652
|
console.error(' --out <path> Output dir (default: .claude/skills/<name>)');
|
|
490
653
|
console.error('');
|
|
491
654
|
console.error('Config file (luxen.config.mjs) takes the same keys, plus identity:');
|
|
@@ -496,6 +659,7 @@ function usageGenerateSkill(code = 1) {
|
|
|
496
659
|
console.error(" elementPrefix: 'pulse',");
|
|
497
660
|
console.error(" cssPrefix: 'pulse',");
|
|
498
661
|
console.error(" themeCss: 'src/styles/tokens.css',");
|
|
662
|
+
console.error(' mockups: true, // emit standalone bundle + mockup docs');
|
|
499
663
|
console.error(" out: '.claude/skills/pulse',");
|
|
500
664
|
console.error(' }');
|
|
501
665
|
console.error('');
|
|
@@ -515,13 +679,20 @@ function usage(code = 1) {
|
|
|
515
679
|
process.exit(code);
|
|
516
680
|
}
|
|
517
681
|
|
|
518
|
-
|
|
682
|
+
// Run the dispatcher only when executed directly as a CLI — guarded so the
|
|
683
|
+
// module can be imported by tests (which exercise the pure prefix helpers
|
|
684
|
+
// below) without triggering argv parsing / process.exit.
|
|
685
|
+
if (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) {
|
|
686
|
+
const [, , command, ...rest] = process.argv;
|
|
519
687
|
|
|
520
|
-
if (!command || command === '-h' || command === '--help') usage(0);
|
|
688
|
+
if (!command || command === '-h' || command === '--help') usage(0);
|
|
521
689
|
|
|
522
|
-
if (command === 'import') cmdImport(rest);
|
|
523
|
-
else if (command === 'generate-skill') await cmdGenerateSkill(rest);
|
|
524
|
-
else {
|
|
525
|
-
|
|
526
|
-
|
|
690
|
+
if (command === 'import') cmdImport(rest);
|
|
691
|
+
else if (command === 'generate-skill') await cmdGenerateSkill(rest);
|
|
692
|
+
else {
|
|
693
|
+
console.error(`✗ Unknown command: ${command}`);
|
|
694
|
+
usage(1);
|
|
695
|
+
}
|
|
527
696
|
}
|
|
697
|
+
|
|
698
|
+
export { applyPrefix, applyClassAttrPrefix, applyPrefixCss, applyPackageName };
|
package/cdn/chunks/decorate.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{n as e,r as t}from"./lit.js";var n={attribute:!0,type:String,converter:t,reflect:!1,hasChanged:e},r=(e=n,t,r)=>{let{kind:i,metadata:a}=r,o=globalThis.litPropertyMetadata.get(a);if(o===void 0&&globalThis.litPropertyMetadata.set(a,o=new Map),i===`setter`&&((e=Object.create(e)).wrapped=!0),o.set(r.name,e),i===`accessor`){let{name:n}=r;return{set(r){let i=t.get.call(this);t.set.call(this,r),this.requestUpdate(n,i,e,!0,r)},init(t){return t!==void 0&&this.C(n,void 0,e,t),t}}}if(i===`setter`){let{name:n}=r;return function(r){let i=this[n];t.call(this,r),this.requestUpdate(n,i,e,!0,r)}}throw Error(`Unsupported decorator location: `+i)};function i(e){return(t,n)=>typeof n==`object`?r(e,t,n):((e,t,n)=>{let r=t.hasOwnProperty(n);return t.constructor.createProperty(n,e),r?Object.getOwnPropertyDescriptor(t,n):void 0})(e,t,n)}function a(e){return i({...e,state:!0,attribute:!1})}var o=(e,t,n)=>(n.configurable=!0,n.enumerable=!0,Reflect.decorate&&typeof t!=`object`&&Object.defineProperty(e,t,n),n);function s(e,t){return(n,r,i)=>{let a=t=>t.renderRoot?.querySelector(e)??null;if(t){let{get:e,set:t}=typeof r==`object`?n:i??(()=>{let e=Symbol();return{get(){return this[e]},set(t){this[e]=t}}})();return o(n,r,{get(){let n=e.call(this);return n===void 0&&(n=a(this),(n!==null||this.hasUpdated)&&t.call(this,n)),n}})}return o(n,r,{get(){return a(this)}})}}function c(e,t,n,r){var i=arguments.length,a=i<3?t:r===null?r=Object.getOwnPropertyDescriptor(t,n):r,o;if(typeof Reflect==`object`&&typeof Reflect.decorate==`function`)a=Reflect.decorate(e,t,n,r);else for(var s=e.length-1;s>=0;s--)(o=e[s])&&(a=(i<3?o(a):i>3?o(t,n,a):o(t,n))||a);return i>3&&a&&Object.defineProperty(t,n,a),a}export{i,s as n,a as r,c as t};
|
|
2
2
|
//# sourceMappingURL=decorate.js.map
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
var e=Math.min,t=Math.max,n=Math.round,r=Math.floor,i=e=>({x:e,y:e}),a={left:`right`,right:`left`,bottom:`top`,top:`bottom`};function o(n,r,i){return t(n,e(r,i))}function s(e,t){return typeof e==`function`?e(t):e}function c(e){return e.split(`-`)[0]}function l(e){return e.split(`-`)[1]}function u(e){return e===`x`?`y`:`x`}function d(e){return e===`y`?`height`:`width`}function f(e){let t=e[0];return t===`t`||t===`b`?`y`:`x`}function p(e){return u(f(e))}function m(e,t,n){n===void 0&&(n=!1);let r=l(e),i=p(e),a=d(i),o=i===`x`?r===(n?`end`:`start`)?`right`:`left`:r===`start`?`bottom`:`top`;return t.reference[a]>t.floating[a]&&(o=C(o)),[o,C(o)]}function h(e){let t=C(e);return[g(e),t,g(t)]}function g(e){return e.includes(`start`)?e.replace(`start`,`end`):e.replace(`end`,`start`)}var _=[`left`,`right`],v=[`right`,`left`],y=[`top`,`bottom`],b=[`bottom`,`top`];function x(e,t,n){switch(e){case`top`:case`bottom`:return n?t?v:_:t?_:v;case`left`:case`right`:return t?y:b;default:return[]}}function S(e,t,n,r){let i=l(e),a=x(c(e),n===`start`,r);return i&&(a=a.map(e=>e+`-`+i),t&&(a=a.concat(a.map(g)))),a}function C(e){let t=c(e);return a[t]+e.slice(t.length)}function w(e){return{top:0,right:0,bottom:0,left:0,...e}}function ee(e){return typeof e==`number`?{top:e,right:e,bottom:e,left:e}:w(e)}function T(e){let{x:t,y:n,width:r,height:i}=e;return{width:r,height:i,top:n,left:t,right:t+r,bottom:n+i,x:t,y:n}}function E(e,t,n){let{reference:r,floating:i}=e,a=f(t),o=p(t),s=d(o),u=c(t),m=a===`y`,h=r.x+r.width/2-i.width/2,g=r.y+r.height/2-i.height/2,_=r[s]/2-i[s]/2,v;switch(u){case`top`:v={x:h,y:r.y-i.height};break;case`bottom`:v={x:h,y:r.y+r.height};break;case`right`:v={x:r.x+r.width,y:g};break;case`left`:v={x:r.x-i.width,y:g};break;default:v={x:r.x,y:r.y}}switch(l(t)){case`start`:v[o]-=_*(n&&m?-1:1);break;case`end`:v[o]+=_*(n&&m?-1:1);break}return v}async function D(e,t){t===void 0&&(t={});let{x:n,y:r,platform:i,rects:a,elements:o,strategy:c}=e,{boundary:l=`clippingAncestors`,rootBoundary:u=`viewport`,elementContext:d=`floating`,altBoundary:f=!1,padding:p=0}=s(t,e),m=ee(p),h=o[f?d===`floating`?`reference`:`floating`:d],g=T(await i.getClippingRect({element:await(i.isElement==null?void 0:i.isElement(h))??!0?h:h.contextElement||await(i.getDocumentElement==null?void 0:i.getDocumentElement(o.floating)),boundary:l,rootBoundary:u,strategy:c})),_=d===`floating`?{x:n,y:r,width:a.floating.width,height:a.floating.height}:a.reference,v=await(i.getOffsetParent==null?void 0:i.getOffsetParent(o.floating)),y=await(i.isElement==null?void 0:i.isElement(v))&&await(i.getScale==null?void 0:i.getScale(v))||{x:1,y:1},b=T(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:o,rect:_,offsetParent:v,strategy:c}):_);return{top:(g.top-b.top+m.top)/y.y,bottom:(b.bottom-g.bottom+m.bottom)/y.y,left:(g.left-b.left+m.left)/y.x,right:(b.right-g.right+m.right)/y.x}}var O=50,k=async(e,t,n)=>{let{placement:r=`bottom`,strategy:i=`absolute`,middleware:a=[],platform:o}=n,s=o.detectOverflow?o:{...o,detectOverflow:D},c=await(o.isRTL==null?void 0:o.isRTL(t)),l=await o.getElementRects({reference:e,floating:t,strategy:i}),{x:u,y:d}=E(l,r,c),f=r,p=0,m={};for(let n=0;n<a.length;n++){let h=a[n];if(!h)continue;let{name:g,fn:_}=h,{x:v,y,data:b,reset:x}=await _({x:u,y:d,initialPlacement:r,placement:f,strategy:i,middlewareData:m,rects:l,platform:s,elements:{reference:e,floating:t}});u=v??u,d=y??d,m[g]={...m[g],...b},x&&p<O&&(p++,typeof x==`object`&&(x.placement&&(f=x.placement),x.rects&&(l=x.rects===!0?await o.getElementRects({reference:e,floating:t,strategy:i}):x.rects),{x:u,y:d}=E(l,f,c)),n=-1)}return{x:u,y:d,placement:f,strategy:i,middlewareData:m}},A=t=>({name:`arrow`,options:t,async fn(n){let{x:r,y:i,placement:a,rects:c,platform:u,elements:f,middlewareData:m}=n,{element:h,padding:g=0}=s(t,n)||{};if(h==null)return{};let _=ee(g),v={x:r,y:i},y=p(a),b=d(y),x=await u.getDimensions(h),S=y===`y`,C=S?`top`:`left`,w=S?`bottom`:`right`,T=S?`clientHeight`:`clientWidth`,E=c.reference[b]+c.reference[y]-v[y]-c.floating[b],D=v[y]-c.reference[y],O=await(u.getOffsetParent==null?void 0:u.getOffsetParent(h)),k=O?O[T]:0;(!k||!await(u.isElement==null?void 0:u.isElement(O)))&&(k=f.floating[T]||c.floating[b]);let A=E/2-D/2,j=k/2-x[b]/2-1,M=e(_[C],j),N=e(_[w],j),P=M,te=k-x[b]-N,F=k/2-x[b]/2+A,I=o(P,F,te),L=!m.arrow&&l(a)!=null&&F!==I&&c.reference[b]/2-(F<P?M:N)-x[b]/2<0,R=L?F<P?F-P:F-te:0;return{[y]:v[y]+R,data:{[y]:I,centerOffset:F-I-R,...L&&{alignmentOffset:R}},reset:L}}}),j=function(e){return e===void 0&&(e={}),{name:`flip`,options:e,async fn(t){var n;let{placement:r,middlewareData:i,rects:a,initialPlacement:o,platform:l,elements:u}=t,{mainAxis:d=!0,crossAxis:p=!0,fallbackPlacements:g,fallbackStrategy:_=`bestFit`,fallbackAxisSideDirection:v=`none`,flipAlignment:y=!0,...b}=s(e,t);if((n=i.arrow)!=null&&n.alignmentOffset)return{};let x=c(r),w=f(o),ee=c(o)===o,T=await(l.isRTL==null?void 0:l.isRTL(u.floating)),E=g||(ee||!y?[C(o)]:h(o)),D=v!==`none`;!g&&D&&E.push(...S(o,y,v,T));let O=[o,...E],k=await l.detectOverflow(t,b),A=[],j=i.flip?.overflows||[];if(d&&A.push(k[x]),p){let e=m(r,a,T);A.push(k[e[0]],k[e[1]])}if(j=[...j,{placement:r,overflows:A}],!A.every(e=>e<=0)){let e=(i.flip?.index||0)+1,t=O[e];if(t&&(!(p===`alignment`&&w!==f(t))||j.every(e=>f(e.placement)===w?e.overflows[0]>0:!0)))return{data:{index:e,overflows:j},reset:{placement:t}};let n=j.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0]?.placement;if(!n)switch(_){case`bestFit`:{let e=j.filter(e=>{if(D){let t=f(e.placement);return t===w||t===`y`}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0]?.[0];e&&(n=e);break}case`initialPlacement`:n=o;break}if(r!==n)return{reset:{placement:n}}}return{}}}},M=new Set([`left`,`top`]);async function N(e,t){let{placement:n,platform:r,elements:i}=e,a=await(r.isRTL==null?void 0:r.isRTL(i.floating)),o=c(n),u=l(n),d=f(n)===`y`,p=M.has(o)?-1:1,m=a&&d?-1:1,h=s(t,e),{mainAxis:g,crossAxis:_,alignmentAxis:v}=typeof h==`number`?{mainAxis:h,crossAxis:0,alignmentAxis:null}:{mainAxis:h.mainAxis||0,crossAxis:h.crossAxis||0,alignmentAxis:h.alignmentAxis};return u&&typeof v==`number`&&(_=u===`end`?v*-1:v),d?{x:_*m,y:g*p}:{x:g*p,y:_*m}}var P=function(e){return e===void 0&&(e=0),{name:`offset`,options:e,async fn(t){var n;let{x:r,y:i,placement:a,middlewareData:o}=t,s=await N(t,e);return a===o.offset?.placement&&(n=o.arrow)!=null&&n.alignmentOffset?{}:{x:r+s.x,y:i+s.y,data:{...s,placement:a}}}}},te=function(e){return e===void 0&&(e={}),{name:`shift`,options:e,async fn(t){let{x:n,y:r,placement:i,platform:a}=t,{mainAxis:l=!0,crossAxis:d=!1,limiter:p={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...m}=s(e,t),h={x:n,y:r},g=await a.detectOverflow(t,m),_=f(c(i)),v=u(_),y=h[v],b=h[_];if(l){let e=v===`y`?`top`:`left`,t=v===`y`?`bottom`:`right`,n=y+g[e],r=y-g[t];y=o(n,y,r)}if(d){let e=_===`y`?`top`:`left`,t=_===`y`?`bottom`:`right`,n=b+g[e],r=b-g[t];b=o(n,b,r)}let x=p.fn({...t,[v]:y,[_]:b});return{...x,data:{x:x.x-n,y:x.y-r,enabled:{[v]:l,[_]:d}}}}}};function F(){return typeof window<`u`}function I(e){return ne(e)?(e.nodeName||``).toLowerCase():`#document`}function L(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function R(e){return((ne(e)?e.ownerDocument:e.document)||window.document)?.documentElement}function ne(e){return F()?e instanceof Node||e instanceof L(e).Node:!1}function z(e){return F()?e instanceof Element||e instanceof L(e).Element:!1}function B(e){return F()?e instanceof HTMLElement||e instanceof L(e).HTMLElement:!1}function re(e){return!F()||typeof ShadowRoot>`u`?!1:e instanceof ShadowRoot||e instanceof L(e).ShadowRoot}function V(e){let{overflow:t,overflowX:n,overflowY:r,display:i}=q(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&i!==`inline`&&i!==`contents`}function ie(e){return/^(table|td|th)$/.test(I(e))}function H(e){try{if(e.matches(`:popover-open`))return!0}catch{}try{return e.matches(`:modal`)}catch{return!1}}var ae=/transform|translate|scale|rotate|perspective|filter/,oe=/paint|layout|strict|content/,U=e=>!!e&&e!==`none`,se;function W(e){let t=z(e)?q(e):e;return U(t.transform)||U(t.translate)||U(t.scale)||U(t.rotate)||U(t.perspective)||!G()&&(U(t.backdropFilter)||U(t.filter))||ae.test(t.willChange||``)||oe.test(t.contain||``)}function ce(e){let t=Y(e);for(;B(t)&&!K(t);){if(W(t))return t;if(H(t))return null;t=Y(t)}return null}function G(){return se??=typeof CSS<`u`&&CSS.supports&&CSS.supports(`-webkit-backdrop-filter`,`none`),se}function K(e){return/^(html|body|#document)$/.test(I(e))}function q(e){return L(e).getComputedStyle(e)}function J(e){return z(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function Y(e){if(I(e)===`html`)return e;let t=e.assignedSlot||e.parentNode||re(e)&&e.host||R(e);return re(t)?t.host:t}function le(e){let t=Y(e);return K(t)?e.ownerDocument?e.ownerDocument.body:e.body:B(t)&&V(t)?t:le(t)}function X(e,t,n){t===void 0&&(t=[]),n===void 0&&(n=!0);let r=le(e),i=r===e.ownerDocument?.body,a=L(r);if(i){let e=ue(a);return t.concat(a,a.visualViewport||[],V(r)?r:[],e&&n?X(e):[])}else return t.concat(r,X(r,[],n))}function ue(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function de(e){let t=q(e),r=parseFloat(t.width)||0,i=parseFloat(t.height)||0,a=B(e),o=a?e.offsetWidth:r,s=a?e.offsetHeight:i,c=n(r)!==o||n(i)!==s;return c&&(r=o,i=s),{width:r,height:i,$:c}}function fe(e){return z(e)?e:e.contextElement}function Z(e){let t=fe(e);if(!B(t))return i(1);let r=t.getBoundingClientRect(),{width:a,height:o,$:s}=de(t),c=(s?n(r.width):r.width)/a,l=(s?n(r.height):r.height)/o;return(!c||!Number.isFinite(c))&&(c=1),(!l||!Number.isFinite(l))&&(l=1),{x:c,y:l}}var pe=i(0);function me(e){let t=L(e);return!G()||!t.visualViewport?pe:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function he(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==L(e)?!1:t}function Q(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);let a=e.getBoundingClientRect(),o=fe(e),s=i(1);t&&(r?z(r)&&(s=Z(r)):s=Z(e));let c=he(o,n,r)?me(o):i(0),l=(a.left+c.x)/s.x,u=(a.top+c.y)/s.y,d=a.width/s.x,f=a.height/s.y;if(o){let e=L(o),t=r&&z(r)?L(r):r,n=e,i=ue(n);for(;i&&r&&t!==n;){let e=Z(i),t=i.getBoundingClientRect(),r=q(i),a=t.left+(i.clientLeft+parseFloat(r.paddingLeft))*e.x,o=t.top+(i.clientTop+parseFloat(r.paddingTop))*e.y;l*=e.x,u*=e.y,d*=e.x,f*=e.y,l+=a,u+=o,n=L(i),i=ue(n)}}return T({width:d,height:f,x:l,y:u})}function $(e,t){let n=J(e).scrollLeft;return t?t.left+n:Q(R(e)).left+n}function ge(e,t){let n=e.getBoundingClientRect();return{x:n.left+t.scrollLeft-$(e,n),y:n.top+t.scrollTop}}function _e(e){let{elements:t,rect:n,offsetParent:r,strategy:a}=e,o=a===`fixed`,s=R(r),c=t?H(t.floating):!1;if(r===s||c&&o)return n;let l={scrollLeft:0,scrollTop:0},u=i(1),d=i(0),f=B(r);if((f||!f&&!o)&&((I(r)!==`body`||V(s))&&(l=J(r)),f)){let e=Q(r);u=Z(r),d.x=e.x+r.clientLeft,d.y=e.y+r.clientTop}let p=s&&!f&&!o?ge(s,l):i(0);return{width:n.width*u.x,height:n.height*u.y,x:n.x*u.x-l.scrollLeft*u.x+d.x+p.x,y:n.y*u.y-l.scrollTop*u.y+d.y+p.y}}function ve(e){return Array.from(e.getClientRects())}function ye(e){let n=R(e),r=J(e),i=e.ownerDocument.body,a=t(n.scrollWidth,n.clientWidth,i.scrollWidth,i.clientWidth),o=t(n.scrollHeight,n.clientHeight,i.scrollHeight,i.clientHeight),s=-r.scrollLeft+$(e),c=-r.scrollTop;return q(i).direction===`rtl`&&(s+=t(n.clientWidth,i.clientWidth)-a),{width:a,height:o,x:s,y:c}}var be=25;function xe(e,t){let n=L(e),r=R(e),i=n.visualViewport,a=r.clientWidth,o=r.clientHeight,s=0,c=0;if(i){a=i.width,o=i.height;let e=G();(!e||e&&t===`fixed`)&&(s=i.offsetLeft,c=i.offsetTop)}let l=$(r);if(l<=0){let e=r.ownerDocument,t=e.body,n=getComputedStyle(t),i=e.compatMode===`CSS1Compat`&&parseFloat(n.marginLeft)+parseFloat(n.marginRight)||0,o=Math.abs(r.clientWidth-t.clientWidth-i);o<=be&&(a-=o)}else l<=be&&(a+=l);return{width:a,height:o,x:s,y:c}}function Se(e,t){let n=Q(e,!0,t===`fixed`),r=n.top+e.clientTop,a=n.left+e.clientLeft,o=B(e)?Z(e):i(1);return{width:e.clientWidth*o.x,height:e.clientHeight*o.y,x:a*o.x,y:r*o.y}}function Ce(e,t,n){let r;if(t===`viewport`)r=xe(e,n);else if(t===`document`)r=ye(R(e));else if(z(t))r=Se(t,n);else{let n=me(e);r={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return T(r)}function we(e,t){let n=Y(e);return n===t||!z(n)||K(n)?!1:q(n).position===`fixed`||we(n,t)}function Te(e,t){let n=t.get(e);if(n)return n;let r=X(e,[],!1).filter(e=>z(e)&&I(e)!==`body`),i=null,a=q(e).position===`fixed`,o=a?Y(e):e;for(;z(o)&&!K(o);){let t=q(o),n=W(o);!n&&t.position===`fixed`&&(i=null),(a?!n&&!i:!n&&t.position===`static`&&i&&(i.position===`absolute`||i.position===`fixed`)||V(o)&&!n&&we(e,o))?r=r.filter(e=>e!==o):i=t,o=Y(o)}return t.set(e,r),r}function Ee(n){let{element:r,boundary:i,rootBoundary:a,strategy:o}=n,s=[...i===`clippingAncestors`?H(r)?[]:Te(r,this._c):[].concat(i),a],c=Ce(r,s[0],o),l=c.top,u=c.right,d=c.bottom,f=c.left;for(let n=1;n<s.length;n++){let i=Ce(r,s[n],o);l=t(i.top,l),u=e(i.right,u),d=e(i.bottom,d),f=t(i.left,f)}return{width:u-f,height:d-l,x:f,y:l}}function De(e){let{width:t,height:n}=de(e);return{width:t,height:n}}function Oe(e,t,n){let r=B(t),a=R(t),o=n===`fixed`,s=Q(e,!0,o,t),c={scrollLeft:0,scrollTop:0},l=i(0);function u(){l.x=$(a)}if(r||!r&&!o)if((I(t)!==`body`||V(a))&&(c=J(t)),r){let e=Q(t,!0,o,t);l.x=e.x+t.clientLeft,l.y=e.y+t.clientTop}else a&&u();o&&!r&&a&&u();let d=a&&!r&&!o?ge(a,c):i(0);return{x:s.left+c.scrollLeft-l.x-d.x,y:s.top+c.scrollTop-l.y-d.y,width:s.width,height:s.height}}function ke(e){return q(e).position===`static`}function Ae(e,t){if(!B(e)||q(e).position===`fixed`)return null;if(t)return t(e);let n=e.offsetParent;return R(e)===n&&(n=n.ownerDocument.body),n}function je(e,t){let n=L(e);if(H(e))return n;if(!B(e)){let t=Y(e);for(;t&&!K(t);){if(z(t)&&!ke(t))return t;t=Y(t)}return n}let r=Ae(e,t);for(;r&&ie(r)&&ke(r);)r=Ae(r,t);return r&&K(r)&&ke(r)&&!W(r)?n:r||ce(e)||n}var Me=async function(e){let t=this.getOffsetParent||je,n=this.getDimensions,r=await n(e.floating);return{reference:Oe(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}};function Ne(e){return q(e).direction===`rtl`}var Pe={convertOffsetParentRelativeRectToViewportRelativeRect:_e,getDocumentElement:R,getClippingRect:Ee,getOffsetParent:je,getElementRects:Me,getClientRects:ve,getDimensions:De,getScale:Z,isElement:z,isRTL:Ne};function Fe(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function Ie(n,i){let a=null,o,s=R(n);function c(){var e;clearTimeout(o),(e=a)==null||e.disconnect(),a=null}function l(u,d){u===void 0&&(u=!1),d===void 0&&(d=1),c();let f=n.getBoundingClientRect(),{left:p,top:m,width:h,height:g}=f;if(u||i(),!h||!g)return;let _=r(m),v=r(s.clientWidth-(p+h)),y=r(s.clientHeight-(m+g)),b=r(p),x={rootMargin:-_+`px `+-v+`px `+-y+`px `+-b+`px`,threshold:t(0,e(1,d))||1},S=!0;function C(e){let t=e[0].intersectionRatio;if(t!==d){if(!S)return l();t?l(!1,t):o=setTimeout(()=>{l(!1,1e-7)},1e3)}t===1&&!Fe(f,n.getBoundingClientRect())&&l(),S=!1}try{a=new IntersectionObserver(C,{...x,root:s.ownerDocument})}catch{a=new IntersectionObserver(C,x)}a.observe(n)}return l(!0),c}function Le(e,t,n,r){r===void 0&&(r={});let{ancestorScroll:i=!0,ancestorResize:a=!0,elementResize:o=typeof ResizeObserver==`function`,layoutShift:s=typeof IntersectionObserver==`function`,animationFrame:c=!1}=r,l=fe(e),u=i||a?[...l?X(l):[],...t?X(t):[]]:[];u.forEach(e=>{i&&e.addEventListener(`scroll`,n,{passive:!0}),a&&e.addEventListener(`resize`,n)});let d=l&&s?Ie(l,n):null,f=-1,p=null;o&&(p=new ResizeObserver(e=>{let[r]=e;r&&r.target===l&&p&&t&&(p.unobserve(t),cancelAnimationFrame(f),f=requestAnimationFrame(()=>{var e;(e=p)==null||e.observe(t)})),n()}),l&&!c&&p.observe(l),t&&p.observe(t));let m,h=c?Q(e):null;c&&g();function g(){let t=Q(e);h&&!Fe(h,t)&&n(),h=t,m=requestAnimationFrame(g)}return n(),()=>{var e;u.forEach(e=>{i&&e.removeEventListener(`scroll`,n),a&&e.removeEventListener(`resize`,n)}),d?.(),(e=p)==null||e.disconnect(),p=null,c&&cancelAnimationFrame(m)}}var Re=P,ze=te,Be=j,Ve=A,He=(e,t,n)=>{let r=new Map,i={platform:Pe,...n},a={...i.platform,_c:r};return k(e,t,{...i,platform:a})};export{Re as a,Be as i,Le as n,ze as o,He as r,Ve as t};
|
|
1
|
+
var e=Math.min,t=Math.max,n=Math.round,r=Math.floor,i=e=>({x:e,y:e}),a={left:`right`,right:`left`,bottom:`top`,top:`bottom`};function o(n,r,i){return t(n,e(r,i))}function s(e,t){return typeof e==`function`?e(t):e}function c(e){return e.split(`-`)[0]}function l(e){return e.split(`-`)[1]}function u(e){return e===`x`?`y`:`x`}function d(e){return e===`y`?`height`:`width`}function f(e){let t=e[0];return t===`t`||t===`b`?`y`:`x`}function p(e){return u(f(e))}function m(e,t,n){n===void 0&&(n=!1);let r=l(e),i=p(e),a=d(i),o=i===`x`?r===(n?`end`:`start`)?`right`:`left`:r===`start`?`bottom`:`top`;return t.reference[a]>t.floating[a]&&(o=C(o)),[o,C(o)]}function h(e){let t=C(e);return[g(e),t,g(t)]}function g(e){return e.includes(`start`)?e.replace(`start`,`end`):e.replace(`end`,`start`)}var _=[`left`,`right`],v=[`right`,`left`],y=[`top`,`bottom`],b=[`bottom`,`top`];function x(e,t,n){switch(e){case`top`:case`bottom`:return n?t?v:_:t?_:v;case`left`:case`right`:return t?y:b;default:return[]}}function S(e,t,n,r){let i=l(e),a=x(c(e),n===`start`,r);return i&&(a=a.map(e=>e+`-`+i),t&&(a=a.concat(a.map(g)))),a}function C(e){let t=c(e);return a[t]+e.slice(t.length)}function w(e){return{top:0,right:0,bottom:0,left:0,...e}}function T(e){return typeof e==`number`?{top:e,right:e,bottom:e,left:e}:w(e)}function E(e){let{x:t,y:n,width:r,height:i}=e;return{width:r,height:i,top:n,left:t,right:t+r,bottom:n+i,x:t,y:n}}function D(e,t,n){let{reference:r,floating:i}=e,a=f(t),o=p(t),s=d(o),u=c(t),m=a===`y`,h=r.x+r.width/2-i.width/2,g=r.y+r.height/2-i.height/2,_=r[s]/2-i[s]/2,v;switch(u){case`top`:v={x:h,y:r.y-i.height};break;case`bottom`:v={x:h,y:r.y+r.height};break;case`right`:v={x:r.x+r.width,y:g};break;case`left`:v={x:r.x-i.width,y:g};break;default:v={x:r.x,y:r.y}}switch(l(t)){case`start`:v[o]-=_*(n&&m?-1:1);break;case`end`:v[o]+=_*(n&&m?-1:1);break}return v}async function O(e,t){t===void 0&&(t={});let{x:n,y:r,platform:i,rects:a,elements:o,strategy:c}=e,{boundary:l=`clippingAncestors`,rootBoundary:u=`viewport`,elementContext:d=`floating`,altBoundary:f=!1,padding:p=0}=s(t,e),m=T(p),h=o[f?d===`floating`?`reference`:`floating`:d],g=E(await i.getClippingRect({element:await(i.isElement==null?void 0:i.isElement(h))??!0?h:h.contextElement||await(i.getDocumentElement==null?void 0:i.getDocumentElement(o.floating)),boundary:l,rootBoundary:u,strategy:c})),_=d===`floating`?{x:n,y:r,width:a.floating.width,height:a.floating.height}:a.reference,v=await(i.getOffsetParent==null?void 0:i.getOffsetParent(o.floating)),y=await(i.isElement==null?void 0:i.isElement(v))&&await(i.getScale==null?void 0:i.getScale(v))||{x:1,y:1},b=E(i.convertOffsetParentRelativeRectToViewportRelativeRect?await i.convertOffsetParentRelativeRectToViewportRelativeRect({elements:o,rect:_,offsetParent:v,strategy:c}):_);return{top:(g.top-b.top+m.top)/y.y,bottom:(b.bottom-g.bottom+m.bottom)/y.y,left:(g.left-b.left+m.left)/y.x,right:(b.right-g.right+m.right)/y.x}}var k=50,A=async(e,t,n)=>{let{placement:r=`bottom`,strategy:i=`absolute`,middleware:a=[],platform:o}=n,s=o.detectOverflow?o:{...o,detectOverflow:O},c=await(o.isRTL==null?void 0:o.isRTL(t)),l=await o.getElementRects({reference:e,floating:t,strategy:i}),{x:u,y:d}=D(l,r,c),f=r,p=0,m={};for(let n=0;n<a.length;n++){let h=a[n];if(!h)continue;let{name:g,fn:_}=h,{x:v,y,data:b,reset:x}=await _({x:u,y:d,initialPlacement:r,placement:f,strategy:i,middlewareData:m,rects:l,platform:s,elements:{reference:e,floating:t}});u=v??u,d=y??d,m[g]={...m[g],...b},x&&p<k&&(p++,typeof x==`object`&&(x.placement&&(f=x.placement),x.rects&&(l=x.rects===!0?await o.getElementRects({reference:e,floating:t,strategy:i}):x.rects),{x:u,y:d}=D(l,f,c)),n=-1)}return{x:u,y:d,placement:f,strategy:i,middlewareData:m}},j=t=>({name:`arrow`,options:t,async fn(n){let{x:r,y:i,placement:a,rects:c,platform:u,elements:f,middlewareData:m}=n,{element:h,padding:g=0}=s(t,n)||{};if(h==null)return{};let _=T(g),v={x:r,y:i},y=p(a),b=d(y),x=await u.getDimensions(h),S=y===`y`,C=S?`top`:`left`,w=S?`bottom`:`right`,E=S?`clientHeight`:`clientWidth`,D=c.reference[b]+c.reference[y]-v[y]-c.floating[b],O=v[y]-c.reference[y],k=await(u.getOffsetParent==null?void 0:u.getOffsetParent(h)),A=k?k[E]:0;(!A||!await(u.isElement==null?void 0:u.isElement(k)))&&(A=f.floating[E]||c.floating[b]);let j=D/2-O/2,M=A/2-x[b]/2-1,ee=e(_[C],M),N=e(_[w],M),P=ee,te=A-x[b]-N,F=A/2-x[b]/2+j,I=o(P,F,te),L=!m.arrow&&l(a)!=null&&F!==I&&c.reference[b]/2-(F<P?ee:N)-x[b]/2<0,R=L?F<P?F-P:F-te:0;return{[y]:v[y]+R,data:{[y]:I,centerOffset:F-I-R,...L&&{alignmentOffset:R}},reset:L}}}),M=function(e){return e===void 0&&(e={}),{name:`flip`,options:e,async fn(t){var n;let{placement:r,middlewareData:i,rects:a,initialPlacement:o,platform:l,elements:u}=t,{mainAxis:d=!0,crossAxis:p=!0,fallbackPlacements:g,fallbackStrategy:_=`bestFit`,fallbackAxisSideDirection:v=`none`,flipAlignment:y=!0,...b}=s(e,t);if((n=i.arrow)!=null&&n.alignmentOffset)return{};let x=c(r),w=f(o),T=c(o)===o,E=await(l.isRTL==null?void 0:l.isRTL(u.floating)),D=g||(T||!y?[C(o)]:h(o)),O=v!==`none`;!g&&O&&D.push(...S(o,y,v,E));let k=[o,...D],A=await l.detectOverflow(t,b),j=[],M=i.flip?.overflows||[];if(d&&j.push(A[x]),p){let e=m(r,a,E);j.push(A[e[0]],A[e[1]])}if(M=[...M,{placement:r,overflows:j}],!j.every(e=>e<=0)){let e=(i.flip?.index||0)+1,t=k[e];if(t&&(!(p===`alignment`&&w!==f(t))||M.every(e=>f(e.placement)===w?e.overflows[0]>0:!0)))return{data:{index:e,overflows:M},reset:{placement:t}};let n=M.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0]?.placement;if(!n)switch(_){case`bestFit`:{let e=M.filter(e=>{if(O){let t=f(e.placement);return t===w||t===`y`}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0]?.[0];e&&(n=e);break}case`initialPlacement`:n=o;break}if(r!==n)return{reset:{placement:n}}}return{}}}},ee=new Set([`left`,`top`]);async function N(e,t){let{placement:n,platform:r,elements:i}=e,a=await(r.isRTL==null?void 0:r.isRTL(i.floating)),o=c(n),u=l(n),d=f(n)===`y`,p=ee.has(o)?-1:1,m=a&&d?-1:1,h=s(t,e),{mainAxis:g,crossAxis:_,alignmentAxis:v}=typeof h==`number`?{mainAxis:h,crossAxis:0,alignmentAxis:null}:{mainAxis:h.mainAxis||0,crossAxis:h.crossAxis||0,alignmentAxis:h.alignmentAxis};return u&&typeof v==`number`&&(_=u===`end`?v*-1:v),d?{x:_*m,y:g*p}:{x:g*p,y:_*m}}var P=function(e){return e===void 0&&(e=0),{name:`offset`,options:e,async fn(t){var n;let{x:r,y:i,placement:a,middlewareData:o}=t,s=await N(t,e);return a===o.offset?.placement&&(n=o.arrow)!=null&&n.alignmentOffset?{}:{x:r+s.x,y:i+s.y,data:{...s,placement:a}}}}},te=function(e){return e===void 0&&(e={}),{name:`shift`,options:e,async fn(t){let{x:n,y:r,placement:i,platform:a}=t,{mainAxis:l=!0,crossAxis:d=!1,limiter:p={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...m}=s(e,t),h={x:n,y:r},g=await a.detectOverflow(t,m),_=f(c(i)),v=u(_),y=h[v],b=h[_];if(l){let e=v===`y`?`top`:`left`,t=v===`y`?`bottom`:`right`,n=y+g[e],r=y-g[t];y=o(n,y,r)}if(d){let e=_===`y`?`top`:`left`,t=_===`y`?`bottom`:`right`,n=b+g[e],r=b-g[t];b=o(n,b,r)}let x=p.fn({...t,[v]:y,[_]:b});return{...x,data:{x:x.x-n,y:x.y-r,enabled:{[v]:l,[_]:d}}}}}},F=function(n){return n===void 0&&(n={}),{name:`size`,options:n,async fn(r){var i,a;let{placement:o,rects:u,platform:d,elements:p}=r,{apply:m=()=>{},...h}=s(n,r),g=await d.detectOverflow(r,h),_=c(o),v=l(o),y=f(o)===`y`,{width:b,height:x}=u.floating,S,C;_===`top`||_===`bottom`?(S=_,C=v===(await(d.isRTL==null?void 0:d.isRTL(p.floating))?`start`:`end`)?`left`:`right`):(C=_,S=v===`end`?`top`:`bottom`);let w=x-g.top-g.bottom,T=b-g.left-g.right,E=e(x-g[S],w),D=e(b-g[C],T),O=!r.middlewareData.shift,k=E,A=D;if((i=r.middlewareData.shift)!=null&&i.enabled.x&&(A=T),(a=r.middlewareData.shift)!=null&&a.enabled.y&&(k=w),O&&!v){let e=t(g.left,0),n=t(g.right,0),r=t(g.top,0),i=t(g.bottom,0);y?A=b-2*(e!==0||n!==0?e+n:t(g.left,g.right)):k=x-2*(r!==0||i!==0?r+i:t(g.top,g.bottom))}await m({...r,availableWidth:A,availableHeight:k});let j=await d.getDimensions(p.floating);return b!==j.width||x!==j.height?{reset:{rects:!0}}:{}}}};function I(){return typeof window<`u`}function L(e){return ne(e)?(e.nodeName||``).toLowerCase():`#document`}function R(e){var t;return(e==null||(t=e.ownerDocument)==null?void 0:t.defaultView)||window}function z(e){return((ne(e)?e.ownerDocument:e.document)||window.document)?.documentElement}function ne(e){return I()?e instanceof Node||e instanceof R(e).Node:!1}function B(e){return I()?e instanceof Element||e instanceof R(e).Element:!1}function V(e){return I()?e instanceof HTMLElement||e instanceof R(e).HTMLElement:!1}function re(e){return!I()||typeof ShadowRoot>`u`?!1:e instanceof ShadowRoot||e instanceof R(e).ShadowRoot}function H(e){let{overflow:t,overflowX:n,overflowY:r,display:i}=q(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&i!==`inline`&&i!==`contents`}function ie(e){return/^(table|td|th)$/.test(L(e))}function U(e){try{if(e.matches(`:popover-open`))return!0}catch{}try{return e.matches(`:modal`)}catch{return!1}}var ae=/transform|translate|scale|rotate|perspective|filter/,oe=/paint|layout|strict|content/,W=e=>!!e&&e!==`none`,se;function ce(e){let t=B(e)?q(e):e;return W(t.transform)||W(t.translate)||W(t.scale)||W(t.rotate)||W(t.perspective)||!G()&&(W(t.backdropFilter)||W(t.filter))||ae.test(t.willChange||``)||oe.test(t.contain||``)}function le(e){let t=Y(e);for(;V(t)&&!K(t);){if(ce(t))return t;if(U(t))return null;t=Y(t)}return null}function G(){return se??=typeof CSS<`u`&&CSS.supports&&CSS.supports(`-webkit-backdrop-filter`,`none`),se}function K(e){return/^(html|body|#document)$/.test(L(e))}function q(e){return R(e).getComputedStyle(e)}function J(e){return B(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function Y(e){if(L(e)===`html`)return e;let t=e.assignedSlot||e.parentNode||re(e)&&e.host||z(e);return re(t)?t.host:t}function ue(e){let t=Y(e);return K(t)?e.ownerDocument?e.ownerDocument.body:e.body:V(t)&&H(t)?t:ue(t)}function X(e,t,n){t===void 0&&(t=[]),n===void 0&&(n=!0);let r=ue(e),i=r===e.ownerDocument?.body,a=R(r);if(i){let e=de(a);return t.concat(a,a.visualViewport||[],H(r)?r:[],e&&n?X(e):[])}else return t.concat(r,X(r,[],n))}function de(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function fe(e){let t=q(e),r=parseFloat(t.width)||0,i=parseFloat(t.height)||0,a=V(e),o=a?e.offsetWidth:r,s=a?e.offsetHeight:i,c=n(r)!==o||n(i)!==s;return c&&(r=o,i=s),{width:r,height:i,$:c}}function pe(e){return B(e)?e:e.contextElement}function Z(e){let t=pe(e);if(!V(t))return i(1);let r=t.getBoundingClientRect(),{width:a,height:o,$:s}=fe(t),c=(s?n(r.width):r.width)/a,l=(s?n(r.height):r.height)/o;return(!c||!Number.isFinite(c))&&(c=1),(!l||!Number.isFinite(l))&&(l=1),{x:c,y:l}}var me=i(0);function he(e){let t=R(e);return!G()||!t.visualViewport?me:{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}}function ge(e,t,n){return t===void 0&&(t=!1),!n||t&&n!==R(e)?!1:t}function Q(e,t,n,r){t===void 0&&(t=!1),n===void 0&&(n=!1);let a=e.getBoundingClientRect(),o=pe(e),s=i(1);t&&(r?B(r)&&(s=Z(r)):s=Z(e));let c=ge(o,n,r)?he(o):i(0),l=(a.left+c.x)/s.x,u=(a.top+c.y)/s.y,d=a.width/s.x,f=a.height/s.y;if(o){let e=R(o),t=r&&B(r)?R(r):r,n=e,i=de(n);for(;i&&r&&t!==n;){let e=Z(i),t=i.getBoundingClientRect(),r=q(i),a=t.left+(i.clientLeft+parseFloat(r.paddingLeft))*e.x,o=t.top+(i.clientTop+parseFloat(r.paddingTop))*e.y;l*=e.x,u*=e.y,d*=e.x,f*=e.y,l+=a,u+=o,n=R(i),i=de(n)}}return E({width:d,height:f,x:l,y:u})}function $(e,t){let n=J(e).scrollLeft;return t?t.left+n:Q(z(e)).left+n}function _e(e,t){let n=e.getBoundingClientRect();return{x:n.left+t.scrollLeft-$(e,n),y:n.top+t.scrollTop}}function ve(e){let{elements:t,rect:n,offsetParent:r,strategy:a}=e,o=a===`fixed`,s=z(r),c=t?U(t.floating):!1;if(r===s||c&&o)return n;let l={scrollLeft:0,scrollTop:0},u=i(1),d=i(0),f=V(r);if((f||!f&&!o)&&((L(r)!==`body`||H(s))&&(l=J(r)),f)){let e=Q(r);u=Z(r),d.x=e.x+r.clientLeft,d.y=e.y+r.clientTop}let p=s&&!f&&!o?_e(s,l):i(0);return{width:n.width*u.x,height:n.height*u.y,x:n.x*u.x-l.scrollLeft*u.x+d.x+p.x,y:n.y*u.y-l.scrollTop*u.y+d.y+p.y}}function ye(e){return Array.from(e.getClientRects())}function be(e){let n=z(e),r=J(e),i=e.ownerDocument.body,a=t(n.scrollWidth,n.clientWidth,i.scrollWidth,i.clientWidth),o=t(n.scrollHeight,n.clientHeight,i.scrollHeight,i.clientHeight),s=-r.scrollLeft+$(e),c=-r.scrollTop;return q(i).direction===`rtl`&&(s+=t(n.clientWidth,i.clientWidth)-a),{width:a,height:o,x:s,y:c}}var xe=25;function Se(e,t){let n=R(e),r=z(e),i=n.visualViewport,a=r.clientWidth,o=r.clientHeight,s=0,c=0;if(i){a=i.width,o=i.height;let e=G();(!e||e&&t===`fixed`)&&(s=i.offsetLeft,c=i.offsetTop)}let l=$(r);if(l<=0){let e=r.ownerDocument,t=e.body,n=getComputedStyle(t),i=e.compatMode===`CSS1Compat`&&parseFloat(n.marginLeft)+parseFloat(n.marginRight)||0,o=Math.abs(r.clientWidth-t.clientWidth-i);o<=xe&&(a-=o)}else l<=xe&&(a+=l);return{width:a,height:o,x:s,y:c}}function Ce(e,t){let n=Q(e,!0,t===`fixed`),r=n.top+e.clientTop,a=n.left+e.clientLeft,o=V(e)?Z(e):i(1);return{width:e.clientWidth*o.x,height:e.clientHeight*o.y,x:a*o.x,y:r*o.y}}function we(e,t,n){let r;if(t===`viewport`)r=Se(e,n);else if(t===`document`)r=be(z(e));else if(B(t))r=Ce(t,n);else{let n=he(e);r={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return E(r)}function Te(e,t){let n=Y(e);return n===t||!B(n)||K(n)?!1:q(n).position===`fixed`||Te(n,t)}function Ee(e,t){let n=t.get(e);if(n)return n;let r=X(e,[],!1).filter(e=>B(e)&&L(e)!==`body`),i=null,a=q(e).position===`fixed`,o=a?Y(e):e;for(;B(o)&&!K(o);){let t=q(o),n=ce(o);!n&&t.position===`fixed`&&(i=null),(a?!n&&!i:!n&&t.position===`static`&&i&&(i.position===`absolute`||i.position===`fixed`)||H(o)&&!n&&Te(e,o))?r=r.filter(e=>e!==o):i=t,o=Y(o)}return t.set(e,r),r}function De(n){let{element:r,boundary:i,rootBoundary:a,strategy:o}=n,s=[...i===`clippingAncestors`?U(r)?[]:Ee(r,this._c):[].concat(i),a],c=we(r,s[0],o),l=c.top,u=c.right,d=c.bottom,f=c.left;for(let n=1;n<s.length;n++){let i=we(r,s[n],o);l=t(i.top,l),u=e(i.right,u),d=e(i.bottom,d),f=t(i.left,f)}return{width:u-f,height:d-l,x:f,y:l}}function Oe(e){let{width:t,height:n}=fe(e);return{width:t,height:n}}function ke(e,t,n){let r=V(t),a=z(t),o=n===`fixed`,s=Q(e,!0,o,t),c={scrollLeft:0,scrollTop:0},l=i(0);function u(){l.x=$(a)}if(r||!r&&!o)if((L(t)!==`body`||H(a))&&(c=J(t)),r){let e=Q(t,!0,o,t);l.x=e.x+t.clientLeft,l.y=e.y+t.clientTop}else a&&u();o&&!r&&a&&u();let d=a&&!r&&!o?_e(a,c):i(0);return{x:s.left+c.scrollLeft-l.x-d.x,y:s.top+c.scrollTop-l.y-d.y,width:s.width,height:s.height}}function Ae(e){return q(e).position===`static`}function je(e,t){if(!V(e)||q(e).position===`fixed`)return null;if(t)return t(e);let n=e.offsetParent;return z(e)===n&&(n=n.ownerDocument.body),n}function Me(e,t){let n=R(e);if(U(e))return n;if(!V(e)){let t=Y(e);for(;t&&!K(t);){if(B(t)&&!Ae(t))return t;t=Y(t)}return n}let r=je(e,t);for(;r&&ie(r)&&Ae(r);)r=je(r,t);return r&&K(r)&&Ae(r)&&!ce(r)?n:r||le(e)||n}var Ne=async function(e){let t=this.getOffsetParent||Me,n=this.getDimensions,r=await n(e.floating);return{reference:ke(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}};function Pe(e){return q(e).direction===`rtl`}var Fe={convertOffsetParentRelativeRectToViewportRelativeRect:ve,getDocumentElement:z,getClippingRect:De,getOffsetParent:Me,getElementRects:Ne,getClientRects:ye,getDimensions:Oe,getScale:Z,isElement:B,isRTL:Pe};function Ie(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}function Le(n,i){let a=null,o,s=z(n);function c(){var e;clearTimeout(o),(e=a)==null||e.disconnect(),a=null}function l(u,d){u===void 0&&(u=!1),d===void 0&&(d=1),c();let f=n.getBoundingClientRect(),{left:p,top:m,width:h,height:g}=f;if(u||i(),!h||!g)return;let _=r(m),v=r(s.clientWidth-(p+h)),y=r(s.clientHeight-(m+g)),b=r(p),x={rootMargin:-_+`px `+-v+`px `+-y+`px `+-b+`px`,threshold:t(0,e(1,d))||1},S=!0;function C(e){let t=e[0].intersectionRatio;if(t!==d){if(!S)return l();t?l(!1,t):o=setTimeout(()=>{l(!1,1e-7)},1e3)}t===1&&!Ie(f,n.getBoundingClientRect())&&l(),S=!1}try{a=new IntersectionObserver(C,{...x,root:s.ownerDocument})}catch{a=new IntersectionObserver(C,x)}a.observe(n)}return l(!0),c}function Re(e,t,n,r){r===void 0&&(r={});let{ancestorScroll:i=!0,ancestorResize:a=!0,elementResize:o=typeof ResizeObserver==`function`,layoutShift:s=typeof IntersectionObserver==`function`,animationFrame:c=!1}=r,l=pe(e),u=i||a?[...l?X(l):[],...t?X(t):[]]:[];u.forEach(e=>{i&&e.addEventListener(`scroll`,n,{passive:!0}),a&&e.addEventListener(`resize`,n)});let d=l&&s?Le(l,n):null,f=-1,p=null;o&&(p=new ResizeObserver(e=>{let[r]=e;r&&r.target===l&&p&&t&&(p.unobserve(t),cancelAnimationFrame(f),f=requestAnimationFrame(()=>{var e;(e=p)==null||e.observe(t)})),n()}),l&&!c&&p.observe(l),t&&p.observe(t));let m,h=c?Q(e):null;c&&g();function g(){let t=Q(e);h&&!Ie(h,t)&&n(),h=t,m=requestAnimationFrame(g)}return n(),()=>{var e;u.forEach(e=>{i&&e.removeEventListener(`scroll`,n),a&&e.removeEventListener(`resize`,n)}),d?.(),(e=p)==null||e.disconnect(),p=null,c&&cancelAnimationFrame(m)}}var ze=P,Be=te,Ve=M,He=F,Ue=j,We=(e,t,n)=>{let r=new Map,i={platform:Fe,...n},a={...i.platform,_c:r};return A(e,t,{...i,platform:a})};export{ze as a,Ve as i,Re as n,Be as o,We as r,He as s,Ue as t};
|
|
2
2
|
//# sourceMappingURL=floating-ui.dom.js.map
|