well-petal 0.0.74 → 0.0.75

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/petal.js +6 -6
  2. package/package.json +1 -1
package/dist/petal.js CHANGED
@@ -176,7 +176,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
176
176
  \*******************************/
177
177
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
178
178
 
179
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ARIA_EXPANDED: () => (/* binding */ ARIA_EXPANDED),\n/* harmony export */ ATTR_ALLOW_CLOSE: () => (/* binding */ ATTR_ALLOW_CLOSE),\n/* harmony export */ ATTR_PETAL_ANIM_CLOSE: () => (/* binding */ ATTR_PETAL_ANIM_CLOSE),\n/* harmony export */ ATTR_PETAL_ANIM_CLOSE_MOBILE: () => (/* binding */ ATTR_PETAL_ANIM_CLOSE_MOBILE),\n/* harmony export */ ATTR_PETAL_ANIM_OPEN: () => (/* binding */ ATTR_PETAL_ANIM_OPEN),\n/* harmony export */ ATTR_PETAL_ANIM_OPEN_MOBILE: () => (/* binding */ ATTR_PETAL_ANIM_OPEN_MOBILE),\n/* harmony export */ ATTR_PETAL_BANNER: () => (/* binding */ ATTR_PETAL_BANNER),\n/* harmony export */ ATTR_PETAL_BANNER_CLOSE: () => (/* binding */ ATTR_PETAL_BANNER_CLOSE),\n/* harmony export */ ATTR_PETAL_BANNER_CLOSED_CLASS: () => (/* binding */ ATTR_PETAL_BANNER_CLOSED_CLASS),\n/* harmony export */ ATTR_PETAL_CLOSE: () => (/* binding */ ATTR_PETAL_CLOSE),\n/* harmony export */ ATTR_PETAL_DEBUG: () => (/* binding */ ATTR_PETAL_DEBUG),\n/* harmony export */ ATTR_PETAL_DIALOG: () => (/* binding */ ATTR_PETAL_DIALOG),\n/* harmony export */ ATTR_PETAL_DISABLE_SCROLL_ON_OPEN: () => (/* binding */ ATTR_PETAL_DISABLE_SCROLL_ON_OPEN),\n/* harmony export */ ATTR_PETAL_DROPDOWN: () => (/* binding */ ATTR_PETAL_DROPDOWN),\n/* harmony export */ ATTR_PETAL_DROPDOWN_ANIM: () => (/* binding */ ATTR_PETAL_DROPDOWN_ANIM),\n/* harmony export */ ATTR_PETAL_DROPDOWN_ANIM_CLOSE_SPEED: () => (/* binding */ ATTR_PETAL_DROPDOWN_ANIM_CLOSE_SPEED),\n/* harmony export */ ATTR_PETAL_DROPDOWN_ANIM_MOBILE: () => (/* binding */ ATTR_PETAL_DROPDOWN_ANIM_MOBILE),\n/* harmony export */ ATTR_PETAL_DROPDOWN_ANIM_MOBILE_LANDSCAPE: () => (/* binding */ ATTR_PETAL_DROPDOWN_ANIM_MOBILE_LANDSCAPE),\n/* harmony export */ ATTR_PETAL_DROPDOWN_ANIM_OFFSET: () => (/* binding */ ATTR_PETAL_DROPDOWN_ANIM_OFFSET),\n/* harmony export */ ATTR_PETAL_DROPDOWN_ANIM_OFFSET_MOBILE: () => (/* binding */ ATTR_PETAL_DROPDOWN_ANIM_OFFSET_MOBILE),\n/* harmony export */ ATTR_PETAL_DROPDOWN_ANIM_OFFSET_MOBILE_LANDSCAPE: () => (/* binding */ ATTR_PETAL_DROPDOWN_ANIM_OFFSET_MOBILE_LANDSCAPE),\n/* harmony export */ ATTR_PETAL_DROPDOWN_ANIM_OFFSET_TABLET: () => (/* binding */ ATTR_PETAL_DROPDOWN_ANIM_OFFSET_TABLET),\n/* harmony export */ ATTR_PETAL_DROPDOWN_ANIM_OPEN_SPEED: () => (/* binding */ ATTR_PETAL_DROPDOWN_ANIM_OPEN_SPEED),\n/* harmony export */ ATTR_PETAL_DROPDOWN_ANIM_TABLET: () => (/* binding */ ATTR_PETAL_DROPDOWN_ANIM_TABLET),\n/* harmony export */ ATTR_PETAL_DROPDOWN_CLOSE: () => (/* binding */ ATTR_PETAL_DROPDOWN_CLOSE),\n/* harmony export */ ATTR_PETAL_DROPDOWN_CLOSE_DELAY: () => (/* binding */ ATTR_PETAL_DROPDOWN_CLOSE_DELAY),\n/* harmony export */ ATTR_PETAL_DROPDOWN_EXPAND_MOBILE: () => (/* binding */ ATTR_PETAL_DROPDOWN_EXPAND_MOBILE),\n/* harmony export */ ATTR_PETAL_DROPDOWN_EXPAND_MOBILE_LANDSCAPE: () => (/* binding */ ATTR_PETAL_DROPDOWN_EXPAND_MOBILE_LANDSCAPE),\n/* harmony export */ ATTR_PETAL_DROPDOWN_EXPAND_TABLET: () => (/* binding */ ATTR_PETAL_DROPDOWN_EXPAND_TABLET),\n/* harmony export */ ATTR_PETAL_DROPDOWN_MENU: () => (/* binding */ ATTR_PETAL_DROPDOWN_MENU),\n/* harmony export */ ATTR_PETAL_DROPDOWN_MENU_BOX: () => (/* binding */ ATTR_PETAL_DROPDOWN_MENU_BOX),\n/* harmony export */ ATTR_PETAL_DROPDOWN_OPEN_DELAY: () => (/* binding */ ATTR_PETAL_DROPDOWN_OPEN_DELAY),\n/* harmony export */ ATTR_PETAL_DROPDOWN_OPEN_ON_HOVER: () => (/* binding */ ATTR_PETAL_DROPDOWN_OPEN_ON_HOVER),\n/* harmony export */ ATTR_PETAL_DROPDOWN_OPEN_ON_HOVER_MOBILE: () => (/* binding */ ATTR_PETAL_DROPDOWN_OPEN_ON_HOVER_MOBILE),\n/* harmony export */ ATTR_PETAL_DROPDOWN_OPEN_ON_HOVER_MOBILE_LANDSCAPE: () => (/* binding */ ATTR_PETAL_DROPDOWN_OPEN_ON_HOVER_MOBILE_LANDSCAPE),\n/* harmony export */ ATTR_PETAL_DROPDOWN_OPEN_ON_HOVER_TABLET: () => (/* binding */ ATTR_PETAL_DROPDOWN_OPEN_ON_HOVER_TABLET),\n/* harmony export */ ATTR_PETAL_DROPDOWN_OVERLAY: () => (/* binding */ ATTR_PETAL_DROPDOWN_OVERLAY),\n/* harmony export */ ATTR_PETAL_DROPDOWN_SCROLL: () => (/* binding */ ATTR_PETAL_DROPDOWN_SCROLL),\n/* harmony export */ ATTR_PETAL_DROPDOWN_SHOW_DESKTOP: () => (/* binding */ ATTR_PETAL_DROPDOWN_SHOW_DESKTOP),\n/* harmony export */ ATTR_PETAL_DROPDOWN_SHOW_MOBILE: () => (/* binding */ ATTR_PETAL_DROPDOWN_SHOW_MOBILE),\n/* harmony export */ ATTR_PETAL_DROPDOWN_SHOW_MOBILE_LANDSCAPE: () => (/* binding */ ATTR_PETAL_DROPDOWN_SHOW_MOBILE_LANDSCAPE),\n/* harmony export */ ATTR_PETAL_DROPDOWN_SHOW_TABLET: () => (/* binding */ ATTR_PETAL_DROPDOWN_SHOW_TABLET),\n/* harmony export */ ATTR_PETAL_DROPDOWN_TOGGLE: () => (/* binding */ ATTR_PETAL_DROPDOWN_TOGGLE),\n/* harmony export */ ATTR_PETAL_DURATION: () => (/* binding */ ATTR_PETAL_DURATION),\n/* harmony export */ ATTR_PETAL_ELEMENT: () => (/* binding */ ATTR_PETAL_ELEMENT),\n/* harmony export */ ATTR_PETAL_GROUP: () => (/* binding */ ATTR_PETAL_GROUP),\n/* harmony export */ ATTR_PETAL_MASK: () => (/* binding */ ATTR_PETAL_MASK),\n/* harmony export */ ATTR_PETAL_MASK_CLOSE: () => (/* binding */ ATTR_PETAL_MASK_CLOSE),\n/* harmony export */ ATTR_PETAL_MASK_OPACITY: () => (/* binding */ ATTR_PETAL_MASK_OPACITY),\n/* harmony export */ ATTR_PETAL_MODAL: () => (/* binding */ ATTR_PETAL_MODAL),\n/* harmony export */ ATTR_PETAL_MODAL_TYPE: () => (/* binding */ ATTR_PETAL_MODAL_TYPE),\n/* harmony export */ ATTR_PETAL_NAME: () => (/* binding */ ATTR_PETAL_NAME),\n/* harmony export */ ATTR_PETAL_NAV: () => (/* binding */ ATTR_PETAL_NAV),\n/* harmony export */ ATTR_PETAL_NAV_SECONDARY: () => (/* binding */ ATTR_PETAL_NAV_SECONDARY),\n/* harmony export */ ATTR_PETAL_OPEN: () => (/* binding */ ATTR_PETAL_OPEN),\n/* harmony export */ ATTR_PETAL_POSITION: () => (/* binding */ ATTR_PETAL_POSITION),\n/* harmony export */ ATTR_PETAL_SESSION_TTL: () => (/* binding */ ATTR_PETAL_SESSION_TTL),\n/* harmony export */ ATTR_PETAL_SHOW_DELAY: () => (/* binding */ ATTR_PETAL_SHOW_DELAY),\n/* harmony export */ ATTR_PETAL_SHOW_ONCE: () => (/* binding */ ATTR_PETAL_SHOW_ONCE),\n/* harmony export */ ATTR_PETAL_STATE: () => (/* binding */ ATTR_PETAL_STATE)\n/* harmony export */ });\n// BASE\nconst ATTR_PETAL_NAME = \"petal\";\nconst ATTR_PETAL_ELEMENT = \"petal-el\";\nconst ATTR_PETAL_GROUP = \"petal-group\"; // Group name for coordinated behavior across components\nconst ATTR_PETAL_STATE = \"petal-state\";\nconst ATTR_PETAL_DEBUG = \"petal-debug\"; // Enable debug console logging\n// BEHAVIOR\nconst ATTR_PETAL_SHOW_ONCE = \"petal-show-once\"; // Regardless of other settings, only show the modal once per user session\nconst ATTR_PETAL_SHOW_DELAY = \"petal-show-delay\"; // Time to wait before showing modal (in seconds)\nconst ATTR_PETAL_SESSION_TTL = \"petal-session-ttl\"; // Time to keep user session (in hours)\n/**-------------------------*\n * MODAL\n *--------------------------*/\n// ELEMENTS\nconst ATTR_PETAL_MODAL = \"modal\";\nconst ATTR_PETAL_OPEN = \"open\";\nconst ATTR_PETAL_CLOSE = \"close\";\nconst ATTR_PETAL_MASK = \"mask\";\nconst ATTR_PETAL_DIALOG = \"dialog\";\n// MASK\nconst ATTR_PETAL_MASK_OPACITY = \"petal-mask-opacity\";\nconst ATTR_PETAL_MASK_CLOSE = \"petal-mask-close\";\n// MODAL TYPE\nconst ATTR_PETAL_MODAL_TYPE = \"petal-modal-type\";\n// ANIMATIONS\nconst ATTR_PETAL_ANIM_OPEN = \"petal-anim-open\";\nconst ATTR_PETAL_ANIM_CLOSE = \"petal-anim-close\";\nconst ATTR_PETAL_ANIM_OPEN_MOBILE = \"petal-anim-open-mobile\";\nconst ATTR_PETAL_ANIM_CLOSE_MOBILE = \"petal-anim-close-mobile\";\nconst ATTR_PETAL_DURATION = \"petal-duration\";\n/**-------------------------*\n * NAV\n *--------------------------*/\n// ELEMENTS\nconst ATTR_PETAL_NAV = \"nav\";\nconst ATTR_PETAL_NAV_SECONDARY = \"nav-secondary\";\nconst ATTR_PETAL_BANNER = \"banner\";\nconst ATTR_PETAL_BANNER_CLOSE = \"banner-close\";\n// SETTINGS\nconst ATTR_ALLOW_CLOSE = \"petal-allow-close\";\nconst ATTR_PETAL_POSITION = \"petal-position\";\n// CSS\nconst ATTR_PETAL_BANNER_CLOSED_CLASS = \"petal-hide-nav-banner\";\n/**-------------------------*\n * DROPDOWN\n *--------------------------*/\n// ELEMENTS\nconst ATTR_PETAL_DROPDOWN = \"dropdown\";\nconst ATTR_PETAL_DROPDOWN_TOGGLE = \"dropdown-toggle\";\nconst ATTR_PETAL_DROPDOWN_MENU = \"dropdown-menu\";\nconst ATTR_PETAL_DROPDOWN_MENU_BOX = \"dropdown-drawer\";\nconst ATTR_PETAL_DROPDOWN_OVERLAY = \"overlay\";\nconst ATTR_PETAL_DROPDOWN_CLOSE = \"dropdown-close\";\nconst ATTR_PETAL_DROPDOWN_SCROLL = \"dropdown-scroll\";\n// BEHAVIOR\nconst ATTR_PETAL_DISABLE_SCROLL_ON_OPEN = \"petal-disable-scroll-on-open\";\nconst ATTR_PETAL_DROPDOWN_OPEN_ON_HOVER = \"petal-dropdown-open-on-hover\";\nconst ATTR_PETAL_DROPDOWN_OPEN_ON_HOVER_TABLET = \"petal-dropdown-open-on-hover-tablet\";\nconst ATTR_PETAL_DROPDOWN_OPEN_ON_HOVER_MOBILE_LANDSCAPE = \"petal-dropdown-open-on-hover-mobile-landscape\";\nconst ATTR_PETAL_DROPDOWN_OPEN_ON_HOVER_MOBILE = \"petal-dropdown-open-on-hover-mobile\";\nconst ATTR_PETAL_DROPDOWN_OPEN_DELAY = \"petal-dropdown-open-delay\";\nconst ATTR_PETAL_DROPDOWN_CLOSE_DELAY = \"petal-dropdown-close-delay\";\n// VISIBILITY\nconst ATTR_PETAL_DROPDOWN_SHOW_DESKTOP = \"petal-dropdown-show-desktop\";\nconst ATTR_PETAL_DROPDOWN_SHOW_TABLET = \"petal-dropdown-show-tablet\";\nconst ATTR_PETAL_DROPDOWN_SHOW_MOBILE_LANDSCAPE = \"petal-dropdown-show-mobile-landscape\";\nconst ATTR_PETAL_DROPDOWN_SHOW_MOBILE = \"petal-dropdown-show-mobile\";\n// EXPAND\nconst ATTR_PETAL_DROPDOWN_EXPAND_MOBILE = \"petal-dropdown-expand-mobile\";\nconst ATTR_PETAL_DROPDOWN_EXPAND_MOBILE_LANDSCAPE = \"petal-dropdown-expand-mobile-landscape\";\nconst ATTR_PETAL_DROPDOWN_EXPAND_TABLET = \"petal-dropdown-expand-tablet\";\n// ANIMATIONS\nconst ATTR_PETAL_DROPDOWN_ANIM = \"petal-dropdown-anim\";\nconst ATTR_PETAL_DROPDOWN_ANIM_TABLET = \"petal-dropdown-anim-tablet\";\nconst ATTR_PETAL_DROPDOWN_ANIM_MOBILE_LANDSCAPE = \"petal-dropdown-anim-mobile-landscape\";\nconst ATTR_PETAL_DROPDOWN_ANIM_MOBILE = \"petal-dropdown-anim-mobile\";\nconst ATTR_PETAL_DROPDOWN_ANIM_OPEN_SPEED = \"petal-dropdown-anim-open-speed\";\nconst ATTR_PETAL_DROPDOWN_ANIM_CLOSE_SPEED = \"petal-dropdown-anim-close-speed\";\nconst ATTR_PETAL_DROPDOWN_ANIM_OFFSET = \"petal-dropdown-anim-offset\";\nconst ATTR_PETAL_DROPDOWN_ANIM_OFFSET_TABLET = \"petal-dropdown-anim-offset-tablet\";\nconst ATTR_PETAL_DROPDOWN_ANIM_OFFSET_MOBILE_LANDSCAPE = \"petal-dropdown-anim-offset-mobile-landscape\";\nconst ATTR_PETAL_DROPDOWN_ANIM_OFFSET_MOBILE = \"petal-dropdown-anim-offset-mobile\";\n// ARIA ATTRIBUTES\nconst ARIA_EXPANDED = \"aria-expanded\";\n\n\n//# sourceURL=webpack://petal/./src/lib/attributes.ts?");
179
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ARIA_EXPANDED: () => (/* binding */ ARIA_EXPANDED),\n/* harmony export */ ATTR_ALLOW_CLOSE: () => (/* binding */ ATTR_ALLOW_CLOSE),\n/* harmony export */ ATTR_PETAL_ANIM_CLOSE: () => (/* binding */ ATTR_PETAL_ANIM_CLOSE),\n/* harmony export */ ATTR_PETAL_ANIM_CLOSE_MOBILE: () => (/* binding */ ATTR_PETAL_ANIM_CLOSE_MOBILE),\n/* harmony export */ ATTR_PETAL_ANIM_OPEN: () => (/* binding */ ATTR_PETAL_ANIM_OPEN),\n/* harmony export */ ATTR_PETAL_ANIM_OPEN_MOBILE: () => (/* binding */ ATTR_PETAL_ANIM_OPEN_MOBILE),\n/* harmony export */ ATTR_PETAL_BANNER: () => (/* binding */ ATTR_PETAL_BANNER),\n/* harmony export */ ATTR_PETAL_BANNER_CLOSE: () => (/* binding */ ATTR_PETAL_BANNER_CLOSE),\n/* harmony export */ ATTR_PETAL_BANNER_CLOSED_CLASS: () => (/* binding */ ATTR_PETAL_BANNER_CLOSED_CLASS),\n/* harmony export */ ATTR_PETAL_CLOSE: () => (/* binding */ ATTR_PETAL_CLOSE),\n/* harmony export */ ATTR_PETAL_DEBUG: () => (/* binding */ ATTR_PETAL_DEBUG),\n/* harmony export */ ATTR_PETAL_DIALOG: () => (/* binding */ ATTR_PETAL_DIALOG),\n/* harmony export */ ATTR_PETAL_DISABLE_SCROLL_ON_OPEN: () => (/* binding */ ATTR_PETAL_DISABLE_SCROLL_ON_OPEN),\n/* harmony export */ ATTR_PETAL_DROPDOWN: () => (/* binding */ ATTR_PETAL_DROPDOWN),\n/* harmony export */ ATTR_PETAL_DROPDOWN_ANIM: () => (/* binding */ ATTR_PETAL_DROPDOWN_ANIM),\n/* harmony export */ ATTR_PETAL_DROPDOWN_ANIM_CLOSE_SPEED: () => (/* binding */ ATTR_PETAL_DROPDOWN_ANIM_CLOSE_SPEED),\n/* harmony export */ ATTR_PETAL_DROPDOWN_ANIM_MOBILE: () => (/* binding */ ATTR_PETAL_DROPDOWN_ANIM_MOBILE),\n/* harmony export */ ATTR_PETAL_DROPDOWN_ANIM_MOBILE_LANDSCAPE: () => (/* binding */ ATTR_PETAL_DROPDOWN_ANIM_MOBILE_LANDSCAPE),\n/* harmony export */ ATTR_PETAL_DROPDOWN_ANIM_OFFSET: () => (/* binding */ ATTR_PETAL_DROPDOWN_ANIM_OFFSET),\n/* harmony export */ ATTR_PETAL_DROPDOWN_ANIM_OFFSET_MOBILE: () => (/* binding */ ATTR_PETAL_DROPDOWN_ANIM_OFFSET_MOBILE),\n/* harmony export */ ATTR_PETAL_DROPDOWN_ANIM_OFFSET_MOBILE_LANDSCAPE: () => (/* binding */ ATTR_PETAL_DROPDOWN_ANIM_OFFSET_MOBILE_LANDSCAPE),\n/* harmony export */ ATTR_PETAL_DROPDOWN_ANIM_OFFSET_TABLET: () => (/* binding */ ATTR_PETAL_DROPDOWN_ANIM_OFFSET_TABLET),\n/* harmony export */ ATTR_PETAL_DROPDOWN_ANIM_OPEN_SPEED: () => (/* binding */ ATTR_PETAL_DROPDOWN_ANIM_OPEN_SPEED),\n/* harmony export */ ATTR_PETAL_DROPDOWN_ANIM_TABLET: () => (/* binding */ ATTR_PETAL_DROPDOWN_ANIM_TABLET),\n/* harmony export */ ATTR_PETAL_DROPDOWN_CLOSE: () => (/* binding */ ATTR_PETAL_DROPDOWN_CLOSE),\n/* harmony export */ ATTR_PETAL_DROPDOWN_CLOSE_DELAY: () => (/* binding */ ATTR_PETAL_DROPDOWN_CLOSE_DELAY),\n/* harmony export */ ATTR_PETAL_DROPDOWN_EXPAND_MOBILE: () => (/* binding */ ATTR_PETAL_DROPDOWN_EXPAND_MOBILE),\n/* harmony export */ ATTR_PETAL_DROPDOWN_EXPAND_MOBILE_LANDSCAPE: () => (/* binding */ ATTR_PETAL_DROPDOWN_EXPAND_MOBILE_LANDSCAPE),\n/* harmony export */ ATTR_PETAL_DROPDOWN_EXPAND_TABLET: () => (/* binding */ ATTR_PETAL_DROPDOWN_EXPAND_TABLET),\n/* harmony export */ ATTR_PETAL_DROPDOWN_MENU: () => (/* binding */ ATTR_PETAL_DROPDOWN_MENU),\n/* harmony export */ ATTR_PETAL_DROPDOWN_MENU_BOX: () => (/* binding */ ATTR_PETAL_DROPDOWN_MENU_BOX),\n/* harmony export */ ATTR_PETAL_DROPDOWN_OPEN_DELAY: () => (/* binding */ ATTR_PETAL_DROPDOWN_OPEN_DELAY),\n/* harmony export */ ATTR_PETAL_DROPDOWN_OPEN_ON_HOVER: () => (/* binding */ ATTR_PETAL_DROPDOWN_OPEN_ON_HOVER),\n/* harmony export */ ATTR_PETAL_DROPDOWN_OPEN_ON_HOVER_MOBILE: () => (/* binding */ ATTR_PETAL_DROPDOWN_OPEN_ON_HOVER_MOBILE),\n/* harmony export */ ATTR_PETAL_DROPDOWN_OPEN_ON_HOVER_MOBILE_LANDSCAPE: () => (/* binding */ ATTR_PETAL_DROPDOWN_OPEN_ON_HOVER_MOBILE_LANDSCAPE),\n/* harmony export */ ATTR_PETAL_DROPDOWN_OPEN_ON_HOVER_TABLET: () => (/* binding */ ATTR_PETAL_DROPDOWN_OPEN_ON_HOVER_TABLET),\n/* harmony export */ ATTR_PETAL_DROPDOWN_SCROLL: () => (/* binding */ ATTR_PETAL_DROPDOWN_SCROLL),\n/* harmony export */ ATTR_PETAL_DROPDOWN_SHOW_DESKTOP: () => (/* binding */ ATTR_PETAL_DROPDOWN_SHOW_DESKTOP),\n/* harmony export */ ATTR_PETAL_DROPDOWN_SHOW_MOBILE: () => (/* binding */ ATTR_PETAL_DROPDOWN_SHOW_MOBILE),\n/* harmony export */ ATTR_PETAL_DROPDOWN_SHOW_MOBILE_LANDSCAPE: () => (/* binding */ ATTR_PETAL_DROPDOWN_SHOW_MOBILE_LANDSCAPE),\n/* harmony export */ ATTR_PETAL_DROPDOWN_SHOW_TABLET: () => (/* binding */ ATTR_PETAL_DROPDOWN_SHOW_TABLET),\n/* harmony export */ ATTR_PETAL_DROPDOWN_TOGGLE: () => (/* binding */ ATTR_PETAL_DROPDOWN_TOGGLE),\n/* harmony export */ ATTR_PETAL_DURATION: () => (/* binding */ ATTR_PETAL_DURATION),\n/* harmony export */ ATTR_PETAL_ELEMENT: () => (/* binding */ ATTR_PETAL_ELEMENT),\n/* harmony export */ ATTR_PETAL_GROUP: () => (/* binding */ ATTR_PETAL_GROUP),\n/* harmony export */ ATTR_PETAL_MASK_CLOSE: () => (/* binding */ ATTR_PETAL_MASK_CLOSE),\n/* harmony export */ ATTR_PETAL_MODAL: () => (/* binding */ ATTR_PETAL_MODAL),\n/* harmony export */ ATTR_PETAL_MODAL_TYPE: () => (/* binding */ ATTR_PETAL_MODAL_TYPE),\n/* harmony export */ ATTR_PETAL_NAME: () => (/* binding */ ATTR_PETAL_NAME),\n/* harmony export */ ATTR_PETAL_NAV: () => (/* binding */ ATTR_PETAL_NAV),\n/* harmony export */ ATTR_PETAL_NAV_SECONDARY: () => (/* binding */ ATTR_PETAL_NAV_SECONDARY),\n/* harmony export */ ATTR_PETAL_OPEN: () => (/* binding */ ATTR_PETAL_OPEN),\n/* harmony export */ ATTR_PETAL_OVERLAY: () => (/* binding */ ATTR_PETAL_OVERLAY),\n/* harmony export */ ATTR_PETAL_OVERLAY_OPACITY: () => (/* binding */ ATTR_PETAL_OVERLAY_OPACITY),\n/* harmony export */ ATTR_PETAL_POSITION: () => (/* binding */ ATTR_PETAL_POSITION),\n/* harmony export */ ATTR_PETAL_SESSION_TTL: () => (/* binding */ ATTR_PETAL_SESSION_TTL),\n/* harmony export */ ATTR_PETAL_SHOW_DELAY: () => (/* binding */ ATTR_PETAL_SHOW_DELAY),\n/* harmony export */ ATTR_PETAL_SHOW_ONCE: () => (/* binding */ ATTR_PETAL_SHOW_ONCE),\n/* harmony export */ ATTR_PETAL_STATE: () => (/* binding */ ATTR_PETAL_STATE)\n/* harmony export */ });\n// BASE\nconst ATTR_PETAL_NAME = \"petal\";\nconst ATTR_PETAL_ELEMENT = \"petal-el\";\nconst ATTR_PETAL_GROUP = \"petal-group\"; // Group name for coordinated behavior across components\nconst ATTR_PETAL_STATE = \"petal-state\";\nconst ATTR_PETAL_DEBUG = \"petal-debug\"; // Enable debug console logging\n// BEHAVIOR\nconst ATTR_PETAL_SHOW_ONCE = \"petal-show-once\"; // Regardless of other settings, only show the modal once per user session\nconst ATTR_PETAL_SHOW_DELAY = \"petal-show-delay\"; // Time to wait before showing modal (in seconds)\nconst ATTR_PETAL_SESSION_TTL = \"petal-session-ttl\"; // Time to keep user session (in hours)\n/**-------------------------*\n * OVERLAY\n *--------------------------*/\nconst ATTR_PETAL_OVERLAY = \"overlay\";\nconst ATTR_PETAL_OVERLAY_OPACITY = \"petal-overlay-opacity\";\nconst ATTR_PETAL_MASK_CLOSE = \"petal-overlay-close\";\n/**-------------------------*\n * MODAL\n *--------------------------*/\n// ELEMENTS\nconst ATTR_PETAL_MODAL = \"modal\";\nconst ATTR_PETAL_OPEN = \"open\";\nconst ATTR_PETAL_CLOSE = \"close\";\nconst ATTR_PETAL_DIALOG = \"dialog\";\n// MODAL TYPE\nconst ATTR_PETAL_MODAL_TYPE = \"petal-modal-type\";\n// ANIMATIONS\nconst ATTR_PETAL_ANIM_OPEN = \"petal-anim-open\";\nconst ATTR_PETAL_ANIM_CLOSE = \"petal-anim-close\";\nconst ATTR_PETAL_ANIM_OPEN_MOBILE = \"petal-anim-open-mobile\";\nconst ATTR_PETAL_ANIM_CLOSE_MOBILE = \"petal-anim-close-mobile\";\nconst ATTR_PETAL_DURATION = \"petal-duration\";\n/**-------------------------*\n * NAV\n *--------------------------*/\n// ELEMENTS\nconst ATTR_PETAL_NAV = \"nav\";\nconst ATTR_PETAL_NAV_SECONDARY = \"nav-secondary\";\nconst ATTR_PETAL_BANNER = \"banner\";\nconst ATTR_PETAL_BANNER_CLOSE = \"banner-close\";\n// SETTINGS\nconst ATTR_ALLOW_CLOSE = \"petal-allow-close\";\nconst ATTR_PETAL_POSITION = \"petal-position\";\n// CSS\nconst ATTR_PETAL_BANNER_CLOSED_CLASS = \"petal-hide-nav-banner\";\n/**-------------------------*\n * DROPDOWN\n *--------------------------*/\n// ELEMENTS\nconst ATTR_PETAL_DROPDOWN = \"dropdown\";\nconst ATTR_PETAL_DROPDOWN_TOGGLE = \"dropdown-toggle\";\nconst ATTR_PETAL_DROPDOWN_MENU = \"dropdown-menu\";\nconst ATTR_PETAL_DROPDOWN_MENU_BOX = \"dropdown-drawer\";\nconst ATTR_PETAL_DROPDOWN_CLOSE = \"dropdown-close\";\nconst ATTR_PETAL_DROPDOWN_SCROLL = \"dropdown-scroll\";\n// BEHAVIOR\nconst ATTR_PETAL_DISABLE_SCROLL_ON_OPEN = \"petal-disable-scroll-on-open\";\n// OPEN/CLOSE BEHAVIOR\nconst ATTR_PETAL_DROPDOWN_OPEN_DELAY = \"petal-dropdown-open-delay\";\nconst ATTR_PETAL_DROPDOWN_CLOSE_DELAY = \"petal-dropdown-close-delay\";\nconst ATTR_PETAL_DROPDOWN_OPEN_ON_HOVER = \"petal-dropdown-open-on-hover\";\nconst ATTR_PETAL_DROPDOWN_OPEN_ON_HOVER_TABLET = \"petal-dropdown-open-on-hover-tablet\";\nconst ATTR_PETAL_DROPDOWN_OPEN_ON_HOVER_MOBILE_LANDSCAPE = \"petal-dropdown-open-on-hover-mobile-landscape\";\nconst ATTR_PETAL_DROPDOWN_OPEN_ON_HOVER_MOBILE = \"petal-dropdown-open-on-hover-mobile\";\n// VISIBILITY\nconst ATTR_PETAL_DROPDOWN_SHOW_DESKTOP = \"petal-dropdown-show-desktop\";\nconst ATTR_PETAL_DROPDOWN_SHOW_TABLET = \"petal-dropdown-show-tablet\";\nconst ATTR_PETAL_DROPDOWN_SHOW_MOBILE_LANDSCAPE = \"petal-dropdown-show-mobile-landscape\";\nconst ATTR_PETAL_DROPDOWN_SHOW_MOBILE = \"petal-dropdown-show-mobile\";\n// EXPAND\nconst ATTR_PETAL_DROPDOWN_EXPAND_TABLET = \"petal-dropdown-expand-tablet\";\nconst ATTR_PETAL_DROPDOWN_EXPAND_MOBILE_LANDSCAPE = \"petal-dropdown-expand-mobile-landscape\";\nconst ATTR_PETAL_DROPDOWN_EXPAND_MOBILE = \"petal-dropdown-expand-mobile\";\n// ANIMATIONS\nconst ATTR_PETAL_DROPDOWN_ANIM = \"petal-dropdown-anim\";\nconst ATTR_PETAL_DROPDOWN_ANIM_TABLET = \"petal-dropdown-anim-tablet\";\nconst ATTR_PETAL_DROPDOWN_ANIM_MOBILE_LANDSCAPE = \"petal-dropdown-anim-mobile-landscape\";\nconst ATTR_PETAL_DROPDOWN_ANIM_MOBILE = \"petal-dropdown-anim-mobile\";\nconst ATTR_PETAL_DROPDOWN_ANIM_OPEN_SPEED = \"petal-dropdown-anim-open-speed\";\nconst ATTR_PETAL_DROPDOWN_ANIM_CLOSE_SPEED = \"petal-dropdown-anim-close-speed\";\nconst ATTR_PETAL_DROPDOWN_ANIM_OFFSET = \"petal-dropdown-anim-offset\";\nconst ATTR_PETAL_DROPDOWN_ANIM_OFFSET_TABLET = \"petal-dropdown-anim-offset-tablet\";\nconst ATTR_PETAL_DROPDOWN_ANIM_OFFSET_MOBILE_LANDSCAPE = \"petal-dropdown-anim-offset-mobile-landscape\";\nconst ATTR_PETAL_DROPDOWN_ANIM_OFFSET_MOBILE = \"petal-dropdown-anim-offset-mobile\";\n// ARIA ATTRIBUTES\nconst ARIA_EXPANDED = \"aria-expanded\";\n\n\n//# sourceURL=webpack://petal/./src/lib/attributes.ts?");
180
180
 
