').appendTo('body'),
+ }),
+
+ // Events
+ events: {
+ 'click .trigger': ({ self, event }) => { /* ... */ },
+ 'global scroll window': ({ self }) => { /* ... */ },
+ },
+
+ // Mutations
+ mutations: {
+ 'add .item': ({ $added, self }) => { /* ... */ },
+ 'attributes [data-value]': ({ newValue, oldValue }) => { /* ... */ },
+ },
+
+ // Custom Invocation (for string-based APIs)
+ customInvocation: ({ methodName, methodArgs, self }) => {
+ // Handle non-standard method calls
+ return self.performAction(methodName, ...methodArgs);
+ },
+
+ // Lifecycle
+ onCreated: ({ el, settings }) => { /* ... */ },
+ onDestroyed: ({ el }) => { /* ... */ },
+});
+```
+
+---
+
+## Configuration Objects & Templating
+
+### Configuration Object Types
+
+Configuration objects provide customizable constants that can be overridden globally or per-instance:
+
+```javascript
+registerBehavior({
+ name: 'tooltip',
+
+ // Define configuration objects
+ selectors: {
+ trigger: '.tooltip-trigger',
+ close: '.close-button',
+ },
+ classNames: {
+ visible: 'visible',
+ animating: 'animating',
+ },
+ errors: {
+ noContent: 'Tooltip content not found',
+ },
+ templates: {
+ tooltip: '
',
+ },
+});
+```
+
+### Templating System
+
+Configuration objects support `{key}` templating in event and mutation strings:
+
+```javascript
+registerBehavior({
+ name: 'accordion',
+
+ selectors: {
+ header: '.accordion-header',
+ content: '.accordion-content',
+ },
+
+ settings: {
+ triggerElement: '.custom-trigger',
+ },
+
+ events: {
+ // {header} replaced with selectors.header at runtime
+ 'click {header}': ({ self }) => {
+ self.toggle();
+ },
+
+ // Settings can also be used in templates
+ 'mouseenter {triggerElement}': ({ self }) => {
+ self.preview();
+ },
+ },
+
+ mutations: {
+ // Templating works in mutation strings too
+ 'add {content}': ({ $added }) => {
+ $added.hide();
+ },
+ },
+});
+```
+
+### Runtime Override Patterns
+
+```javascript
+// Global override (affects all future instances)
+$.tooltip.selectors.trigger = '.custom-trigger';
+$.tooltip.errors.noContent = 'Contenu introuvable'; // i18n
+
+// Per-instance override
+$('.element').tooltip({
+ selectors: { trigger: '.my-trigger' },
+ templates: { tooltip: '
+```
+
+---
+
+## Event System
+
+### Event Declaration Syntax
+
+```javascript
+events: {
+ // Standard event on behavior element
+ 'click': handler,
+
+ // Delegated event within behavior element
+ 'click .button': handler,
+
+ // Multiple events
+ 'mouseenter, mouseleave': handler,
+
+ // Multiple selectors
+ 'click .btn1, click .btn2': handler,
+
+ // Global events (outside behavior element)
+ 'global scroll window': handler,
+ 'global resize document': handler,
+
+ // Deep events (cross shadow DOM boundaries)
+ 'deep click ui-button': handler,
+
+ // Direct binding (non-bubbling events)
+ 'bind customEvent .element': handler,
+
+ // With templating
+ 'click {trigger}': handler, // Uses selectors/settings
+};
+```
+
+### Event Handler Parameters
+
+All event handlers receive comprehensive context:
+
+```javascript
+events: {
+ 'click .button': ({
+ // Core parameters
+ $, // Query constructor
+ el, // Raw behavior element
+ $el, // Query-wrapped behavior element
+ self, // Behavior instance with all methods
+
+ // Configuration
+ settings, // Current merged settings
+ selectors, // Selector configuration
+ classNames, // Class name configuration
+ errors, // Error messages
+ templates, // HTML templates
+
+ // Event specific
+ event, // Native event object
+ target, // Event target element
+ value, // Input value or event.detail.value
+ data, // Combined dataset + event.detail
+ }) => {
+ // Handler implementation
+ }
+};
+```
+
+### Event Delegation & Bubbling
+
+The behavior system handles complex event bubbling automatically:
+
+```javascript
+// Bubble mapping for non-bubbling events
+const bubbleMap = {
+ blur: 'focusout',
+ focus: 'focusin',
+ load: 'DOMContentLoaded',
+ unload: 'beforeunload',
+ mouseenter: 'mouseover',
+ mouseleave: 'mouseout',
+};
+```
+
+### Event Cleanup
+
+Events use `AbortController` for automatic cleanup:
+
+```javascript
+// In behavior constructor
+this.controller = new AbortController();
+
+// All events bound with abort signal
+$element.on(eventName, handler, {
+ abortController: this.controller
+});
+
+// Cleanup on destroy
+this.controller.abort('behavior destroyed');
+```
+
+---
+
+## Mutation Observers
+
+### Mutation Declaration Syntax
+
+```javascript
+mutations: {
+ // Watch for any changes to .item elements
+ '.item': handler,
+
+ // Only additions
+ 'add .item': handler,
+
+ // Only removals
+ 'remove .item': handler,
+
+ // Observe specific container for changes
+ 'observe .container => .item': handler,
+
+ // Attribute changes
+ 'attributes .element': handler,
+
+ // Text content changes
+ 'text .element': handler,
+
+ // With templating
+ '{listItem}': handler, // Uses selectors/settings
+};
+```
+
+### Mutation Handler Parameters
+
+```javascript
+mutations: {
+ 'add .item': ({
+ // Core parameters (same as events)
+ $, el, $el, self, settings, selectors, classNames, errors, templates,
+
+ // Mutation specific
+ mutations, // Array of MutationRecord objects
+ $added, // Query collection of added elements
+ $removed, // Query collection of removed elements
+ $target, // Query-wrapped mutation target
+ target, // Raw mutation target
+
+ // For attribute mutations
+ attributeName, // Changed attribute name
+ oldValue, // Previous value
+ newValue, // Current value
+ }) => {
+ // Handler implementation
+ }
+};
+```
+
+### Mutation Observer Configuration
+
+The system automatically configures `MutationObserver` options based on keywords:
+
+```javascript
+// Default configuration
+{
+ childList: true, // Watch for added/removed nodes
+ subtree: true, // Watch entire subtree
+}
+
+// Additional options by keyword
+'attributes': {
+ attributes: true,
+ attributeOldValue: true,
+}
+
+'text': {
+ characterData: true,
+ characterDataOldValue: true,
+}
+```
+
+### Example: Auto-Markdown Behavior
+
+```javascript
+registerBehavior({
+ name: 'automarkdown',
+
+ defaultSettings: {
+ watch: '.raw', // Selector to watch
+ },
+
+ createBehavior: ({ $, self }) => ({
+ addMarkdown(element) {
+ const $element = $(element);
+ const html = self.convertToMarkdown($element.text());
+ $element.html(html);
+ },
+
+ convertToMarkdown(text) {
+ return text
+ .replace(/\*\*(.*?)\*\*/g, '
'); // *italic*
+ },
+ }),
+
+ mutations: {
+ // Template replaced with settings.watch value
+ '{watch}': ({ self, $added }) => {
+ $added.each(self.addMarkdown);
+ },
+ },
+});
+
+// Usage
+$('ul').automarkdown({ watch: 'li' });
+```
+
+---
+
+## Method Invocation & Custom Invocation
+
+### Standard Method Invocation
+
+Behaviors support multiple invocation patterns:
+
+```javascript
+// String method invocation
+$('.element').behavior('methodName', arg1, arg2);
+
+// Natural language lookup
+$('.element').behavior('toggle state'); // Calls toggleState()
+$('.element').behavior('is visible'); // Calls isVisible()
+$('.element').behavior('get value'); // Calls getValue() or get.value
+
+// Direct instance access
+const element = document.querySelector('.element');
+element.behaviorName.methodName(); // Direct call
+```
+
+### Method Lookup Algorithm
+
+The behavior system uses intelligent method resolution:
+
+```javascript
+// Lookup order for 'toggle state':
+1. toggleState() // CamelCase conversion
+2. toggle.state // Dot notation traversal
+3. toggle['state'] // Property access
+4. customInvocation() // Fallback handler
+```
+
+### Custom Invocation
+
+For flexible string-based APIs like transitions:
+
+```javascript
+registerBehavior({
+ name: 'transition',
+
+ createBehavior: ({ self }) => ({
+ performTransition(type, duration) {
+ // Implementation
+ },
+ }),
+
+ customInvocation: ({ methodName, methodArgs, self }) => {
+ // methodName could be 'fade in', 'slide up', etc.
+ return self.performTransition(methodName, ...methodArgs);
+ },
+});
+
+// Enables usage like:
+$('.modal').transition('fade in', 500);
+$('.panel').transition('slide down', 300);
+```
+
+---
+
+## Lifecycle Management
+
+### Behavior Lifecycle Flow
+
+```
+Registration Phase
+├── registerBehavior() called
+├── Query.behaviors.set(name, behavior)
+└── Query.prototype[name] created
+
+Initialization Phase
+├── $element.behavior() called
+├── setup() runs once (first instance only)
+├── Behavior constructor
+│ ├── Settings merged (defaults → user → data attributes)
+│ ├── createBehavior() called
+│ ├── Instance attached to element[namespace]
+│ ├── Events attached with AbortController
+│ ├── Mutations attached
+│ └── onCreated() callback
+└── Instance ready
+
+Usage Phase
+├── Method calls via string or direct access
+├── Settings updates trigger reinitialize
+└── Events and mutations active
+
+Destruction Phase
+├── destroy() called (or element removed)
+├── Mutation observers disconnected
+├── AbortController aborts all events
+├── onDestroyed() callback
+└── element[namespace] deleted
+```
+
+### Setup Function
+
+Runs once per behavior type, creates shared resources:
+
+```javascript
+setup: ({ $, settings, $elements, templates }) => {
+ // Note: different parameters than other callbacks
+ // $elements is plural (all elements being initialized)
+
+ // Return shared resources
+ return {
+ cache: new Map(),
+ $sharedTooltip: $(templates.tooltip).appendTo('body'),
+ sharedState: { count: 0 },
+ };
+}
+
+// Returned properties become part of `self` in all instances
+createBehavior: ({ self }) => ({
+ useShared() {
+ self.cache.set('key', 'value'); // From setup
+ self.$sharedTooltip.show(); // From setup
+ self.sharedState.count++; // From setup
+ },
+});
+```
+
+---
+
+## CSS Integration
+
+### Constructed Stylesheet Adoption
+
+Behaviors can inject CSS efficiently using constructed stylesheets:
+
+```javascript
+registerBehavior({
+ name: 'tooltip',
+
+ css: `
+ .tooltip {
+ position: absolute;
+ padding: 8px;
+ background: black;
+ color: white;
+ opacity: 0;
+ transition: opacity 0.3s;
+ }
+ .tooltip.visible {
+ opacity: 1;
+ }
+ `,
+});
+```
+
+### CSS Caching Strategy
+
+- Stylesheets are cached and reused across instances
+- Uses browser's Constructed Stylesheet API
+- Automatic adoption to element's document
+- Cleaned up when no instances remain
+
+---
+
+## Instance Management
+
+### Storage Pattern
+
+Behaviors are stored directly on DOM elements:
+
+```javascript
+// Default: stored at element[behaviorName]
+element.tooltip = behaviorInstance;
+
+// Custom namespace: stored at element[namespace]
+registerBehavior({
+ name: 'tooltip',
+ namespace: 'myTooltip', // element.myTooltip
+});
+```
+
+### Instance Access
+
+```javascript
+// Get instance via Query
+const instance = $('.element').tooltip('instance');
+
+// Direct element access
+const element = document.querySelector('.element');
+const instance = element.tooltip;
+
+// Behavior static method
+const instance = Behavior.getInstance(element, 'tooltip');
+```
+
+### Reinitialization
+
+Settings updates trigger full reinitialization:
+
+```javascript
+// Initial setup
+$('.element').tooltip({ delay: 100 });
+
+// Reinitialize with new settings
+$('.element').tooltip({ delay: 200, position: 'top' });
+// → Destroys old instance, creates new one
+```
+
+---
+
+## Return Value Collection
+
+### Intelligent Return Handling
+
+The behavior system intelligently collects return values:
+
+```javascript
+// Single element - returns single value
+const isVisible = $('.single').tooltip('is visible'); // true
+
+// Multiple elements - returns array
+const states = $('.multiple').tooltip('is visible'); // [true, false, true]
+
+// Deduplication - same values collapsed
+$('.three-elements').tooltip('get type'); // 'info' (all returned 'info')
+$('.three-elements').tooltip('get type'); // ['info', 'warning'] (different values)
+
+// Void methods - returns Query instance for chaining
+$('.element').tooltip('show').addClass('active');
+```
+
+### Collection Algorithm
+
+```javascript
+if (isArray(returnedValue)) {
+ returnedValue.push(response);
+}
+else if (returnedValue !== undefined) {
+ if (returnedValue !== response) {
+ returnedValue = [returnedValue, response]; // Different values
+ }
+ // Same value - keep single value
+}
+else if (response !== undefined) {
+ returnedValue = response;
+}
+```
+
+---
+
+## Real-World Patterns
+
+### Pattern: Shared Tooltip
+
+Multiple elements share a single tooltip element:
+
+```javascript
+registerBehavior({
+ name: 'tooltip',
+
+ setup: ({ $, templates }) => ({
+ // Single tooltip for all instances
+ $tooltip: $(templates.tooltip).appendTo('body'),
+ }),
+
+ createBehavior: ({ self, el, settings }) => ({
+ show() {
+ // Update shared tooltip content
+ self.$tooltip
+ .find('.content').html(settings.content).end()
+ .addClass('visible');
+
+ // Position relative to this element
+ const rect = el.getBoundingClientRect();
+ self.$tooltip.css({
+ top: rect.top - 40,
+ left: rect.left,
+ });
+ },
+ }),
+});
+```
+
+### Pattern: Transition System
+
+Complex string-based API with animation detection:
+
+```javascript
+registerBehavior({
+ name: 'transition',
+
+ createBehavior: ({ $el, self }) => ({
+ animate(settings) {
+ const animation = self.detectAnimation(settings.animation);
+ return self.playAnimation(animation, settings);
+ },
+
+ detectAnimation(name) {
+ // Create test element with animation classes
+ const $test = $('
')
+ .addClass(name)
+ .addClass('transition')
+ .appendTo('body');
+
+ // Check computed animations
+ const animations = $test.el().getAnimations();
+
+ // Cache and return animation data
+ return self.cacheAnimation(name, animations);
+ },
+ }),
+
+ // Handle string invocations like .transition('fade in')
+ customInvocation: ({ methodName, methodArgs, self }) => {
+ const [duration, callback] = methodArgs;
+ return self.animate({
+ animation: methodName,
+ duration: duration || 'auto',
+ onComplete: callback || (() => {}),
+ });
+ },
+});
+```
+
+### Pattern: Auto-Enhancement
+
+Behaviors that automatically enhance dynamically added content:
+
+```javascript
+registerBehavior({
+ name: 'autoenhance',
+
+ defaultSettings: {
+ enhance: '[data-enhance]',
+ },
+
+ createBehavior: ({ self }) => ({
+ enhance(element) {
+ // Apply enhancements
+ $(element).addClass('enhanced');
+ },
+ }),
+
+ mutations: {
+ // Watch for matching elements
+ 'add {enhance}': ({ $added, self }) => {
+ $added.each(self.enhance);
+ },
+ },
+
+ onCreated: ({ $el, self, settings }) => {
+ // Enhance existing elements on creation
+ $el.find(settings.enhance).each(self.enhance);
+ },
+});
+```
+
+---
+
+## Decision Matrix
+
+### When to Use Simple Plugins
+
+| Scenario | Example |
+|----------|---------|
+| Utility methods | `.maskInput()`, `.formatDate()` |
+| One-time operations | `.shuffle()`, `.randomize()` |
+| Stateless transformations | `.wrapInner()`, `.unwrap()` |
+| Simple event binding | `.clickOutside()` |
+| DOM manipulation helpers | `.moveAfter()`, `.swapWith()` |
+
+### When to Use Behaviors
+
+| Scenario | Example |
+|----------|---------|
+| Stateful components | Tooltips, modals, accordions |
+| Complex event handling | Drag & drop, gestures |
+| Settings persistence | Configurable plugins |
+| Animation systems | Transitions, effects |
+| DOM monitoring | Auto-enhance, lazy loading |
+| Multi-method APIs | `.show()`, `.hide()`, `.toggle()` |
+| Resource management | Shared overlays, caching |
+
+### Feature Comparison
+
+| Feature | Simple Plugin | Behavior |
+|---------|--------------|----------|
+| **Setup complexity** | Minimal | Structured |
+| **State management** | Manual | Built-in |
+| **Settings system** | Manual | Automatic merging |
+| **Data attributes** | Manual parsing | Auto-override |
+| **Event handling** | Query `.on()` | Declarative + delegation |
+| **Event cleanup** | Manual | Automatic (AbortController) |
+| **Mutation observers** | Manual | Declarative syntax |
+| **CSS injection** | Manual | Automatic + cached |
+| **Method invocation** | Direct only | String + natural language |
+| **Return values** | Manual | Intelligent collection |
+| **Lifecycle hooks** | None | onCreate/onDestroy |
+| **Instance storage** | Manual | Automatic on element |
+| **Configuration objects** | None | selectors/classNames/errors/templates |
+| **Templating** | None | `{key}` interpolation |
+| **Custom invocation** | N/A | Fallback handler |
+| **Shared resources** | Manual | setup() function |
+| **Memory footprint** | Minimal | Per-instance overhead |
+
+---
+
+## Implementation Guidelines
+
+### Simple Plugin Best Practices
+
+1. **Always return `this` or values** - Enable chaining
+2. **Use `.each()` for element iteration** - Handle collections properly
+3. **Namespace events** - Prevent conflicts: `.on('click.myplugin')`
+4. **Check element type** - Validate expected DOM elements
+5. **Document options** - Clear parameter documentation
+
+### Behavior Best Practices
+
+1. **Use configuration objects** - Enable customization and i18n
+2. **Implement standard methods** - `show()`, `hide()`, `toggle()`, `destroy()`
+3. **Cache expensive operations** - Use setup() for shared resources
+4. **Handle settings updates** - Reinitialize gracefully
+5. **Clean up resources** - Implement proper onDestroyed cleanup
+6. **Use semantic naming** - Match framework conventions
+7. **Document templates** - Provide template structure documentation
+8. **Test mutation observers** - Verify DOM monitoring behavior
+9. **Consider performance** - Use CSS animations when possible
+10. **Provide data attributes** - Enable HTML-based configuration
+
+---
+
+## Source References
+
+- **Core Implementation**: `/packages/query/src/register-behavior.js`
+- **Behavior Class**: `/packages/query/src/behavior.js`
+- **Helper Exports**: `/packages/query/src/helpers.js`
+- **Simple Plugin Example**: `/docs/src/examples/query/plugins/query-plugin/`
+- **Tooltip Behavior**: `/docs/src/examples/query/plugins/query-behavior/`
+- **Mutation Example**: `/docs/src/examples/query/plugins/query-behavior-mutations/`
+- **Transition Behavior**: `/src/behaviors/transition/`
+
+---
+
+*This canonical guide serves as the complete technical specification for Query plugins and behaviors. For implementation details, consult the source references.*
\ No newline at end of file
diff --git a/ai/guides/query-plugins.md b/ai/guides/query-plugins.md
deleted file mode 100644
index 0dfca39d4..000000000
--- a/ai/guides/query-plugins.md
+++ /dev/null
@@ -1,206 +0,0 @@
-# Query Plugin Architecture Guide
-
-> **For:** AI agents implementing DOM manipulation plugins in Semantic UI Query
-> **Purpose:** Technical reference for Query plugin development patterns
-> **Prerequisites:** Understanding of Query system from [ai/packages/query.md](../packages/query.md)
-> **Related:** [Plugin Registration](../../packages/query/src/register-plugin.js) • [Simple Plugin Example](../../docs/src/examples/query/plugins/query-plugin/) • [Complex Plugin Example](../../docs/src/examples/query/plugins/query-behavior/)
-
----
-
-## Plugin Architecture Overview
-
-The Query system provides two distinct plugin mechanisms:
-
-1. **Simple Plugins** - Direct prototype extension for baseline Query methods
-2. **Complex Plugins** - Full behavior registration for component-like functionality
-
-## Simple Plugins: Prototype Extension
-
-### Definition
-Simple plugins extend `Query.prototype` directly via `$.plugin`, adding new methods to all Query instances.
-
-### Implementation Pattern
-```javascript
-import { $ } from '@semantic-ui/query';
-
-$.plugin.methodName = function(options = {}) {
- // `this` is the Query instance
- return this.each((element) => {
- // Logic per element
- });
-};
-```
-
-### Characteristics
-- Direct method addition to Query prototype
-- Access to full Query instance via `this`
-- No lifecycle management
-- No settings persistence
-- No event abstraction beyond Query's native `.on()`
-
-### When to Use
-- Adding utility methods to Query baseline
-- Simple DOM manipulation helpers
-- One-off functionality that doesn't require state
-- Methods that should feel like native Query operations
-
-### Example Analysis
-The mask-input plugin demonstrates this pattern:
-- Adds `.maskInput()` method to all Query instances
-- Uses existing Query `.on()` for event handling
-- Stateless operation per invocation
-- Direct prototype extension via `$.plugin.maskInput`
-
-**Reference**: [docs/src/examples/query/plugins/query-plugin/mask-input-plugin.js](../../docs/src/examples/query/plugins/query-plugin/mask-input-plugin.js)
-
-## Complex Plugins: Behavior Registration
-
-### Definition
-Complex plugins use `registerPlugin()` to create full behavioral systems with lifecycle management, settings, events, and state.
-
-### Implementation Pattern
-```javascript
-import { registerPlugin } from '@semantic-ui/query';
-
-registerPlugin({
- name: 'pluginName',
- defaultSettings: {},
-
- // Configuration objects for customization and i18n
- selectors: {
- trigger: '.plugin-trigger'
- },
- classNames: {
- active: 'active'
- },
- errors: {
- noTarget: 'No target found'
- },
- templates: {
- content: '
'
- },
-
- // CSS injection with constructed stylesheets
- css: `
- .plugin { /* styles */ }
- .plugin.active { /* active styles */ }
- `,
-
- createPlugin: ({ $, el, $el, self, settings, selectors, classNames, errors, templates }) => ({
- // Plugin methods with access to configuration objects
- }),
-
- // Event templating with {key} syntax
- events: {
- 'click {trigger}': ({ $, el, $el, self, settings, selectors, classNames, errors, templates, event, target, value, data }) => { // Uses selectors.trigger
- // Event handlers with automatic selector interpolation
- }
- },
-
- setup: ({ $, settings, $elements, templates }) => {
- // Shared initialization returning properties for self
- }
-});
-```
-
-### Architecture Components
-
-#### Registration
-- **Plugin Map**: `Query.plugins` static Map stores registered plugins
-- **Method Creation**: Automatically creates `$.prototype[name]` method
-- **Defaults Exposure**: Settings/selectors/errors exposed on `$.prototype[name]`
-
-#### Configuration System
-- **Object Types**: `selectors`, `classNames`, `errors`, `templates` for customization
-- **Deep Merging**: Runtime settings use `deepExtend()` to preserve nested object properties
-- **Global Override**: Users can modify `$.pluginName.selectors`, `$.pluginName.classNames` etc.
-- **Data Attributes**: HTML `data-*` attributes automatically override settings
-- **Event Templating**: `{key}` syntax in event strings references configuration objects
-
-#### Instance Management
-- **Namespace Storage**: Instance stored as `element[namespace]`
-- **Lifecycle Callbacks**: `onCreated`, `onDestroyed` hooks
-- **Settings Management**: Deep merging prevents configuration object clobbering
-- **CSS Injection**: Automatic stylesheet adoption with constructed stylesheet caching
-
-#### Event System
-- **Declarative Binding**: Object literal event specification
-- **Selector Interpolation**: `{key}` placeholders replaced with configuration values at runtime (only works in event object keys)
-- **Event Parsing**: String-based event/selector parsing with delegation support
-- **Abort Controllers**: Automatic cleanup via AbortController pattern
-
-#### Method Invocation
-- **String Methods**: `$element.plugin('methodName', ...args)`
-- **Return Value Collection**: Intelligent single/array return handling
-- **Natural Language Lookup**: CamelCase and dot notation method resolution
-
-### When to Use
-- Component-like behaviors requiring state management
-- Complex event handling patterns
-- Settings that need persistence/override
-- Functionality modeled after classic Semantic UI modules
-- Multi-method APIs with shared context
-
-### Example Analysis
-The tooltip plugin demonstrates the full `registerPlugin()` architecture:
-- CSS integration with automatic adoption
-- Shared state via `setup()` function
-- Declarative event handling with delegation
-- Multi-method API (`show()`, `hide()`, `toggle()`)
-- Settings management with data attribute override
-
-**Reference**: [docs/src/examples/query/plugins/query-behavior/query-tooltip.js](../../docs/src/examples/query/plugins/query-behavior/query-tooltip.js)
-
-### Architecture Abstractions
-
-#### Already Abstracted from Classic SUI
-1. **Plugin Registration**: Unified `registerPlugin()` vs manual `$.fn.module` creation
-2. **Instance Storage**: Automatic `element[namespace]` vs manual data storage
-3. **Settings Management**: Built-in merging, data override, global defaults
-4. **Event Handling**: Declarative events object vs manual binding
-5. **Method Invocation**: Natural language lookup vs complex invoke logic
-6. **CSS Integration**: Automatic stylesheet adoption with caching
-7. **Lifecycle Management**: Standard callbacks vs scattered lifecycle code
-8. **Return Value Handling**: Intelligent collection vs manual array management
-
-#### Available for Enhancement
-1. **Performance Tracking**: Debug/timing system from classic modules
-2. **MutationObserver**: Declarative DOM change handling pattern
-
-## Plugin Selection Decision Matrix
-
-| Requirement | Simple Plugin | Complex Plugin |
-|-------------|---------------|-----------------|
-| Add Query method | ✓ Preferred | ✗ Overkill |
-| State management | ✗ Manual only | ✓ Built-in |
-| Event handling | ✗ Manual `.on()` | ✓ Declarative |
-| Settings persistence | ✗ None | ✓ Automatic |
-| Lifecycle hooks | ✗ None | ✓ Standard |
-| Method collection | ✗ Single method | ✓ Multi-method API |
-| CSS integration | ✗ Manual | ✓ Automatic injection |
-| Data override | ✗ Manual | ✓ Built-in |
-| Configuration objects | ✗ None | ✓ selectors/classNames/errors/templates |
-| Event templating | ✗ None | ✓ {key} interpolation |
-| Deep merging | ✗ N/A | ✓ Nested object preservation |
-| i18n support | ✗ Manual | ✓ Via errors/templates objects |
-
-## Implementation Context
-
-### Query Foundation
-For complete Query capabilities, reference [ai/packages/query.md](../packages/query.md) rather than duplicating functionality documentation.
-
-### Classic SUI Heritage
-Complex plugins abstract patterns from classic Semantic UI jQuery modules. The plugin architecture handles:
-- Module initialization patterns
-- Settings inheritance and override
-- Event namespace management
-- Instance lifecycle
-- Method invocation complexity
-- Return value collection logic
-
-### Performance Considerations
-Both plugin types inherit Query's Shadow DOM traversal capabilities and performance optimizations. Complex plugins add minimal overhead through the Plugin class abstraction.
-
----
-
-*This guide serves as technical specification for AI agents. For implementation examples, examine the referenced source files.*
\ No newline at end of file
diff --git a/ai/packages/query.md b/ai/packages/query.md
index 1402371d8..336969f18 100644
--- a/ai/packages/query.md
+++ b/ai/packages/query.md
@@ -155,6 +155,7 @@ The Query class provides a comprehensive set of methods organized into logical c
- `trigger(event, data)` - Trigger events
- `dispatchEvent(event, data, settings)` - Dispatch custom events
- `one(event, handler)` - One-time event listener
+- `onNext(event, options)` - Promise-based event waiting
### Dimensions and Positioning
- `width(value)`, `height(value)` - Get/set dimensions
@@ -162,6 +163,7 @@ The Query class provides a comprehensive set of methods organized into logical c
- `scrollTop(value)`, `scrollLeft(value)` - Get/set scroll position
- `offsetParent(options)` - Get offset parent for positioning
- `naturalWidth()`, `naturalHeight()` - Get natural dimensions
+- `naturalDisplay()` - Get natural display value (ignoring display: none)
### Component Integration (Semantic UI specific)
- `settings(newSettings)` - Configure component settings
@@ -381,6 +383,56 @@ $('document').on('keydown', function(event) {
});
```
+### Promise-based Event Handling
+
+```javascript
+// Modern async/await event handling
+async function handleUserFlow() {
+ // Wait for user to click start button
+ await $('.start-button').onNext('click');
+ console.log('User started the process');
+
+ // Wait for form submission
+ await $('#form').onNext('submit');
+ console.log('Form submitted');
+
+ // Wait for animation to complete
+ await $('.success-message').onNext('animationend');
+ console.log('Success animation finished');
+}
+
+// Component event waiting
+async function waitForModalClose() {
+ try {
+ await $('.modal').onNext('modal:closed', { timeout: 5000 });
+ console.log('Modal closed successfully');
+ } catch (error) {
+ console.log('Modal did not close within timeout');
+ }
+}
+
+// Event delegation with promises
+async function waitForDynamicContent() {
+ // Wait for click on dynamically added elements
+ const event = await $('#container').onNext('click', '.dynamic-item');
+ console.log('Dynamic item clicked:', event.target);
+}
+
+// Transition and animation coordination
+async function animateSequence() {
+ $('.element').addClass('fade-in');
+ await $('.element').onNext('animationend');
+
+ $('.element').addClass('slide-up');
+ await $('.element').onNext('animationend');
+
+ $('.element').addClass('bounce');
+ await $('.element').onNext('animationend');
+
+ console.log('Animation sequence complete!');
+}
+```
+
## Chaining and Utility Methods
### Method Chaining
diff --git a/ai/packages/utils.md b/ai/packages/utils.md
index 1e315b65b..777ca0b1c 100644
--- a/ai/packages/utils.md
+++ b/ai/packages/utils.md
@@ -27,7 +27,7 @@ The package is organized into **17 specialized modules**, each focused on a spec
├── equality.js ← Deep equality comparison
├── cloning.js ← Deep cloning of objects and arrays
├── errors.js ← Error handling and async error throwing
-├── ssr.js ← Server-side rendering detection
+├── environment.js ← Environment detection (server/client/dev/CI)
└── regexp.js ← Regular expression and HTML escaping
```
@@ -248,7 +248,7 @@ function processCollection(data) {
### Advanced Type Checks
```javascript
-import { isDOM, isNode, isClassInstance, isPromise, isClient, isServer } from '@semantic-ui/utils';
+import { isDOM, isNode, isClassInstance, isPromise, isClient, isServer, isDevelopment, isCI } from '@semantic-ui/utils';
// DOM-related checks
isDOM(document.body); // true
@@ -263,6 +263,8 @@ isPromise(fetch('/api')); // true
// Environment detection
isClient(); // true in browser
isServer(); // true in Node.js/server environment
+isDevelopment(); // true in development environments
+isCI(); // true in CI/CD pipelines
```
## String Utilities (strings.js)
diff --git a/ai/proposals/animations.js b/ai/proposals/animations.js
deleted file mode 100644
index 59d752e9e..000000000
--- a/ai/proposals/animations.js
+++ /dev/null
@@ -1,450 +0,0 @@
-/**
- * Reusable keyframe objects. Stored as constants so they are defined only once
- * and can be referenced by multiple animation definitions. This is ideal for
- * both DRY principles and minification.
- */
-const slideInY = {
- '0%': { opacity: 0, transform: 'scaleY(0)' },
- '100%': { opacity: 1, transform: 'scaleY(1)' },
-};
-const slideOutY = {
- '0%': { opacity: 1, transform: 'scaleY(1)' },
- '100%': { opacity: 0, transform: 'scaleY(0)' },
-};
-const slideInX = {
- '0%': { opacity: 0, transform: 'scaleX(0)' },
- '100%': { opacity: 1, transform: 'scaleX(1)' },
-};
-const slideOutX = {
- '0%': { opacity: 1, transform: 'scaleX(1)' },
- '100%': { opacity: 0, transform: 'scaleX(0)' },
-};
-
-const swingInX = {
- '0%': { transform: 'perspective(1000px) rotateX(90deg)', opacity: 0 },
- '40%': { transform: 'perspective(1000px) rotateX(-30deg)', opacity: 1 },
- '60%': { transform: 'perspective(1000px) rotateX(15deg)' },
- '80%': { transform: 'perspective(1000px) rotateX(-7.5deg)' },
- '100%': { transform: 'perspective(1000px) rotateX(0deg)' },
-};
-const swingOutX = {
- '0%': { transform: 'perspective(1000px) rotateX(0deg)' },
- '40%': { transform: 'perspective(1000px) rotateX(-7.5deg)' },
- '60%': { transform: 'perspective(1000px) rotateX(17.5deg)' },
- '80%': { transform: 'perspective(1000px) rotateX(-30deg)', opacity: 1 },
- '100%': { transform: 'perspective(1000px) rotateX(90deg)', opacity: 0 },
-};
-const swingInY = {
- '0%': { transform: 'perspective(1000px) rotateY(-90deg)', opacity: 0 },
- '40%': { transform: 'perspective(1000px) rotateY(30deg)', opacity: 1 },
- '60%': { transform: 'perspective(1000px) rotateY(-17.5deg)' },
- '80%': { transform: 'perspective(1000px) rotateY(7.5deg)' },
- '100%': { transform: 'perspective(1000px) rotateY(0deg)' },
-};
-const swingOutY = {
- '0%': { transform: 'perspective(1000px) rotateY(0deg)' },
- '40%': { transform: 'perspective(1000px) rotateY(7.5deg)' },
- '60%': { transform: 'perspective(1000px) rotateY(-10deg)' },
- '80%': { transform: 'perspective(1000px) rotateY(30deg)', opacity: 1 },
- '100%': { transform: 'perspective(1000px) rotateY(-90deg)', opacity: 0 },
-};
-
-/**
- * The main animation definitions, structured as JS objects for optimal minification.
- * - `keyframe`: A direct reference to one of the reusable keyframe objects above.
- * - `keyframeName`: A string to name the animation. This is used when the keyframe is unique.
- * - `alias`: Points to another definition path within this object to avoid repetition.
- */
-const animationDefinitions = {
- browse: {
- in: {
- duration: '500ms',
- keyframeName: 'browseIn',
- keyframe: {
- '0%': { transform: 'scale(0.8) translateZ(0px)', zIndex: -1 },
- '10%': { transform: 'scale(0.8) translateZ(0px)', zIndex: -1, opacity: 0.7 },
- '80%': { transform: 'scale(1.05) translateZ(0px)', opacity: 1, zIndex: 999 },
- '100%': { transform: 'scale(1) translateZ(0px)', zIndex: 999 },
- },
- },
- out: {
- duration: '500ms',
- keyframeName: 'browseOutLeft',
- keyframe: {
- '0%': { zIndex: 999, transform: 'translateX(0%) rotateY(0deg) rotateX(0deg)' },
- '50%': { zIndex: -1, transform: 'translateX(-105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)' },
- '80%': { opacity: 1 },
- '100%': { zIndex: -1, transform: 'translateX(0%) rotateY(0deg) rotateX(0deg) translateZ(-10px)', opacity: 0 },
- },
- },
- right: {
- out: {
- duration: '500ms',
- keyframeName: 'browseOutRight',
- keyframe: {
- '0%': { zIndex: 999, transform: 'translateX(0%) rotateY(0deg) rotateX(0deg)' },
- '50%': { zIndex: 1, transform: 'translateX(105%) rotateY(35deg) rotateX(10deg) translateZ(-10px)' },
- '80%': { opacity: 1 },
- '100%': { zIndex: 1, transform: 'translateX(0%) rotateY(0deg) rotateX(0deg) translateZ(-10px)', opacity: 0 },
- },
- },
- },
- },
-
- drop: {
- in: {
- duration: '400ms',
- keyframeName: 'dropIn',
- keyframe: {
- '0%': { opacity: 0, transform: 'scale(0)' },
- '100%': { opacity: 1, transform: 'scale(1)' },
- },
- },
- out: {
- duration: '400ms',
- keyframeName: 'dropOut',
- keyframe: {
- '0%': { opacity: 1, transform: 'scale(1)' },
- '100%': { opacity: 0, transform: 'scale(0)' },
- },
- },
- },
-
- fade: {
- in: { duration: '300ms', keyframeName: 'fadeIn', keyframe: { '0%': { opacity: 0 }, '100%': { opacity: 1 } } },
- out: { duration: '300ms', keyframeName: 'fadeOut', keyframe: { '0%': { opacity: 1 }, '100%': { opacity: 0 } } },
- up: {
- in: {
- keyframeName: 'fadeInUp',
- keyframe: {
- '0%': { opacity: 0, transform: 'translateY(10%)' },
- '100%': { opacity: 1, transform: 'translateY(0%)' },
- },
- },
- out: {
- keyframeName: 'fadeOutUp',
- keyframe: {
- '0%': { opacity: 1, transform: 'translateY(0%)' },
- '100%': { opacity: 0, transform: 'translateY(5%)' },
- },
- },
- },
- down: {
- in: {
- keyframeName: 'fadeInDown',
- keyframe: {
- '0%': { opacity: 0, transform: 'translateY(-10%)' },
- '100%': { opacity: 1, transform: 'translateY(0%)' },
- },
- },
- out: {
- keyframeName: 'fadeOutDown',
- keyframe: {
- '0%': { opacity: 1, transform: 'translateY(0%)' },
- '100%': { opacity: 0, transform: 'translateY(-5%)' },
- },
- },
- },
- left: {
- in: {
- keyframeName: 'fadeInLeft',
- keyframe: {
- '0%': { opacity: 0, transform: 'translateX(10%)' },
- '100%': { opacity: 1, transform: 'translateX(0%)' },
- },
- },
- out: {
- keyframeName: 'fadeOutLeft',
- keyframe: {
- '0%': { opacity: 1, transform: 'translateX(0%)' },
- '100%': { opacity: 0, transform: 'translateX(5%)' },
- },
- },
- },
- right: {
- in: {
- keyframeName: 'fadeInRight',
- keyframe: {
- '0%': { opacity: 0, transform: 'translateX(-10%)' },
- '100%': { opacity: 1, transform: 'translateX(0%)' },
- },
- },
- out: {
- keyframeName: 'fadeOutRight',
- keyframe: {
- '0%': { opacity: 1, transform: 'translateX(0%)' },
- '100%': { opacity: 0, transform: 'translateX(-5%)' },
- },
- },
- },
- },
-
- fly: {
- duration: '600ms',
- in: {
- keyframeName: 'flyIn',
- keyframe: {
- '0%': { opacity: 0, transform: 'scale3d(.3,.3,.3)' },
- '20%': { transform: 'scale3d(1.1,1.1,1.1)' },
- '40%': { transform: 'scale3d(.9,.9,.9)' },
- '60%': { opacity: 1, transform: 'scale3d(1.03,1.03,1.03)' },
- '80%': { transform: 'scale3d(.97,.97,.97)' },
- '100%': { opacity: 1, transform: 'scale3d(1,1,1)' },
- },
- },
- out: {
- keyframeName: 'flyOut',
- keyframe: {
- '20%': { transform: 'scale3d(.9,.9,.9)' },
- '50%,55%': { opacity: 1, transform: 'scale3d(1.1,1.1,1.1)' },
- '100%': { opacity: 0, transform: 'scale3d(.3,.3,.3)' },
- },
- },
- up: {
- in: {
- keyframeName: 'flyInUp',
- keyframe: {
- '0%': { opacity: 0, transform: 'translate3d(0,1500px,0)' },
- '60%': { opacity: 1, transform: 'translate3d(0,-20px,0)' },
- '75%': { transform: 'translate3d(0,10px,0)' },
- '90%': { transform: 'translate3d(0,-5px,0)' },
- '100%': { transform: 'translate3d(0,0,0)' },
- },
- },
- out: {
- keyframeName: 'flyOutUp',
- keyframe: {
- '20%': { transform: 'translate3d(0,10px,0)' },
- '40%,45%': { opacity: 1, transform: 'translate3d(0,-20px,0)' },
- '100%': { opacity: 0, transform: 'translate3d(0,2000px,0)' },
- },
- },
- },
- down: {
- in: {
- keyframeName: 'flyInDown',
- keyframe: {
- '0%': { opacity: 0, transform: 'translate3d(0,-1500px,0)' },
- '60%': { opacity: 1, transform: 'translate3d(0,25px,0)' },
- '75%': { transform: 'translate3d(0,-10px,0)' },
- '90%': { transform: 'translate3d(0,5px,0)' },
- '100%': { transform: 'none' },
- },
- },
- out: {
- keyframeName: 'flyOutDown',
- keyframe: {
- '20%': { transform: 'translate3d(0,-10px,0)' },
- '40%,45%': { opacity: 1, transform: 'translate3d(0,20px,0)' },
- '100%': { opacity: 0, transform: 'translate3d(0,-2000px,0)' },
- },
- },
- },
- left: {
- in: {
- keyframeName: 'flyInLeft',
- keyframe: {
- '0%': { opacity: 0, transform: 'translate3d(1500px,0,0)' },
- '60%': { opacity: 1, transform: 'translate3d(-25px,0,0)' },
- '75%': { transform: 'translate3d(10px,0,0)' },
- '90%': { transform: 'translate3d(-5px,0,0)' },
- '100%': { transform: 'none' },
- },
- },
- out: {
- keyframeName: 'flyOutLeft',
- keyframe: {
- '20%': { opacity: 1, transform: 'translate3d(-20px,0,0)' },
- '100%': { opacity: 0, transform: 'translate3d(2000px,0,0)' },
- },
- },
- },
- right: {
- in: {
- keyframeName: 'flyInRight',
- keyframe: {
- '0%': { opacity: 0, transform: 'translate3d(-1500px,0,0)' },
- '60%': { opacity: 1, transform: 'translate3d(25px,0,0)' },
- '75%': { transform: 'translate3d(-10px,0,0)' },
- '90%': { transform: 'translate3d(5px,0,0)' },
- '100%': { transform: 'none' },
- },
- },
- out: {
- keyframeName: 'flyOutRight',
- keyframe: {
- '20%': { opacity: 1, transform: 'translate3d(20px,0,0)' },
- '100%': { opacity: 0, transform: 'translate3d(-2000px,0,0)' },
- },
- },
- },
- },
-
- flip: {
- duration: '600ms',
- horizontal: {
- in: {
- keyframeName: 'horizontalFlipIn',
- keyframe: {
- '0%': { transform: 'perspective(2000px) rotateY(-90deg)', opacity: 0 },
- '100%': { transform: 'perspective(2000px) rotateY(0)', opacity: 1 },
- },
- },
- out: {
- keyframeName: 'horizontalFlipOut',
- keyframe: {
- '0%': { transform: 'perspective(2000px) rotateY(0)', opacity: 1 },
- '100%': { transform: 'perspective(2000px) rotateY(90deg)', opacity: 0 },
- },
- },
- },
- vertical: {
- in: {
- keyframeName: 'verticalFlipIn',
- keyframe: {
- '0%': { transform: 'perspective(2000px) rotateX(-90deg)', opacity: 0 },
- '100%': { transform: 'perspective(2000px) rotateX(0)', opacity: 1 },
- },
- },
- out: {
- keyframeName: 'verticalFlipOut',
- keyframe: {
- '0%': { transform: 'perspective(2000px) rotateX(0)', opacity: 1 },
- '100%': { transform: 'perspective(2000px) rotateX(-90deg)', opacity: 0 },
- },
- },
- },
- },
-
- scale: {
- in: {
- duration: '300ms',
- keyframeName: 'scaleIn',
- keyframe: { '0%': { opacity: 0, transform: 'scale(0.8)' }, '100%': { opacity: 1, transform: 'scale(1)' } },
- },
- out: {
- duration: '300ms',
- keyframeName: 'scaleOut',
- keyframe: { '0%': { opacity: 1, transform: 'scale(1)' }, '100%': { opacity: 0, transform: 'scale(0.9)' } },
- },
- },
-
- slide: {
- down: {
- in: { keyframeName: 'slideInY', keyframe: slideInY },
- out: { keyframeName: 'slideOutY', keyframe: slideOutY },
- },
- up: { alias: 'slide.down' },
- left: {
- in: { keyframeName: 'slideInX', keyframe: slideInX },
- out: { keyframeName: 'slideOutX', keyframe: slideOutX },
- },
- right: { alias: 'slide.left' },
- },
-
- swing: {
- duration: '800ms',
- down: {
- in: { keyframeName: 'swingInX', keyframe: swingInX },
- out: { keyframeName: 'swingOutX', keyframe: swingOutX },
- },
- up: { alias: 'swing.down' },
- left: {
- in: { keyframeName: 'swingInY', keyframe: swingInY },
- out: { keyframeName: 'swingOutY', keyframe: swingOutY },
- },
- right: { alias: 'swing.left' },
- },
-
- zoom: {
- in: {
- keyframeName: 'zoomIn',
- keyframe: { '0%': { opacity: 1, transform: 'scale(0)' }, '100%': { opacity: 1, transform: 'scale(1)' } },
- },
- out: {
- keyframeName: 'zoomOut',
- keyframe: { '0%': { opacity: 1, transform: 'scale(1)' }, '100%': { opacity: 1, transform: 'scale(0)' } },
- },
- },
-
- // --- Static Animations (no in/out direction) ---
- jiggle: {
- static: {
- duration: '750ms',
- keyframeName: 'jiggle',
- keyframe: {
- '0%': { transform: 'scale3d(1, 1, 1)' },
- '30%': { transform: 'scale3d(1.25, 0.75, 1)' },
- '40%': { transform: 'scale3d(0.75, 1.25, 1)' },
- '50%': { transform: 'scale3d(1.15, 0.85, 1)' },
- '65%': { transform: 'scale3d(0.95, 1.05, 1)' },
- '75%': { transform: 'scale3d(1.05, 0.95, 1)' },
- '100%': { transform: 'scale3d(1, 1, 1)' },
- },
- },
- },
- flash: {
- static: {
- duration: '750ms',
- keyframeName: 'flash',
- keyframe: { '0%, 50%, 100%': { opacity: 1 }, '25%, 75%': { opacity: 0 } },
- },
- },
- shake: {
- static: {
- duration: '750ms',
- keyframeName: 'shake',
- keyframe: {
- '0%, 100%': { transform: 'translateX(0)' },
- '10%, 30%, 50%, 70%, 90%': { transform: 'translateX(-10px)' },
- '20%, 40%, 60%, 80%': { transform: 'translateX(10px)' },
- },
- },
- },
- bounce: {
- static: {
- duration: '750ms',
- keyframeName: 'bounce',
- keyframe: {
- '0%, 20%, 50%, 80%, 100%': { transform: 'translateY(0)' },
- '40%': { transform: 'translateY(-30px)' },
- '60%': { transform: 'translateY(-15px)' },
- },
- },
- },
- tada: {
- static: {
- duration: '750ms',
- keyframeName: 'tada',
- keyframe: {
- '0%': { transform: 'scale(1)' },
- '10%, 20%': { transform: 'scale(0.9) rotate(-3deg)' },
- '30%, 50%, 70%, 90%': { transform: 'scale(1.1) rotate(3deg)' },
- '40%, 60%, 80%': { transform: 'scale(1.1) rotate(-3deg)' },
- '100%': { transform: 'scale(1) rotate(0)' },
- },
- },
- },
- pulse: {
- static: {
- duration: '500ms',
- keyframeName: 'pulse',
- keyframe: {
- '0%': { transform: 'scale(1)', opacity: 1 },
- '50%': { transform: 'scale(0.9)', opacity: 0.7 },
- '100%': { transform: 'scale(1)', opacity: 1 },
- },
- },
- },
- glow: {
- static: {
- duration: '2000ms',
- keyframeName: 'glow',
- keyframe: {
- '0%': { backgroundColor: '#FCFCFD' },
- '30%': { backgroundColor: '#FFF6CD' },
- '100%': { backgroundColor: '#FCFCFD' },
- },
- },
- },
-};
diff --git a/ai/proposals/query-plugin.md b/ai/proposals/query-plugin.md
deleted file mode 100644
index 25dd2383e..000000000
--- a/ai/proposals/query-plugin.md
+++ /dev/null
@@ -1,79 +0,0 @@
-# Proposal: A Hybrid Plugin Architecture for `@semantic-ui/query`
-
-## 1. Goal: A Robust Plugin Ecosystem
-
-The primary goal is to establish a formal plugin architecture for the `@semantic-ui/query` package. This architecture must empower third-party developers to extend the library's functionality in a consistent, stable, and easy-to-use manner. It should codify the best practices learned from the Semantic UI module system into the core library, reducing boilerplate and encouraging community contribution.
-
-## 2. Architectural Strategy: A Hybrid Approach
-
-To maximize both flexibility and developer experience, a hybrid, dual-layer architectural strategy is proposed. This provides two distinct pathways for plugin registration, catering to different needs.
-
-### Layer 1: The Unmanaged, Low-Level API (`$.fn`)
-
-This layer provides a direct, unmanaged entry point to the `Query` prototype.
-
-* **Strategy**: Expose the `Query.prototype` through a conventional alias (`$.fn` and `$$.fn`). This is a classic pattern, offering an immediate "escape hatch" for developers who need complete control or are familiar with the jQuery ecosystem.
-* **Use Case**: Ideal for simple, stateless plugins or for porting existing jQuery plugins with minimal changes.
-* **Responsibility**: The library's only responsibility is to provide the alias. The plugin author is fully responsible for all implementation details, including state management, settings parsing, and method invocation logic.
-* **Benefit**: Maximum flexibility and a zero-friction entry point for experienced developers.
-
-**Example of the `$.fn` Strategy in Use:**
-```javascript
-import { $ } from '@semantic-ui/query';
-
-// The author implements all logic, including chaining.
-$.fn.makeGreen = function() {
- this.each(instance => {
- instance.elements[0].style.color = 'green';
- });
- return this;
-};
-```
-
-### Layer 2: The Managed, High-Level API (`registerPlugin`)
-
-This layer provides an opinionated, "blessed" API for creating complex plugins. It is the recommended approach for building robust, stateful modules for the ecosystem.
-
-* **Strategy**: Export a single `registerPlugin(name, definition)` function. This function acts as a factory that takes a simple plugin definition object and wraps it in all the necessary boilerplate logic (instance management, method dispatching, etc.). This abstracts the complex patterns from Semantic UI's module system into the core.
-* **The Plugin Contract**: The plugin author's responsibility is reduced to providing a simple `definition` object that adheres to a clear contract:
- * `defaults`: An object defining the default settings for the plugin.
- * `methods`: An object containing the core logic as functions. This includes a special `init` method for initialization logic.
-* **The Library's Responsibilities**: The `registerPlugin` function will automatically handle the following for the plugin author:
- * **Method Dispatching**: It creates and attaches a single function to the prototype (`Query.prototype[name]`) that intelligently distinguishes between calls for initialization (e.g., `$('...').myPlugin({})`) and calls to public methods (e.g., `$('...').myPlugin('myMethod', arg1)`).
- * **Instance Management**: It transparently manages the lifecycle of a plugin instance for each DOM element. It handles creating, storing, retrieving, and (if a `destroy` method is provided) cleaning up instances. State is stored per-element, not globally.
- * **Context Provisioning**: For every method in the `methods` object, it ensures `this` refers to a dedicated instance object. This context object will be automatically populated with:
- * `this.settings`: The final, merged settings (defaults + user-provided).
- * `this.element`: The raw DOM element the instance is attached to.
- * `this.queryInstance`: The `Query` object for that element.
- * `this.name`: The name of the plugin.
- * **Lifecycle Hooks**: It automatically invokes the `init` method from the plugin definition when a new instance is created.
-* **Benefit**: Drastically simplifies plugin development, enforces consistency across the ecosystem, and makes plugins easier to maintain by separating core logic from boilerplate.
-
-**Example of the `registerPlugin` Strategy in Use:**
-```javascript
-import { registerPlugin } from '@semantic-ui/query';
-
-// The author only provides the unique logic.
-registerPlugin('myCoolPlugin', {
- defaults: {
- color: 'blue',
- speed: 400
- },
- methods: {
- init: function() {
- // The library provides `this.settings` and `this.element`.
- this.element.style.color = this.settings.color;
- },
- show: function() {
- // Logic for showing the element...
- },
- hide: function() {
- // Logic for hiding the element...
- }
- }
-});
-```
-
-## 4. Conclusion
-
-By adopting this hybrid architecture, `@semantic-ui/query` can offer a plugin system that is both powerfully simple for the majority of use cases (`registerPlugin`) and endlessly flexible for advanced scenarios (`$.fn`). This provides a clear path for building a rich and consistent component ecosystem.
diff --git a/ai/proposals/transition-outline.js b/ai/proposals/transition-outline.js
deleted file mode 100644
index c1a44ec64..000000000
--- a/ai/proposals/transition-outline.js
+++ /dev/null
@@ -1,231 +0,0 @@
-const module = {
- // --- Getters: Methods for retrieving information, settings, or state. ---
- get: {
- // Retrieves a specific setting value (e.g., 'animation', 'duration', 'onComplete').
- setting(name) {
- },
-
- // Parses and returns the core animation name from the settings.
- animationName() {
- },
-
- // Determines and returns the animation direction ('in' or 'out') based on the element's current visibility.
- direction() {
- },
-
- // Returns the element's root node (either the `document` or its parent `ShadowRoot`).
- elementRoot() {
- },
-
- // Orchestrates the display type detection, using the cache first before determining it.
- displayType() {
- },
-
- // Retrieves the display type from the internal cache.
- cachedDisplayType() {
- },
-
- // Returns the promise associated with the current animation.
- promise() {
- },
-
- // Retrieves the next animation's settings object from the queue.
- nextInQueue() {
- },
-
- // Calculates the stagger delay for an element in a group animation.
- intervalDelayFor(index) {
- },
-
- // Returns the underlying DOM elements from the current `Query` context.
- elements() {
- },
- },
-
- // --- Setters: Methods for applying a state, class, or property. ---
- set: {
- // Flags the module as currently processing an animation (for queuing purposes).
- busy() {
- },
-
- // Sets the `display` style property on the element.
- display(type) {
- },
-
- // Adds the specific animation classes (e.g., `.fade`, `.up`, `.in`).
- animationClasses(name, direction) {
- },
-
- // Adds the `.animating` class.
- animating() {
- },
-
- // Adds the final `.visible` class upon completion of an "in" animation.
- visible() {
- },
-
- // Adds the final `.hidden` class upon completion of an "out" animation.
- hidden() {
- },
-
- // Adds the `.looping` class to enable continuous animation.
- looping() {
- },
- },
-
- // --- Removers: Methods for undoing a state, class, or property. ---
- remove: {
- // Clears the "busy" flag after an animation (and its queue) completes.
- busy() {
- },
-
- // Removes `.visible` and `.hidden` classes at the start of a new animation.
- stateClasses() {
- },
-
- // Removes the specific animation classes (e.g., `.fade`, `.up`, `.in`) after completion.
- animationClasses() {
- },
-
- // Removes the `.animating` class.
- animating() {
- },
-
- // Removes the `.looping` class to stop a continuous animation.
- looping() {
- },
- },
-
- // --- State Checks: Methods that return a boolean about the module or element's current state. ---
- is: {
- // Checks if animations are globally disabled for the module.
- disabled() {
- },
-
- // Checks if the `.animating` class is present.
- animating() {
- },
-
- // Checks the internal "busy" flag to determine if an animation or queue is active.
- busy() {
- },
-
- // Returns `true` if the calculated direction is 'in'.
- inward(direction) {
- },
-
- // Returns `true` if the calculated direction is 'out'.
- outward(direction) {
- },
- },
-
- // --- Existence Checks: Methods that return a boolean about the existence of something. ---
- has: {
- // Checks if the CSSOM rules for a given animation have already been injected.
- stylesheetRulesFor(animation) {
- },
-
- // Checks if a given root has already adopted the master stylesheet.
- adoptedStylesheet(root) {
- },
-
- // Checks if there are any animations waiting in the queue for the element.
- queue() {
- },
- },
-
- // --- CSS Engine: Methods for setting up and managing the CSS engine. ---
- create: {
- // (Initialization) Creates the master `CSSStyleSheet` object in memory.
- stylesheet() {
- },
- },
- inject: {
- // Injects the `@keyframes` and class rules for a specific animation into the master stylesheet.
- stylesheetRulesFor(animation) {
- },
- },
- adopt: {
- // Adds the master stylesheet to a given root's (`document` or `ShadowRoot`) `adoptedStyleSheets` array.
- stylesheet(root) {
- },
- },
-
- // --- Queue Management: Methods for controlling the animation queue. ---
- add: {
- // Pushes a new animation's settings object to the element's queue.
- toQueue() {
- },
- },
- run: {
- // Dequeues and executes the next animation.
- nextInQueue() {
- },
- },
-
- // --- Execution & Logic: Core logic and utility methods. ---
- determine: {
- // The subroutine that encapsulates the element-cloning logic to find the natural `display` style.
- displayType() {
- },
- },
- listen: {
- // Attaches the `animationend` event listener to the element.
- forCompletion() {
- },
- },
- resolve: {
- // Fulfills the promise associated with the completed animation.
- promise() {
- },
- },
- schedule: {
- // A conceptual wrapper for `setTimeout` used to stagger animations in a group.
- animation(delay) {
- },
- },
- reverse: {
- // Reverses the order of a `Query` collection.
- elements($elements) {
- },
- },
-
- // --- Public Control Methods: User-callable methods to interrupt animations. ---
- stop() {
- // Finishes the current animation immediately and jumps to its end state.
- },
- stopAll() {
- // Finishes the current animation immediately and clears any pending animations in the queue.
- },
- clear: {
- // Removes any pending animations from the queue without affecting the current animation.
- queue() {
- },
- },
-
- // --- Event Triggers: Methods for firing user-provided lifecycle callbacks. ---
- trigger: {
- // Fires the `onStart` callback.
- onStart() {
- },
-
- // Fires the `onComplete` callback.
- onComplete() {
- },
-
- // Fires the `onShow` callback.
- onShow() {
- },
-
- // Fires the `onHide` callback.
- onHide() {
- },
- },
-
- // --- Debug: Methods for internal logging. ---
- debug: {
- // Outputs a debug message to the console if debugging is enabled.
- log(message) {
- },
- },
-};
diff --git a/ai/artifacts/introduction-docs-screenshot-macbook15.png b/ai/screenshots/introduction-docs-screenshot-macbook15.png
similarity index 100%
rename from ai/artifacts/introduction-docs-screenshot-macbook15.png
rename to ai/screenshots/introduction-docs-screenshot-macbook15.png
diff --git a/biome.json b/biome.json
new file mode 100644
index 000000000..6ca37eca1
--- /dev/null
+++ b/biome.json
@@ -0,0 +1,73 @@
+{
+ "$schema": "https://biomejs.dev/schemas/2.2.0/schema.json",
+ "vcs": { "enabled": false, "clientKind": "git", "useIgnoreFile": false },
+ "files": { "ignoreUnknown": false },
+ "formatter": { "enabled": false, "indentStyle": "space" },
+ "linter": {
+ "enabled": true,
+ "rules": {
+ "recommended": false,
+ "complexity": {
+ "noAdjacentSpacesInRegex": "off",
+ "noCommaOperator": "warn",
+ "noExtraBooleanCast": "warn",
+ "noUselessLoneBlockStatements": "warn",
+ "noUselessUndefinedInitialization": "off",
+ "noVoid": "off",
+ "useLiteralKeys": "off"
+ },
+ "correctness": {
+ "noConstantCondition": "warn",
+ "noUnusedFunctionParameters": "off",
+ "noGlobalObjectCalls": "off",
+ "noInnerDeclarations": "off",
+ "noInvalidUseBeforeDeclaration": "warn",
+ "noUndeclaredVariables": "off",
+ "noUnreachable": "error",
+ "noUnusedVariables": "warn",
+ "useIsNan": "off",
+ "useParseIntRadix": "error",
+ "useValidTypeof": "off"
+ },
+ "security": { "noGlobalEval": "error" },
+ "style": {
+ "noNestedTernary": "off",
+ "noYodaExpression": "error",
+ "useArrayLiterals": "off",
+ "useBlockStatements": "warn",
+ "useCollapsedElseIf": "off",
+ "useConsistentBuiltinInstantiation": "warn",
+ "useDefaultSwitchClause": "off",
+ "useShorthandAssign": "off",
+ "useSingleVarDeclarator": "off"
+ },
+ "suspicious": {
+ "noAlert": "warn",
+ "noCatchAssign": "off",
+ "noConsole": "off",
+ "noControlCharactersInRegex": "off",
+ "noDebugger": "off",
+ "noDoubleEquals": "off",
+ "noDuplicateObjectKeys": "error",
+ "noEmptyBlockStatements": "warn",
+ "noFallthroughSwitchClause": "off",
+ "noFunctionAssign": "off",
+ "noIrregularWhitespace": "warn",
+ "noLabelVar": "error",
+ "noOctalEscape": "off",
+ "noRedeclare": "warn",
+ "noSelfCompare": "warn",
+ "noShadowRestrictedNames": "off",
+ "noSparseArray": "warn",
+ "noVar": "warn",
+ "noWith": "off",
+ "useGuardForIn": "off"
+ }
+ }
+ },
+ "javascript": { "formatter": { "quoteStyle": "single" }, "globals": ["_"] },
+ "assist": {
+ "enabled": true,
+ "actions": { "source": { "organizeImports": "on" } }
+ }
+}
diff --git a/docs/astro.config.mjs b/docs/astro.config.mjs
index d899d3397..3eaa83713 100644
--- a/docs/astro.config.mjs
+++ b/docs/astro.config.mjs
@@ -63,7 +63,16 @@ export default defineConfig({
},
optimizeDeps: {
force: true,
- exclude: ['playground-elements', 'tailwindcss-iso'],
+ exclude: [
+ 'playground-elements',
+ 'tailwindcss-iso',
+ '@semantic-ui/core',
+ '@semantic-ui/query',
+ '@semantic-ui/component',
+ '@semantic-ui/utils',
+ '@semantic-ui/reactivity',
+ '@semantic-ui/templating',
+ ],
},
},
diff --git a/docs/package-lock.json b/docs/package-lock.json
index e82af5eee..7f81f7dfd 100644
--- a/docs/package-lock.json
+++ b/docs/package-lock.json
@@ -9,18 +9,18 @@
"version": "0.10.5",
"dependencies": {
"@astrojs/starlight": "^0.35.2",
- "@astrojs/vercel": "^8.2.4",
+ "@astrojs/vercel": "^8.2.6",
"@pagefind/modular-ui": "^1.3.0",
- "@semantic-ui/astro-lit": "5.1.0",
+ "@semantic-ui/astro-lit": "5.1.1",
"@webcomponents/template-shadowroot": "^0.2.1",
- "astro": "^5.12.7",
+ "astro": "^5.13.2",
"astro-expressive-code": "^0.41.3",
"link": "^2.1.1",
- "playground-elements": "^0.20.0",
+ "playground-elements": "0.18.1",
"pretty": "^2.0.0",
"pretty-json-custom-element": "^1.1.19",
"semver": "^7.7.2",
- "shiki": "^3.9.1"
+ "shiki": "^3.9.2"
},
"devDependencies": {
"@astropub/md": "^1.0.0"
@@ -33,9 +33,9 @@
"license": "MIT"
},
"node_modules/@astrojs/internal-helpers": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.6.1.tgz",
- "integrity": "sha512-l5Pqf6uZu31aG+3Lv8nl/3s4DbUzdlxTWDof4pEpto6GUJNhhCbelVi9dEyurOVyqaelwmS9oSyOWOENSfgo9A==",
+ "version": "0.7.2",
+ "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.7.2.tgz",
+ "integrity": "sha512-KCkCqR3Goym79soqEtbtLzJfqhTWMyVaizUi35FLzgGSzBotSw8DB1qwsu7U96ihOJgYhDk2nVPz+3LnXPeX6g==",
"license": "MIT"
},
"node_modules/@astrojs/markdown-remark": {
@@ -196,12 +196,12 @@
}
},
"node_modules/@astrojs/mdx": {
- "version": "4.3.1",
- "resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-4.3.1.tgz",
- "integrity": "sha512-0ynzkFd5p2IFDLPAfAcGizg44WyS0qUr43nP2vQkvrPlpoPEMeeoi1xWiWsVqQNaZ0FOmNqfUviUn52nm9mLag==",
+ "version": "4.3.4",
+ "resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-4.3.4.tgz",
+ "integrity": "sha512-Ew3iP+6zuzzJWNEH5Qr1iknrue1heEfgmfuMpuwLaSwqlUiJQ0NDb2oxKosgWU1ROYmVf1H4KCmS6QdMWKyFjw==",
"license": "MIT",
"dependencies": {
- "@astrojs/markdown-remark": "6.3.3",
+ "@astrojs/markdown-remark": "6.3.6",
"@mdx-js/mdx": "^3.1.0",
"acorn": "^8.14.1",
"es-module-lexer": "^1.6.0",
@@ -223,12 +223,12 @@
}
},
"node_modules/@astrojs/mdx/node_modules/@astrojs/markdown-remark": {
- "version": "6.3.3",
- "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-6.3.3.tgz",
- "integrity": "sha512-DDRtD1sPvAuA7ms2btc9A7/7DApKqgLMNrE6kh5tmkfy8utD0Z738gqd3p5aViYYdUtHIyEJ1X4mCMxfCfu15w==",
+ "version": "6.3.6",
+ "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-6.3.6.tgz",
+ "integrity": "sha512-bwylYktCTsLMVoCOEHbn2GSUA3c5KT/qilekBKA3CBng0bo1TYjNZPr761vxumRk9kJGqTOtU+fgCAp5Vwokug==",
"license": "MIT",
"dependencies": {
- "@astrojs/internal-helpers": "0.6.1",
+ "@astrojs/internal-helpers": "0.7.2",
"@astrojs/prism": "3.3.0",
"github-slugger": "^2.0.0",
"hast-util-from-html": "^2.0.3",
@@ -278,14 +278,14 @@
}
},
"node_modules/@astrojs/sitemap": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/@astrojs/sitemap/-/sitemap-3.3.0.tgz",
- "integrity": "sha512-nYE4lKQtk+Kbrw/w0G0TTgT724co0jUsU4tPlHY9au5HmTBKbwiCLwO/15b1/y13aZ4Kr9ZbMeMHlXuwn0ty4Q==",
+ "version": "3.5.0",
+ "resolved": "https://registry.npmjs.org/@astrojs/sitemap/-/sitemap-3.5.0.tgz",
+ "integrity": "sha512-ldOvoBxuRgpcdndzksskOTzU55g76tkHC/POpejUbPGz6zR4rJKiXh8thX4WEPWDhCTZUafhJ1qf7k1muStHfg==",
"license": "MIT",
"dependencies": {
"sitemap": "^8.0.0",
"stream-replace-string": "^2.0.0",
- "zod": "^3.24.2"
+ "zod": "^3.24.4"
}
},
"node_modules/@astrojs/starlight": {
@@ -327,12 +327,12 @@
}
},
"node_modules/@astrojs/starlight/node_modules/@astrojs/markdown-remark": {
- "version": "6.3.3",
- "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-6.3.3.tgz",
- "integrity": "sha512-DDRtD1sPvAuA7ms2btc9A7/7DApKqgLMNrE6kh5tmkfy8utD0Z738gqd3p5aViYYdUtHIyEJ1X4mCMxfCfu15w==",
+ "version": "6.3.6",
+ "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-6.3.6.tgz",
+ "integrity": "sha512-bwylYktCTsLMVoCOEHbn2GSUA3c5KT/qilekBKA3CBng0bo1TYjNZPr761vxumRk9kJGqTOtU+fgCAp5Vwokug==",
"license": "MIT",
"dependencies": {
- "@astrojs/internal-helpers": "0.6.1",
+ "@astrojs/internal-helpers": "0.7.2",
"@astrojs/prism": "3.3.0",
"github-slugger": "^2.0.0",
"hast-util-from-html": "^2.0.3",
@@ -386,12 +386,12 @@
}
},
"node_modules/@astrojs/vercel": {
- "version": "8.2.4",
- "resolved": "https://registry.npmjs.org/@astrojs/vercel/-/vercel-8.2.4.tgz",
- "integrity": "sha512-EPdXKpljdYTPJ+/yL1+ZsvrPSIc3Lzkx60c+baDp0rbPROU6RrXf9Zer9wtcT/ns4wcxiSY71Qg0UldjaCy2IA==",
+ "version": "8.2.6",
+ "resolved": "https://registry.npmjs.org/@astrojs/vercel/-/vercel-8.2.6.tgz",
+ "integrity": "sha512-ctGEoAtyWvFtUNuVECwXwDHMv6lxw1m1qcUL6ZNACFL7GIDzHhD/ipAkZsl2G4QUeVD1ig0Xo8AtFdDl34/gNg==",
"license": "MIT",
"dependencies": {
- "@astrojs/internal-helpers": "0.7.0",
+ "@astrojs/internal-helpers": "0.7.2",
"@vercel/analytics": "^1.5.0",
"@vercel/functions": "^2.2.2",
"@vercel/nft": "^0.29.2",
@@ -403,12 +403,6 @@
"astro": "^5.0.0"
}
},
- "node_modules/@astrojs/vercel/node_modules/@astrojs/internal-helpers": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.7.0.tgz",
- "integrity": "sha512-+yrFHlYnknIFxi3QfbVgyHQigkfgsU9SKMjYqijq1Q6xzPco+SmaYXgcw0W7+KnWCifni4o61cgwzMkld7jkXg==",
- "license": "MIT"
- },
"node_modules/@astropub/md": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/@astropub/md/-/md-1.0.0.tgz",
@@ -420,30 +414,30 @@
}
},
"node_modules/@babel/helper-string-parser": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz",
- "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
+ "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
"license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/helper-validator-identifier": {
- "version": "7.25.9",
- "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz",
- "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==",
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz",
+ "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==",
"license": "MIT",
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/parser": {
- "version": "7.26.10",
- "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.10.tgz",
- "integrity": "sha512-6aQR2zGE/QFi8JpDLjUZEPYOs7+mhKXm86VaKFiLP35JQwQb6bwUE+XbvkH0EptsYhbNBSUGaUBLKqxH1xSgsA==",
+ "version": "7.28.3",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.3.tgz",
+ "integrity": "sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA==",
"license": "MIT",
"dependencies": {
- "@babel/types": "^7.26.10"
+ "@babel/types": "^7.28.2"
},
"bin": {
"parser": "bin/babel-parser.js"
@@ -453,25 +447,22 @@
}
},
"node_modules/@babel/runtime": {
- "version": "7.26.10",
- "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.10.tgz",
- "integrity": "sha512-2WJMeRQPHKSPemqk/awGrAiuFfzBmOIPXKizAsVhWH9YJqLZ0H+HS4c8loHGgW6utJ3E/ejXQUsiGaQy2NZ9Fw==",
+ "version": "7.28.3",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.3.tgz",
+ "integrity": "sha512-9uIQ10o0WGdpP6GDhXcdOJPJuDgFtIDtN/9+ArJQ2NAfAmiuhTQdzkaTGR33v43GYS2UrSA0eX2pPPHoFVvpxA==",
"license": "MIT",
- "dependencies": {
- "regenerator-runtime": "^0.14.0"
- },
"engines": {
"node": ">=6.9.0"
}
},
"node_modules/@babel/types": {
- "version": "7.26.10",
- "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.10.tgz",
- "integrity": "sha512-emqcG3vHrpxUKTrxcblR36dcrcoRDvKmnL/dCL6ZsHaShW80qxCAcNhzQZrpeM765VzEos+xOi4s+r4IXzTwdQ==",
+ "version": "7.28.2",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.2.tgz",
+ "integrity": "sha512-ruv7Ae4J5dUYULmeXw1gmb7rYRz57OWCPM57pHojnLq/3Z1CK2lNSLTCVjxVk1F/TZHwOZZrOWi0ur95BbLxNQ==",
"license": "MIT",
"dependencies": {
- "@babel/helper-string-parser": "^7.25.9",
- "@babel/helper-validator-identifier": "^7.25.9"
+ "@babel/helper-string-parser": "^7.27.1",
+ "@babel/helper-validator-identifier": "^7.27.1"
},
"engines": {
"node": ">=6.9.0"
@@ -498,9 +489,9 @@
}
},
"node_modules/@emnapi/runtime": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.3.1.tgz",
- "integrity": "sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==",
+ "version": "1.4.5",
+ "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.5.tgz",
+ "integrity": "sha512-++LApOtY0pEEz1zrd9vy1/zXVaVJJ/EbAF3u0fXIzPJEDtnITsBGbbK0EkM72amhl/R5b+5xx0Y/QhcVOpuulg==",
"license": "MIT",
"optional": true,
"dependencies": {
@@ -508,9 +499,9 @@
}
},
"node_modules/@esbuild/aix-ppc64": {
- "version": "0.25.1",
- "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.1.tgz",
- "integrity": "sha512-kfYGy8IdzTGy+z0vFGvExZtxkFlA4zAxgKEahG9KE1ScBjpQnFsNOX8KTU5ojNru5ed5CVoJYXFtoxaq5nFbjQ==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.9.tgz",
+ "integrity": "sha512-OaGtL73Jck6pBKjNIe24BnFE6agGl+6KxDtTfHhy1HmhthfKouEcOhqpSL64K4/0WCtbKFLOdzD/44cJ4k9opA==",
"cpu": [
"ppc64"
],
@@ -524,9 +515,9 @@
}
},
"node_modules/@esbuild/android-arm": {
- "version": "0.25.1",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.1.tgz",
- "integrity": "sha512-dp+MshLYux6j/JjdqVLnMglQlFu+MuVeNrmT5nk6q07wNhCdSnB7QZj+7G8VMUGh1q+vj2Bq8kRsuyA00I/k+Q==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.9.tgz",
+ "integrity": "sha512-5WNI1DaMtxQ7t7B6xa572XMXpHAaI/9Hnhk8lcxF4zVN4xstUgTlvuGDorBguKEnZO70qwEcLpfifMLoxiPqHQ==",
"cpu": [
"arm"
],
@@ -540,9 +531,9 @@
}
},
"node_modules/@esbuild/android-arm64": {
- "version": "0.25.1",
- "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.1.tgz",
- "integrity": "sha512-50tM0zCJW5kGqgG7fQ7IHvQOcAn9TKiVRuQ/lN0xR+T2lzEFvAi1ZcS8DiksFcEpf1t/GYOeOfCAgDHFpkiSmA==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.9.tgz",
+ "integrity": "sha512-IDrddSmpSv51ftWslJMvl3Q2ZT98fUSL2/rlUXuVqRXHCs5EUF1/f+jbjF5+NG9UffUDMCiTyh8iec7u8RlTLg==",
"cpu": [
"arm64"
],
@@ -556,9 +547,9 @@
}
},
"node_modules/@esbuild/android-x64": {
- "version": "0.25.1",
- "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.1.tgz",
- "integrity": "sha512-GCj6WfUtNldqUzYkN/ITtlhwQqGWu9S45vUXs7EIYf+7rCiiqH9bCloatO9VhxsL0Pji+PF4Lz2XXCES+Q8hDw==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.9.tgz",
+ "integrity": "sha512-I853iMZ1hWZdNllhVZKm34f4wErd4lMyeV7BLzEExGEIZYsOzqDWDf+y082izYUE8gtJnYHdeDpN/6tUdwvfiw==",
"cpu": [
"x64"
],
@@ -572,9 +563,9 @@
}
},
"node_modules/@esbuild/darwin-arm64": {
- "version": "0.25.1",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.1.tgz",
- "integrity": "sha512-5hEZKPf+nQjYoSr/elb62U19/l1mZDdqidGfmFutVUjjUZrOazAtwK+Kr+3y0C/oeJfLlxo9fXb1w7L+P7E4FQ==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.9.tgz",
+ "integrity": "sha512-XIpIDMAjOELi/9PB30vEbVMs3GV1v2zkkPnuyRRURbhqjyzIINwj+nbQATh4H9GxUgH1kFsEyQMxwiLFKUS6Rg==",
"cpu": [
"arm64"
],
@@ -588,9 +579,9 @@
}
},
"node_modules/@esbuild/darwin-x64": {
- "version": "0.25.1",
- "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.1.tgz",
- "integrity": "sha512-hxVnwL2Dqs3fM1IWq8Iezh0cX7ZGdVhbTfnOy5uURtao5OIVCEyj9xIzemDi7sRvKsuSdtCAhMKarxqtlyVyfA==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.9.tgz",
+ "integrity": "sha512-jhHfBzjYTA1IQu8VyrjCX4ApJDnH+ez+IYVEoJHeqJm9VhG9Dh2BYaJritkYK3vMaXrf7Ogr/0MQ8/MeIefsPQ==",
"cpu": [
"x64"
],
@@ -604,9 +595,9 @@
}
},
"node_modules/@esbuild/freebsd-arm64": {
- "version": "0.25.1",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.1.tgz",
- "integrity": "sha512-1MrCZs0fZa2g8E+FUo2ipw6jw5qqQiH+tERoS5fAfKnRx6NXH31tXBKI3VpmLijLH6yriMZsxJtaXUyFt/8Y4A==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.9.tgz",
+ "integrity": "sha512-z93DmbnY6fX9+KdD4Ue/H6sYs+bhFQJNCPZsi4XWJoYblUqT06MQUdBCpcSfuiN72AbqeBFu5LVQTjfXDE2A6Q==",
"cpu": [
"arm64"
],
@@ -620,9 +611,9 @@
}
},
"node_modules/@esbuild/freebsd-x64": {
- "version": "0.25.1",
- "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.1.tgz",
- "integrity": "sha512-0IZWLiTyz7nm0xuIs0q1Y3QWJC52R8aSXxe40VUxm6BB1RNmkODtW6LHvWRrGiICulcX7ZvyH6h5fqdLu4gkww==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.9.tgz",
+ "integrity": "sha512-mrKX6H/vOyo5v71YfXWJxLVxgy1kyt1MQaD8wZJgJfG4gq4DpQGpgTB74e5yBeQdyMTbgxp0YtNj7NuHN0PoZg==",
"cpu": [
"x64"
],
@@ -636,9 +627,9 @@
}
},
"node_modules/@esbuild/linux-arm": {
- "version": "0.25.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.1.tgz",
- "integrity": "sha512-NdKOhS4u7JhDKw9G3cY6sWqFcnLITn6SqivVArbzIaf3cemShqfLGHYMx8Xlm/lBit3/5d7kXvriTUGa5YViuQ==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.9.tgz",
+ "integrity": "sha512-HBU2Xv78SMgaydBmdor38lg8YDnFKSARg1Q6AT0/y2ezUAKiZvc211RDFHlEZRFNRVhcMamiToo7bDx3VEOYQw==",
"cpu": [
"arm"
],
@@ -652,9 +643,9 @@
}
},
"node_modules/@esbuild/linux-arm64": {
- "version": "0.25.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.1.tgz",
- "integrity": "sha512-jaN3dHi0/DDPelk0nLcXRm1q7DNJpjXy7yWaWvbfkPvI+7XNSc/lDOnCLN7gzsyzgu6qSAmgSvP9oXAhP973uQ==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.9.tgz",
+ "integrity": "sha512-BlB7bIcLT3G26urh5Dmse7fiLmLXnRlopw4s8DalgZ8ef79Jj4aUcYbk90g8iCa2467HX8SAIidbL7gsqXHdRw==",
"cpu": [
"arm64"
],
@@ -668,9 +659,9 @@
}
},
"node_modules/@esbuild/linux-ia32": {
- "version": "0.25.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.1.tgz",
- "integrity": "sha512-OJykPaF4v8JidKNGz8c/q1lBO44sQNUQtq1KktJXdBLn1hPod5rE/Hko5ugKKZd+D2+o1a9MFGUEIUwO2YfgkQ==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.9.tgz",
+ "integrity": "sha512-e7S3MOJPZGp2QW6AK6+Ly81rC7oOSerQ+P8L0ta4FhVi+/j/v2yZzx5CqqDaWjtPFfYz21Vi1S0auHrap3Ma3A==",
"cpu": [
"ia32"
],
@@ -684,9 +675,9 @@
}
},
"node_modules/@esbuild/linux-loong64": {
- "version": "0.25.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.1.tgz",
- "integrity": "sha512-nGfornQj4dzcq5Vp835oM/o21UMlXzn79KobKlcs3Wz9smwiifknLy4xDCLUU0BWp7b/houtdrgUz7nOGnfIYg==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.9.tgz",
+ "integrity": "sha512-Sbe10Bnn0oUAB2AalYztvGcK+o6YFFA/9829PhOCUS9vkJElXGdphz0A3DbMdP8gmKkqPmPcMJmJOrI3VYB1JQ==",
"cpu": [
"loong64"
],
@@ -700,9 +691,9 @@
}
},
"node_modules/@esbuild/linux-mips64el": {
- "version": "0.25.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.1.tgz",
- "integrity": "sha512-1osBbPEFYwIE5IVB/0g2X6i1qInZa1aIoj1TdL4AaAb55xIIgbg8Doq6a5BzYWgr+tEcDzYH67XVnTmUzL+nXg==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.9.tgz",
+ "integrity": "sha512-YcM5br0mVyZw2jcQeLIkhWtKPeVfAerES5PvOzaDxVtIyZ2NUBZKNLjC5z3/fUlDgT6w89VsxP2qzNipOaaDyA==",
"cpu": [
"mips64el"
],
@@ -716,9 +707,9 @@
}
},
"node_modules/@esbuild/linux-ppc64": {
- "version": "0.25.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.1.tgz",
- "integrity": "sha512-/6VBJOwUf3TdTvJZ82qF3tbLuWsscd7/1w+D9LH0W/SqUgM5/JJD0lrJ1fVIfZsqB6RFmLCe0Xz3fmZc3WtyVg==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.9.tgz",
+ "integrity": "sha512-++0HQvasdo20JytyDpFvQtNrEsAgNG2CY1CLMwGXfFTKGBGQT3bOeLSYE2l1fYdvML5KUuwn9Z8L1EWe2tzs1w==",
"cpu": [
"ppc64"
],
@@ -732,9 +723,9 @@
}
},
"node_modules/@esbuild/linux-riscv64": {
- "version": "0.25.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.1.tgz",
- "integrity": "sha512-nSut/Mx5gnilhcq2yIMLMe3Wl4FK5wx/o0QuuCLMtmJn+WeWYoEGDN1ipcN72g1WHsnIbxGXd4i/MF0gTcuAjQ==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.9.tgz",
+ "integrity": "sha512-uNIBa279Y3fkjV+2cUjx36xkx7eSjb8IvnL01eXUKXez/CBHNRw5ekCGMPM0BcmqBxBcdgUWuUXmVWwm4CH9kg==",
"cpu": [
"riscv64"
],
@@ -748,9 +739,9 @@
}
},
"node_modules/@esbuild/linux-s390x": {
- "version": "0.25.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.1.tgz",
- "integrity": "sha512-cEECeLlJNfT8kZHqLarDBQso9a27o2Zd2AQ8USAEoGtejOrCYHNtKP8XQhMDJMtthdF4GBmjR2au3x1udADQQQ==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.9.tgz",
+ "integrity": "sha512-Mfiphvp3MjC/lctb+7D287Xw1DGzqJPb/J2aHHcHxflUo+8tmN/6d4k6I2yFR7BVo5/g7x2Monq4+Yew0EHRIA==",
"cpu": [
"s390x"
],
@@ -764,9 +755,9 @@
}
},
"node_modules/@esbuild/linux-x64": {
- "version": "0.25.1",
- "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.1.tgz",
- "integrity": "sha512-xbfUhu/gnvSEg+EGovRc+kjBAkrvtk38RlerAzQxvMzlB4fXpCFCeUAYzJvrnhFtdeyVCDANSjJvOvGYoeKzFA==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.9.tgz",
+ "integrity": "sha512-iSwByxzRe48YVkmpbgoxVzn76BXjlYFXC7NvLYq+b+kDjyyk30J0JY47DIn8z1MO3K0oSl9fZoRmZPQI4Hklzg==",
"cpu": [
"x64"
],
@@ -780,9 +771,9 @@
}
},
"node_modules/@esbuild/netbsd-arm64": {
- "version": "0.25.1",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.1.tgz",
- "integrity": "sha512-O96poM2XGhLtpTh+s4+nP7YCCAfb4tJNRVZHfIE7dgmax+yMP2WgMd2OecBuaATHKTHsLWHQeuaxMRnCsH8+5g==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.9.tgz",
+ "integrity": "sha512-9jNJl6FqaUG+COdQMjSCGW4QiMHH88xWbvZ+kRVblZsWrkXlABuGdFJ1E9L7HK+T0Yqd4akKNa/lO0+jDxQD4Q==",
"cpu": [
"arm64"
],
@@ -796,9 +787,9 @@
}
},
"node_modules/@esbuild/netbsd-x64": {
- "version": "0.25.1",
- "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.1.tgz",
- "integrity": "sha512-X53z6uXip6KFXBQ+Krbx25XHV/NCbzryM6ehOAeAil7X7oa4XIq+394PWGnwaSQ2WRA0KI6PUO6hTO5zeF5ijA==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.9.tgz",
+ "integrity": "sha512-RLLdkflmqRG8KanPGOU7Rpg829ZHu8nFy5Pqdi9U01VYtG9Y0zOG6Vr2z4/S+/3zIyOxiK6cCeYNWOFR9QP87g==",
"cpu": [
"x64"
],
@@ -812,9 +803,9 @@
}
},
"node_modules/@esbuild/openbsd-arm64": {
- "version": "0.25.1",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.1.tgz",
- "integrity": "sha512-Na9T3szbXezdzM/Kfs3GcRQNjHzM6GzFBeU1/6IV/npKP5ORtp9zbQjvkDJ47s6BCgaAZnnnu/cY1x342+MvZg==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.9.tgz",
+ "integrity": "sha512-YaFBlPGeDasft5IIM+CQAhJAqS3St3nJzDEgsgFixcfZeyGPCd6eJBWzke5piZuZ7CtL656eOSYKk4Ls2C0FRQ==",
"cpu": [
"arm64"
],
@@ -828,9 +819,9 @@
}
},
"node_modules/@esbuild/openbsd-x64": {
- "version": "0.25.1",
- "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.1.tgz",
- "integrity": "sha512-T3H78X2h1tszfRSf+txbt5aOp/e7TAz3ptVKu9Oyir3IAOFPGV6O9c2naym5TOriy1l0nNf6a4X5UXRZSGX/dw==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.9.tgz",
+ "integrity": "sha512-1MkgTCuvMGWuqVtAvkpkXFmtL8XhWy+j4jaSO2wxfJtilVCi0ZE37b8uOdMItIHz4I6z1bWWtEX4CJwcKYLcuA==",
"cpu": [
"x64"
],
@@ -843,10 +834,26 @@
"node": ">=18"
}
},
+ "node_modules/@esbuild/openharmony-arm64": {
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.9.tgz",
+ "integrity": "sha512-4Xd0xNiMVXKh6Fa7HEJQbrpP3m3DDn43jKxMjxLLRjWnRsfxjORYJlXPO4JNcXtOyfajXorRKY9NkOpTHptErg==",
+ "cpu": [
+ "arm64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/@esbuild/sunos-x64": {
- "version": "0.25.1",
- "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.1.tgz",
- "integrity": "sha512-2H3RUvcmULO7dIE5EWJH8eubZAI4xw54H1ilJnRNZdeo8dTADEZ21w6J22XBkXqGJbe0+wnNJtw3UXRoLJnFEg==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.9.tgz",
+ "integrity": "sha512-WjH4s6hzo00nNezhp3wFIAfmGZ8U7KtrJNlFMRKxiI9mxEK1scOMAaa9i4crUtu+tBr+0IN6JCuAcSBJZfnphw==",
"cpu": [
"x64"
],
@@ -860,9 +867,9 @@
}
},
"node_modules/@esbuild/win32-arm64": {
- "version": "0.25.1",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.1.tgz",
- "integrity": "sha512-GE7XvrdOzrb+yVKB9KsRMq+7a2U/K5Cf/8grVFRAGJmfADr/e/ODQ134RK2/eeHqYV5eQRFxb1hY7Nr15fv1NQ==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.9.tgz",
+ "integrity": "sha512-mGFrVJHmZiRqmP8xFOc6b84/7xa5y5YvR1x8djzXpJBSv/UsNK6aqec+6JDjConTgvvQefdGhFDAs2DLAds6gQ==",
"cpu": [
"arm64"
],
@@ -876,9 +883,9 @@
}
},
"node_modules/@esbuild/win32-ia32": {
- "version": "0.25.1",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.1.tgz",
- "integrity": "sha512-uOxSJCIcavSiT6UnBhBzE8wy3n0hOkJsBOzy7HDAuTDE++1DJMRRVCPGisULScHL+a/ZwdXPpXD3IyFKjA7K8A==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.9.tgz",
+ "integrity": "sha512-b33gLVU2k11nVx1OhX3C8QQP6UHQK4ZtN56oFWvVXvz2VkDoe6fbG8TOgHFxEvqeqohmRnIHe5A1+HADk4OQww==",
"cpu": [
"ia32"
],
@@ -892,9 +899,9 @@
}
},
"node_modules/@esbuild/win32-x64": {
- "version": "0.25.1",
- "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.1.tgz",
- "integrity": "sha512-Y1EQdcfwMSeQN/ujR5VayLOJ1BHaK+ssyk0AEzPjC+t1lITgsnccPqFjb6V+LsTp/9Iov4ysfjxLaGJ9RPtkVg==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.9.tgz",
+ "integrity": "sha512-PPOl1mi6lpLNQxnGoyAfschAodRFYXJ+9fs6WHXz7CSWKbOqiMZsubC+BQsVKuul+3vKLuwTHsS2c2y9EoKwxQ==",
"cpu": [
"x64"
],
@@ -1383,9 +1390,9 @@
}
},
"node_modules/@jridgewell/sourcemap-codec": {
- "version": "1.5.0",
- "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz",
- "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==",
+ "version": "1.5.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
+ "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
"license": "MIT"
},
"node_modules/@lit-labs/ssr": {
@@ -1422,18 +1429,30 @@
}
},
"node_modules/@lit-labs/ssr-dom-shim": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.3.0.tgz",
- "integrity": "sha512-nQIWonJ6eFAvUUrSlwyHDm/aE8PBDu5kRpL0vHMg6K8fK3Diq1xdPjTnsJSwxABhaZ+5eBi1btQB5ShUTKo4nQ==",
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/@lit-labs/ssr-dom-shim/-/ssr-dom-shim-1.4.0.tgz",
+ "integrity": "sha512-ficsEARKnmmW5njugNYKipTm4SFnbik7CXtoencDZzmzo/dQ+2Q0bgkzJuoJP20Aj0F+izzJjOqsnkd6F/o1bw==",
"license": "BSD-3-Clause"
},
+ "node_modules/@lit-labs/ssr/node_modules/parse5": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz",
+ "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==",
+ "license": "MIT",
+ "dependencies": {
+ "entities": "^6.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/inikulin/parse5?sponsor=1"
+ }
+ },
"node_modules/@lit/reactive-element": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.0.4.tgz",
- "integrity": "sha512-GFn91inaUa2oHLak8awSIigYz0cU0Payr1rcFsrkf5OJ5eSPxElyZfKh0f2p9FsTiZWXQdWGJeXZICEfXXYSXQ==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-2.1.1.tgz",
+ "integrity": "sha512-N+dm5PAYdQ8e6UlywyyrgI2t++wFGXfHx+dSJ1oBrg6FAxUj40jId++EaRm80MKX5JnlH1sBsyZ5h0bcZKemCg==",
"license": "BSD-3-Clause",
"dependencies": {
- "@lit-labs/ssr-dom-shim": "^1.2.0"
+ "@lit-labs/ssr-dom-shim": "^1.4.0"
}
},
"node_modules/@mapbox/node-pre-gyp": {
@@ -2677,6 +2696,18 @@
"parse5": "^7.0.0"
}
},
+ "node_modules/@parse5/tools/node_modules/parse5": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz",
+ "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==",
+ "license": "MIT",
+ "dependencies": {
+ "entities": "^6.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/inikulin/parse5?sponsor=1"
+ }
+ },
"node_modules/@pkgjs/parseargs": {
"version": "0.11.0",
"resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
@@ -2688,9 +2719,9 @@
}
},
"node_modules/@rollup/pluginutils": {
- "version": "5.1.4",
- "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.4.tgz",
- "integrity": "sha512-USm05zrsFxYLPdWWq+K3STlWiT/3ELn3RcV5hJMghpeAIhxfsUIg6mt12CBJBInWMV4VneoV7SfGv8xIwo2qNQ==",
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.2.0.tgz",
+ "integrity": "sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw==",
"license": "MIT",
"dependencies": {
"@types/estree": "^1.0.0",
@@ -2716,9 +2747,9 @@
"license": "MIT"
},
"node_modules/@rollup/rollup-android-arm-eabi": {
- "version": "4.36.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.36.0.tgz",
- "integrity": "sha512-jgrXjjcEwN6XpZXL0HUeOVGfjXhPyxAbbhD0BlXUB+abTOpbPiN5Wb3kOT7yb+uEtATNYF5x5gIfwutmuBA26w==",
+ "version": "4.46.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.46.3.tgz",
+ "integrity": "sha512-UmTdvXnLlqQNOCJnyksjPs1G4GqXNGW1LrzCe8+8QoaLhhDeTXYBgJ3k6x61WIhlHX2U+VzEJ55TtIjR/HTySA==",
"cpu": [
"arm"
],
@@ -2729,9 +2760,9 @@
]
},
"node_modules/@rollup/rollup-android-arm64": {
- "version": "4.36.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.36.0.tgz",
- "integrity": "sha512-NyfuLvdPdNUfUNeYKUwPwKsE5SXa2J6bCt2LdB/N+AxShnkpiczi3tcLJrm5mA+eqpy0HmaIY9F6XCa32N5yzg==",
+ "version": "4.46.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.46.3.tgz",
+ "integrity": "sha512-8NoxqLpXm7VyeI0ocidh335D6OKT0UJ6fHdnIxf3+6oOerZZc+O7r+UhvROji6OspyPm+rrIdb1gTXtVIqn+Sg==",
"cpu": [
"arm64"
],
@@ -2742,9 +2773,9 @@
]
},
"node_modules/@rollup/rollup-darwin-arm64": {
- "version": "4.36.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.36.0.tgz",
- "integrity": "sha512-JQ1Jk5G4bGrD4pWJQzWsD8I1n1mgPXq33+/vP4sk8j/z/C2siRuxZtaUA7yMTf71TCZTZl/4e1bfzwUmFb3+rw==",
+ "version": "4.46.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.46.3.tgz",
+ "integrity": "sha512-csnNavqZVs1+7/hUKtgjMECsNG2cdB8F7XBHP6FfQjqhjF8rzMzb3SLyy/1BG7YSfQ+bG75Ph7DyedbUqwq1rA==",
"cpu": [
"arm64"
],
@@ -2755,9 +2786,9 @@
]
},
"node_modules/@rollup/rollup-darwin-x64": {
- "version": "4.36.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.36.0.tgz",
- "integrity": "sha512-6c6wMZa1lrtiRsbDziCmjE53YbTkxMYhhnWnSW8R/yqsM7a6mSJ3uAVT0t8Y/DGt7gxUWYuFM4bwWk9XCJrFKA==",
+ "version": "4.46.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.46.3.tgz",
+ "integrity": "sha512-r2MXNjbuYabSIX5yQqnT8SGSQ26XQc8fmp6UhlYJd95PZJkQD1u82fWP7HqvGUf33IsOC6qsiV+vcuD4SDP6iw==",
"cpu": [
"x64"
],
@@ -2768,9 +2799,9 @@
]
},
"node_modules/@rollup/rollup-freebsd-arm64": {
- "version": "4.36.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.36.0.tgz",
- "integrity": "sha512-KXVsijKeJXOl8QzXTsA+sHVDsFOmMCdBRgFmBb+mfEb/7geR7+C8ypAml4fquUt14ZyVXaw2o1FWhqAfOvA4sg==",
+ "version": "4.46.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.46.3.tgz",
+ "integrity": "sha512-uluObTmgPJDuJh9xqxyr7MV61Imq+0IvVsAlWyvxAaBSNzCcmZlhfYcRhCdMaCsy46ccZa7vtDDripgs9Jkqsw==",
"cpu": [
"arm64"
],
@@ -2781,9 +2812,9 @@
]
},
"node_modules/@rollup/rollup-freebsd-x64": {
- "version": "4.36.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.36.0.tgz",
- "integrity": "sha512-dVeWq1ebbvByI+ndz4IJcD4a09RJgRYmLccwlQ8bPd4olz3Y213uf1iwvc7ZaxNn2ab7bjc08PrtBgMu6nb4pQ==",
+ "version": "4.46.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.46.3.tgz",
+ "integrity": "sha512-AVJXEq9RVHQnejdbFvh1eWEoobohUYN3nqJIPI4mNTMpsyYN01VvcAClxflyk2HIxvLpRcRggpX1m9hkXkpC/A==",
"cpu": [
"x64"
],
@@ -2794,9 +2825,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm-gnueabihf": {
- "version": "4.36.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.36.0.tgz",
- "integrity": "sha512-bvXVU42mOVcF4le6XSjscdXjqx8okv4n5vmwgzcmtvFdifQ5U4dXFYaCB87namDRKlUL9ybVtLQ9ztnawaSzvg==",
+ "version": "4.46.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.46.3.tgz",
+ "integrity": "sha512-byyflM+huiwHlKi7VHLAYTKr67X199+V+mt1iRgJenAI594vcmGGddWlu6eHujmcdl6TqSNnvqaXJqZdnEWRGA==",
"cpu": [
"arm"
],
@@ -2807,9 +2838,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm-musleabihf": {
- "version": "4.36.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.36.0.tgz",
- "integrity": "sha512-JFIQrDJYrxOnyDQGYkqnNBtjDwTgbasdbUiQvcU8JmGDfValfH1lNpng+4FWlhaVIR4KPkeddYjsVVbmJYvDcg==",
+ "version": "4.46.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.46.3.tgz",
+ "integrity": "sha512-aLm3NMIjr4Y9LklrH5cu7yybBqoVCdr4Nvnm8WB7PKCn34fMCGypVNpGK0JQWdPAzR/FnoEoFtlRqZbBBLhVoQ==",
"cpu": [
"arm"
],
@@ -2820,9 +2851,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm64-gnu": {
- "version": "4.36.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.36.0.tgz",
- "integrity": "sha512-KqjYVh3oM1bj//5X7k79PSCZ6CvaVzb7Qs7VMWS+SlWB5M8p3FqufLP9VNp4CazJ0CsPDLwVD9r3vX7Ci4J56A==",
+ "version": "4.46.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.46.3.tgz",
+ "integrity": "sha512-VtilE6eznJRDIoFOzaagQodUksTEfLIsvXymS+UdJiSXrPW7Ai+WG4uapAc3F7Hgs791TwdGh4xyOzbuzIZrnw==",
"cpu": [
"arm64"
],
@@ -2833,9 +2864,9 @@
]
},
"node_modules/@rollup/rollup-linux-arm64-musl": {
- "version": "4.36.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.36.0.tgz",
- "integrity": "sha512-QiGnhScND+mAAtfHqeT+cB1S9yFnNQ/EwCg5yE3MzoaZZnIV0RV9O5alJAoJKX/sBONVKeZdMfO8QSaWEygMhw==",
+ "version": "4.46.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.46.3.tgz",
+ "integrity": "sha512-dG3JuS6+cRAL0GQ925Vppafi0qwZnkHdPeuZIxIPXqkCLP02l7ka+OCyBoDEv8S+nKHxfjvjW4OZ7hTdHkx8/w==",
"cpu": [
"arm64"
],
@@ -2846,9 +2877,9 @@
]
},
"node_modules/@rollup/rollup-linux-loongarch64-gnu": {
- "version": "4.36.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.36.0.tgz",
- "integrity": "sha512-1ZPyEDWF8phd4FQtTzMh8FQwqzvIjLsl6/84gzUxnMNFBtExBtpL51H67mV9xipuxl1AEAerRBgBwFNpkw8+Lg==",
+ "version": "4.46.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.46.3.tgz",
+ "integrity": "sha512-iU8DxnxEKJptf8Vcx4XvAUdpkZfaz0KWfRrnIRrOndL0SvzEte+MTM7nDH4A2Now4FvTZ01yFAgj6TX/mZl8hQ==",
"cpu": [
"loong64"
],
@@ -2858,10 +2889,10 @@
"linux"
]
},
- "node_modules/@rollup/rollup-linux-powerpc64le-gnu": {
- "version": "4.36.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.36.0.tgz",
- "integrity": "sha512-VMPMEIUpPFKpPI9GZMhJrtu8rxnp6mJR3ZzQPykq4xc2GmdHj3Q4cA+7avMyegXy4n1v+Qynr9fR88BmyO74tg==",
+ "node_modules/@rollup/rollup-linux-ppc64-gnu": {
+ "version": "4.46.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.46.3.tgz",
+ "integrity": "sha512-VrQZp9tkk0yozJoQvQcqlWiqaPnLM6uY1qPYXvukKePb0fqaiQtOdMJSxNFUZFsGw5oA5vvVokjHrx8a9Qsz2A==",
"cpu": [
"ppc64"
],
@@ -2872,9 +2903,22 @@
]
},
"node_modules/@rollup/rollup-linux-riscv64-gnu": {
- "version": "4.36.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.36.0.tgz",
- "integrity": "sha512-ttE6ayb/kHwNRJGYLpuAvB7SMtOeQnVXEIpMtAvx3kepFQeowVED0n1K9nAdraHUPJ5hydEMxBpIR7o4nrm8uA==",
+ "version": "4.46.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.46.3.tgz",
+ "integrity": "sha512-uf2eucWSUb+M7b0poZ/08LsbcRgaDYL8NCGjUeFMwCWFwOuFcZ8D9ayPl25P3pl+D2FH45EbHdfyUesQ2Lt9wA==",
+ "cpu": [
+ "riscv64"
+ ],
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@rollup/rollup-linux-riscv64-musl": {
+ "version": "4.46.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.46.3.tgz",
+ "integrity": "sha512-7tnUcDvN8DHm/9ra+/nF7lLzYHDeODKKKrh6JmZejbh1FnCNZS8zMkZY5J4sEipy2OW1d1Ncc4gNHUd0DLqkSg==",
"cpu": [
"riscv64"
],
@@ -2885,9 +2929,9 @@
]
},
"node_modules/@rollup/rollup-linux-s390x-gnu": {
- "version": "4.36.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.36.0.tgz",
- "integrity": "sha512-4a5gf2jpS0AIe7uBjxDeUMNcFmaRTbNv7NxI5xOCs4lhzsVyGR/0qBXduPnoWf6dGC365saTiwag8hP1imTgag==",
+ "version": "4.46.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.46.3.tgz",
+ "integrity": "sha512-MUpAOallJim8CsJK+4Lc9tQzlfPbHxWDrGXZm2z6biaadNpvh3a5ewcdat478W+tXDoUiHwErX/dOql7ETcLqg==",
"cpu": [
"s390x"
],
@@ -2898,9 +2942,9 @@
]
},
"node_modules/@rollup/rollup-linux-x64-gnu": {
- "version": "4.36.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.36.0.tgz",
- "integrity": "sha512-5KtoW8UWmwFKQ96aQL3LlRXX16IMwyzMq/jSSVIIyAANiE1doaQsx/KRyhAvpHlPjPiSU/AYX/8m+lQ9VToxFQ==",
+ "version": "4.46.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.46.3.tgz",
+ "integrity": "sha512-F42IgZI4JicE2vM2PWCe0N5mR5vR0gIdORPqhGQ32/u1S1v3kLtbZ0C/mi9FFk7C5T0PgdeyWEPajPjaUpyoKg==",
"cpu": [
"x64"
],
@@ -2911,9 +2955,9 @@
]
},
"node_modules/@rollup/rollup-linux-x64-musl": {
- "version": "4.36.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.36.0.tgz",
- "integrity": "sha512-sycrYZPrv2ag4OCvaN5js+f01eoZ2U+RmT5as8vhxiFz+kxwlHrsxOwKPSA8WyS+Wc6Epid9QeI/IkQ9NkgYyQ==",
+ "version": "4.46.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.46.3.tgz",
+ "integrity": "sha512-oLc+JrwwvbimJUInzx56Q3ujL3Kkhxehg7O1gWAYzm8hImCd5ld1F2Gry5YDjR21MNb5WCKhC9hXgU7rRlyegQ==",
"cpu": [
"x64"
],
@@ -2924,9 +2968,9 @@
]
},
"node_modules/@rollup/rollup-win32-arm64-msvc": {
- "version": "4.36.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.36.0.tgz",
- "integrity": "sha512-qbqt4N7tokFwwSVlWDsjfoHgviS3n/vZ8LK0h1uLG9TYIRuUTJC88E1xb3LM2iqZ/WTqNQjYrtmtGmrmmawB6A==",
+ "version": "4.46.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.46.3.tgz",
+ "integrity": "sha512-lOrQ+BVRstruD1fkWg9yjmumhowR0oLAAzavB7yFSaGltY8klttmZtCLvOXCmGE9mLIn8IBV/IFrQOWz5xbFPg==",
"cpu": [
"arm64"
],
@@ -2937,9 +2981,9 @@
]
},
"node_modules/@rollup/rollup-win32-ia32-msvc": {
- "version": "4.36.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.36.0.tgz",
- "integrity": "sha512-t+RY0JuRamIocMuQcfwYSOkmdX9dtkr1PbhKW42AMvaDQa+jOdpUYysroTF/nuPpAaQMWp7ye+ndlmmthieJrQ==",
+ "version": "4.46.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.46.3.tgz",
+ "integrity": "sha512-vvrVKPRS4GduGR7VMH8EylCBqsDcw6U+/0nPDuIjXQRbHJc6xOBj+frx8ksfZAh6+Fptw5wHrN7etlMmQnPQVg==",
"cpu": [
"ia32"
],
@@ -2950,9 +2994,9 @@
]
},
"node_modules/@rollup/rollup-win32-x64-msvc": {
- "version": "4.36.0",
- "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.36.0.tgz",
- "integrity": "sha512-aRXd7tRZkWLqGbChgcMMDEHjOKudo1kChb1Jt1IfR8cY/KIpgNviLeJy5FUb9IpSuQj8dU2fAYNMPW/hLKOSTw==",
+ "version": "4.46.3",
+ "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.46.3.tgz",
+ "integrity": "sha512-fi3cPxCnu3ZeM3EwKZPgXbWoGzm2XHgB/WShKI81uj8wG0+laobmqy5wbgEwzstlbLu4MyO8C19FyhhWseYKNQ==",
"cpu": [
"x64"
],
@@ -2963,76 +3007,75 @@
]
},
"node_modules/@semantic-ui/astro-lit": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/@semantic-ui/astro-lit/-/astro-lit-5.1.0.tgz",
- "integrity": "sha512-UCBN8aZCOClZqQmc5xAufnjk8FESBK4HtgtU+nPAiaXfJEaVkQZXl/gHP38n5rrVpl1E3VesUzbl3WVYLSzMCQ==",
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/@semantic-ui/astro-lit/-/astro-lit-5.1.1.tgz",
+ "integrity": "sha512-PFbWlSlG0uovWHbUeV4LZfFXCrqTHL+IuMlzqKPg664o0mdz/48gZaFxSdpJgJ88xda9+fqAupIIo4WYQjHfFQ==",
"license": "MIT",
"dependencies": {
"@lit-labs/ssr": "^3.3.1",
"@lit-labs/ssr-client": "^1.1.7",
- "@lit-labs/ssr-dom-shim": "^1.3.0",
- "parse5": "^7.2.1"
+ "@lit-labs/ssr-dom-shim": "^1.4.0",
+ "parse5": "^8.0.0"
},
"peerDependencies": {
- "@webcomponents/template-shadowroot": "^0.2.1",
- "lit": "^3.2.0"
+ "@webcomponents/template-shadowroot": "^0.2.1"
}
},
"node_modules/@shikijs/core": {
- "version": "3.9.1",
- "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.9.1.tgz",
- "integrity": "sha512-W5Vwen0KJCtR7KFRo+3JLGAqLUPsfW7e+wZ4yaRBGIogwI9ZlnkpRm9ZV8JtfzMxOkIwZwMmmN0hNErLtm3AYg==",
+ "version": "3.9.2",
+ "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.9.2.tgz",
+ "integrity": "sha512-3q/mzmw09B2B6PgFNeiaN8pkNOixWS726IHmJEpjDAcneDPMQmUg2cweT9cWXY4XcyQS3i6mOOUgQz9RRUP6HA==",
"license": "MIT",
"dependencies": {
- "@shikijs/types": "3.9.1",
+ "@shikijs/types": "3.9.2",
"@shikijs/vscode-textmate": "^10.0.2",
"@types/hast": "^3.0.4",
"hast-util-to-html": "^9.0.5"
}
},
"node_modules/@shikijs/engine-javascript": {
- "version": "3.9.1",
- "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.9.1.tgz",
- "integrity": "sha512-4hGenxYpAmtALryKsdli2K58F0s7RBYpj/RSDcAAGfRM6eTEGI5cZnt86mr+d9/4BaZ5sH5s4p3VU5irIdhj9Q==",
+ "version": "3.9.2",
+ "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.9.2.tgz",
+ "integrity": "sha512-kUTRVKPsB/28H5Ko6qEsyudBiWEDLst+Sfi+hwr59E0GLHV0h8RfgbQU7fdN5Lt9A8R1ulRiZyTvAizkROjwDA==",
"license": "MIT",
"dependencies": {
- "@shikijs/types": "3.9.1",
+ "@shikijs/types": "3.9.2",
"@shikijs/vscode-textmate": "^10.0.2",
"oniguruma-to-es": "^4.3.3"
}
},
"node_modules/@shikijs/engine-oniguruma": {
- "version": "3.9.1",
- "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.9.1.tgz",
- "integrity": "sha512-WPlL/xqviwS3te4unSGGGfflKsuHLMI6tPdNYvgz/IygcBT6UiwDFSzjBKyebwi5GGSlXsjjdoJLIBnAplmEZw==",
+ "version": "3.9.2",
+ "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.9.2.tgz",
+ "integrity": "sha512-Vn/w5oyQ6TUgTVDIC/BrpXwIlfK6V6kGWDVVz2eRkF2v13YoENUvaNwxMsQU/t6oCuZKzqp9vqtEtEzKl9VegA==",
"license": "MIT",
"dependencies": {
- "@shikijs/types": "3.9.1",
+ "@shikijs/types": "3.9.2",
"@shikijs/vscode-textmate": "^10.0.2"
}
},
"node_modules/@shikijs/langs": {
- "version": "3.9.1",
- "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.9.1.tgz",
- "integrity": "sha512-Vyy2Yv9PP3Veh3VSsIvNncOR+O93wFsNYgN2B6cCCJlS7H9SKFYc55edsqernsg8WT/zam1cfB6llJsQWLnVhA==",
+ "version": "3.9.2",
+ "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.9.2.tgz",
+ "integrity": "sha512-X1Q6wRRQXY7HqAuX3I8WjMscjeGjqXCg/Sve7J2GWFORXkSrXud23UECqTBIdCSNKJioFtmUGJQNKtlMMZMn0w==",
"license": "MIT",
"dependencies": {
- "@shikijs/types": "3.9.1"
+ "@shikijs/types": "3.9.2"
}
},
"node_modules/@shikijs/themes": {
- "version": "3.9.1",
- "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.9.1.tgz",
- "integrity": "sha512-zAykkGECNICCMXpKeVvq04yqwaSuAIvrf8MjsU5bzskfg4XreU+O0B5wdNCYRixoB9snd3YlZ373WV5E/g5T9A==",
+ "version": "3.9.2",
+ "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.9.2.tgz",
+ "integrity": "sha512-6z5lBPBMRfLyyEsgf6uJDHPa6NAGVzFJqH4EAZ+03+7sedYir2yJBRu2uPZOKmj43GyhVHWHvyduLDAwJQfDjA==",
"license": "MIT",
"dependencies": {
- "@shikijs/types": "3.9.1"
+ "@shikijs/types": "3.9.2"
}
},
"node_modules/@shikijs/types": {
- "version": "3.9.1",
- "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.9.1.tgz",
- "integrity": "sha512-rqM3T7a0iM1oPKz9iaH/cVgNX9Vz1HERcUcXJ94/fulgVdwqfnhXzGxO4bLrAnh/o5CPLy3IcYedogfV+Ns0Qg==",
+ "version": "3.9.2",
+ "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.9.2.tgz",
+ "integrity": "sha512-/M5L0Uc2ljyn2jKvj4Yiah7ow/W+DJSglVafvWAJ/b8AZDeeRAdMu3c2riDzB7N42VD+jSnWxeP9AKtd4TfYVw==",
"license": "MIT",
"dependencies": {
"@shikijs/vscode-textmate": "^10.0.2",
@@ -3055,9 +3098,9 @@
}
},
"node_modules/@types/codemirror": {
- "version": "5.60.15",
- "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-5.60.15.tgz",
- "integrity": "sha512-dTOvwEQ+ouKJ/rE9LT1Ue2hmP6H1mZv5+CCnNWu2qtiOe2LQa9lCprEY20HxiDmV/Bxh+dXjywmy5aKvoGjULA==",
+ "version": "5.60.16",
+ "resolved": "https://registry.npmjs.org/@types/codemirror/-/codemirror-5.60.16.tgz",
+ "integrity": "sha512-V/yHdamffSS075jit+fDxaOAmdP2liok8NSNJnAZfDJErzOheuygHZEhAJrfmk5TEyM32MhkZjwo/idX791yxw==",
"license": "MIT",
"dependencies": {
"@types/tern": "*"
@@ -3073,9 +3116,9 @@
}
},
"node_modules/@types/estree": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz",
- "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==",
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
+ "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==",
"license": "MIT"
},
"node_modules/@types/estree-jsx": {
@@ -3222,12 +3265,12 @@
}
},
"node_modules/@vercel/functions": {
- "version": "2.2.6",
- "resolved": "https://registry.npmjs.org/@vercel/functions/-/functions-2.2.6.tgz",
- "integrity": "sha512-8XOcBYvXiDLSNlchIl/kMItLI1lrK0iBSc12uG87Tr5oKsFQf/rRHxmJWQOs0OiuzqD2ekDy9PcQLA3ZFOiDqg==",
+ "version": "2.2.12",
+ "resolved": "https://registry.npmjs.org/@vercel/functions/-/functions-2.2.12.tgz",
+ "integrity": "sha512-WGGqro/Rg00Epj+t2l6lr68q6ZkFt5+Q4F4Ok8sJbYrpu5pniDay09ihJqUoz81NI9PIfIahGEjaKpucUhEIrg==",
"license": "Apache-2.0",
"dependencies": {
- "@vercel/oidc": "2.0.0"
+ "@vercel/oidc": "2.0.1"
},
"engines": {
"node": ">= 18"
@@ -3242,9 +3285,9 @@
}
},
"node_modules/@vercel/nft": {
- "version": "0.29.2",
- "resolved": "https://registry.npmjs.org/@vercel/nft/-/nft-0.29.2.tgz",
- "integrity": "sha512-A/Si4mrTkQqJ6EXJKv5EYCDQ3NL6nJXxG8VGXePsaiQigsomHYQC9xSpX8qGk7AEZk4b1ssbYIqJ0ISQQ7bfcA==",
+ "version": "0.29.4",
+ "resolved": "https://registry.npmjs.org/@vercel/nft/-/nft-0.29.4.tgz",
+ "integrity": "sha512-6lLqMNX3TuycBPABycx7A9F1bHQR7kiQln6abjFbPrf5C/05qHM9M5E4PeTE59c7z8g6vHnx1Ioihb2AQl7BTA==",
"license": "MIT",
"dependencies": {
"@mapbox/node-pre-gyp": "^2.0.0",
@@ -3274,10 +3317,14 @@
"license": "MIT"
},
"node_modules/@vercel/oidc": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/@vercel/oidc/-/oidc-2.0.0.tgz",
- "integrity": "sha512-U0hncpXof7gC9xtmSrjz6vrDqdwJXi8z/zSc9FyS80AoXKfCZtpkBz9gtL3x30Agmpxpwe35P1W2dP9Epa/RGA==",
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/@vercel/oidc/-/oidc-2.0.1.tgz",
+ "integrity": "sha512-p/rFk8vz+AggU0bHXjwtRUyXNxboLvfCjwN0KH5xhBJ5wGS+n/psLJP1c69QPdWIZM4aVVIrTqdjUuDwuJGYzQ==",
"license": "Apache-2.0",
+ "dependencies": {
+ "@types/ms": "2.1.0",
+ "ms": "2.1.3"
+ },
"engines": {
"node": ">= 18"
}
@@ -3302,18 +3349,18 @@
"license": "BSD-3-Clause"
},
"node_modules/abbrev": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-3.0.0.tgz",
- "integrity": "sha512-+/kfrslGQ7TNV2ecmQwMJj/B65g5KVq1/L3SGVZ3tCYGqlzFuFCGBZJtMP99wH3NpEUyAjn0zPdPUg0D+DwrOA==",
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-3.0.1.tgz",
+ "integrity": "sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==",
"license": "ISC",
"engines": {
"node": "^18.17.0 || >=20.5.0"
}
},
"node_modules/acorn": {
- "version": "8.14.1",
- "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz",
- "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==",
+ "version": "8.15.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
+ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
"license": "MIT",
"bin": {
"acorn": "bin/acorn"
@@ -3341,9 +3388,9 @@
}
},
"node_modules/agent-base": {
- "version": "7.1.3",
- "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz",
- "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==",
+ "version": "7.1.4",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
+ "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
"license": "MIT",
"engines": {
"node": ">= 14"
@@ -3417,9 +3464,9 @@
}
},
"node_modules/ansi-regex": {
- "version": "6.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz",
- "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==",
+ "version": "6.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.0.tgz",
+ "integrity": "sha512-TKY5pyBkHyADOPYlRT9Lx6F544mPl0vS5Ew7BJ45hA08Q+t3GjbueLliBWN3sMICk6+y7HdyxSzC4bWS8baBdg==",
"license": "MIT",
"engines": {
"node": ">=12"
@@ -3506,14 +3553,14 @@
}
},
"node_modules/astro": {
- "version": "5.12.7",
- "resolved": "https://registry.npmjs.org/astro/-/astro-5.12.7.tgz",
- "integrity": "sha512-PGXbxql0SekhP46Ci4P3OFRdBp0+5HRKj6bcjZ/Upq5gyF0T2KzCJgj5JRxot+8qpSu8Jz9wksWzQnV2cfvi3A==",
+ "version": "5.13.2",
+ "resolved": "https://registry.npmjs.org/astro/-/astro-5.13.2.tgz",
+ "integrity": "sha512-yjcXY0Ua3EwjpVd3GoUXa65HQ6qgmURBptA+M9GzE0oYvgfuyM7bIbH8IR/TWIbdefVUJR5b7nZ0oVnMytmyfQ==",
"license": "MIT",
"dependencies": {
"@astrojs/compiler": "^2.12.2",
- "@astrojs/internal-helpers": "0.7.0",
- "@astrojs/markdown-remark": "6.3.4",
+ "@astrojs/internal-helpers": "0.7.2",
+ "@astrojs/markdown-remark": "6.3.6",
"@astrojs/telemetry": "3.3.0",
"@capsizecss/unpack": "^2.4.0",
"@oslojs/encoding": "^1.1.0",
@@ -3602,19 +3649,13 @@
"astro": "^4.0.0-beta || ^5.0.0-beta || ^3.3.0"
}
},
- "node_modules/astro/node_modules/@astrojs/internal-helpers": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.7.0.tgz",
- "integrity": "sha512-+yrFHlYnknIFxi3QfbVgyHQigkfgsU9SKMjYqijq1Q6xzPco+SmaYXgcw0W7+KnWCifni4o61cgwzMkld7jkXg==",
- "license": "MIT"
- },
"node_modules/astro/node_modules/@astrojs/markdown-remark": {
- "version": "6.3.4",
- "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-6.3.4.tgz",
- "integrity": "sha512-ARu+6J3006U3NylQk2OmV0tVsXGbkz+ofgxE3S0/KuCxyk3HvZ5FQ5jQDTYCDOAdFY1376tRn0S/sUjT3KZxfw==",
+ "version": "6.3.6",
+ "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-6.3.6.tgz",
+ "integrity": "sha512-bwylYktCTsLMVoCOEHbn2GSUA3c5KT/qilekBKA3CBng0bo1TYjNZPr761vxumRk9kJGqTOtU+fgCAp5Vwokug==",
"license": "MIT",
"dependencies": {
- "@astrojs/internal-helpers": "0.7.0",
+ "@astrojs/internal-helpers": "0.7.2",
"@astrojs/prism": "3.3.0",
"github-slugger": "^2.0.0",
"hast-util-from-html": "^2.0.3",
@@ -3724,16 +3765,17 @@
}
},
"node_modules/astro/node_modules/vitefu": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.0.6.tgz",
- "integrity": "sha512-+Rex1GlappUyNN6UfwbVZne/9cYC4+R2XDk9xkNXBKMw6HQagdX9PgZ8V2v1WUSK1wfBLp7qbI1+XSNIlB1xmA==",
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.1.1.tgz",
+ "integrity": "sha512-B/Fegf3i8zh0yFbpzZ21amWzHmuNlLlmJT6n7bu5e+pCHUKQIfXSYokrqOBGEMMe9UG2sostKQF9mml/vYaWJQ==",
"license": "MIT",
"workspaces": [
"tests/deps/*",
- "tests/projects/*"
+ "tests/projects/*",
+ "tests/projects/workspace/packages/*"
],
"peerDependencies": {
- "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0"
+ "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0"
},
"peerDependenciesMeta": {
"vite": {
@@ -3921,9 +3963,9 @@
}
},
"node_modules/chalk": {
- "version": "5.4.1",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz",
- "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==",
+ "version": "5.6.0",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.6.0.tgz",
+ "integrity": "sha512-46QrSQFyVSEyYAgQ22hQ+zDa60YHA4fBstHmtSApj1Y5vKtG27fWowW03jCk5KcbXEWPZUIR894aARCA/G1kfQ==",
"license": "MIT",
"engines": {
"node": "^12.17.0 || ^14.13 || >=16.0.0"
@@ -4095,9 +4137,9 @@
}
},
"node_modules/comlink": {
- "version": "4.4.2",
- "resolved": "https://registry.npmjs.org/comlink/-/comlink-4.4.2.tgz",
- "integrity": "sha512-OxGdvBmJuNKSCMO4NTl1L47VRp6xn2wG4F/2hYzB6tiCb709otOxtEYCSvK80PtjODfXXZu8ds+Nw5kVCjqd2g==",
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/comlink/-/comlink-4.3.1.tgz",
+ "integrity": "sha512-+YbhUdNrpBZggBAHWcgQMLPLH1KDF3wJpeqrCKieWQ8RL7atmgsgTQko1XEBK6PsecfopWNntopJ+ByYG1lRaA==",
"license": "Apache-2.0"
},
"node_modules/comma-separated-tokens": {
@@ -4217,9 +4259,9 @@
}
},
"node_modules/crossws": {
- "version": "0.3.4",
- "resolved": "https://registry.npmjs.org/crossws/-/crossws-0.3.4.tgz",
- "integrity": "sha512-uj0O1ETYX1Bh6uSgktfPvwDiPYGQ3aI4qVsaC/LWpkIzGj1nUYm5FK3K+t11oOlpN01lGbprFCH4wBlKdJjVgw==",
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/crossws/-/crossws-0.3.5.tgz",
+ "integrity": "sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA==",
"license": "MIT",
"dependencies": {
"uncrypto": "^0.1.3"
@@ -4276,9 +4318,9 @@
}
},
"node_modules/debug": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz",
- "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==",
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz",
+ "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==",
"license": "MIT",
"dependencies": {
"ms": "^2.1.3"
@@ -4293,9 +4335,9 @@
}
},
"node_modules/decode-named-character-reference": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.1.0.tgz",
- "integrity": "sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.2.0.tgz",
+ "integrity": "sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==",
"license": "MIT",
"dependencies": {
"character-entities": "^2.0.0"
@@ -4321,15 +4363,15 @@
}
},
"node_modules/destr": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.3.tgz",
- "integrity": "sha512-2N3BOUU4gYMpTP24s5rF5iP7BDr7uNTCs4ozw3kf/eKfvWSIu93GEBi5m427YoyJoeOzQ5smuu4nNAPGb8idSQ==",
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/destr/-/destr-2.0.5.tgz",
+ "integrity": "sha512-ugFTXCtDZunbzasqBxrK93Ik/DRYsO6S/fedkWEMKqt04xZ4csmnmwGDBAb07QWNaGMAmnTIemsYZCksjATwsA==",
"license": "MIT"
},
"node_modules/detect-libc": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz",
- "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==",
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz",
+ "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==",
"license": "Apache-2.0",
"engines": {
"node": ">=8"
@@ -4463,9 +4505,9 @@
"peer": true
},
"node_modules/enhanced-resolve": {
- "version": "5.18.1",
- "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz",
- "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==",
+ "version": "5.18.3",
+ "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz",
+ "integrity": "sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==",
"license": "MIT",
"dependencies": {
"graceful-fs": "^4.2.4",
@@ -4476,9 +4518,9 @@
}
},
"node_modules/entities": {
- "version": "4.5.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
- "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz",
+ "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==",
"license": "BSD-2-Clause",
"engines": {
"node": ">=0.12"
@@ -4488,9 +4530,9 @@
}
},
"node_modules/es-module-lexer": {
- "version": "1.6.0",
- "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.6.0.tgz",
- "integrity": "sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==",
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz",
+ "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==",
"license": "MIT"
},
"node_modules/esast-util-from-estree": {
@@ -4526,9 +4568,9 @@
}
},
"node_modules/esbuild": {
- "version": "0.25.1",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.1.tgz",
- "integrity": "sha512-BGO5LtrGC7vxnqucAe/rmvKdJllfGaYWdyABvyMoXQlfYMb2bbRuReWR5tEGE//4LcNJj9XrkovTqNYRFZHAMQ==",
+ "version": "0.25.9",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.9.tgz",
+ "integrity": "sha512-CRbODhYyQx3qp7ZEwzxOk4JBqmD/seJrzPa/cGjY1VtIn5E09Oi9/dB4JwctnfZ8Q8iT7rioVv5k/FNT/uf54g==",
"hasInstallScript": true,
"license": "MIT",
"bin": {
@@ -4538,31 +4580,32 @@
"node": ">=18"
},
"optionalDependencies": {
- "@esbuild/aix-ppc64": "0.25.1",
- "@esbuild/android-arm": "0.25.1",
- "@esbuild/android-arm64": "0.25.1",
- "@esbuild/android-x64": "0.25.1",
- "@esbuild/darwin-arm64": "0.25.1",
- "@esbuild/darwin-x64": "0.25.1",
- "@esbuild/freebsd-arm64": "0.25.1",
- "@esbuild/freebsd-x64": "0.25.1",
- "@esbuild/linux-arm": "0.25.1",
- "@esbuild/linux-arm64": "0.25.1",
- "@esbuild/linux-ia32": "0.25.1",
- "@esbuild/linux-loong64": "0.25.1",
- "@esbuild/linux-mips64el": "0.25.1",
- "@esbuild/linux-ppc64": "0.25.1",
- "@esbuild/linux-riscv64": "0.25.1",
- "@esbuild/linux-s390x": "0.25.1",
- "@esbuild/linux-x64": "0.25.1",
- "@esbuild/netbsd-arm64": "0.25.1",
- "@esbuild/netbsd-x64": "0.25.1",
- "@esbuild/openbsd-arm64": "0.25.1",
- "@esbuild/openbsd-x64": "0.25.1",
- "@esbuild/sunos-x64": "0.25.1",
- "@esbuild/win32-arm64": "0.25.1",
- "@esbuild/win32-ia32": "0.25.1",
- "@esbuild/win32-x64": "0.25.1"
+ "@esbuild/aix-ppc64": "0.25.9",
+ "@esbuild/android-arm": "0.25.9",
+ "@esbuild/android-arm64": "0.25.9",
+ "@esbuild/android-x64": "0.25.9",
+ "@esbuild/darwin-arm64": "0.25.9",
+ "@esbuild/darwin-x64": "0.25.9",
+ "@esbuild/freebsd-arm64": "0.25.9",
+ "@esbuild/freebsd-x64": "0.25.9",
+ "@esbuild/linux-arm": "0.25.9",
+ "@esbuild/linux-arm64": "0.25.9",
+ "@esbuild/linux-ia32": "0.25.9",
+ "@esbuild/linux-loong64": "0.25.9",
+ "@esbuild/linux-mips64el": "0.25.9",
+ "@esbuild/linux-ppc64": "0.25.9",
+ "@esbuild/linux-riscv64": "0.25.9",
+ "@esbuild/linux-s390x": "0.25.9",
+ "@esbuild/linux-x64": "0.25.9",
+ "@esbuild/netbsd-arm64": "0.25.9",
+ "@esbuild/netbsd-x64": "0.25.9",
+ "@esbuild/openbsd-arm64": "0.25.9",
+ "@esbuild/openbsd-x64": "0.25.9",
+ "@esbuild/openharmony-arm64": "0.25.9",
+ "@esbuild/sunos-x64": "0.25.9",
+ "@esbuild/win32-arm64": "0.25.9",
+ "@esbuild/win32-ia32": "0.25.9",
+ "@esbuild/win32-x64": "0.25.9"
}
},
"node_modules/escape-string-regexp": {
@@ -4718,10 +4761,13 @@
"optional": true
},
"node_modules/fdir": {
- "version": "6.4.6",
- "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz",
- "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==",
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz",
+ "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==",
"license": "MIT",
+ "engines": {
+ "node": ">=12.0.0"
+ },
"peerDependencies": {
"picomatch": "^3 || ^4"
},
@@ -4839,9 +4885,9 @@
}
},
"node_modules/fuse.js": {
- "version": "7.1.0",
- "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-7.1.0.tgz",
- "integrity": "sha512-trLf4SzuuUxfusZADLINj+dE8clK1frKdmqiJNb1Es75fmI5oY6X2mxLVUciLLjxqw/xr72Dhy+lER6dGd02FQ==",
+ "version": "6.6.2",
+ "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-6.6.2.tgz",
+ "integrity": "sha512-cJaJkxCCxC8qIIcPBF9yGxY0W/tVZS3uEISDxhYIdtk8OL93pe+6Zj7LjCqVV4dzbqcriOZ+kQ/NE4RXZHsIGA==",
"license": "Apache-2.0",
"engines": {
"node": ">=10"
@@ -4892,19 +4938,19 @@
"license": "ISC"
},
"node_modules/h3": {
- "version": "1.15.1",
- "resolved": "https://registry.npmjs.org/h3/-/h3-1.15.1.tgz",
- "integrity": "sha512-+ORaOBttdUm1E2Uu/obAyCguiI7MbBvsLTndc3gyK3zU+SYLoZXlyCP9Xgy0gikkGufFLTZXCXD6+4BsufnmHA==",
+ "version": "1.15.4",
+ "resolved": "https://registry.npmjs.org/h3/-/h3-1.15.4.tgz",
+ "integrity": "sha512-z5cFQWDffyOe4vQ9xIqNfCZdV4p//vy6fBnr8Q1AWnVZ0teurKMG66rLj++TKwKPUP3u7iMUvrvKaEUiQw2QWQ==",
"license": "MIT",
"dependencies": {
"cookie-es": "^1.2.2",
- "crossws": "^0.3.3",
+ "crossws": "^0.3.5",
"defu": "^6.1.4",
- "destr": "^2.0.3",
+ "destr": "^2.0.5",
"iron-webcrypto": "^1.2.1",
- "node-mock-http": "^1.0.0",
+ "node-mock-http": "^1.0.2",
"radix3": "^1.1.2",
- "ufo": "^1.5.4",
+ "ufo": "^1.6.1",
"uncrypto": "^0.1.3"
}
},
@@ -4959,6 +5005,18 @@
"url": "https://opencollective.com/unified"
}
},
+ "node_modules/hast-util-from-html/node_modules/parse5": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz",
+ "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==",
+ "license": "MIT",
+ "dependencies": {
+ "entities": "^6.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/inikulin/parse5?sponsor=1"
+ }
+ },
"node_modules/hast-util-from-parse5": {
"version": "8.0.3",
"resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.3.tgz",
@@ -5090,6 +5148,18 @@
"url": "https://opencollective.com/unified"
}
},
+ "node_modules/hast-util-raw/node_modules/parse5": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz",
+ "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==",
+ "license": "MIT",
+ "dependencies": {
+ "entities": "^6.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/inikulin/parse5?sponsor=1"
+ }
+ },
"node_modules/hast-util-select": {
"version": "6.0.4",
"resolved": "https://registry.npmjs.org/hast-util-select/-/hast-util-select-6.0.4.tgz",
@@ -5310,9 +5380,9 @@
}
},
"node_modules/http-cache-semantics": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz",
- "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==",
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz",
+ "integrity": "sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==",
"license": "BSD-2-Clause"
},
"node_modules/https-proxy-agent": {
@@ -5663,31 +5733,31 @@
}
},
"node_modules/lit": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/lit/-/lit-3.2.1.tgz",
- "integrity": "sha512-1BBa1E/z0O9ye5fZprPtdqnc0BFzxIxTTOO/tQFmyC/hj1O3jL4TfmLBw0WEwjAokdLwpclkvGgDJwTIh0/22w==",
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/lit/-/lit-3.3.1.tgz",
+ "integrity": "sha512-Ksr/8L3PTapbdXJCk+EJVB78jDodUMaP54gD24W186zGRARvwrsPfS60wae/SSCTCNZVPd1chXqio1qHQmu4NA==",
"license": "BSD-3-Clause",
"dependencies": {
- "@lit/reactive-element": "^2.0.4",
- "lit-element": "^4.1.0",
- "lit-html": "^3.2.0"
+ "@lit/reactive-element": "^2.1.0",
+ "lit-element": "^4.2.0",
+ "lit-html": "^3.3.0"
}
},
"node_modules/lit-element": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.1.1.tgz",
- "integrity": "sha512-HO9Tkkh34QkTeUmEdNYhMT8hzLid7YlMlATSi1q4q17HE5d9mrrEHJ/o8O2D0cMi182zK1F3v7x0PWFjrhXFew==",
+ "version": "4.2.1",
+ "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-4.2.1.tgz",
+ "integrity": "sha512-WGAWRGzirAgyphK2urmYOV72tlvnxw7YfyLDgQ+OZnM9vQQBQnumQ7jUJe6unEzwGU3ahFOjuz1iz1jjrpCPuw==",
"license": "BSD-3-Clause",
"dependencies": {
- "@lit-labs/ssr-dom-shim": "^1.2.0",
- "@lit/reactive-element": "^2.0.4",
- "lit-html": "^3.2.0"
+ "@lit-labs/ssr-dom-shim": "^1.4.0",
+ "@lit/reactive-element": "^2.1.0",
+ "lit-html": "^3.3.0"
}
},
"node_modules/lit-html": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.2.1.tgz",
- "integrity": "sha512-qI/3lziaPMSKsrwlxH/xMgikhQ0EGOX2ICU73Bi/YHFvz2j/yMCIrw4+puF2IpQ4+upd3EWbvnHM9+PnJn48YA==",
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-3.3.1.tgz",
+ "integrity": "sha512-S9hbyDu/vs1qNrithiNyeyv64c9yqiW9l+DBgI18fL+MTvOtWoFR0FWiyq1TxaYef5wNlpEmzlXoBlZEO+WjoA==",
"license": "BSD-3-Clause",
"dependencies": {
"@types/trusted-types": "^2.0.2"
@@ -6841,13 +6911,12 @@
}
},
"node_modules/minizlib": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.1.tgz",
- "integrity": "sha512-umcy022ILvb5/3Djuu8LWeqUa8D68JaBzlttKeMWen48SjabqS3iY5w/vzeMzMUNhLDifyhbOwKDSznB1vvrwg==",
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.2.tgz",
+ "integrity": "sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==",
"license": "MIT",
"dependencies": {
- "minipass": "^7.0.4",
- "rimraf": "^5.0.5"
+ "minipass": "^7.1.2"
},
"engines": {
"node": ">= 18"
@@ -6927,6 +6996,7 @@
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz",
"integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==",
+ "deprecated": "Use your platform's native DOMException instead",
"funding": [
{
"type": "github",
@@ -6961,9 +7031,9 @@
}
},
"node_modules/node-fetch-native": {
- "version": "1.6.6",
- "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.6.tgz",
- "integrity": "sha512-8Mc2HhqPdlIfedsuZoc3yioPuzp6b+L5jRCRY1QzuWZh2EGJVQrGppC6V6cF0bLdbW0+O2YpqCA25aF/1lvipQ==",
+ "version": "1.6.7",
+ "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.7.tgz",
+ "integrity": "sha512-g9yhqoedzIUm0nTnTqAQvueMPVOuIY16bqgAJJC8XOOubYFNwz6IER9qs0Gq2Xd0+CecCKFjtdDTMA4u4xG06Q==",
"license": "MIT"
},
"node_modules/node-gyp-build": {
@@ -6978,9 +7048,9 @@
}
},
"node_modules/node-mock-http": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/node-mock-http/-/node-mock-http-1.0.0.tgz",
- "integrity": "sha512-0uGYQ1WQL1M5kKvGRXWQ3uZCHtLTO8hln3oBjIusM75WoesZ909uQJs/Hb946i2SS+Gsrhkaa6iAO17jRIv6DQ==",
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/node-mock-http/-/node-mock-http-1.0.2.tgz",
+ "integrity": "sha512-zWaamgDUdo9SSLw47we78+zYw/bDr5gH8pH7oRRs8V3KmBtu8GLgGIbV2p/gRPd3LWpEOpjQj7X1FOU3VFMJ8g==",
"license": "MIT"
},
"node_modules/nopt": {
@@ -7103,9 +7173,9 @@
"license": "BlueOak-1.0.0"
},
"node_modules/package-manager-detector": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.1.0.tgz",
- "integrity": "sha512-Y8f9qUlBzW8qauJjd/eu6jlpJZsuPJm2ZAV0cDVd420o4EdpH5RPdoCv+60/TdJflGatr4sDfpAL6ArWZbM5tA==",
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.3.0.tgz",
+ "integrity": "sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==",
"license": "MIT"
},
"node_modules/pagefind": {
@@ -7174,12 +7244,12 @@
}
},
"node_modules/parse5": {
- "version": "7.2.1",
- "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.2.1.tgz",
- "integrity": "sha512-BuBYQYlv1ckiPdQi/ohiivi9Sagc9JG+Ozs0r7b/0iK3sKmrb0b9FdWdBbOdx6hBCM/F9Ir82ofnBhtZOjCRPQ==",
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-8.0.0.tgz",
+ "integrity": "sha512-9m4m5GSgXjL4AjumKzq1Fgfp3Z8rsvjRNbnkVwfu2ImRqE5D0LnY2QfDen18FSY9C573YU5XxSapdHZTZ2WolA==",
"license": "MIT",
"dependencies": {
- "entities": "^4.5.0"
+ "entities": "^6.0.0"
},
"funding": {
"url": "https://github.com/inikulin/parse5?sponsor=1"
@@ -7230,9 +7300,9 @@
"license": "ISC"
},
"node_modules/picomatch": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
- "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
+ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
"license": "MIT",
"engines": {
"node": ">=12"
@@ -7242,9 +7312,9 @@
}
},
"node_modules/playground-elements": {
- "version": "0.20.0",
- "resolved": "https://registry.npmjs.org/playground-elements/-/playground-elements-0.20.0.tgz",
- "integrity": "sha512-H4Qs09V9r5THLgASfpeg0PzFySPPFBW4F0kS59LIlQxNyQCtrJd8eDu8jMTXIF3NFoV265cicdzYqRcILsjitw==",
+ "version": "0.18.1",
+ "resolved": "https://registry.npmjs.org/playground-elements/-/playground-elements-0.18.1.tgz",
+ "integrity": "sha512-QCAK9oPZwI/+ZK9mWaS+JlyqTLD7npGZnTqYO0MnHPAkcgUUj6lcYtESy6WICxj0Jl6mBx4wLJFOfXAb6QxLNA==",
"license": "BSD-3-Clause",
"dependencies": {
"@material/mwc-button": "^0.27.0",
@@ -7254,17 +7324,57 @@
"@material/mwc-menu": "^0.27.0",
"@material/mwc-textfield": "^0.27.0",
"@types/codemirror": "^5.60.0",
- "comlink": "^4.4.1",
- "fuse.js": "^7.0.0",
- "lit": "^2.0.0 || ^3.0.0",
- "tslib": "^2.6.3",
+ "comlink": "=4.3.1",
+ "fuse.js": "^6.4.6",
+ "lit": "^2.0.0",
+ "tslib": "^2.0.3",
"vscode-languageserver-protocol": "^3.17.2"
}
},
+ "node_modules/playground-elements/node_modules/@lit/reactive-element": {
+ "version": "1.6.3",
+ "resolved": "https://registry.npmjs.org/@lit/reactive-element/-/reactive-element-1.6.3.tgz",
+ "integrity": "sha512-QuTgnG52Poic7uM1AN5yJ09QMe0O28e10XzSvWDz02TJiiKee4stsiownEIadWm8nYzyDAyT+gKzUoZmiWQtsQ==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "@lit-labs/ssr-dom-shim": "^1.0.0"
+ }
+ },
+ "node_modules/playground-elements/node_modules/lit": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/lit/-/lit-2.8.0.tgz",
+ "integrity": "sha512-4Sc3OFX9QHOJaHbmTMk28SYgVxLN3ePDjg7hofEft2zWlehFL3LiAuapWc4U/kYwMYJSh2hTCPZ6/LIC7ii0MA==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "@lit/reactive-element": "^1.6.0",
+ "lit-element": "^3.3.0",
+ "lit-html": "^2.8.0"
+ }
+ },
+ "node_modules/playground-elements/node_modules/lit-element": {
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/lit-element/-/lit-element-3.3.3.tgz",
+ "integrity": "sha512-XbeRxmTHubXENkV4h8RIPyr8lXc+Ff28rkcQzw3G6up2xg5E8Zu1IgOWIwBLEQsu3cOVFqdYwiVi0hv0SlpqUA==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "@lit-labs/ssr-dom-shim": "^1.1.0",
+ "@lit/reactive-element": "^1.3.0",
+ "lit-html": "^2.8.0"
+ }
+ },
+ "node_modules/playground-elements/node_modules/lit-html": {
+ "version": "2.8.0",
+ "resolved": "https://registry.npmjs.org/lit-html/-/lit-html-2.8.0.tgz",
+ "integrity": "sha512-o9t+MQM3P4y7M7yNzqAyjp7z+mQGa4NS4CxiyLqFPyFWyc4O+nodLrkrxSaCTrla6M5YOLaT3RpbbqjszB5g3Q==",
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "@types/trusted-types": "^2.0.2"
+ }
+ },
"node_modules/postcss": {
- "version": "8.5.3",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.3.tgz",
- "integrity": "sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==",
+ "version": "8.5.6",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz",
+ "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==",
"funding": [
{
"type": "opencollective",
@@ -7281,7 +7391,7 @@
],
"license": "MIT",
"dependencies": {
- "nanoid": "^3.3.8",
+ "nanoid": "^3.3.11",
"picocolors": "^1.1.1",
"source-map-js": "^1.2.1"
},
@@ -7379,9 +7489,9 @@
}
},
"node_modules/property-information": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.0.0.tgz",
- "integrity": "sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==",
+ "version": "7.1.0",
+ "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz",
+ "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==",
"license": "MIT",
"funding": {
"type": "github",
@@ -7439,9 +7549,9 @@
}
},
"node_modules/recma-jsx": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/recma-jsx/-/recma-jsx-1.0.0.tgz",
- "integrity": "sha512-5vwkv65qWwYxg+Atz95acp8DMu1JDSqdGkA2Of1j6rCreyFUE/gp15fC8MnGEuG1W68UKjM6x6+YTWIh7hZM/Q==",
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/recma-jsx/-/recma-jsx-1.0.1.tgz",
+ "integrity": "sha512-huSIy7VU2Z5OLv6oFLosQGGDqPqdO1iq6bWNAdhzMxSJP7RAso4fCZ1cKu8j9YHCZf3TPrq4dw3okhrylgcd7w==",
"license": "MIT",
"dependencies": {
"acorn-jsx": "^5.0.0",
@@ -7453,6 +7563,9 @@
"funding": {
"type": "opencollective",
"url": "https://opencollective.com/unified"
+ },
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
}
},
"node_modules/recma-parse": {
@@ -7487,12 +7600,6 @@
"url": "https://opencollective.com/unified"
}
},
- "node_modules/regenerator-runtime": {
- "version": "0.14.1",
- "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
- "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==",
- "license": "MIT"
- },
"node_modules/regex": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/regex/-/regex-6.0.1.tgz",
@@ -7803,28 +7910,13 @@
"url": "https://opencollective.com/unified"
}
},
- "node_modules/rimraf": {
- "version": "5.0.10",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz",
- "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==",
- "license": "ISC",
- "dependencies": {
- "glob": "^10.3.7"
- },
- "bin": {
- "rimraf": "dist/esm/bin.mjs"
- },
- "funding": {
- "url": "https://github.com/sponsors/isaacs"
- }
- },
"node_modules/rollup": {
- "version": "4.36.0",
- "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.36.0.tgz",
- "integrity": "sha512-zwATAXNQxUcd40zgtQG0ZafcRK4g004WtEl7kbuhTWPvf07PsfohXl39jVUvPF7jvNAIkKPQ2XrsDlWuxBd++Q==",
+ "version": "4.46.3",
+ "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.46.3.tgz",
+ "integrity": "sha512-RZn2XTjXb8t5g13f5YclGoilU/kwT696DIkY3sywjdZidNSi3+vseaQov7D7BZXVJCPv3pDWUN69C78GGbXsKw==",
"license": "MIT",
"dependencies": {
- "@types/estree": "1.0.6"
+ "@types/estree": "1.0.8"
},
"bin": {
"rollup": "dist/bin/rollup"
@@ -7834,25 +7926,26 @@
"npm": ">=8.0.0"
},
"optionalDependencies": {
- "@rollup/rollup-android-arm-eabi": "4.36.0",
- "@rollup/rollup-android-arm64": "4.36.0",
- "@rollup/rollup-darwin-arm64": "4.36.0",
- "@rollup/rollup-darwin-x64": "4.36.0",
- "@rollup/rollup-freebsd-arm64": "4.36.0",
- "@rollup/rollup-freebsd-x64": "4.36.0",
- "@rollup/rollup-linux-arm-gnueabihf": "4.36.0",
- "@rollup/rollup-linux-arm-musleabihf": "4.36.0",
- "@rollup/rollup-linux-arm64-gnu": "4.36.0",
- "@rollup/rollup-linux-arm64-musl": "4.36.0",
- "@rollup/rollup-linux-loongarch64-gnu": "4.36.0",
- "@rollup/rollup-linux-powerpc64le-gnu": "4.36.0",
- "@rollup/rollup-linux-riscv64-gnu": "4.36.0",
- "@rollup/rollup-linux-s390x-gnu": "4.36.0",
- "@rollup/rollup-linux-x64-gnu": "4.36.0",
- "@rollup/rollup-linux-x64-musl": "4.36.0",
- "@rollup/rollup-win32-arm64-msvc": "4.36.0",
- "@rollup/rollup-win32-ia32-msvc": "4.36.0",
- "@rollup/rollup-win32-x64-msvc": "4.36.0",
+ "@rollup/rollup-android-arm-eabi": "4.46.3",
+ "@rollup/rollup-android-arm64": "4.46.3",
+ "@rollup/rollup-darwin-arm64": "4.46.3",
+ "@rollup/rollup-darwin-x64": "4.46.3",
+ "@rollup/rollup-freebsd-arm64": "4.46.3",
+ "@rollup/rollup-freebsd-x64": "4.46.3",
+ "@rollup/rollup-linux-arm-gnueabihf": "4.46.3",
+ "@rollup/rollup-linux-arm-musleabihf": "4.46.3",
+ "@rollup/rollup-linux-arm64-gnu": "4.46.3",
+ "@rollup/rollup-linux-arm64-musl": "4.46.3",
+ "@rollup/rollup-linux-loongarch64-gnu": "4.46.3",
+ "@rollup/rollup-linux-ppc64-gnu": "4.46.3",
+ "@rollup/rollup-linux-riscv64-gnu": "4.46.3",
+ "@rollup/rollup-linux-riscv64-musl": "4.46.3",
+ "@rollup/rollup-linux-s390x-gnu": "4.46.3",
+ "@rollup/rollup-linux-x64-gnu": "4.46.3",
+ "@rollup/rollup-linux-x64-musl": "4.46.3",
+ "@rollup/rollup-win32-arm64-msvc": "4.46.3",
+ "@rollup/rollup-win32-ia32-msvc": "4.46.3",
+ "@rollup/rollup-win32-x64-msvc": "4.46.3",
"fsevents": "~2.3.2"
}
},
@@ -7936,17 +8029,17 @@
}
},
"node_modules/shiki": {
- "version": "3.9.1",
- "resolved": "https://registry.npmjs.org/shiki/-/shiki-3.9.1.tgz",
- "integrity": "sha512-HogZ8nMnv9VAQMrG+P7BleJFhrKHm3fi6CYyHRbUu61gJ0lpqLr6ecYEui31IYG1Cn9Bad7N2vf332iXHnn0bQ==",
+ "version": "3.9.2",
+ "resolved": "https://registry.npmjs.org/shiki/-/shiki-3.9.2.tgz",
+ "integrity": "sha512-t6NKl5e/zGTvw/IyftLcumolgOczhuroqwXngDeMqJ3h3EQiTY/7wmfgPlsmloD8oYfqkEDqxiaH37Pjm1zUhQ==",
"license": "MIT",
"dependencies": {
- "@shikijs/core": "3.9.1",
- "@shikijs/engine-javascript": "3.9.1",
- "@shikijs/engine-oniguruma": "3.9.1",
- "@shikijs/langs": "3.9.1",
- "@shikijs/themes": "3.9.1",
- "@shikijs/types": "3.9.1",
+ "@shikijs/core": "3.9.2",
+ "@shikijs/engine-javascript": "3.9.2",
+ "@shikijs/engine-oniguruma": "3.9.2",
+ "@shikijs/langs": "3.9.2",
+ "@shikijs/themes": "3.9.2",
+ "@shikijs/types": "3.9.2",
"@shikijs/vscode-textmate": "^10.0.2",
"@types/hast": "^3.0.4"
}
@@ -8005,9 +8098,9 @@
"license": "MIT"
},
"node_modules/smol-toml": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.4.1.tgz",
- "integrity": "sha512-CxdwHXyYTONGHThDbq5XdwbFsuY4wlClRGejfE2NtwUtiHYsP1QtNsHb/hnj31jKYSchztJsaA8pSQoVzkfCFg==",
+ "version": "1.4.2",
+ "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.4.2.tgz",
+ "integrity": "sha512-rInDH6lCNiEyn3+hH8KVGFdbjc099j47+OSgbMrfDYX1CmXLfdKd7qi6IfcWj2wFxvSVkuI46M+wPGYfEOEj6g==",
"license": "BSD-3-Clause",
"engines": {
"node": ">= 18"
@@ -8017,12 +8110,12 @@
}
},
"node_modules/source-map": {
- "version": "0.7.4",
- "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz",
- "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==",
+ "version": "0.7.6",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz",
+ "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==",
"license": "BSD-3-Clause",
"engines": {
- "node": ">= 8"
+ "node": ">= 12"
}
},
"node_modules/source-map-js": {
@@ -8179,9 +8272,9 @@
}
},
"node_modules/tapable": {
- "version": "2.2.1",
- "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz",
- "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==",
+ "version": "2.2.2",
+ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.2.tgz",
+ "integrity": "sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg==",
"license": "MIT",
"engines": {
"node": ">=6"
@@ -8259,9 +8352,9 @@
}
},
"node_modules/tsconfck": {
- "version": "3.1.5",
- "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.5.tgz",
- "integrity": "sha512-CLDfGgUp7XPswWnezWwsCRxNmgQjhYq3VXHM0/XIRxhVrKw0M1if9agzryh1QS3nxjCROvV+xWxoJO1YctzzWg==",
+ "version": "3.1.6",
+ "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.6.tgz",
+ "integrity": "sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==",
"license": "MIT",
"bin": {
"tsconfck": "bin/tsconfck.js"
@@ -8285,9 +8378,9 @@
"license": "0BSD"
},
"node_modules/type-fest": {
- "version": "4.37.0",
- "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.37.0.tgz",
- "integrity": "sha512-S/5/0kFftkq27FPNye0XM1e2NsnoD/3FS+pBmbjmmtLT6I+i344KoOf7pvXreaFsDamWeaJX55nczA1m5PsBDg==",
+ "version": "4.41.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz",
+ "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==",
"license": "(MIT OR CC0-1.0)",
"engines": {
"node": ">=16"
@@ -8297,9 +8390,9 @@
}
},
"node_modules/typescript": {
- "version": "5.8.2",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.2.tgz",
- "integrity": "sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==",
+ "version": "5.9.2",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.2.tgz",
+ "integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==",
"license": "Apache-2.0",
"peer": true,
"bin": {
@@ -8311,9 +8404,9 @@
}
},
"node_modules/ufo": {
- "version": "1.5.4",
- "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.5.4.tgz",
- "integrity": "sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==",
+ "version": "1.6.1",
+ "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz",
+ "integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==",
"license": "MIT"
},
"node_modules/ultrahtml": {
@@ -8515,19 +8608,19 @@
}
},
"node_modules/unstorage": {
- "version": "1.15.0",
- "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.15.0.tgz",
- "integrity": "sha512-m40eHdGY/gA6xAPqo8eaxqXgBuzQTlAKfmB1iF7oCKXE1HfwHwzDJBywK+qQGn52dta+bPlZluPF7++yR3p/bg==",
+ "version": "1.16.1",
+ "resolved": "https://registry.npmjs.org/unstorage/-/unstorage-1.16.1.tgz",
+ "integrity": "sha512-gdpZ3guLDhz+zWIlYP1UwQ259tG5T5vYRzDaHMkQ1bBY1SQPutvZnrRjTFaWUUpseErJIgAZS51h6NOcZVZiqQ==",
"license": "MIT",
"dependencies": {
"anymatch": "^3.1.3",
"chokidar": "^4.0.3",
- "destr": "^2.0.3",
- "h3": "^1.15.0",
+ "destr": "^2.0.5",
+ "h3": "^1.15.3",
"lru-cache": "^10.4.3",
"node-fetch-native": "^1.6.6",
"ofetch": "^1.4.1",
- "ufo": "^1.5.4"
+ "ufo": "^1.6.1"
},
"peerDependencies": {
"@azure/app-configuration": "^1.8.0",
@@ -8536,9 +8629,9 @@
"@azure/identity": "^4.6.0",
"@azure/keyvault-secrets": "^4.9.0",
"@azure/storage-blob": "^12.26.0",
- "@capacitor/preferences": "^6.0.3",
+ "@capacitor/preferences": "^6.0.3 || ^7.0.0",
"@deno/kv": ">=0.9.0",
- "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0",
+ "@netlify/blobs": "^6.5.0 || ^7.0.0 || ^8.1.0 || ^9.0.0 || ^10.0.0",
"@planetscale/database": "^1.19.0",
"@upstash/redis": "^1.34.3",
"@vercel/blob": ">=0.27.1",
@@ -8651,9 +8744,9 @@
}
},
"node_modules/vfile-message": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz",
- "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==",
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.3.tgz",
+ "integrity": "sha512-QTHzsGd1EhbZs4AsQ20JX1rC3cOlt/IWJruk893DfLRr57lcnOeMaWG4K0JrRta4mIJZKth2Au3mM3u03/JWKw==",
"license": "MIT",
"dependencies": {
"@types/unist": "^3.0.0",
@@ -8879,9 +8972,9 @@
}
},
"node_modules/yocto-queue": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.0.tgz",
- "integrity": "sha512-KHBC7z61OJeaMGnF3wqNZj+GGNXOyypZviiKpQeiHirG5Ib1ImwcLBH70rbMSkKfSmUNBsdf2PwaEJtKvgmkNw==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.2.1.tgz",
+ "integrity": "sha512-AyeEbWOu/TAXdxlV9wmGcR0+yh2j3vYPGOECcIj2S7MkrLyC7ne+oye2BKTItt0ii2PHk4cDy+95+LshzbXnGg==",
"license": "MIT",
"engines": {
"node": ">=12.20"
@@ -8891,9 +8984,9 @@
}
},
"node_modules/yocto-spinner": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/yocto-spinner/-/yocto-spinner-0.2.1.tgz",
- "integrity": "sha512-lHHxjh0bXaLgdJy3cNnVb/F9myx3CkhrvSOEVTkaUgNMXnYFa2xYPVhtGnqhh3jErY2gParBOHallCbc7NrlZQ==",
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/yocto-spinner/-/yocto-spinner-0.2.3.tgz",
+ "integrity": "sha512-sqBChb33loEnkoXte1bLg45bEBsOP9N1kzQh5JZNKj/0rik4zAPTNSAVPj3uQAdc6slYJ0Ksc403G2XgxsJQFQ==",
"license": "MIT",
"dependencies": {
"yoctocolors": "^2.1.1"
diff --git a/docs/package.json b/docs/package.json
index 48f3e813d..71b4f2a63 100644
--- a/docs/package.json
+++ b/docs/package.json
@@ -11,18 +11,18 @@
},
"dependencies": {
"@astrojs/starlight": "^0.35.2",
- "@astrojs/vercel": "^8.2.4",
+ "@astrojs/vercel": "^8.2.6",
"@pagefind/modular-ui": "^1.3.0",
- "@semantic-ui/astro-lit": "5.1.0",
+ "@semantic-ui/astro-lit": "5.1.1",
"@webcomponents/template-shadowroot": "^0.2.1",
- "astro": "^5.12.7",
+ "astro": "^5.13.2",
"astro-expressive-code": "^0.41.3",
"link": "^2.1.1",
- "playground-elements": "^0.20.0",
+ "playground-elements": "0.18.1",
"pretty": "^2.0.0",
"pretty-json-custom-element": "^1.1.19",
"semver": "^7.7.2",
- "shiki": "^3.9.1"
+ "shiki": "^3.9.2"
},
"devDependencies": {
"@astropub/md": "^1.0.0"
diff --git a/docs/public/pagefind/pagefind-entry.json:Zone.Identifier b/docs/public/pagefind/pagefind-entry.json:Zone.Identifier
deleted file mode 100644
index e69de29bb..000000000
diff --git a/docs/public/pagefind/pagefind-highlight.js:Zone.Identifier b/docs/public/pagefind/pagefind-highlight.js:Zone.Identifier
deleted file mode 100644
index e69de29bb..000000000
diff --git a/docs/public/pagefind/pagefind-modular-ui.css:Zone.Identifier b/docs/public/pagefind/pagefind-modular-ui.css:Zone.Identifier
deleted file mode 100644
index e69de29bb..000000000
diff --git a/docs/public/pagefind/pagefind-modular-ui.js:Zone.Identifier b/docs/public/pagefind/pagefind-modular-ui.js:Zone.Identifier
deleted file mode 100644
index e69de29bb..000000000
diff --git a/docs/public/pagefind/pagefind-ui.css:Zone.Identifier b/docs/public/pagefind/pagefind-ui.css:Zone.Identifier
deleted file mode 100644
index e69de29bb..000000000
diff --git a/docs/public/pagefind/pagefind-ui.js:Zone.Identifier b/docs/public/pagefind/pagefind-ui.js:Zone.Identifier
deleted file mode 100644
index e69de29bb..000000000
diff --git a/docs/public/pagefind/pagefind.en_1fdbf286dc.pf_meta:Zone.Identifier b/docs/public/pagefind/pagefind.en_1fdbf286dc.pf_meta:Zone.Identifier
deleted file mode 100644
index e69de29bb..000000000
diff --git a/docs/public/pagefind/pagefind.en_3aa3cc9072.pf_meta:Zone.Identifier b/docs/public/pagefind/pagefind.en_3aa3cc9072.pf_meta:Zone.Identifier
deleted file mode 100644
index e69de29bb..000000000
diff --git a/docs/public/pagefind/pagefind.en_41974788fc.pf_meta:Zone.Identifier b/docs/public/pagefind/pagefind.en_41974788fc.pf_meta:Zone.Identifier
deleted file mode 100644
index e69de29bb..000000000
diff --git a/docs/public/pagefind/pagefind.en_4e9d8189ab.pf_meta:Zone.Identifier b/docs/public/pagefind/pagefind.en_4e9d8189ab.pf_meta:Zone.Identifier
deleted file mode 100644
index e69de29bb..000000000
diff --git a/docs/public/pagefind/pagefind.en_863838e124.pf_meta:Zone.Identifier b/docs/public/pagefind/pagefind.en_863838e124.pf_meta:Zone.Identifier
deleted file mode 100644
index e69de29bb..000000000
diff --git a/docs/public/pagefind/pagefind.en_8681193e6d.pf_meta:Zone.Identifier b/docs/public/pagefind/pagefind.en_8681193e6d.pf_meta:Zone.Identifier
deleted file mode 100644
index e69de29bb..000000000
diff --git a/docs/public/pagefind/pagefind.en_a8e6c8f86b.pf_meta:Zone.Identifier b/docs/public/pagefind/pagefind.en_a8e6c8f86b.pf_meta:Zone.Identifier
deleted file mode 100644
index e69de29bb..000000000
diff --git a/docs/public/pagefind/pagefind.en_e2257ea158.pf_meta:Zone.Identifier b/docs/public/pagefind/pagefind.en_e2257ea158.pf_meta:Zone.Identifier
deleted file mode 100644
index e69de29bb..000000000
diff --git a/docs/public/pagefind/pagefind.js:Zone.Identifier b/docs/public/pagefind/pagefind.js:Zone.Identifier
deleted file mode 100644
index e69de29bb..000000000
diff --git a/docs/public/pagefind/wasm.en.pagefind:Zone.Identifier b/docs/public/pagefind/wasm.en.pagefind:Zone.Identifier
deleted file mode 100644
index e69de29bb..000000000
diff --git a/docs/public/pagefind/wasm.unknown.pagefind:Zone.Identifier b/docs/public/pagefind/wasm.unknown.pagefind:Zone.Identifier
deleted file mode 100644
index e69de29bb..000000000
diff --git a/docs/public/sandbox/playground-service-worker-proxy.html b/docs/public/sandbox/playground-service-worker-proxy.html
index 91117701f..a6799a309 100755
--- a/docs/public/sandbox/playground-service-worker-proxy.html
+++ b/docs/public/sandbox/playground-service-worker-proxy.html
@@ -3,4 +3,9 @@
* Copyright 2019 Google LLC
* SPDX-License-Identifier: BSD-3-Clause
*/
+/**
+ * @license
+ * Copyright 2020 Google LLC
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
(async()=>{try{parent.window.console.warn("Playground sandbox is executing with the same origin as its parent.","This is a security risk.","https://github.com/google/playground-elements#sandbox-security")}catch{}const{scope:e,port:t}=await new Promise((e=>{const t=a=>{1===a.data.type&&(window.removeEventListener("message",t),e(a.data))};window.addEventListener("message",t)})),a=await navigator.serviceWorker.register(new URL("playground-service-worker.js",import.meta.url).href,{scope:e}),n=()=>{var e,t;return null!==(t=null!==(e=a.installing)&&void 0!==e?e:a.waiting)&&void 0!==t?t:a.active};let r=null;const s=async(e=!1)=>{const a=n();if(!e&&a===r)return;if(r=a,null===a)return void console.error("No playground service worker found.");if(await(async e=>{if("activated"!==e.state)return new Promise((t=>{const a=new AbortController;e.addEventListener("statechange",(()=>{"activated"===e.state&&(t(),a.abort())}),{signal:a.signal})}))})(a),a!==r)return;const{port1:s,port2:o}=new MessageChannel,i={type:3,port:s};t.postMessage(i,[s]);const d={type:2,port:o};a.postMessage(d,[o])};s(),a.addEventListener("updatefound",(()=>{s()})),navigator.serviceWorker.addEventListener("message",(e=>{e.source===r&&5===e.data.type&&s(!0)})),window.addEventListener("message",(async e=>{if(6===e.data.type){const e=n();await a.update(),n()===e&&console.error("Playground service worker update failed.")}}))})();
\ No newline at end of file
diff --git a/docs/public/sandbox/playground-service-worker.js b/docs/public/sandbox/playground-service-worker.js
index 3b45bd006..0c58fcb84 100755
--- a/docs/public/sandbox/playground-service-worker.js
+++ b/docs/public/sandbox/playground-service-worker.js
@@ -4,20 +4,20 @@
* Copyright 2019 Google LLC
* SPDX-License-Identifier: BSD-3-Clause
*/
-const e=Symbol("Comlink.proxy"),t=Symbol("Comlink.endpoint"),n=Symbol("Comlink.releaseProxy"),s=Symbol("Comlink.finalizer"),r=Symbol("Comlink.thrown"),a=e=>"object"==typeof e&&null!==e||"function"==typeof e,i=new Map([["proxy",{canHandle:t=>a(t)&&t[e],serialize(e){const{port1:t,port2:n}=new MessageChannel;return o(e,t),[n,[n]]},deserialize:e=>(e.start(),f(e,[],undefined))}],["throw",{canHandle:e=>a(e)&&r in e,serialize({value:e}){let t;return t=e instanceof Error?{isError:!0,value:{message:e.message,name:e.name,stack:e.stack}}:{isError:!1,value:e},[t,[]]},deserialize(e){if(e.isError)throw Object.assign(Error(e.value.message),e.value);throw e.value}}]]);function o(t,n=globalThis,a=["*"]){n.addEventListener("message",(function i(l){if(!l||!l.data)return;if(!function(e,t){for(const n of e){if(t===n||"*"===n)return!0;if(n instanceof RegExp&&n.test(t))return!0}return!1}(a,l.origin))return void console.warn(`Invalid origin '${l.origin}' for comlink proxy`);const{id:u,type:p,path:d}=Object.assign({path:[]},l.data),f=(l.data.argumentList||[]).map(v);let g;try{const n=d.slice(0,-1).reduce(((e,t)=>e[t]),t),s=d.reduce(((e,t)=>e[t]),t);switch(p){case"GET":g=s;break;case"SET":n[d.slice(-1)[0]]=v(l.data.value),g=!0;break;case"APPLY":g=s.apply(n,f);break;case"CONSTRUCT":g=function(t){return Object.assign(t,{[e]:!0})}(new s(...f));break;case"ENDPOINT":{const{port1:e,port2:n}=new MessageChannel;o(t,n),g=function(e,t){return h.set(e,t),e}(e,[e])}break;case"RELEASE":g=void 0;break;default:return}}catch(e){g={value:e,[r]:0}}Promise.resolve(g).catch((e=>({value:e,[r]:0}))).then((e=>{const[r,a]=m(e);n.postMessage(Object.assign(Object.assign({},r),{id:u}),a),"RELEASE"===p&&(n.removeEventListener("message",i),c(n),s in t&&"function"==typeof t[s]&&t[s]())})).catch((e=>{const[t,s]=m({value:new TypeError("Unserializable return value"),[r]:0});n.postMessage(Object.assign(Object.assign({},t),{id:u}),s)}))})),n.start&&n.start()}function c(e){(function(e){return"MessagePort"===e.constructor.name})(e)&&e.close()}function l(e){if(e)throw Error("Proxy has been released and is not useable")}function u(e){return y(e,{type:"RELEASE"}).then((()=>{c(e)}))}const p=new WeakMap,d="FinalizationRegistry"in globalThis&&new FinalizationRegistry((e=>{const t=(p.get(e)||0)-1;p.set(e,t),0===t&&u(e)}));function f(e,s=[],r=function(){}){let a=!1;const i=new Proxy(r,{get(t,r){if(l(a),r===n)return()=>{!function(e){d&&d.unregister(e)}(i),u(e),a=!0};if("then"===r){if(0===s.length)return{then:()=>i};const t=y(e,{type:"GET",path:s.map((e=>e.toString()))}).then(v);return t.then.bind(t)}return f(e,[...s,r])},set(t,n,r){l(a);const[i,o]=m(r);return y(e,{type:"SET",path:[...s,n].map((e=>e.toString())),value:i},o).then(v)},apply(n,r,i){l(a);const o=s[s.length-1];if(o===t)return y(e,{type:"ENDPOINT"}).then(v);if("bind"===o)return f(e,s.slice(0,-1));const[c,u]=g(i);return y(e,{type:"APPLY",path:s.map((e=>e.toString())),argumentList:c},u).then(v)},construct(t,n){l(a);const[r,i]=g(n);return y(e,{type:"CONSTRUCT",path:s.map((e=>e.toString())),argumentList:r},i).then(v)}});return function(e,t){const n=(p.get(t)||0)+1;p.set(t,n),d&&d.register(e,t,e)}(i,e),i}function g(e){const t=e.map(m);return[t.map((e=>e[0])),(n=t.map((e=>e[1])),Array.prototype.concat.apply([],n))];var n}const h=new WeakMap;function m(e){for(const[t,n]of i)if(n.canHandle(e)){const[s,r]=n.serialize(e);return[{type:"HANDLER",name:t,value:s},r]}return[{type:"RAW",value:e},h.get(e)||[]]}function v(e){switch(e.type){case"HANDLER":return i.get(e.name).deserialize(e.value);case"RAW":return e.value}}function y(e,t,n){return new Promise((s=>{const r=[,,,,].fill(0).map((()=>Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(16))).join("-");e.addEventListener("message",(function t(n){n.data&&n.data.id&&n.data.id===r&&(e.removeEventListener("message",t),s(n.data))})),e.start&&e.start(),e.postMessage(Object.assign({id:r},t),n)}))}
+const e=Symbol("Comlink.proxy"),t=Symbol("Comlink.endpoint"),n=Symbol("Comlink.releaseProxy"),s=Symbol("Comlink.thrown"),a=e=>"object"==typeof e&&null!==e||"function"==typeof e,r=new Map([["proxy",{canHandle:t=>a(t)&&t[e],serialize(e){const{port1:t,port2:n}=new MessageChannel;return i(e,t),[n,[n]]},deserialize:e=>(e.start(),l(e,[],undefined))}],["throw",{canHandle:e=>a(e)&&s in e,serialize({value:e}){let t;return t=e instanceof Error?{isError:!0,value:{message:e.message,name:e.name,stack:e.stack}}:{isError:!1,value:e},[t,[]]},deserialize(e){if(e.isError)throw Object.assign(Error(e.value.message),e.value);throw e.value}}]]);function i(t,n=self){n.addEventListener("message",(function a(r){if(!r||!r.data)return;const{id:c,type:l,path:u}=Object.assign({path:[]},r.data),h=(r.data.argumentList||[]).map(f);let g;try{const n=u.slice(0,-1).reduce(((e,t)=>e[t]),t),s=u.reduce(((e,t)=>e[t]),t);switch(l){case"GET":g=s;break;case"SET":n[u.slice(-1)[0]]=f(r.data.value),g=!0;break;case"APPLY":g=s.apply(n,h);break;case"CONSTRUCT":g=function(t){return Object.assign(t,{[e]:!0})}(new s(...h));break;case"ENDPOINT":{const{port1:e,port2:n}=new MessageChannel;i(t,n),g=function(e,t){return p.set(e,t),e}(e,[e])}break;case"RELEASE":g=void 0;break;default:return}}catch(e){g={value:e,[s]:0}}Promise.resolve(g).catch((e=>({value:e,[s]:0}))).then((e=>{const[t,s]=d(e);n.postMessage(Object.assign(Object.assign({},t),{id:c}),s),"RELEASE"===l&&(n.removeEventListener("message",a),o(n))}))})),n.start&&n.start()}function o(e){(function(e){return"MessagePort"===e.constructor.name})(e)&&e.close()}function c(e){if(e)throw Error("Proxy has been released and is not useable")}function l(e,s=[],a=function(){}){let r=!1;const i=new Proxy(a,{get(t,a){if(c(r),a===n)return()=>h(e,{type:"RELEASE",path:s.map((e=>e.toString()))}).then((()=>{o(e),r=!0}));if("then"===a){if(0===s.length)return{then:()=>i};const t=h(e,{type:"GET",path:s.map((e=>e.toString()))}).then(f);return t.then.bind(t)}return l(e,[...s,a])},set(t,n,a){c(r);const[i,o]=d(a);return h(e,{type:"SET",path:[...s,n].map((e=>e.toString())),value:i},o).then(f)},apply(n,a,i){c(r);const o=s[s.length-1];if(o===t)return h(e,{type:"ENDPOINT"}).then(f);if("bind"===o)return l(e,s.slice(0,-1));const[p,d]=u(i);return h(e,{type:"APPLY",path:s.map((e=>e.toString())),argumentList:p},d).then(f)},construct(t,n){c(r);const[a,i]=u(n);return h(e,{type:"CONSTRUCT",path:s.map((e=>e.toString())),argumentList:a},i).then(f)}});return i}function u(e){const t=e.map(d);return[t.map((e=>e[0])),(n=t.map((e=>e[1])),Array.prototype.concat.apply([],n))];var n}const p=new WeakMap;function d(e){for(const[t,n]of r)if(n.canHandle(e)){const[s,a]=n.serialize(e);return[{type:"HANDLER",name:t,value:s},a]}return[{type:"RAW",value:e},p.get(e)||[]]}function f(e){switch(e.type){case"HANDLER":return r.get(e.name).deserialize(e.value);case"RAW":return e.value}}function h(e,t,n){return new Promise((s=>{const a=[,,,,].fill(0).map((()=>Math.floor(Math.random()*Number.MAX_SAFE_INTEGER).toString(16))).join("-");e.addEventListener("message",(function t(n){n.data&&n.data.id&&n.data.id===a&&(e.removeEventListener("message",t),s(n.data))})),e.start&&e.start(),e.postMessage(Object.assign({id:a},t),n)}))}
/**
* @license
* Copyright 2020 Google LLC
* SPDX-License-Identifier: BSD-3-Clause
*/
-class E{constructor(){this.settled=!1,this.promise=new Promise(((e,t)=>{this._resolve=e,this._reject=t}))}resolve(e){this.settled=!0,this._resolve(e)}reject(e){this.settled=!0,this._reject(e)}}
+class g{constructor(){this.settled=!1,this.promise=new Promise(((e,t)=>{this._resolve=e,this._reject=t}))}resolve(e){this.settled=!0,this._resolve(e)}reject(e){this.settled=!0,this._reject(e)}}
/**
* @license
* Copyright 2021 Google LLC
* SPDX-License-Identifier: BSD-3-Clause
- */const w=new Map,b={setFileAPI(e,t){let n=w.get(t);(void 0===n||n.settled)&&(n=new E,w.set(t,n)),n.resolve(e)}};
+ */const m=new Map,v={setFileAPI(e,t){let n=m.get(t);(void 0===n||n.settled)&&(n=new g,m.set(t,n)),n.resolve(e)}};
/**
* @license
* Copyright 2019 Google LLC
* SPDX-License-Identifier: BSD-3-Clause
- */self.addEventListener("fetch",(e=>{const t=e.request.url;if(t.startsWith(self.registration.scope)){const{filePath:n,sessionId:s}=(e=>{const t=self.registration.scope,n=e.substring(t.length).split("?")[0],s=n.indexOf("/");let r,a;return-1===s?console.warn("Invalid sample file URL: "+e):(r=n.slice(0,s),a=n.slice(s+1)),{sessionId:r,filePath:a}})(t);void 0!==s&&e.respondWith((async(e,t,n)=>{const s=await(async e=>{let t=w.get(e);if(void 0!==t)return t.promise;const n=await(async e=>{for(const t of await self.clients.matchAll({includeUncontrolled:!0})){const n=new URL(t.url).hash;if(new URLSearchParams(n.slice(1)).get("playground-session-id")===e)return t}})(e);if(void 0===n)return;return t=new E,w.set(e,t),n.postMessage({type:5}),t.promise})(n);if(void 0===s)return new Response("Playground project not available",{status:503});const r=await s.getFile(t);if("status"in r){const{body:e,status:t}=r;return new Response(e,{status:t})}const{content:a,contentType:i}=r,o=new Headers;return o.set("Origin-Agent-Cluster","?1"),i&&o.set("Content-Type",i),new Response(a,{headers:o})})(0,n,s))}})),self.addEventListener("activate",(e=>{e.waitUntil(self.clients.claim())})),self.addEventListener("install",(()=>{self.skipWaiting()})),self.addEventListener("message",(e=>{if(2===e.data.type){const t={type:4,version:"09cd6a4e"};e.data.port.postMessage(t),o(b,e.data.port)}}))}();
+ */self.addEventListener("fetch",(e=>{const t=e.request.url;if(t.startsWith(self.registration.scope)){const{filePath:n,sessionId:s}=(e=>{const t=self.registration.scope,n=e.substring(t.length).split("?")[0],s=n.indexOf("/");let a,r;return-1===s?console.warn("Invalid sample file URL: "+e):(a=n.slice(0,s),r=n.slice(s+1)),{sessionId:a,filePath:r}})(t);void 0!==s&&e.respondWith((async(e,t,n)=>{const s=await(async e=>{let t=m.get(e);if(void 0!==t)return t.promise;const n=await(async e=>{for(const t of await self.clients.matchAll({includeUncontrolled:!0})){const n=new URL(t.url).hash;if(new URLSearchParams(n.slice(1)).get("playground-session-id")===e)return t}})(e);if(void 0===n)return;return t=new g,m.set(e,t),n.postMessage({type:5}),t.promise})(n);if(void 0===s)return new Response("Playground project not available",{status:503});const a=await s.getFile(t);if("status"in a){const{body:e,status:t}=a;return new Response(e,{status:t})}const{content:r,contentType:i}=a,o=new Headers;return o.set("Origin-Agent-Cluster","?1"),i&&o.set("Content-Type",i),new Response(r,{headers:o})})(0,n,s))}})),self.addEventListener("activate",(e=>{e.waitUntil(self.clients.claim())})),self.addEventListener("install",(()=>{self.skipWaiting()})),self.addEventListener("message",(e=>{if(2===e.data.type){const t={type:4,version:"1dae6563"};e.data.port.postMessage(t),i(v,e.data.port)}}))}();
diff --git a/docs/src/content/examples/query-is-visible.mdx b/docs/src/content/examples/query-is-visible.mdx
new file mode 100644
index 000000000..e75b5adfc
--- /dev/null
+++ b/docs/src/content/examples/query-is-visible.mdx
@@ -0,0 +1,11 @@
+---
+title: 'Query .isVisible()'
+shortTitle: '.isVisible()'
+id: 'query-is-visible'
+exampleType: 'component'
+category: 'Query'
+subcategory: 'Logical Operators'
+tags: ['query', 'dom', 'is', 'visible', 'test', 'selector', 'traverse']
+description: 'Tests if element is visible in the page'
+selectedFile: 'page.js'
+---
diff --git a/docs/src/content/examples/query-is.mdx b/docs/src/content/examples/query-is.mdx
index 5e2b2b2b8..02d5e5e66 100644
--- a/docs/src/content/examples/query-is.mdx
+++ b/docs/src/content/examples/query-is.mdx
@@ -4,8 +4,8 @@ shortTitle: '.is()'
id: 'query-is'
exampleType: 'component'
category: 'Query'
-subcategory: 'DOM Traversal'
+subcategory: 'Logical Operators'
tags: ['query', 'dom', 'is', 'test', 'selector', 'traverse']
description: 'Tests if elements match a selector'
selectedFile: 'page.js'
----
\ No newline at end of file
+---
diff --git a/docs/src/content/examples/query-naturaldisplay.mdx b/docs/src/content/examples/query-naturaldisplay.mdx
new file mode 100644
index 000000000..9eef461f3
--- /dev/null
+++ b/docs/src/content/examples/query-naturaldisplay.mdx
@@ -0,0 +1,12 @@
+---
+title: 'Query .naturalDisplay()'
+shortTitle: '.naturalDisplay()'
+id: 'query-naturaldisplay'
+exampleType: 'component'
+category: 'Query'
+subcategory: 'Dimensions'
+tags: ['query', 'dimensions', 'display', 'natural', 'css']
+description: 'Gets element natural display value ignoring display:none rules'
+tip: 'Useful for determining original display value before visibility changes'
+selectedFile: 'page.js'
+---
\ No newline at end of file
diff --git a/docs/src/content/examples/query-onnext.mdx b/docs/src/content/examples/query-onnext.mdx
new file mode 100644
index 000000000..5a8d545eb
--- /dev/null
+++ b/docs/src/content/examples/query-onnext.mdx
@@ -0,0 +1,12 @@
+---
+title: 'Query .onNext()'
+shortTitle: '.onNext()'
+id: 'query-on-next'
+exampleType: 'component'
+category: 'Query'
+subcategory: 'Events'
+tags: ['query', 'events', 'onnext', 'promise', 'async', 'await']
+description: 'Wait for events using promises instead of callbacks'
+tip: 'onNext() returns a Promise that resolves when the event fires, enabling async/await patterns'
+selectedFile: 'page.js'
+---
diff --git a/docs/src/content/examples/query-transition-behavior.mdx b/docs/src/content/examples/query-transition-behavior.mdx
new file mode 100644
index 000000000..3698afa9a
--- /dev/null
+++ b/docs/src/content/examples/query-transition-behavior.mdx
@@ -0,0 +1,46 @@
+---
+title: 'Transition Behavior'
+id: 'query-transition-behavior'
+category: 'Query'
+subcategory: 'Plugins / Behaviors'
+exampleType: 'component'
+description: 'Smooth animations for showing and hiding elements using @starting-style and CSS animations'
+tags: ['query', 'plugin', 'behavior', 'animation', 'transition']
+tip: 'Click the buttons to see different animation types. The plugin auto-detects visibility state from the DOM.'
+shortTitle: 'Transition'
+---
+
+The transition behavior provides a modern replacement for classic Semantic UI transitions, using web standards like `@starting-style` and CSS animations.
+
+## Features
+
+- **Two animation types**: `fade` (using @starting-style) and `fade up` (using @keyframes)
+- **Auto-direction detection**: Automatically determines `in` or `out` based on DOM visibility
+- **Natural syntax**: Use `$('.element').transition('fade in')` for intuitive animation control
+- **Unified callbacks**: Same callback system works for both animation types
+- **Modern cleanup**: Uses AbortController for proper event cleanup
+
+## Usage
+
+```javascript
+import '@semantic-ui/core/behaviors/transition';
+
+// Direct animation syntax
+$('.box').transition('fade in');
+$('.box').transition('fade up out');
+
+// Auto-detect direction
+$('.box').transition('fade'); // Shows if hidden, hides if visible
+
+// Method syntax
+$('.box').transition('show');
+$('.box').transition('hide');
+$('.box').transition('toggle');
+
+// With settings
+$('.box').transition({
+ animation: 'fade up',
+ duration: 500,
+ onComplete: () => console.log('Done!')
+});
+```
diff --git a/docs/src/content/examples/utils-isci.mdx b/docs/src/content/examples/utils-isci.mdx
new file mode 100644
index 000000000..25ccaa3b1
--- /dev/null
+++ b/docs/src/content/examples/utils-isci.mdx
@@ -0,0 +1,11 @@
+---
+title: 'isCI'
+id: 'utils-isci'
+exampleType: 'log'
+category: 'Utils'
+subcategory: 'Environment'
+description: 'Detects if code is running in a CI/CD environment'
+tags: ['utils', 'ssr', 'ci', 'environment', 'detection', 'automation']
+selectedFile: 'index.js'
+tip: 'Supports GitHub Actions, GitLab CI, Jenkins, CircleCI, and many other platforms'
+---
\ No newline at end of file
diff --git a/docs/src/content/examples/utils-isclient.mdx b/docs/src/content/examples/utils-isclient.mdx
index d07d0f044..5fce006c8 100644
--- a/docs/src/content/examples/utils-isclient.mdx
+++ b/docs/src/content/examples/utils-isclient.mdx
@@ -3,9 +3,9 @@ title: 'isClient'
id: 'utils-isclient'
exampleType: 'log'
category: 'Utils'
-subcategory: 'SSR'
+subcategory: 'Environment'
description: 'Detect if code is running in a browser environment'
tags: ['utils', 'ssr', 'isclient', 'browser', 'detection']
selectedFile: 'index.js'
tip: 'Constant value determined at module load time, use for conditional browser-only code'
----
\ No newline at end of file
+---
diff --git a/docs/src/content/examples/utils-isdevelopment.mdx b/docs/src/content/examples/utils-isdevelopment.mdx
new file mode 100644
index 000000000..bc7001f66
--- /dev/null
+++ b/docs/src/content/examples/utils-isdevelopment.mdx
@@ -0,0 +1,11 @@
+---
+title: 'isDevelopment'
+id: 'utils-isdevelopment'
+exampleType: 'log'
+category: 'Utils'
+subcategory: 'Environment'
+description: 'Detects if code is running in development environment across platforms'
+tags: ['utils', 'ssr', 'development', 'environment', 'detection']
+selectedFile: 'index.js'
+tip: 'Works across Node.js, Vite, Vercel, Netlify, cloud dev environments, and more'
+---
\ No newline at end of file
diff --git a/docs/src/content/examples/utils-isserver.mdx b/docs/src/content/examples/utils-isserver.mdx
index 5218f8ca3..51422287b 100644
--- a/docs/src/content/examples/utils-isserver.mdx
+++ b/docs/src/content/examples/utils-isserver.mdx
@@ -3,9 +3,9 @@ title: 'isServer'
id: 'utils-isserver'
exampleType: 'log'
category: 'Utils'
-subcategory: 'SSR'
+subcategory: 'Environment'
description: 'Detect if code is running in a server environment (Node.js)'
tags: ['utils', 'ssr', 'isserver', 'environment', 'detection']
selectedFile: 'index.js'
tip: 'Constant value determined at module load time, use for conditional server-side logic'
----
\ No newline at end of file
+---
diff --git a/docs/src/examples/framework/events/global-events/component.css b/docs/src/examples/framework/events/global-events/component.css
new file mode 100644
index 000000000..74bf088b2
--- /dev/null
+++ b/docs/src/examples/framework/events/global-events/component.css
@@ -0,0 +1,17 @@
+.component {
+ cursor: pointer;
+ border: var(--border);
+ transition: var(--transition);
+
+ &:hover {
+ border: var(--selected-border);
+ }
+
+ legend {
+ padding: 3px 5px;
+ text-transform: uppercase;
+ font-weight: bold;
+ font-size: 12px;
+ color: var(--blue-text-color);
+ }
+}
diff --git a/docs/src/examples/framework/events/global-events/component.html b/docs/src/examples/framework/events/global-events/component.html
index 9d5527244..6a66d106c 100644
--- a/docs/src/examples/framework/events/global-events/component.html
+++ b/docs/src/examples/framework/events/global-events/component.html
@@ -1,4 +1,5 @@
-
-
Component {text}
-
Page clicked {counter} times
-
+
+
Page clicked {counter} time{maybePlural counter}
diff --git a/docs/src/examples/framework/events/global-events/component.js b/docs/src/examples/framework/events/global-events/component.js
index ee0c7238e..edf241f1d 100644
--- a/docs/src/examples/framework/events/global-events/component.js
+++ b/docs/src/examples/framework/events/global-events/component.js
@@ -2,15 +2,17 @@ import { defineComponent, getText } from '@semantic-ui/component';
const pageCSS = await getText('./page.css');
const template = await getText('./component.html');
+const css = await getText('./component.css');
const defaultState = {
- text: 'Not Clicked',
counter: 0,
+ componentCounter: 0,
};
const events = {
- 'click'({ state }) {
- state.text.set('Clicked');
+ 'click .component'({ state, event }) {
+ state.componentCounter.increment();
+ event.stopImmediatePropagation(); // lets not make global counter increment
},
'global click body'({ state }) {
state.counter.increment();
@@ -22,5 +24,6 @@ defineComponent({
template,
defaultState,
events,
+ css,
pageCSS,
});
diff --git a/docs/src/examples/query/dimensions/query-innerheight/page.js b/docs/src/examples/query/dimensions/query-innerheight/page.js
index a1ea48214..efa3db555 100644
--- a/docs/src/examples/query/dimensions/query-innerheight/page.js
+++ b/docs/src/examples/query/dimensions/query-innerheight/page.js
@@ -1,13 +1,16 @@
import { $ } from '@semantic-ui/query';
-const box = $('.box');
+$(document).ready(() => {
+ const box = $('.box');
-// Get dimensions
-const height = box.height();
-const innerHeight = box.innerHeight();
-const difference = innerHeight - height;
+ // Get dimensions
+ const height = box.height();
+ const innerHeight = box.innerHeight();
+ const difference = innerHeight - height;
-// Display measurements
-$('.height').text(height);
-$('.inner-height').text(innerHeight);
-$('.difference').text(difference);
+ // Display measurements
+ $('.height').text(height);
+ $('.inner-height').text(innerHeight);
+ $('.difference').text(difference);
+ debugger;
+});
diff --git a/docs/src/examples/query/dimensions/query-naturaldisplay/page.css b/docs/src/examples/query/dimensions/query-naturaldisplay/page.css
new file mode 100644
index 000000000..3b54a66d3
--- /dev/null
+++ b/docs/src/examples/query/dimensions/query-naturaldisplay/page.css
@@ -0,0 +1,73 @@
+.container {
+ border: var(--border);
+ border-radius: var(--border-radius);
+ margin: var(--vertically-spaced);
+ padding: var(--padding);
+}
+
+.element {
+ margin: var(--compact-padding) 0;
+ padding: var(--padding);
+ border-radius: var(--border-radius);
+ font-size: var(--medium);
+ color: var(--text-color);
+ align-items: center;
+ justify-content: center;
+
+ &.block {
+ background: var(--blue-5);
+ display: block;
+ }
+
+ &.inline {
+ background: var(--green-5);
+ width: 200px;
+ display: inline-block;
+ }
+
+ &.flex {
+ background: var(--red-5);
+ display: flex;
+ }
+
+ &.hidden {
+ display: none;
+ }
+}
+
+.measurements {
+ background: var(--standard-5);
+ padding: var(--spacing);
+ border-radius: var(--border-radius);
+ margin: var(--spacing) 0;
+
+ p {
+ margin: var(--4px) 0;
+ font-family: monospace;
+
+ span {
+ font-weight: var(--bold);
+ color: var(--blue-60);
+ }
+ }
+}
+
+.actions {
+ display: flex;
+ gap: var(--spacing);
+
+ button {
+ padding: var(--spacing);
+ border: 1px solid var(--standard-20);
+ border-radius: var(--border-radius);
+ background: var(--component-background);
+ color: var(--text-color);
+ cursor: pointer;
+ font-size: var(--medium);
+ transition: var(--transition);
+
+ &:hover {
+ background: var(--standard-5);
+ }
+ }
+}
diff --git a/docs/src/examples/query/dimensions/query-naturaldisplay/page.html b/docs/src/examples/query/dimensions/query-naturaldisplay/page.html
new file mode 100644
index 000000000..fa8a438e8
--- /dev/null
+++ b/docs/src/examples/query/dimensions/query-naturaldisplay/page.html
@@ -0,0 +1,16 @@
+
+
This is a block element (div)
+
This is an inline element (span inside div)
+
This is a flex container
+
+
+
+
Block Element Display: -
+
Inline Element Display: -
+
Flex Element Display: -
+
+
+
+ Toggle Visibility
+ Check Display
+
diff --git a/docs/src/examples/query/dimensions/query-naturaldisplay/page.js b/docs/src/examples/query/dimensions/query-naturaldisplay/page.js
new file mode 100644
index 000000000..32e75aefa
--- /dev/null
+++ b/docs/src/examples/query/dimensions/query-naturaldisplay/page.js
@@ -0,0 +1,32 @@
+import { $ } from '@semantic-ui/query';
+
+$('ui-button')
+ .filter('.toggle')
+ .on('click', toggleVisibility).end()
+ .filter('.check')
+ .on('click', updateMeasurements);
+
+function updateMeasurements() {
+ // Get natural display values for each element
+ const blockDisplay = $('.block.element').naturalDisplay();
+ const inlineDisplay = $('.inline.element').naturalDisplay();
+ const flexDisplay = $('.flex.element').naturalDisplay();
+
+ // Display measurements - show what naturalDisplay() returns
+ $('.display')
+ .filter('.block').text(blockDisplay).end()
+ .filter('.inline').text(inlineDisplay).end()
+ .filter('.flex').text(flexDisplay).end();
+}
+
+function clearMeasurements() {
+ $('.display').text('Click to display measurements');
+}
+
+function toggleVisibility() {
+ clearMeasurements();
+ $('.element').toggleClass('hidden');
+}
+
+// Initial measurements
+updateMeasurements();
diff --git a/docs/src/examples/query/dom-traversal/query-clippingparent/page.css b/docs/src/examples/query/dom-traversal/query-clippingparent/page.css
index 2191109d5..e6464b7f1 100644
--- a/docs/src/examples/query/dom-traversal/query-clippingparent/page.css
+++ b/docs/src/examples/query/dom-traversal/query-clippingparent/page.css
@@ -1,23 +1,42 @@
-.viewport {
- height: 100px;
- overflow: hidden;
- border: var(--border);
- margin: var(--vertically-spaced);
-
- &.highlight {
- border-color: var(--primary-30);
- background-color: var(--primary-5);
- }
+.container {
+ padding: var(--padding);
+ margin: var(--margin) 0;
+ border: 2px solid var(--standard-30);
+ background: var(--standard-5);
}
-.content {
- height: 200px;
- padding: var(--spacing);
+.box {
+ padding: var(--padding);
+ margin: var(--margin) 0;
+ border: 2px solid var(--blue-30);
+ background: var(--blue-5);
+ height: 100px;
+ position: relative;
}
.target {
- padding: var(--compact-spacing);
+ padding: var(--padding);
+ background: var(--green-10);
+ border: 2px solid var(--green-30);
+ position: absolute;
+ top: 80px;
+ left: 20px;
+ width: 200px;
+}
+
+ui-button {
+ margin: 5px;
+}
+
+.log {
+ margin: var(--margin) 0;
+ padding: var(--padding);
background: var(--standard-5);
+ font-family: monospace;
border-radius: var(--border-radius);
- margin-top: 80px;
+}
+
+.highlight {
+ outline: 3px solid var(--red-40);
+ outline-offset: -3px;
}
\ No newline at end of file
diff --git a/docs/src/examples/query/dom-traversal/query-clippingparent/page.html b/docs/src/examples/query/dom-traversal/query-clippingparent/page.html
index 0dd802cd0..346838c27 100644
--- a/docs/src/examples/query/dom-traversal/query-clippingparent/page.html
+++ b/docs/src/examples/query/dom-traversal/query-clippingparent/page.html
@@ -1,5 +1,11 @@
-
-
-
Target Element
+
+
+
I overflow my container!
-
\ No newline at end of file
+
+
+
Toggle Overflow
+
Toggle Contain
+
Find Clipping Parent
+
+
\ No newline at end of file
diff --git a/docs/src/examples/query/dom-traversal/query-clippingparent/page.js b/docs/src/examples/query/dom-traversal/query-clippingparent/page.js
index adbb0de8f..8fc759a5b 100644
--- a/docs/src/examples/query/dom-traversal/query-clippingparent/page.js
+++ b/docs/src/examples/query/dom-traversal/query-clippingparent/page.js
@@ -1,6 +1,50 @@
import { $ } from '@semantic-ui/query';
-const target = $('.target');
-const clippingParent = target.clippingParent();
+const $box = $('.box');
+const $container = $('.container');
+const $log = $('.log');
-clippingParent.addClass('highlight');
\ No newline at end of file
+// Simple log helper
+const log = (text) => $log.text(text);
+
+// Toggle overflow on box
+$('.toggle-overflow').on('click', () => {
+ const currentOverflow = $box.css('overflow');
+ if (currentOverflow === 'hidden') {
+ $box.css('overflow', 'visible');
+ log('Box overflow set to: visible');
+ }
+ else {
+ $box.css('overflow', 'hidden');
+ log('Box overflow set to: hidden');
+ }
+});
+
+// Toggle contain on container
+$('.toggle-contain').on('click', () => {
+ const currentContain = $container.css('contain');
+ if (currentContain === 'paint') {
+ $container.css('contain', 'none');
+ log('Container contain set to: none');
+ }
+ else {
+ $container.css('contain', 'paint');
+ log('Container contain set to: paint');
+ }
+});
+
+// Find clipping parent
+$('.find').on('click', () => {
+ $('.highlight').removeClass('highlight');
+
+ const $clippingParent = $('.target').clippingParent();
+ $clippingParent.addClass('highlight');
+
+ if ($clippingParent.is('body')) {
+ log('Clipping parent: ');
+ }
+ else {
+ const className = $clippingParent.attr('class').replace(' highlight', '');
+ log(`Clipping parent: .${className}`);
+ }
+});
diff --git a/docs/src/examples/query/dom-traversal/query-containingparent/page.css b/docs/src/examples/query/dom-traversal/query-containingparent/page.css
index eb8a3ce91..e49bdad0e 100644
--- a/docs/src/examples/query/dom-traversal/query-containingparent/page.css
+++ b/docs/src/examples/query/dom-traversal/query-containingparent/page.css
@@ -1,22 +1,44 @@
.container {
+ padding: var(--padding);
+ margin: var(--margin) 0;
+ border: 2px solid var(--standard-30);
+ background: var(--standard-5);
position: relative;
- padding: var(--spacing);
- border: var(--border);
- margin: var(--vertically-spaced);
-
- &.highlight {
- background-color: var(--primary-5);
- border-color: var(--primary-30);
- }
+ height: 150px;
}
-.wrapper {
- padding: var(--compact-spacing);
- background: var(--standard-5);
+.box {
+ padding: var(--padding);
+ margin: var(--margin);
+ border: 2px solid var(--blue-30);
+ background: var(--blue-5);
+ height: 100px;
}
.target {
- padding: var(--compact-spacing);
- background: var(--standard-10);
+ position: absolute;
+ top: 20px;
+ left: 20px;
+ padding: var(--padding);
+ background: var(--green-10);
+ border: 2px solid var(--green-30);
+ font-size: 12px;
+ font-family: monospace;
+}
+
+ui-button {
+ margin: 5px;
+}
+
+.log {
+ margin: var(--margin) 0;
+ padding: var(--padding);
+ background: var(--standard-5);
+ font-family: monospace;
border-radius: var(--border-radius);
+}
+
+.highlight {
+ outline: 3px solid var(--red-40);
+ outline-offset: -3px;
}
\ No newline at end of file
diff --git a/docs/src/examples/query/dom-traversal/query-containingparent/page.html b/docs/src/examples/query/dom-traversal/query-containingparent/page.html
index 626a9b52a..f2bb436a4 100644
--- a/docs/src/examples/query/dom-traversal/query-containingparent/page.html
+++ b/docs/src/examples/query/dom-traversal/query-containingparent/page.html
@@ -1,5 +1,14 @@
-
-
Target Element
+
+
+ position: absolute
+
top: 20px
+
-
\ No newline at end of file
+
+
+
Toggle Transform
+
Toggle Filter
+
Find Containing Parent
+
+
\ No newline at end of file
diff --git a/docs/src/examples/query/dom-traversal/query-containingparent/page.js b/docs/src/examples/query/dom-traversal/query-containingparent/page.js
index 2de78b472..be4f7cdd9 100644
--- a/docs/src/examples/query/dom-traversal/query-containingparent/page.js
+++ b/docs/src/examples/query/dom-traversal/query-containingparent/page.js
@@ -1,6 +1,68 @@
import { $ } from '@semantic-ui/query';
-const target = $('.target');
-const containingParent = target.containingParent();
+const $box = $('.box');
+const $log = $('.log');
+const $target = $('.target');
-containingParent.addClass('highlight');
\ No newline at end of file
+// Simple log helper
+const log = (text) => $log.text(text);
+
+// Show initial position
+log(`Target offsetTop: ${$target.prop('offsetTop')}px`);
+
+// Toggle transform on box
+$('.toggle-transform').on('click', () => {
+ const currentTransform = $box.css('transform');
+ if (currentTransform === 'none') {
+ $box.css('transform', 'scale(1)');
+ log('Box transform set to: scale(1) - Now box is the containing parent!');
+ }
+ else {
+ $box.css('transform', 'none');
+ log('Box transform set to: none');
+ }
+
+ // Show how offsetTop is now relative to different element
+ setTimeout(() => {
+ $log.append(`
Target offsetTop: ${$target.prop('offsetTop')}px`);
+ }, 10);
+});
+
+// Toggle filter on box
+$('.toggle-filter').on('click', () => {
+ const currentFilter = $box.css('filter');
+ if (currentFilter === 'none') {
+ $box.css('filter', 'brightness(1)');
+ log('Box filter set to: brightness(1) - Now box is the containing parent!');
+ }
+ else {
+ $box.css('filter', 'none');
+ log('Box filter set to: none');
+ }
+
+ // Show how offsetTop is now relative to different element
+ setTimeout(() => {
+ $log.append(`
Target offsetTop: ${$target.prop('offsetTop')}px`);
+ }, 10);
+});
+
+// Find containing parent
+$('.find').on('click', () => {
+ $('.highlight').removeClass('highlight');
+
+ const $containingParent = $('.target').containingParent();
+ $containingParent.addClass('highlight');
+
+ if ($containingParent.is('.container')) {
+ log('Containing parent: .container (as expected)');
+ }
+ else if ($containingParent.is('.box')) {
+ log('Containing parent: .box (due to transform/filter!)');
+ }
+
+ // Compare with browser's offsetParent
+ const $offsetParent = $('.target').containingParent({ calculate: false });
+ if (!$offsetParent.is($containingParent)) {
+ $log.append('
Note: Browser offsetParent is different!');
+ }
+});
diff --git a/docs/src/examples/query/events/query-on-delegate/page.css b/docs/src/examples/query/events/query-on-delegate/page.css
index b821cce4f..e7ecb53f4 100644
--- a/docs/src/examples/query/events/query-on-delegate/page.css
+++ b/docs/src/examples/query/events/query-on-delegate/page.css
@@ -26,7 +26,7 @@
margin: var(--vertically-spaced);
font-family: monospace;
color: var(--text-color);
- background: var(--yellow-90);
+ background: var(--yellow-5);
border: var(--border);
border-radius: var(--border-radius);
padding: var(--spacing);
diff --git a/docs/src/examples/query/events/query-on-next/page.css b/docs/src/examples/query/events/query-on-next/page.css
new file mode 100644
index 000000000..24ccf11a5
--- /dev/null
+++ b/docs/src/examples/query/events/query-on-next/page.css
@@ -0,0 +1,20 @@
+ui-button {
+ margin: 10px 5px;
+}
+
+.log {
+ margin: 20px 0;
+ padding: 15px;
+ background: var(--standard-5);
+ border: var(--border);
+ border-radius: var(--border-radius);
+ font-family: monospace;
+ min-height: 100px;
+
+ div {
+ margin: 5px 0;
+ padding: 5px;
+ background: var(--standard-10);
+ border-radius: var(--border-radius);
+ }
+}
diff --git a/docs/src/examples/query/events/query-on-next/page.html b/docs/src/examples/query/events/query-on-next/page.html
new file mode 100644
index 000000000..1c97730bc
--- /dev/null
+++ b/docs/src/examples/query/events/query-on-next/page.html
@@ -0,0 +1,3 @@
+
Click Me
+
+
diff --git a/docs/src/examples/query/events/query-on-next/page.js b/docs/src/examples/query/events/query-on-next/page.js
new file mode 100644
index 000000000..6899d848d
--- /dev/null
+++ b/docs/src/examples/query/events/query-on-next/page.js
@@ -0,0 +1,14 @@
+import { $ } from '@semantic-ui/query';
+
+const addLog = (text) => {
+ $('.log').append(`
${text}
`);
+};
+
+$('.click').on('click', async function() {
+ addLog('Clicked');
+
+ // will always run once after reentry into button
+ await $(this).onNext('mouseleave');
+ await $(this).onNext('mouseenter');
+ addLog('You re-entered the button');
+});
diff --git a/docs/src/examples/query/logical-operators/query-is-visible/page.css b/docs/src/examples/query/logical-operators/query-is-visible/page.css
new file mode 100644
index 000000000..809d52a44
--- /dev/null
+++ b/docs/src/examples/query/logical-operators/query-is-visible/page.css
@@ -0,0 +1,18 @@
+.box {
+ padding: var(--padding);
+ margin: var(--margin) 0;
+ background: var(--blue-10);
+ border: 2px solid var(--blue-30);
+}
+
+ui-button {
+ margin: 5px;
+}
+
+.log {
+ margin: var(--margin) 0;
+ padding: var(--padding);
+ background: var(--standard-5);
+ font-family: monospace;
+ border-radius: var(--border-radius);
+}
\ No newline at end of file
diff --git a/docs/src/examples/query/logical-operators/query-is-visible/page.html b/docs/src/examples/query/logical-operators/query-is-visible/page.html
new file mode 100644
index 000000000..61da48bd9
--- /dev/null
+++ b/docs/src/examples/query/logical-operators/query-is-visible/page.html
@@ -0,0 +1,7 @@
+
Test Box
+
+
Toggle Display
+
Toggle Opacity
+
Check Visibility
+
+
\ No newline at end of file
diff --git a/docs/src/examples/query/logical-operators/query-is-visible/page.js b/docs/src/examples/query/logical-operators/query-is-visible/page.js
new file mode 100644
index 000000000..12024d0ab
--- /dev/null
+++ b/docs/src/examples/query/logical-operators/query-is-visible/page.js
@@ -0,0 +1,41 @@
+import { $ } from '@semantic-ui/query';
+
+const $box = $('.box');
+const $log = $('.log');
+
+// Toggle display: none
+$('.toggle-display').on('click', () => {
+ const currentDisplay = $box.css('display');
+ if (currentDisplay === 'none') {
+ $box.css('display', 'block');
+ $log.text('Display set to: block');
+ }
+ else {
+ $box.css('display', 'none');
+ $log.text('Display set to: none');
+ }
+});
+
+// Toggle opacity: 0
+$('.toggle-opacity').on('click', () => {
+ const currentOpacity = $box.css('opacity');
+ if (currentOpacity === '0') {
+ $box.css('opacity', '1');
+ $log.text('Opacity set to: 1');
+ }
+ else {
+ $box.css('opacity', '0');
+ $log.text('Opacity set to: 0');
+ }
+});
+
+// Check visibility
+$('.check').on('click', () => {
+ const visible = $box.isVisible();
+ const visibleWithOpacity = $box.isVisible({ includeOpacity: true });
+
+ $log.html(`
+ .isVisible(): ${visible}
+ .isVisible({ includeOpacity: true }): ${visibleWithOpacity}
+ `);
+});
diff --git a/docs/src/examples/query/dom-traversal/query-is/page.css b/docs/src/examples/query/logical-operators/query-is/page.css
similarity index 100%
rename from docs/src/examples/query/dom-traversal/query-is/page.css
rename to docs/src/examples/query/logical-operators/query-is/page.css
diff --git a/docs/src/examples/query/dom-traversal/query-is/page.html b/docs/src/examples/query/logical-operators/query-is/page.html
similarity index 100%
rename from docs/src/examples/query/dom-traversal/query-is/page.html
rename to docs/src/examples/query/logical-operators/query-is/page.html
diff --git a/docs/src/examples/query/dom-traversal/query-is/page.js b/docs/src/examples/query/logical-operators/query-is/page.js
similarity index 100%
rename from docs/src/examples/query/dom-traversal/query-is/page.js
rename to docs/src/examples/query/logical-operators/query-is/page.js
diff --git a/docs/src/examples/query/plugins/query-transition-behavior/page.css b/docs/src/examples/query/plugins/query-transition-behavior/page.css
new file mode 100644
index 000000000..e152611e6
--- /dev/null
+++ b/docs/src/examples/query/plugins/query-transition-behavior/page.css
@@ -0,0 +1,38 @@
+.group {
+ display: flex;
+ flex-direction: row;
+ gap: 1rem;
+ padding: 1rem;
+ border: var(--border);
+ background-color: var(--standard-5);
+
+ select {
+ border: var(--border);
+ background-color: var(--standard-10);
+ color: var(--text-color);
+ border-radius: var(--border-radius);
+ padding: 3px 8px;
+
+ option {
+ color: var(--inverted-80);
+ }
+ }
+ ui-input {
+ width: 100%;
+ }
+}
+
+
+.box {
+ background: var(--primary-0) var(--angled-gradient);
+ border: var(--border);
+ box-shadow: var(--shadow);
+ width: 100px;
+ height: 100px;
+ display: inline-block;
+ align-content: center;
+ text-align: center;
+ font-size: var(--large);
+ font-weight: var(--bold);
+ margin: var(--vertically-spaced);
+}
diff --git a/docs/src/examples/query/plugins/query-transition-behavior/page.html b/docs/src/examples/query/plugins/query-transition-behavior/page.html
new file mode 100644
index 000000000..5e143d3d8
--- /dev/null
+++ b/docs/src/examples/query/plugins/query-transition-behavior/page.html
@@ -0,0 +1,45 @@
+
+ Transition
+
+
+
+
+
+
+
+
diff --git a/docs/src/examples/query/plugins/query-transition-behavior/page.js b/docs/src/examples/query/plugins/query-transition-behavior/page.js
new file mode 100644
index 000000000..a99ea69d4
--- /dev/null
+++ b/docs/src/examples/query/plugins/query-transition-behavior/page.js
@@ -0,0 +1,16 @@
+import { Transition } from '@semantic-ui/core';
+import { $ } from '@semantic-ui/query';
+
+$('ui-button').on('click', () => {
+ const animation = $('.animation').val();
+ const groupOrder = $('.direction').val();
+ const duration = $('.duration').val() || 'auto';
+ const interval = $('.interval').val();
+
+ $('.box').transition({
+ animation,
+ groupOrder,
+ duration,
+ interval,
+ });
+});
diff --git a/docs/src/examples/query/plugins/query-transition-behavior/test.html b/docs/src/examples/query/plugins/query-transition-behavior/test.html
new file mode 100644
index 000000000..eaee825b4
--- /dev/null
+++ b/docs/src/examples/query/plugins/query-transition-behavior/test.html
@@ -0,0 +1,43 @@
+
+
+
+
+
+
Transition Test
+
+
+
+
Transition Behavior Test
+
+
Test Box
+
+
+
+
+
+
\ No newline at end of file
diff --git a/docs/src/examples/utils/environment/utils-isci/index.js b/docs/src/examples/utils/environment/utils-isci/index.js
new file mode 100644
index 000000000..85a19f676
--- /dev/null
+++ b/docs/src/examples/utils/environment/utils-isci/index.js
@@ -0,0 +1,7 @@
+import { isCI } from '@semantic-ui/utils';
+
+console.log(isCI);
+
+if (isCI) {
+ console.log('CI environment detected');
+}
diff --git a/docs/src/examples/utils/ssr/utils-isclient/index.js b/docs/src/examples/utils/environment/utils-isclient/index.js
similarity index 100%
rename from docs/src/examples/utils/ssr/utils-isclient/index.js
rename to docs/src/examples/utils/environment/utils-isclient/index.js
diff --git a/docs/src/examples/utils/environment/utils-isdevelopment/index.js b/docs/src/examples/utils/environment/utils-isdevelopment/index.js
new file mode 100644
index 000000000..81d1b8786
--- /dev/null
+++ b/docs/src/examples/utils/environment/utils-isdevelopment/index.js
@@ -0,0 +1,7 @@
+import { isDevelopment } from '@semantic-ui/utils';
+
+console.log(isDevelopment);
+
+if (isDevelopment) {
+ console.log('Development mode detected');
+}
diff --git a/docs/src/examples/utils/ssr/utils-isserver/index.js b/docs/src/examples/utils/environment/utils-isserver/index.js
similarity index 100%
rename from docs/src/examples/utils/ssr/utils-isserver/index.js
rename to docs/src/examples/utils/environment/utils-isserver/index.js
diff --git a/docs/src/examples/utils/looping/utils-asynceach/index.js b/docs/src/examples/utils/looping/utils-asynceach/index.js
index 7a1708bec..0a81f6d24 100644
--- a/docs/src/examples/utils/looping/utils-asynceach/index.js
+++ b/docs/src/examples/utils/looping/utils-asynceach/index.js
@@ -33,7 +33,7 @@ console.log('--- Async Map iteration ---');
const myMap = new Map([
['name', 'John'],
['age', 30],
- ['city', 'New York']
+ ['city', 'New York'],
]);
await asyncEach(myMap, async (value, key) => {
await delay(75);
diff --git a/docs/src/examples/utils/looping/utils-asyncmap/index.js b/docs/src/examples/utils/looping/utils-asyncmap/index.js
index d5b8fedb9..fa86042dd 100644
--- a/docs/src/examples/utils/looping/utils-asyncmap/index.js
+++ b/docs/src/examples/utils/looping/utils-asyncmap/index.js
@@ -30,14 +30,14 @@ console.log('--- Map mapping (returns new Map) ---');
const myMap = new Map([
['user1', { name: 'John', score: 85 }],
['user2', { name: 'Jane', score: 92 }],
- ['user3', { name: 'Bob', score: 78 }]
+ ['user3', { name: 'Bob', score: 78 }],
]);
const mapResult = await asyncMap(myMap, async (user, userId) => {
await delay(30);
return {
...user,
id: userId,
- grade: user.score >= 90 ? 'A' : user.score >= 80 ? 'B' : 'C'
+ grade: user.score >= 90 ? 'A' : user.score >= 80 ? 'B' : 'C',
};
});
console.log('Map result:');
diff --git a/docs/src/examples/utils/looping/utils-each/index.js b/docs/src/examples/utils/looping/utils-each/index.js
index bd33e11b3..82eeab839 100644
--- a/docs/src/examples/utils/looping/utils-each/index.js
+++ b/docs/src/examples/utils/looping/utils-each/index.js
@@ -28,7 +28,7 @@ console.log('--- Map iteration ---');
const myMap = new Map([
['name', 'John'],
['age', 30],
- ['city', 'New York']
+ ['city', 'New York'],
]);
each(myMap, (value, key) => {
console.log(`${key}: ${value}`);
diff --git a/docs/src/examples/utils/types/utils-ismap/index.js b/docs/src/examples/utils/types/utils-ismap/index.js
index 5718e3d0a..b3aa67f3d 100644
--- a/docs/src/examples/utils/types/utils-ismap/index.js
+++ b/docs/src/examples/utils/types/utils-ismap/index.js
@@ -2,13 +2,13 @@ import { isMap } from '@semantic-ui/utils';
console.log('--- Testing Map instances ---');
console.log('isMap(new Map()):', isMap(new Map()));
-console.log('isMap(new Map([["a", 1], ["b", 2]])):', isMap(new Map([["a", 1], ["b", 2]])));
+console.log('isMap(new Map([["a", 1], ["b", 2]])):', isMap(new Map([['a', 1], ['b', 2]])));
console.log('--- Testing non-Map values ---');
console.log('isMap({}):', isMap({}));
console.log('isMap([]):', isMap([]));
console.log('isMap(new Set()):', isMap(new Set()));
-console.log('isMap("map"):', isMap("map"));
+console.log('isMap("map"):', isMap('map'));
console.log('isMap(123):', isMap(123));
console.log('isMap(null):', isMap(null));
console.log('isMap(undefined):', isMap(undefined));
@@ -19,7 +19,7 @@ const mapLikeObject = {
get: () => {},
has: () => {},
delete: () => {},
- size: 0
+ size: 0,
};
console.log('isMap(mapLikeObject):', isMap(mapLikeObject));
@@ -30,19 +30,20 @@ function processKeyValueStore(store) {
for (const [key, value] of store) {
console.log(`- ${key}: ${value}`);
}
- } else {
+ }
+ else {
console.log('Not a Map, cannot iterate with Map methods');
}
}
const userMap = new Map([
['user1', { name: 'John', age: 25 }],
- ['user2', { name: 'Jane', age: 30 }]
+ ['user2', { name: 'Jane', age: 30 }],
]);
const userObject = {
user1: { name: 'John', age: 25 },
- user2: { name: 'Jane', age: 30 }
+ user2: { name: 'Jane', age: 30 },
};
processKeyValueStore(userMap);
-processKeyValueStore(userObject);
\ No newline at end of file
+processKeyValueStore(userObject);
diff --git a/docs/src/examples/utils/types/utils-isset/index.js b/docs/src/examples/utils/types/utils-isset/index.js
index 0ed2024ac..44033ab90 100644
--- a/docs/src/examples/utils/types/utils-isset/index.js
+++ b/docs/src/examples/utils/types/utils-isset/index.js
@@ -3,13 +3,13 @@ import { isSet } from '@semantic-ui/utils';
console.log('--- Testing Set instances ---');
console.log('isSet(new Set()):', isSet(new Set()));
console.log('isSet(new Set([1, 2, 3])):', isSet(new Set([1, 2, 3])));
-console.log('isSet(new Set(["a", "b", "c"])):', isSet(new Set(["a", "b", "c"])));
+console.log('isSet(new Set(["a", "b", "c"])):', isSet(new Set(['a', 'b', 'c'])));
console.log('--- Testing non-Set values ---');
console.log('isSet([]):', isSet([]));
console.log('isSet({}):', isSet({}));
console.log('isSet(new Map()):', isSet(new Map()));
-console.log('isSet("set"):', isSet("set"));
+console.log('isSet("set"):', isSet('set'));
console.log('isSet(123):', isSet(123));
console.log('isSet(null):', isSet(null));
console.log('isSet(undefined):', isSet(undefined));
@@ -21,7 +21,8 @@ function processCollection(collection) {
for (const item of collection) {
console.log(`- ${item}`);
}
- } else {
+ }
+ else {
console.log('Not a Set, cannot process as Set collection');
}
}
@@ -30,4 +31,4 @@ const mySet = new Set(['apple', 'banana', 'cherry']);
const myArray = ['apple', 'banana', 'cherry'];
processCollection(mySet);
-processCollection(myArray);
\ No newline at end of file
+processCollection(myArray);
diff --git a/docs/src/helpers/injections.js b/docs/src/helpers/injections.js
index 2d365f625..3f42114ba 100755
--- a/docs/src/helpers/injections.js
+++ b/docs/src/helpers/injections.js
@@ -418,7 +418,7 @@ export const headLibraryJS = `
-
+