181
181
  /***/ }),
182
182
 
@@ -196,7 +196,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
196
196
  \****************************/
197
197
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
198
198
 
199
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ findPetalElementByName: () => (/* binding */ findPetalElementByName),\n/* harmony export */ findPetalElementByNameOrInParent: () => (/* binding */ findPetalElementByNameOrInParent),\n/* harmony export */ findPetalElementsByName: () => (/* binding */ findPetalElementsByName),\n/* harmony export */ findPetalElementsByNameOrInParent: () => (/* binding */ findPetalElementsByNameOrInParent),\n/* harmony export */ getAllPetalElementsOfType: () => (/* binding */ getAllPetalElementsOfType),\n/* harmony export */ getPetalElementInParent: () => (/* binding */ getPetalElementInParent),\n/* harmony export */ getPetalElementsInParent: () => (/* binding */ getPetalElementsInParent)\n/* harmony export */ });\n/* harmony import */ var _attributes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./attributes */ \"./src/lib/attributes.ts\");\n\nfunction getAllPetalElementsOfType(el) {\n return document.querySelectorAll(`[${_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_ELEMENT}='${el}']`);\n}\nfunction getPetalElementInParent(parent, el) {\n return parent.querySelector(`[${_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_ELEMENT}='${el}']`);\n}\nfunction getPetalElementsInParent(parent, el) {\n return parent.querySelectorAll(`[${_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_ELEMENT}='${el}']`);\n}\n/**\n * Find Petal Element by Name\n * @param name The Petal Name for the Element (Set with petal=['NAME']).\n * @param el The Attribute of the Element to get.\n * @returns An Element of the correct type with the matching name or null if none is found.\n */\nfunction findPetalElementByName(name, el) {\n return document.querySelector(`[${_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_NAME}='${name}'][${_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_ELEMENT}='${el}']`);\n}\n/**\n * Find Petal Elements by Name\n * @param name The Petal Name for the Elements (Set with petal=['NAME']).\n * @param el The Attribute of the Elements to get.\n * @returns Elements of the correct type with the matching name or null if none is found.\n */\nfunction findPetalElementsByName(name, el) {\n return document.querySelectorAll(`[${_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_NAME}='${name}'][${_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_ELEMENT}='${el}']`);\n}\nfunction findPetalElementByNameOrInParent(parent, name, el) {\n // First try to find by name globally\n const globalMatch = findPetalElementByName(name, el);\n if (globalMatch)\n return globalMatch;\n // If no name match, try to find within the parent\n return getPetalElementInParent(parent, el);\n}\nfunction findPetalElementsByNameOrInParent(parent, name, el) {\n // First try to find by name globally\n const globalMatch = findPetalElementsByName(name, el);\n if (globalMatch)\n return globalMatch;\n // If no name match, try to find within the parent\n return getPetalElementsInParent(parent, el);\n}\n\n\n//# sourceURL=webpack://petal/./src/lib/helpers.ts?");
199
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ findClosestPetalParent: () => (/* binding */ findClosestPetalParent),\n/* harmony export */ findPetalElementByName: () => (/* binding */ findPetalElementByName),\n/* harmony export */ findPetalElementByNameOrInParent: () => (/* binding */ findPetalElementByNameOrInParent),\n/* harmony export */ findPetalElementsByName: () => (/* binding */ findPetalElementsByName),\n/* harmony export */ findPetalElementsByNameOrInParent: () => (/* binding */ findPetalElementsByNameOrInParent),\n/* harmony export */ getAllPetalElementsOfType: () => (/* binding */ getAllPetalElementsOfType),\n/* harmony export */ getPetalElementInParent: () => (/* binding */ getPetalElementInParent),\n/* harmony export */ getPetalElementsInParent: () => (/* binding */ getPetalElementsInParent)\n/* harmony export */ });\n/* harmony import */ var _attributes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./attributes */ \"./src/lib/attributes.ts\");\n\nfunction getAllPetalElementsOfType(el) {\n return document.querySelectorAll(`[${_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_ELEMENT}='${el}']`);\n}\nfunction getPetalElementInParent(parent, el) {\n return parent.querySelector(`[${_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_ELEMENT}='${el}']`);\n}\nfunction getPetalElementsInParent(parent, el) {\n return parent.querySelectorAll(`[${_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_ELEMENT}='${el}']`);\n}\n/**\n * Find Petal Element by Name\n * @param name The Petal Name for the Element (Set with petal=['NAME']).\n * @param el The Attribute of the Element to get.\n * @returns An Element of the correct type with the matching name or null if none is found.\n */\nfunction findPetalElementByName(name, el) {\n return document.querySelector(`[${_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_NAME}='${name}'][${_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_ELEMENT}='${el}']`);\n}\n/**\n * Find Petal Elements by Name\n * @param name The Petal Name for the Elements (Set with petal=['NAME']).\n * @param el The Attribute of the Elements to get.\n * @returns Elements of the correct type with the matching name or null if none is found.\n */\nfunction findPetalElementsByName(name, el) {\n return document.querySelectorAll(`[${_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_NAME}='${name}'][${_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_ELEMENT}='${el}']`);\n}\nfunction findPetalElementByNameOrInParent(parent, name, el) {\n // First try to find by name globally\n const globalMatch = findPetalElementByName(name, el);\n if (globalMatch)\n return globalMatch;\n // If no name match, try to find within the parent\n return getPetalElementInParent(parent, el);\n}\nfunction findPetalElementsByNameOrInParent(parent, name, el) {\n // First try to find by name globally\n const globalMatch = findPetalElementsByName(name, el);\n if (globalMatch)\n return globalMatch;\n // If no name match, try to find within the parent\n return getPetalElementsInParent(parent, el);\n}\n/**\n * Find the closest parent element with a specific petal-el attribute\n * @param element The starting element\n * @param petalElType The petal-el type to search for (e.g., 'modal', 'dropdown')\n * @returns The closest parent with the specified petal-el type, or null if none found\n */\nfunction findClosestPetalParent(element, petalElType) {\n let current = element.parentElement;\n while (current) {\n if (current.getAttribute(_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_ELEMENT) === petalElType) {\n return current;\n }\n current = current.parentElement;\n }\n return null;\n}\n\n\n//# sourceURL=webpack://petal/./src/lib/helpers.ts?");
200
200
 
201
201
  /***/ }),
202
202
 
@@ -286,7 +286,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
286
286
  \******************************************/
287
287
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
288
288
 
289
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ initializeDropdowns: () => (/* binding */ initializeDropdowns)\n/* harmony export */ });\n/* harmony import */ var _lib_attributes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../lib/attributes */ \"./src/lib/attributes.ts\");\n/* harmony import */ var _dropdown_config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./dropdown-config */ \"./src/modules/dropdown/dropdown-config.ts\");\n/* harmony import */ var _dropdown_controller__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./dropdown-controller */ \"./src/modules/dropdown/dropdown-controller.ts\");\n/* harmony import */ var _lib_helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../lib/helpers */ \"./src/lib/helpers.ts\");\n/**\n * Dropdown Component\n *\n * Handles interactive dropdown menus with support for:\n * - Click or hover-based opening\n * - Customizable close delays\n * - Grouped dropdown coordination\n * - CSS-based animations\n * - Accessibility (aria-expanded)\n * - Named element linking (petal=\"name\")\n *\n * HTML Attributes (defined in attributes.ts):\n * - petal=\"name\" (optional) - Links elements together by name. When set on a dropdown container,\n * all related elements (toggle, menu, overlay, close) must have the same petal=\"name\" attribute.\n * Elements are matched by both name and type before firing their behavior.\n * - petal-el=\"dropdown\" - Container element\n * - petal-el=\"dropdown-toggle\" - Clickable/hoverable trigger\n * - petal-el=\"dropdown-menu\" - Menu content\n * - petal-el=\"dropdown-drawer\" - Menu inner box\n * - petal-el=\"overlay\" (optional) - Background overlay\n * - petal-el=\"dropdown-close\" (optional) - Clickable element that closes the dropdown\n * - petal-group=\"name\" (optional) - Group name for coordinated animations\n * - petal-dropdown-open-on-hover=\"true\" (optional) - Use hover instead of click\n * - petal-dropdown-open-delay=\"ms\" (optional) - Open delay in milliseconds (default: 200)\n * - petal-dropdown-close-delay=\"ms\" (optional) - Close delay in milliseconds (default: 200)\n * - petal-dropdown-anim=\"slide-down|slide-up|slide-left|slide-right\" (optional) - Desktop animation (default: slide-down)\n * - petal-dropdown-anim-tablet=\"slide-down|slide-up|slide-left|slide-right\" (optional) - Tablet animation (inherits from petal-dropdown-anim)\n * - petal-dropdown-anim-mobile-landscape=\"slide-down|slide-up|slide-left|slide-right\" (optional) - Mobile landscape animation (inherits from petal-dropdown-anim-tablet)\n * - petal-dropdown-anim-mobile=\"slide-down|slide-up|slide-left|slide-right\" (optional) - Mobile animation (inherits from petal-dropdown-anim-mobile-landscape)\n * - petal-dropdown-anim-open-speed=\"ms\" (optional) - Animation speed when opening in milliseconds (default: 500)\n * - petal-dropdown-anim-close-speed=\"ms\" (optional) - Animation speed when closing in milliseconds (default: 300)\n */\n\n\n\n\nfunction initializeDropdowns() {\n const init = () => {\n const dropdowns = document.querySelectorAll(`[${_lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_ELEMENT}='${_lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_DROPDOWN}']`);\n dropdowns.forEach((dropdown, index) => {\n // ===========================\n // Element References\n // ===========================\n // Get the name attribute from the dropdown container\n const petalName = dropdown.getAttribute(_lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_NAME);\n // Build selectors that match elements by both name and type\n const buildSelector = (elementType) => {\n if (petalName) {\n return `[${_lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_NAME}='${petalName}'][${_lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_ELEMENT}='${elementType}']`;\n }\n return `[${_lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_ELEMENT}='${elementType}']`;\n };\n const toggle = (0,_lib_helpers__WEBPACK_IMPORTED_MODULE_3__.findPetalElementByNameOrInParent)(dropdown, petalName, _lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_DROPDOWN_TOGGLE);\n const menu = (0,_lib_helpers__WEBPACK_IMPORTED_MODULE_3__.findPetalElementByNameOrInParent)(dropdown, petalName, _lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_DROPDOWN_MENU);\n const drawer = (0,_lib_helpers__WEBPACK_IMPORTED_MODULE_3__.findPetalElementByNameOrInParent)(dropdown, petalName, _lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_DROPDOWN_MENU_BOX);\n const overlay = (0,_lib_helpers__WEBPACK_IMPORTED_MODULE_3__.findPetalElementByNameOrInParent)(dropdown, petalName, _lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_DROPDOWN_OVERLAY);\n const close = (0,_lib_helpers__WEBPACK_IMPORTED_MODULE_3__.findPetalElementByNameOrInParent)(dropdown, petalName, _lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_DROPDOWN_CLOSE);\n // Validate required elements\n if (!toggle || !menu || !drawer) {\n return;\n }\n // ===========================\n // Configuration\n // ===========================\n const config = (0,_dropdown_config__WEBPACK_IMPORTED_MODULE_1__.parseDropdownConfig)(dropdown);\n if (config.debug) {\n console.log(`\\n=== Initializing Dropdown ${index + 1} ===`);\n if (petalName) {\n console.log(`Dropdown ${index + 1} - Name: \"${petalName}\"`);\n }\n console.log(`Dropdown ${index + 1} - Found toggle:`, toggle);\n console.log(`Dropdown ${index + 1} - Found menu:`, menu);\n console.log(`Dropdown ${index + 1} - Found drawer:`, drawer);\n console.log(`Dropdown ${index + 1} - Found overlay:`, overlay);\n console.log(`Dropdown ${index + 1} - Found close:`, close);\n }\n (0,_dropdown_config__WEBPACK_IMPORTED_MODULE_1__.logConfig)(index, config);\n // ===========================\n // Controller Setup\n // ===========================\n const elements = { dropdown, toggle, menu, drawer, overlay };\n const controller = new _dropdown_controller__WEBPACK_IMPORTED_MODULE_2__.DropdownController(elements, config, index);\n // ===========================\n // Initialization\n // ===========================\n // Set initial aria-expanded state and ensure dropdown is closed\n toggle.setAttribute(_lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ARIA_EXPANDED, \"false\");\n dropdown.setAttribute(_lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_STATE, \"closed\");\n // Initialize drawer to its animation's starting position\n controller.initializeDrawer();\n // Event listener references with console logging\n const mouseEnterHandler = () => {\n if (config.debug)\n console.log(`Dropdown ${index + 1} - MOUSEENTER event triggered`);\n controller.open();\n };\n const mouseLeaveHandler = () => {\n if (config.debug)\n console.log(`Dropdown ${index + 1} - MOUSELEAVE event triggered`);\n controller.closeWithDelay();\n };\n const clickOutsideHandler = (event) => {\n controller.handleOutsideClick(event, dropdown);\n };\n // Function to attach/detach event listeners based on hover mode\n const updateEventListeners = () => {\n const previousMode = controller.getOpenOnHover();\n const modeChanged = controller.updateOpenOnHover();\n if (modeChanged) {\n const newMode = controller.getOpenOnHover();\n if (config.debug)\n console.log(`Dropdown ${index + 1} - Switching interaction mode to ${newMode ? \"hover\" : \"click\"}`);\n // Remove old listeners\n if (previousMode) {\n dropdown.removeEventListener(\"mouseenter\", mouseEnterHandler);\n dropdown.removeEventListener(\"mouseleave\", mouseLeaveHandler);\n }\n else {\n toggle.removeEventListener(\"click\", controller.toggle);\n document.removeEventListener(\"click\", clickOutsideHandler);\n }\n // Attach new listeners\n if (newMode) {\n if (config.debug)\n console.log(`Dropdown ${index + 1} - Attaching hover event listeners`);\n dropdown.addEventListener(\"mouseenter\", mouseEnterHandler);\n dropdown.addEventListener(\"mouseleave\", mouseLeaveHandler);\n }\n else {\n if (config.debug)\n console.log(`Dropdown ${index + 1} - Attaching click event listeners`);\n toggle.addEventListener(\"click\", controller.toggle);\n document.addEventListener(\"click\", clickOutsideHandler);\n }\n }\n };\n // Reinitialize drawer position on window resize and update event listeners\n const handleResize = () => {\n controller.handleResize();\n updateEventListeners();\n };\n window.addEventListener(\"resize\", handleResize);\n // Initial event listener setup\n const initialOpenOnHover = controller.getOpenOnHover();\n if (initialOpenOnHover) {\n if (config.debug)\n console.log(`Dropdown ${index + 1} - Attaching hover event listeners`);\n dropdown.addEventListener(\"mouseenter\", mouseEnterHandler);\n dropdown.addEventListener(\"mouseleave\", mouseLeaveHandler);\n }\n else {\n if (config.debug)\n console.log(`Dropdown ${index + 1} - Attaching click event listeners`);\n toggle.addEventListener(\"click\", controller.toggle);\n document.addEventListener(\"click\", clickOutsideHandler);\n }\n // Attach click listener to dropdown-close element (if it exists)\n if (close) {\n if (config.debug)\n console.log(`Dropdown ${index + 1} - Attaching click listener to close element`);\n close.addEventListener(\"click\", controller.close);\n }\n if (config.debug)\n console.log(`Dropdown ${index + 1} - Initialization complete\\n`);\n });\n };\n // Run immediately if DOM is ready, otherwise wait for DOMContentLoaded\n if (document.readyState === \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", init);\n }\n else {\n init();\n }\n}\n\n\n//# sourceURL=webpack://petal/./src/modules/dropdown/dropdown.ts?");
289
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ initializeDropdowns: () => (/* binding */ initializeDropdowns)\n/* harmony export */ });\n/* harmony import */ var _lib_attributes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../lib/attributes */ \"./src/lib/attributes.ts\");\n/* harmony import */ var _dropdown_config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./dropdown-config */ \"./src/modules/dropdown/dropdown-config.ts\");\n/* harmony import */ var _dropdown_controller__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./dropdown-controller */ \"./src/modules/dropdown/dropdown-controller.ts\");\n/* harmony import */ var _lib_helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../lib/helpers */ \"./src/lib/helpers.ts\");\n/**\n * Dropdown Component\n *\n * Handles interactive dropdown menus with support for:\n * - Click or hover-based opening\n * - Customizable close delays\n * - Grouped dropdown coordination\n * - CSS-based animations\n * - Accessibility (aria-expanded)\n * - Named element linking (petal=\"name\")\n *\n * HTML Attributes (defined in attributes.ts):\n * - petal=\"name\" (optional) - Links elements together by name. When set on a dropdown container,\n * all related elements (toggle, menu, overlay, close) must have the same petal=\"name\" attribute.\n * Elements are matched by both name and type before firing their behavior.\n * - petal-el=\"dropdown\" - Container element\n * - petal-el=\"dropdown-toggle\" - Clickable/hoverable trigger\n * - petal-el=\"dropdown-menu\" - Menu content\n * - petal-el=\"dropdown-drawer\" - Menu inner box\n * - petal-el=\"overlay\" (optional) - Background overlay\n * - petal-el=\"dropdown-close\" (optional) - Clickable element that closes the dropdown\n * - petal-group=\"name\" (optional) - Group name for coordinated animations\n * - petal-dropdown-open-on-hover=\"true\" (optional) - Use hover instead of click\n * - petal-dropdown-open-delay=\"ms\" (optional) - Open delay in milliseconds (default: 200)\n * - petal-dropdown-close-delay=\"ms\" (optional) - Close delay in milliseconds (default: 200)\n * - petal-dropdown-anim=\"slide-down|slide-up|slide-left|slide-right\" (optional) - Desktop animation (default: slide-down)\n * - petal-dropdown-anim-tablet=\"slide-down|slide-up|slide-left|slide-right\" (optional) - Tablet animation (inherits from petal-dropdown-anim)\n * - petal-dropdown-anim-mobile-landscape=\"slide-down|slide-up|slide-left|slide-right\" (optional) - Mobile landscape animation (inherits from petal-dropdown-anim-tablet)\n * - petal-dropdown-anim-mobile=\"slide-down|slide-up|slide-left|slide-right\" (optional) - Mobile animation (inherits from petal-dropdown-anim-mobile-landscape)\n * - petal-dropdown-anim-open-speed=\"ms\" (optional) - Animation speed when opening in milliseconds (default: 500)\n * - petal-dropdown-anim-close-speed=\"ms\" (optional) - Animation speed when closing in milliseconds (default: 300)\n */\n\n\n\n\nfunction initializeDropdowns() {\n const init = () => {\n const dropdowns = document.querySelectorAll(`[${_lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_ELEMENT}='${_lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_DROPDOWN}']`);\n dropdowns.forEach((dropdown, index) => {\n // ===========================\n // Element References\n // ===========================\n // Get the name attribute from the dropdown container\n const petalName = dropdown.getAttribute(_lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_NAME);\n // Build selectors that match elements by both name and type\n const buildSelector = (elementType) => {\n if (petalName) {\n return `[${_lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_NAME}='${petalName}'][${_lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_ELEMENT}='${elementType}']`;\n }\n return `[${_lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_ELEMENT}='${elementType}']`;\n };\n const toggle = (0,_lib_helpers__WEBPACK_IMPORTED_MODULE_3__.findPetalElementByNameOrInParent)(dropdown, petalName, _lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_DROPDOWN_TOGGLE);\n const menu = (0,_lib_helpers__WEBPACK_IMPORTED_MODULE_3__.findPetalElementByNameOrInParent)(dropdown, petalName, _lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_DROPDOWN_MENU);\n const drawer = (0,_lib_helpers__WEBPACK_IMPORTED_MODULE_3__.findPetalElementByNameOrInParent)(dropdown, petalName, _lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_DROPDOWN_MENU_BOX);\n const overlay = (0,_lib_helpers__WEBPACK_IMPORTED_MODULE_3__.findPetalElementByNameOrInParent)(dropdown, petalName, _lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_OVERLAY);\n const close = (0,_lib_helpers__WEBPACK_IMPORTED_MODULE_3__.findPetalElementByNameOrInParent)(dropdown, petalName, _lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_DROPDOWN_CLOSE);\n // Validate required elements\n if (!toggle || !menu || !drawer) {\n return;\n }\n // ===========================\n // Configuration\n // ===========================\n const config = (0,_dropdown_config__WEBPACK_IMPORTED_MODULE_1__.parseDropdownConfig)(dropdown);\n if (config.debug) {\n console.log(`\\n=== Initializing Dropdown ${index + 1} ===`);\n if (petalName) {\n console.log(`Dropdown ${index + 1} - Name: \"${petalName}\"`);\n }\n console.log(`Dropdown ${index + 1} - Found toggle:`, toggle);\n console.log(`Dropdown ${index + 1} - Found menu:`, menu);\n console.log(`Dropdown ${index + 1} - Found drawer:`, drawer);\n console.log(`Dropdown ${index + 1} - Found overlay:`, overlay);\n console.log(`Dropdown ${index + 1} - Found close:`, close);\n }\n (0,_dropdown_config__WEBPACK_IMPORTED_MODULE_1__.logConfig)(index, config);\n // ===========================\n // Controller Setup\n // ===========================\n const elements = { dropdown, toggle, menu, drawer, overlay };\n const controller = new _dropdown_controller__WEBPACK_IMPORTED_MODULE_2__.DropdownController(elements, config, index);\n // ===========================\n // Initialization\n // ===========================\n // Set initial aria-expanded state and ensure dropdown is closed\n toggle.setAttribute(_lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ARIA_EXPANDED, \"false\");\n dropdown.setAttribute(_lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_STATE, \"closed\");\n // Initialize drawer to its animation's starting position\n controller.initializeDrawer();\n // Event listener references with console logging\n const mouseEnterHandler = () => {\n if (config.debug)\n console.log(`Dropdown ${index + 1} - MOUSEENTER event triggered`);\n controller.open();\n };\n const mouseLeaveHandler = () => {\n if (config.debug)\n console.log(`Dropdown ${index + 1} - MOUSELEAVE event triggered`);\n controller.closeWithDelay();\n };\n const clickOutsideHandler = (event) => {\n controller.handleOutsideClick(event, dropdown);\n };\n // Function to attach/detach event listeners based on hover mode\n const updateEventListeners = () => {\n const previousMode = controller.getOpenOnHover();\n const modeChanged = controller.updateOpenOnHover();\n if (modeChanged) {\n const newMode = controller.getOpenOnHover();\n if (config.debug)\n console.log(`Dropdown ${index + 1} - Switching interaction mode to ${newMode ? \"hover\" : \"click\"}`);\n // Remove old listeners\n if (previousMode) {\n dropdown.removeEventListener(\"mouseenter\", mouseEnterHandler);\n dropdown.removeEventListener(\"mouseleave\", mouseLeaveHandler);\n }\n else {\n toggle.removeEventListener(\"click\", controller.toggle);\n document.removeEventListener(\"click\", clickOutsideHandler);\n }\n // Attach new listeners\n if (newMode) {\n if (config.debug)\n console.log(`Dropdown ${index + 1} - Attaching hover event listeners`);\n dropdown.addEventListener(\"mouseenter\", mouseEnterHandler);\n dropdown.addEventListener(\"mouseleave\", mouseLeaveHandler);\n }\n else {\n if (config.debug)\n console.log(`Dropdown ${index + 1} - Attaching click event listeners`);\n toggle.addEventListener(\"click\", controller.toggle);\n document.addEventListener(\"click\", clickOutsideHandler);\n }\n }\n };\n // Reinitialize drawer position on window resize and update event listeners\n const handleResize = () => {\n controller.handleResize();\n updateEventListeners();\n };\n window.addEventListener(\"resize\", handleResize);\n // Initial event listener setup\n const initialOpenOnHover = controller.getOpenOnHover();\n if (initialOpenOnHover) {\n if (config.debug)\n console.log(`Dropdown ${index + 1} - Attaching hover event listeners`);\n dropdown.addEventListener(\"mouseenter\", mouseEnterHandler);\n dropdown.addEventListener(\"mouseleave\", mouseLeaveHandler);\n }\n else {\n if (config.debug)\n console.log(`Dropdown ${index + 1} - Attaching click event listeners`);\n toggle.addEventListener(\"click\", controller.toggle);\n document.addEventListener(\"click\", clickOutsideHandler);\n }\n // Attach click listener to dropdown-close element (if it exists)\n if (close) {\n if (config.debug)\n console.log(`Dropdown ${index + 1} - Attaching click listener to close element`);\n close.addEventListener(\"click\", controller.close);\n }\n if (config.debug)\n console.log(`Dropdown ${index + 1} - Initialization complete\\n`);\n });\n };\n // Run immediately if DOM is ready, otherwise wait for DOMContentLoaded\n if (document.readyState === \"loading\") {\n document.addEventListener(\"DOMContentLoaded\", init);\n }\n else {\n init();\n }\n}\n\n\n//# sourceURL=webpack://petal/./src/modules/dropdown/dropdown.ts?");
290
290
 
291
291
  /***/ }),
292
292
 
@@ -306,7 +306,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
306
306
  \*******************************************/
307
307
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
308
308
 
309
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ logConfig: () => (/* binding */ logConfig),\n/* harmony export */ parseModalConfig: () => (/* binding */ parseModalConfig)\n/* harmony export */ });\n/* harmony import */ var _lib_attributes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../lib/attributes */ \"./src/lib/attributes.ts\");\n/**\n * Modal Configuration Module\n *\n * Handles parsing modal configuration from HTML attributes.\n */\n\n/**\n * Parses modal configuration from HTML element attributes\n */\nfunction parseModalConfig(modal) {\n const name = modal.getAttribute(_lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_NAME) || \"unknown\";\n const debug = modal.getAttribute(_lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_DEBUG) === \"true\";\n const maskOpacity = parseFloat(modal.getAttribute(_lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_MASK_OPACITY) || \"0.15\");\n const typeAttr = modal.getAttribute(_lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_MODAL_TYPE);\n const type = isValidModalType(typeAttr) ? typeAttr : \"center\";\n return {\n name,\n debug,\n maskOpacity,\n type,\n };\n}\n/**\n * Type guard to validate modal type\n */\nfunction isValidModalType(value) {\n return value === \"center\" || value === \"left\" || value === \"right\" || value === \"top\" || value === \"bottom\";\n}\n/**\n * Log configuration for debugging\n */\nfunction logConfig(config) {\n if (!config.debug)\n return;\n console.log(` → Modal: \"${config.name}\"`);\n console.log(` [DEBUG] Debug mode enabled for modal \"${config.name}\"`);\n console.log(` [DEBUG] Mask opacity: ${config.maskOpacity}`);\n console.log(` [DEBUG] Modal type: ${config.type}`);\n}\n\n\n//# sourceURL=webpack://petal/./src/modules/modal/modal-config.ts?");
309
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ logConfig: () => (/* binding */ logConfig),\n/* harmony export */ parseModalConfig: () => (/* binding */ parseModalConfig)\n/* harmony export */ });\n/* harmony import */ var _lib_attributes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../lib/attributes */ \"./src/lib/attributes.ts\");\n/**\n * Modal Configuration Module\n *\n * Handles parsing modal configuration from HTML attributes.\n */\n\n/**\n * Parses modal configuration from HTML element attributes\n */\nfunction parseModalConfig(modal) {\n const name = modal.getAttribute(_lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_NAME) || \"unknown\";\n const debug = modal.getAttribute(_lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_DEBUG) === \"true\";\n const maskOpacity = parseFloat(modal.getAttribute(_lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_OVERLAY_OPACITY) || \"0.15\");\n const typeAttr = modal.getAttribute(_lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_MODAL_TYPE);\n const type = isValidModalType(typeAttr) ? typeAttr : \"center\";\n return {\n name,\n debug,\n maskOpacity,\n type,\n };\n}\n/**\n * Type guard to validate modal type\n */\nfunction isValidModalType(value) {\n return value === \"center\" || value === \"left\" || value === \"right\" || value === \"top\" || value === \"bottom\";\n}\n/**\n * Log configuration for debugging\n */\nfunction logConfig(config) {\n if (!config.debug)\n return;\n console.log(` → Modal: \"${config.name}\"`);\n console.log(` [DEBUG] Debug mode enabled for modal \"${config.name}\"`);\n console.log(` [DEBUG] Overlay opacity: ${config.maskOpacity}`);\n console.log(` [DEBUG] Modal type: ${config.type}`);\n}\n\n\n//# sourceURL=webpack://petal/./src/modules/modal/modal-config.ts?");
310
310
 
311
311
  /***/ }),
312
312
 
@@ -326,7 +326,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
326
326
  \************************************/
327
327
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
328
328
 
329
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ initializeAllModals: () => (/* binding */ initializeAllModals)\n/* harmony export */ });\n/* harmony import */ var _lib_attributes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../lib/attributes */ \"./src/lib/attributes.ts\");\n/* harmony import */ var _lib_helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../lib/helpers */ \"./src/lib/helpers.ts\");\n/* harmony import */ var _modal_config__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modal-config */ \"./src/modules/modal/modal-config.ts\");\n/* harmony import */ var _modal_controller__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./modal-controller */ \"./src/modules/modal/modal-controller.ts\");\n/* harmony import */ var _modal_animator__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./modal-animator */ \"./src/modules/modal/modal-animator.ts\");\n/**\n * Modal Component\n *\n * Handles interactive modal dialogs with support for:\n * - GSAP animations\n * - Mask overlays with configurable opacity\n * - Video pause on close\n * - Session state storage\n * - Open/close triggers\n * - Mask click-to-close\n *\n * HTML Attributes (defined in attributes.ts):\n * - petal-el=\"modal\" - Container element\n * - petal-el=\"mask\" - Background overlay\n * - petal-el=\"slot\" - Dialog content (renamed to dialog in code)\n * - petal-name=\"name\" - Modal identifier\n * - petal-open=\"name\" - Open trigger\n * - petal-close=\"name\" - Close trigger\n * - petal-mask-close=\"true\" - Enable mask click-to-close\n * - petal-mask-opacity=\"0.15\" - Mask opacity (default: 0.15)\n * - petal-debug=\"true\" - Enable debug logging\n */\n\n\n\n\n\n/**\n * Initialize all modals on the page\n */\nfunction initializeAllModals() {\n console.log(`🌸 [MODAL] initializeAllModals() called`);\n const modals = (0,_lib_helpers__WEBPACK_IMPORTED_MODULE_1__.getAllPetalElementsOfType)(_lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_MODAL);\n console.log(`🌸 [MODAL] Detected ${modals.length} modal(s)`);\n modals.forEach((modal, index) => {\n console.log(`🌸 [MODAL] Processing modal ${index + 1}/${modals.length}`);\n const name = modal.getAttribute(_lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_NAME) || null;\n console.log(`🌸 [MODAL] Modal name: \"${name}\"`);\n // ===========================\n // Element References\n // ===========================\n const mask = (0,_lib_helpers__WEBPACK_IMPORTED_MODULE_1__.findPetalElementByNameOrInParent)(modal, name, _lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_MASK);\n const dialog = (0,_lib_helpers__WEBPACK_IMPORTED_MODULE_1__.findPetalElementByNameOrInParent)(modal, name, _lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_DIALOG);\n const openTriggers = (0,_lib_helpers__WEBPACK_IMPORTED_MODULE_1__.findPetalElementsByNameOrInParent)(modal, name, _lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_OPEN);\n const closeTriggers = (0,_lib_helpers__WEBPACK_IMPORTED_MODULE_1__.findPetalElementsByNameOrInParent)(modal, name, _lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_CLOSE);\n console.log(`🌸 [MODAL] Found mask: ${!!mask}, dialog: ${!!dialog}`);\n console.log(`🌸 [MODAL] Detected ${(openTriggers === null || openTriggers === void 0 ? void 0 : openTriggers.length) || \"0\"} open trigger(s)`);\n console.log(`🌸 [MODAL] Detected ${(closeTriggers === null || closeTriggers === void 0 ? void 0 : closeTriggers.length) || \"0\"} close trigger(s)`);\n if (!mask || !dialog) {\n console.warn(`⚠️ [MODAL] Skipping modal \"${name}\" - missing ${!mask ? 'mask' : ''} ${!dialog ? 'dialog' : ''}`);\n return;\n }\n // ===========================\n // Configuration\n // ===========================\n const config = (0,_modal_config__WEBPACK_IMPORTED_MODULE_2__.parseModalConfig)(modal);\n (0,_modal_config__WEBPACK_IMPORTED_MODULE_2__.logConfig)(config);\n // ===========================\n // Initialization\n // ===========================\n const elements = {\n modal: modal,\n dialog,\n mask,\n };\n // Create a single controller instance for this modal\n console.log(`🌸 [MODAL] Creating controller for modal \"${config.name}\"`);\n const controller = new _modal_controller__WEBPACK_IMPORTED_MODULE_3__.ModalController(elements, config);\n // Initialize Open Triggers\n console.log(`🌸 [MODAL] Attaching listeners to ${(openTriggers === null || openTriggers === void 0 ? void 0 : openTriggers.length) || 0} open trigger(s)`);\n openTriggers === null || openTriggers === void 0 ? void 0 : openTriggers.forEach((trigger, triggerIndex) => {\n console.log(`🌸 [MODAL] Attaching click listener to open trigger ${triggerIndex + 1}`);\n if (config.debug)\n console.log(` [DEBUG] Attached click listener to open trigger`);\n trigger.addEventListener(\"click\", () => {\n console.log(`🌸 [MODAL] Open trigger clicked for modal \"${config.name}\"`);\n if (config.debug)\n console.log(`[DEBUG] Modal \"${config.name}\" - Open trigger clicked`);\n controller.open();\n });\n });\n // Initialize Close Triggers\n console.log(`🌸 [MODAL] Attaching listeners to ${(closeTriggers === null || closeTriggers === void 0 ? void 0 : closeTriggers.length) || 0} close trigger(s)`);\n closeTriggers === null || closeTriggers === void 0 ? void 0 : closeTriggers.forEach((trigger, triggerIndex) => {\n console.log(`🌸 [MODAL] Attaching click listener to close trigger ${triggerIndex + 1}`);\n if (config.debug)\n console.log(` [DEBUG] Attached click listener to close trigger`);\n trigger.addEventListener(\"click\", () => {\n console.log(`🌸 [MODAL] Close trigger clicked for modal \"${config.name}\"`);\n if (config.debug)\n console.log(`[DEBUG] Modal \"${config.name}\" - Close trigger clicked`);\n controller.close();\n });\n });\n // Initialize Mask Close Trigger\n const maskCloseAttr = modal.getAttribute(_lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_MASK_CLOSE);\n const maskClose = maskCloseAttr === null ? true : maskCloseAttr === \"true\";\n console.log(`🌸 [MODAL] Mask close enabled: ${maskClose}`);\n if (mask && maskClose) {\n console.log(`🌸 [MODAL] Attaching click listener to mask`);\n if (config.debug)\n console.log(` [DEBUG] Attached click listener to mask for modal \"${config.name}\"`);\n mask.addEventListener(\"click\", () => {\n console.log(`🌸 [MODAL] Mask clicked for modal \"${config.name}\"`);\n if (config.debug)\n console.log(`[DEBUG] Modal \"${config.name}\" - Mask clicked`);\n controller.close();\n });\n }\n console.log(`🌸 [MODAL] Initializing elements for modal \"${config.name}\"`);\n (0,_modal_animator__WEBPACK_IMPORTED_MODULE_4__.initializeElements)(elements, config);\n console.log(`🌸 [MODAL] Modal \"${config.name}\" initialization complete`);\n });\n}\n\n\n//# sourceURL=webpack://petal/./src/modules/modal/modal.ts?");
329
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ initializeAllModals: () => (/* binding */ initializeAllModals)\n/* harmony export */ });\n/* harmony import */ var _lib_attributes__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../lib/attributes */ \"./src/lib/attributes.ts\");\n/* harmony import */ var _lib_helpers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../lib/helpers */ \"./src/lib/helpers.ts\");\n/* harmony import */ var _modal_config__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modal-config */ \"./src/modules/modal/modal-config.ts\");\n/* harmony import */ var _modal_controller__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./modal-controller */ \"./src/modules/modal/modal-controller.ts\");\n/* harmony import */ var _modal_animator__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./modal-animator */ \"./src/modules/modal/modal-animator.ts\");\n/**\n * Modal Component\n *\n * Handles interactive modal dialogs with support for:\n * - GSAP animations\n * - Overlay with configurable opacity\n * - Video pause on close\n * - Session state storage\n * - Open/close triggers\n * - Overlay click-to-close\n *\n * HTML Attributes (defined in attributes.ts):\n * - petal-el=\"modal\" - Container element\n * - petal-el=\"overlay\" - Background overlay\n * - petal-el=\"dialog\" - Dialog content\n * - petal=\"name\" - Modal identifier (optional)\n * - petal-el=\"open\" - Open trigger (requires petal=\"name\" on trigger if outside modal)\n * - petal-el=\"close\" - Close trigger (auto-detects parent modal if no name)\n * - petal-overlay-close=\"true\" - Enable overlay click-to-close (default: true)\n * - petal-overlay-opacity=\"0.15\" - Overlay opacity (default: 0.15)\n * - petal-modal-type=\"center|left|right|top|bottom\" - Modal position type (default: center)\n * - petal-debug=\"true\" - Enable debug logging\n */\n\n\n\n\n\n/**\n * Initialize all modals on the page\n */\nfunction initializeAllModals() {\n console.log(`🌸 [MODAL] initializeAllModals() called`);\n const modals = (0,_lib_helpers__WEBPACK_IMPORTED_MODULE_1__.getAllPetalElementsOfType)(_lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_MODAL);\n console.log(`🌸 [MODAL] Detected ${modals.length} modal(s)`);\n modals.forEach((modal, index) => {\n console.log(`🌸 [MODAL] Processing modal ${index + 1}/${modals.length}`);\n const name = modal.getAttribute(_lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_NAME) || null;\n console.log(`🌸 [MODAL] Modal name: \"${name}\"`);\n // ===========================\n // Element References\n // ===========================\n const overlay = (0,_lib_helpers__WEBPACK_IMPORTED_MODULE_1__.findPetalElementByNameOrInParent)(modal, name, _lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_OVERLAY);\n const dialog = (0,_lib_helpers__WEBPACK_IMPORTED_MODULE_1__.findPetalElementByNameOrInParent)(modal, name, _lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_DIALOG);\n const openTriggers = (0,_lib_helpers__WEBPACK_IMPORTED_MODULE_1__.findPetalElementsByNameOrInParent)(modal, name, _lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_OPEN);\n const closeTriggers = (0,_lib_helpers__WEBPACK_IMPORTED_MODULE_1__.findPetalElementsByNameOrInParent)(modal, name, _lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_CLOSE);\n console.log(`🌸 [MODAL] Found overlay: ${!!overlay}, dialog: ${!!dialog}`);\n console.log(`🌸 [MODAL] Detected ${(openTriggers === null || openTriggers === void 0 ? void 0 : openTriggers.length) || \"0\"} open trigger(s)`);\n console.log(`🌸 [MODAL] Detected ${(closeTriggers === null || closeTriggers === void 0 ? void 0 : closeTriggers.length) || \"0\"} close trigger(s)`);\n if (!overlay || !dialog) {\n console.warn(`⚠️ [MODAL] Skipping modal \"${name}\" - missing ${!overlay ? \"overlay\" : \"\"} ${!dialog ? \"dialog\" : \"\"}`);\n return;\n }\n // ===========================\n // Configuration\n // ===========================\n const config = (0,_modal_config__WEBPACK_IMPORTED_MODULE_2__.parseModalConfig)(modal);\n (0,_modal_config__WEBPACK_IMPORTED_MODULE_2__.logConfig)(config);\n // ===========================\n // Initialization\n // ===========================\n const elements = {\n modal: modal,\n dialog,\n mask: overlay,\n };\n // Create a single controller instance for this modal\n console.log(`🌸 [MODAL] Creating controller for modal \"${config.name}\"`);\n const controller = new _modal_controller__WEBPACK_IMPORTED_MODULE_3__.ModalController(elements, config);\n // Initialize Open Triggers\n console.log(`🌸 [MODAL] Attaching listeners to ${(openTriggers === null || openTriggers === void 0 ? void 0 : openTriggers.length) || 0} open trigger(s)`);\n openTriggers === null || openTriggers === void 0 ? void 0 : openTriggers.forEach((trigger, triggerIndex) => {\n console.log(`🌸 [MODAL] Attaching click listener to open trigger ${triggerIndex + 1}`);\n if (config.debug)\n console.log(` [DEBUG] Attached click listener to open trigger`);\n trigger.addEventListener(\"click\", () => {\n console.log(`🌸 [MODAL] Open trigger clicked for modal \"${config.name}\"`);\n if (config.debug)\n console.log(`[DEBUG] Modal \"${config.name}\" - Open trigger clicked`);\n controller.open();\n });\n });\n // Initialize Close Triggers\n console.log(`🌸 [MODAL] Attaching listeners to ${(closeTriggers === null || closeTriggers === void 0 ? void 0 : closeTriggers.length) || 0} close trigger(s)`);\n closeTriggers === null || closeTriggers === void 0 ? void 0 : closeTriggers.forEach((trigger, triggerIndex) => {\n console.log(`🌸 [MODAL] Attaching click listener to close trigger ${triggerIndex + 1}`);\n if (config.debug)\n console.log(` [DEBUG] Attached click listener to close trigger`);\n trigger.addEventListener(\"click\", () => {\n console.log(`🌸 [MODAL] Close trigger clicked for modal \"${config.name}\"`);\n if (config.debug)\n console.log(`[DEBUG] Modal \"${config.name}\" - Close trigger clicked`);\n controller.close();\n });\n });\n // Find and attach close triggers without names (that are children of this modal)\n if (!name) {\n const allCloseTriggers = (0,_lib_helpers__WEBPACK_IMPORTED_MODULE_1__.getAllPetalElementsOfType)(_lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_CLOSE);\n allCloseTriggers.forEach((trigger) => {\n // Check if this close trigger doesn't have a name and is a child of this modal\n const triggerName = trigger.getAttribute(_lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_NAME);\n if (!triggerName) {\n const parentModal = (0,_lib_helpers__WEBPACK_IMPORTED_MODULE_1__.findClosestPetalParent)(trigger, _lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_MODAL);\n if (parentModal === modal) {\n console.log(`🌸 [MODAL] Attaching click listener to unnamed close trigger`);\n if (config.debug)\n console.log(` [DEBUG] Attached click listener to unnamed close trigger`);\n trigger.addEventListener(\"click\", () => {\n console.log(`🌸 [MODAL] Unnamed close trigger clicked for modal \"${config.name}\"`);\n if (config.debug)\n console.log(`[DEBUG] Modal \"${config.name}\" - Unnamed close trigger clicked`);\n controller.close();\n });\n }\n }\n });\n }\n // Initialize Overlay Close Trigger\n const overlayCloseAttr = modal.getAttribute(_lib_attributes__WEBPACK_IMPORTED_MODULE_0__.ATTR_PETAL_MASK_CLOSE);\n const overlayClose = overlayCloseAttr === null ? true : overlayCloseAttr === \"true\";\n console.log(`🌸 [MODAL] Overlay close enabled: ${overlayClose}`);\n if (overlay && overlayClose) {\n console.log(`🌸 [MODAL] Attaching click listener to overlay`);\n if (config.debug)\n console.log(` [DEBUG] Attached click listener to overlay for modal \"${config.name}\"`);\n overlay.addEventListener(\"click\", () => {\n console.log(`🌸 [MODAL] Overlay clicked for modal \"${config.name}\"`);\n if (config.debug)\n console.log(`[DEBUG] Modal \"${config.name}\" - Overlay clicked`);\n controller.close();\n });\n }\n console.log(`🌸 [MODAL] Initializing elements for modal \"${config.name}\"`);\n (0,_modal_animator__WEBPACK_IMPORTED_MODULE_4__.initializeElements)(elements, config);\n console.log(`🌸 [MODAL] Modal \"${config.name}\" initialization complete`);\n });\n}\n\n\n//# sourceURL=webpack://petal/./src/modules/modal/modal.ts?");
330
330
 
331
331
  /***/ }),
332
332
 
@@ -346,7 +346,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac
346
346
  \**********************/
347
347
  /***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
348
348
 
349
- eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _modules_modal_modal__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./modules/modal/modal */ \"./src/modules/modal/modal.ts\");\n/* harmony import */ var _modules_banner_banner__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modules/banner/banner */ \"./src/modules/banner/banner.ts\");\n/* harmony import */ var _modules_dropdown_dropdown__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modules/dropdown/dropdown */ \"./src/modules/dropdown/dropdown.ts\");\n/* harmony import */ var _petal_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./petal.css */ \"./src/petal.css\");\n/* harmony import */ var _modules_dropdown_dropdown_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./modules/dropdown/dropdown.css */ \"./src/modules/dropdown/dropdown.css\");\n\n\n\n\n\nconsole.log(`🌸 Hello from Wellflow Petal v${\"0.0.74\"}`);\n(0,_modules_modal_modal__WEBPACK_IMPORTED_MODULE_0__.initializeAllModals)();\n(0,_modules_banner_banner__WEBPACK_IMPORTED_MODULE_1__.initializeBanner)();\n(0,_modules_dropdown_dropdown__WEBPACK_IMPORTED_MODULE_2__.initializeDropdowns)();\n\n\n//# sourceURL=webpack://petal/./src/petal.ts?");
349
+ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _modules_modal_modal__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./modules/modal/modal */ \"./src/modules/modal/modal.ts\");\n/* harmony import */ var _modules_banner_banner__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modules/banner/banner */ \"./src/modules/banner/banner.ts\");\n/* harmony import */ var _modules_dropdown_dropdown__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modules/dropdown/dropdown */ \"./src/modules/dropdown/dropdown.ts\");\n/* harmony import */ var _petal_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./petal.css */ \"./src/petal.css\");\n/* harmony import */ var _modules_dropdown_dropdown_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./modules/dropdown/dropdown.css */ \"./src/modules/dropdown/dropdown.css\");\n\n\n\n\n\nconsole.log(`🌸 Hello from Wellflow Petal v${\"0.0.75\"}`);\n(0,_modules_modal_modal__WEBPACK_IMPORTED_MODULE_0__.initializeAllModals)();\n(0,_modules_banner_banner__WEBPACK_IMPORTED_MODULE_1__.initializeBanner)();\n(0,_modules_dropdown_dropdown__WEBPACK_IMPORTED_MODULE_2__.initializeDropdowns)();\n\n\n//# sourceURL=webpack://petal/./src/petal.ts?");
350
350
 
351
351
  /***/ }),
352
352
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "well-petal",
3
- "version": "0.0.74",
3
+ "version": "0.0.75",
4
4
  "description": "Webflow Popups powered by attributes",
5
5
  "main": "dist/petal.js",
6
6
  "files": [