@tanishraj/ui-kit 1.1.0 → 1.1.1

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.
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs.js","names":["namespaces","namespace","selector","Selection","selectorAll","Selection","matcher","Selection","Selection","sparse","constant","Selection","Selection","sparse","Selection","Selection","attrRemove","attrRemoveNS","attrConstant","attrConstantNS","attrFunction","attrFunctionNS","namespace","styleRemove","styleConstant","styleFunction","defaultView","textConstant","textFunction","creator","creator","selector","parseTypenames","defaultView","Selection","selection_select","selection_selectAll","selection_selectChild","selection_selectChildren","selection_filter","selection_data","selection_enter","selection_exit","selection_join","selection_merge","selection_order","selection_sort","selection_call","selection_nodes","selection_node","selection_size","selection_empty","selection_each","selection_attr","selection_style","selection_property","selection_classed","selection_text","selection_html","selection_raise","selection_lower","selection_append","selection_insert","selection_remove","selection_clone","selection_datum","selection_on","selection_dispatch","selection_iterator","Selection","sourceEvent","count","leastCommonAncestor","hierarchy","Node","computeHeight","node_copy","copyData","node_count","node_each","node_eachAfter","node_eachBefore","node_find","node_sum","node_sort","node_path","node_ancestors","node_descendants","node_leaves","node_links","node_iterator","Node","computeHeight","moveSubtree","Node","get","set","select","noevent","define","constant","rgb","colorRgb","basis","basisClosed","number","identity","identity","decompose","number","timeout","interpolateNumber","interpolateRgb","interpolateString","namespace","interpolateTransform","interpolate","namespace","matcher","selector","selectorAll","style","interpolateTransform","interpolate","transition_select","transition_selectAll","transition_filter","transition_merge","transition_selection","transition_transition","transition_on","transition_attr","transition_attrTween","transition_style","transition_styleTween","transition_text","transition_textTween","transition_remove","transition_tween","transition_delay","transition_duration","transition_ease","transition_easeVarying","transition_end","easeCubicInOut","selection_interrupt","selection_transition","interpolateZoom","select","pointer","constant","node_count","node_each","node_eachAfter","node_eachBefore","node_sum","node_sort","node_path","node_ancestors","node_descendants","node_leaves","node_links","packageInfo","x","pointX","y","pointY","constant"],"sources":["../node_modules/clsx/dist/clsx.mjs","../node_modules/tailwind-merge/dist/bundle-mjs.mjs","../src/utils/classNames.ts","../node_modules/react/cjs/react.production.js","../node_modules/react/cjs/react.development.js","../node_modules/react/index.js","../node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.mjs","../node_modules/lucide-react/dist/esm/shared/src/utils/toKebabCase.mjs","../node_modules/lucide-react/dist/esm/shared/src/utils/toCamelCase.mjs","../node_modules/lucide-react/dist/esm/shared/src/utils/toPascalCase.mjs","../node_modules/lucide-react/dist/esm/defaultAttributes.mjs","../node_modules/lucide-react/dist/esm/shared/src/utils/hasA11yProp.mjs","../node_modules/lucide-react/dist/esm/context.mjs","../node_modules/lucide-react/dist/esm/Icon.mjs","../node_modules/lucide-react/dist/esm/createLucideIcon.mjs","../node_modules/lucide-react/dist/esm/icons/x.mjs","../node_modules/class-variance-authority/dist/index.mjs","../src/components/Alert/Alert.styles.ts","../node_modules/react/cjs/react-jsx-runtime.production.js","../node_modules/react/cjs/react-jsx-runtime.development.js","../node_modules/react/jsx-runtime.js","../src/components/Alert/Alert.tsx","../src/components/Badge/Badge.styles.ts","../src/components/Badge/Badge.tsx","../src/components/Button/Button.styles.ts","../src/components/Button/Button.tsx","../src/components/ButtonGroup/ButtonGroup.styles.ts","../src/components/ButtonGroup/ButtonGroup.tsx","../src/components/Avatar/Avatar.styles.ts","../src/components/Avatar/Avatar.tsx","../src/components/AvatarGroup/AvatarGroup.styles.ts","../src/components/AvatarGroup/AvatarGroup.tsx","../node_modules/d3-selection/src/namespaces.js","../node_modules/d3-selection/src/namespace.js","../node_modules/d3-selection/src/creator.js","../node_modules/d3-selection/src/selector.js","../node_modules/d3-selection/src/selection/select.js","../node_modules/d3-selection/src/array.js","../node_modules/d3-selection/src/selectorAll.js","../node_modules/d3-selection/src/selection/selectAll.js","../node_modules/d3-selection/src/matcher.js","../node_modules/d3-selection/src/selection/selectChild.js","../node_modules/d3-selection/src/selection/selectChildren.js","../node_modules/d3-selection/src/selection/filter.js","../node_modules/d3-selection/src/selection/sparse.js","../node_modules/d3-selection/src/selection/enter.js","../node_modules/d3-selection/src/constant.js","../node_modules/d3-selection/src/selection/data.js","../node_modules/d3-selection/src/selection/exit.js","../node_modules/d3-selection/src/selection/join.js","../node_modules/d3-selection/src/selection/merge.js","../node_modules/d3-selection/src/selection/order.js","../node_modules/d3-selection/src/selection/sort.js","../node_modules/d3-selection/src/selection/call.js","../node_modules/d3-selection/src/selection/nodes.js","../node_modules/d3-selection/src/selection/node.js","../node_modules/d3-selection/src/selection/size.js","../node_modules/d3-selection/src/selection/empty.js","../node_modules/d3-selection/src/selection/each.js","../node_modules/d3-selection/src/selection/attr.js","../node_modules/d3-selection/src/window.js","../node_modules/d3-selection/src/selection/style.js","../node_modules/d3-selection/src/selection/property.js","../node_modules/d3-selection/src/selection/classed.js","../node_modules/d3-selection/src/selection/text.js","../node_modules/d3-selection/src/selection/html.js","../node_modules/d3-selection/src/selection/raise.js","../node_modules/d3-selection/src/selection/lower.js","../node_modules/d3-selection/src/selection/append.js","../node_modules/d3-selection/src/selection/insert.js","../node_modules/d3-selection/src/selection/remove.js","../node_modules/d3-selection/src/selection/clone.js","../node_modules/d3-selection/src/selection/datum.js","../node_modules/d3-selection/src/selection/on.js","../node_modules/d3-selection/src/selection/dispatch.js","../node_modules/d3-selection/src/selection/iterator.js","../node_modules/d3-selection/src/selection/index.js","../node_modules/d3-selection/src/select.js","../node_modules/d3-selection/src/sourceEvent.js","../node_modules/d3-selection/src/pointer.js","../node_modules/d3-array/src/cumsum.js","../node_modules/d3-array/src/max.js","../node_modules/d3-array/src/min.js","../node_modules/d3-array/src/sum.js","../node_modules/d3-hierarchy/src/hierarchy/count.js","../node_modules/d3-hierarchy/src/hierarchy/each.js","../node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","../node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","../node_modules/d3-hierarchy/src/hierarchy/find.js","../node_modules/d3-hierarchy/src/hierarchy/sum.js","../node_modules/d3-hierarchy/src/hierarchy/sort.js","../node_modules/d3-hierarchy/src/hierarchy/path.js","../node_modules/d3-hierarchy/src/hierarchy/ancestors.js","../node_modules/d3-hierarchy/src/hierarchy/descendants.js","../node_modules/d3-hierarchy/src/hierarchy/leaves.js","../node_modules/d3-hierarchy/src/hierarchy/links.js","../node_modules/d3-hierarchy/src/hierarchy/iterator.js","../node_modules/d3-hierarchy/src/hierarchy/index.js","../node_modules/d3-hierarchy/src/accessors.js","../node_modules/d3-hierarchy/src/stratify.js","../node_modules/d3-hierarchy/src/tree.js","../node_modules/d3-dispatch/src/dispatch.js","../node_modules/d3-drag/src/noevent.js","../node_modules/d3-drag/src/nodrag.js","../node_modules/d3-color/src/define.js","../node_modules/d3-color/src/color.js","../node_modules/d3-interpolate/src/basis.js","../node_modules/d3-interpolate/src/basisClosed.js","../node_modules/d3-interpolate/src/constant.js","../node_modules/d3-interpolate/src/color.js","../node_modules/d3-interpolate/src/rgb.js","../node_modules/d3-interpolate/src/number.js","../node_modules/d3-interpolate/src/string.js","../node_modules/d3-interpolate/src/transform/decompose.js","../node_modules/d3-interpolate/src/transform/parse.js","../node_modules/d3-interpolate/src/transform/index.js","../node_modules/d3-interpolate/src/zoom.js","../node_modules/d3-timer/src/timer.js","../node_modules/d3-timer/src/timeout.js","../node_modules/d3-transition/src/transition/schedule.js","../node_modules/d3-transition/src/interrupt.js","../node_modules/d3-transition/src/selection/interrupt.js","../node_modules/d3-transition/src/transition/tween.js","../node_modules/d3-transition/src/transition/interpolate.js","../node_modules/d3-transition/src/transition/attr.js","../node_modules/d3-transition/src/transition/attrTween.js","../node_modules/d3-transition/src/transition/delay.js","../node_modules/d3-transition/src/transition/duration.js","../node_modules/d3-transition/src/transition/ease.js","../node_modules/d3-transition/src/transition/easeVarying.js","../node_modules/d3-transition/src/transition/filter.js","../node_modules/d3-transition/src/transition/merge.js","../node_modules/d3-transition/src/transition/on.js","../node_modules/d3-transition/src/transition/remove.js","../node_modules/d3-transition/src/transition/select.js","../node_modules/d3-transition/src/transition/selectAll.js","../node_modules/d3-transition/src/transition/selection.js","../node_modules/d3-transition/src/transition/style.js","../node_modules/d3-transition/src/transition/styleTween.js","../node_modules/d3-transition/src/transition/text.js","../node_modules/d3-transition/src/transition/textTween.js","../node_modules/d3-transition/src/transition/transition.js","../node_modules/d3-transition/src/transition/end.js","../node_modules/d3-transition/src/transition/index.js","../node_modules/d3-ease/src/cubic.js","../node_modules/d3-transition/src/selection/transition.js","../node_modules/d3-transition/src/selection/index.js","../node_modules/d3-zoom/src/constant.js","../node_modules/d3-zoom/src/event.js","../node_modules/d3-zoom/src/transform.js","../node_modules/d3-zoom/src/noevent.js","../node_modules/d3-zoom/src/zoom.js","../node_modules/d3-flextree/node_modules/d3-hierarchy/src/hierarchy/count.js","../node_modules/d3-flextree/node_modules/d3-hierarchy/src/hierarchy/each.js","../node_modules/d3-flextree/node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","../node_modules/d3-flextree/node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","../node_modules/d3-flextree/node_modules/d3-hierarchy/src/hierarchy/sum.js","../node_modules/d3-flextree/node_modules/d3-hierarchy/src/hierarchy/sort.js","../node_modules/d3-flextree/node_modules/d3-hierarchy/src/hierarchy/path.js","../node_modules/d3-flextree/node_modules/d3-hierarchy/src/hierarchy/ancestors.js","../node_modules/d3-flextree/node_modules/d3-hierarchy/src/hierarchy/descendants.js","../node_modules/d3-flextree/node_modules/d3-hierarchy/src/hierarchy/leaves.js","../node_modules/d3-flextree/node_modules/d3-hierarchy/src/hierarchy/links.js","../node_modules/d3-flextree/node_modules/d3-hierarchy/src/hierarchy/index.js","../node_modules/d3-flextree/package.json","../node_modules/d3-flextree/src/flextree.js","../node_modules/d3-shape/src/constant.js","../node_modules/d3-path/src/path.js","../node_modules/d3-shape/src/path.js","../node_modules/d3-shape/src/array.js","../node_modules/d3-shape/src/point.js","../node_modules/d3-shape/src/curve/bump.js","../node_modules/d3-shape/src/link.js","../node_modules/d3-org-chart/src/d3-org-chart.js","../src/components/OrganizationChart/OrganizationChart.styles.ts","../src/components/OrganizationChart/utils.ts","../src/components/OrganizationChart/OrganizationChart.tsx","../src/hooks/useToggle.tsx","../src/providers/theme/types.ts","../src/providers/theme/context.ts","../src/hooks/useTheme.ts"],"sourcesContent":["function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","/**\n * Concatenates two arrays faster than the array spread operator.\n */\nconst concatArrays = (array1, array2) => {\n // Pre-allocate for better V8 optimization\n const combinedArray = new Array(array1.length + array2.length);\n for (let i = 0; i < array1.length; i++) {\n combinedArray[i] = array1[i];\n }\n for (let i = 0; i < array2.length; i++) {\n combinedArray[array1.length + i] = array2[i];\n }\n return combinedArray;\n};\n\n// Factory function ensures consistent object shapes\nconst createClassValidatorObject = (classGroupId, validator) => ({\n classGroupId,\n validator\n});\n// Factory ensures consistent ClassPartObject shape\nconst createClassPartObject = (nextPart = new Map(), validators = null, classGroupId) => ({\n nextPart,\n validators,\n classGroupId\n});\nconst CLASS_PART_SEPARATOR = '-';\nconst EMPTY_CONFLICTS = [];\n// I use two dots here because one dot is used as prefix for class groups in plugins\nconst ARBITRARY_PROPERTY_PREFIX = 'arbitrary..';\nconst createClassGroupUtils = config => {\n const classMap = createClassMap(config);\n const {\n conflictingClassGroups,\n conflictingClassGroupModifiers\n } = config;\n const getClassGroupId = className => {\n if (className.startsWith('[') && className.endsWith(']')) {\n return getGroupIdForArbitraryProperty(className);\n }\n const classParts = className.split(CLASS_PART_SEPARATOR);\n // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and skip it.\n const startIndex = classParts[0] === '' && classParts.length > 1 ? 1 : 0;\n return getGroupRecursive(classParts, startIndex, classMap);\n };\n const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {\n if (hasPostfixModifier) {\n const modifierConflicts = conflictingClassGroupModifiers[classGroupId];\n const baseConflicts = conflictingClassGroups[classGroupId];\n if (modifierConflicts) {\n if (baseConflicts) {\n // Merge base conflicts with modifier conflicts\n return concatArrays(baseConflicts, modifierConflicts);\n }\n // Only modifier conflicts\n return modifierConflicts;\n }\n // Fall back to without postfix if no modifier conflicts\n return baseConflicts || EMPTY_CONFLICTS;\n }\n return conflictingClassGroups[classGroupId] || EMPTY_CONFLICTS;\n };\n return {\n getClassGroupId,\n getConflictingClassGroupIds\n };\n};\nconst getGroupRecursive = (classParts, startIndex, classPartObject) => {\n const classPathsLength = classParts.length - startIndex;\n if (classPathsLength === 0) {\n return classPartObject.classGroupId;\n }\n const currentClassPart = classParts[startIndex];\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);\n if (nextClassPartObject) {\n const result = getGroupRecursive(classParts, startIndex + 1, nextClassPartObject);\n if (result) return result;\n }\n const validators = classPartObject.validators;\n if (validators === null) {\n return undefined;\n }\n // Build classRest string efficiently by joining from startIndex onwards\n const classRest = startIndex === 0 ? classParts.join(CLASS_PART_SEPARATOR) : classParts.slice(startIndex).join(CLASS_PART_SEPARATOR);\n const validatorsLength = validators.length;\n for (let i = 0; i < validatorsLength; i++) {\n const validatorObj = validators[i];\n if (validatorObj.validator(classRest)) {\n return validatorObj.classGroupId;\n }\n }\n return undefined;\n};\n/**\n * Get the class group ID for an arbitrary property.\n *\n * @param className - The class name to get the group ID for. Is expected to be string starting with `[` and ending with `]`.\n */\nconst getGroupIdForArbitraryProperty = className => className.slice(1, -1).indexOf(':') === -1 ? undefined : (() => {\n const content = className.slice(1, -1);\n const colonIndex = content.indexOf(':');\n const property = content.slice(0, colonIndex);\n return property ? ARBITRARY_PROPERTY_PREFIX + property : undefined;\n})();\n/**\n * Exported for testing only\n */\nconst createClassMap = config => {\n const {\n theme,\n classGroups\n } = config;\n return processClassGroups(classGroups, theme);\n};\n// Split into separate functions to maintain monomorphic call sites\nconst processClassGroups = (classGroups, theme) => {\n const classMap = createClassPartObject();\n for (const classGroupId in classGroups) {\n const group = classGroups[classGroupId];\n processClassesRecursively(group, classMap, classGroupId, theme);\n }\n return classMap;\n};\nconst processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {\n const len = classGroup.length;\n for (let i = 0; i < len; i++) {\n const classDefinition = classGroup[i];\n processClassDefinition(classDefinition, classPartObject, classGroupId, theme);\n }\n};\n// Split into separate functions for each type to maintain monomorphic call sites\nconst processClassDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n if (typeof classDefinition === 'string') {\n processStringDefinition(classDefinition, classPartObject, classGroupId);\n return;\n }\n if (typeof classDefinition === 'function') {\n processFunctionDefinition(classDefinition, classPartObject, classGroupId, theme);\n return;\n }\n processObjectDefinition(classDefinition, classPartObject, classGroupId, theme);\n};\nconst processStringDefinition = (classDefinition, classPartObject, classGroupId) => {\n const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);\n classPartObjectToEdit.classGroupId = classGroupId;\n};\nconst processFunctionDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);\n return;\n }\n if (classPartObject.validators === null) {\n classPartObject.validators = [];\n }\n classPartObject.validators.push(createClassValidatorObject(classGroupId, classDefinition));\n};\nconst processObjectDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n const entries = Object.entries(classDefinition);\n const len = entries.length;\n for (let i = 0; i < len; i++) {\n const [key, value] = entries[i];\n processClassesRecursively(value, getPart(classPartObject, key), classGroupId, theme);\n }\n};\nconst getPart = (classPartObject, path) => {\n let current = classPartObject;\n const parts = path.split(CLASS_PART_SEPARATOR);\n const len = parts.length;\n for (let i = 0; i < len; i++) {\n const part = parts[i];\n let next = current.nextPart.get(part);\n if (!next) {\n next = createClassPartObject();\n current.nextPart.set(part, next);\n }\n current = next;\n }\n return current;\n};\n// Type guard maintains monomorphic check\nconst isThemeGetter = func => 'isThemeGetter' in func && func.isThemeGetter === true;\n\n// LRU cache implementation using plain objects for simplicity\nconst createLruCache = maxCacheSize => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {}\n };\n }\n let cacheSize = 0;\n let cache = Object.create(null);\n let previousCache = Object.create(null);\n const update = (key, value) => {\n cache[key] = value;\n cacheSize++;\n if (cacheSize > maxCacheSize) {\n cacheSize = 0;\n previousCache = cache;\n cache = Object.create(null);\n }\n };\n return {\n get(key) {\n let value = cache[key];\n if (value !== undefined) {\n return value;\n }\n if ((value = previousCache[key]) !== undefined) {\n update(key, value);\n return value;\n }\n },\n set(key, value) {\n if (key in cache) {\n cache[key] = value;\n } else {\n update(key, value);\n }\n }\n };\n};\nconst IMPORTANT_MODIFIER = '!';\nconst MODIFIER_SEPARATOR = ':';\nconst EMPTY_MODIFIERS = [];\n// Pre-allocated result object shape for consistency\nconst createResultObject = (modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition, isExternal) => ({\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n isExternal\n});\nconst createParseClassName = config => {\n const {\n prefix,\n experimentalParseClassName\n } = config;\n /**\n * Parse class name into parts.\n *\n * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n */\n let parseClassName = className => {\n // Use simple array with push for better performance\n const modifiers = [];\n let bracketDepth = 0;\n let parenDepth = 0;\n let modifierStart = 0;\n let postfixModifierPosition;\n const len = className.length;\n for (let index = 0; index < len; index++) {\n const currentCharacter = className[index];\n if (bracketDepth === 0 && parenDepth === 0) {\n if (currentCharacter === MODIFIER_SEPARATOR) {\n modifiers.push(className.slice(modifierStart, index));\n modifierStart = index + 1;\n continue;\n }\n if (currentCharacter === '/') {\n postfixModifierPosition = index;\n continue;\n }\n }\n if (currentCharacter === '[') bracketDepth++;else if (currentCharacter === ']') bracketDepth--;else if (currentCharacter === '(') parenDepth++;else if (currentCharacter === ')') parenDepth--;\n }\n const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.slice(modifierStart);\n // Inline important modifier check\n let baseClassName = baseClassNameWithImportantModifier;\n let hasImportantModifier = false;\n if (baseClassNameWithImportantModifier.endsWith(IMPORTANT_MODIFIER)) {\n baseClassName = baseClassNameWithImportantModifier.slice(0, -1);\n hasImportantModifier = true;\n } else if (\n /**\n * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.\n * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864\n */\n baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER)) {\n baseClassName = baseClassNameWithImportantModifier.slice(1);\n hasImportantModifier = true;\n }\n const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;\n return createResultObject(modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition);\n };\n if (prefix) {\n const fullPrefix = prefix + MODIFIER_SEPARATOR;\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => className.startsWith(fullPrefix) ? parseClassNameOriginal(className.slice(fullPrefix.length)) : createResultObject(EMPTY_MODIFIERS, false, className, undefined, true);\n }\n if (experimentalParseClassName) {\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => experimentalParseClassName({\n className,\n parseClassName: parseClassNameOriginal\n });\n }\n return parseClassName;\n};\n\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nconst createSortModifiers = config => {\n // Pre-compute weights for all known modifiers for O(1) comparison\n const modifierWeights = new Map();\n // Assign weights to sensitive modifiers (highest priority, but preserve order)\n config.orderSensitiveModifiers.forEach((mod, index) => {\n modifierWeights.set(mod, 1000000 + index); // High weights for sensitive mods\n });\n return modifiers => {\n const result = [];\n let currentSegment = [];\n // Process modifiers in one pass\n for (let i = 0; i < modifiers.length; i++) {\n const modifier = modifiers[i];\n // Check if modifier is sensitive (starts with '[' or in orderSensitiveModifiers)\n const isArbitrary = modifier[0] === '[';\n const isOrderSensitive = modifierWeights.has(modifier);\n if (isArbitrary || isOrderSensitive) {\n // Sort and flush current segment alphabetically\n if (currentSegment.length > 0) {\n currentSegment.sort();\n result.push(...currentSegment);\n currentSegment = [];\n }\n result.push(modifier);\n } else {\n // Regular modifier - add to current segment for batch sorting\n currentSegment.push(modifier);\n }\n }\n // Sort and add any remaining segment items\n if (currentSegment.length > 0) {\n currentSegment.sort();\n result.push(...currentSegment);\n }\n return result;\n };\n};\nconst createConfigUtils = config => ({\n cache: createLruCache(config.cacheSize),\n parseClassName: createParseClassName(config),\n sortModifiers: createSortModifiers(config),\n postfixLookupClassGroupIds: createPostfixLookupClassGroupIds(config),\n ...createClassGroupUtils(config)\n});\nconst createPostfixLookupClassGroupIds = config => {\n const lookup = Object.create(null);\n const classGroupIds = config.postfixLookupClassGroups;\n if (classGroupIds) {\n for (let i = 0; i < classGroupIds.length; i++) {\n lookup[classGroupIds[i]] = true;\n }\n }\n return lookup;\n};\nconst SPLIT_CLASSES_REGEX = /\\s+/;\nconst mergeClassList = (classList, configUtils) => {\n const {\n parseClassName,\n getClassGroupId,\n getConflictingClassGroupIds,\n sortModifiers,\n postfixLookupClassGroupIds\n } = configUtils;\n /**\n * Set of classGroupIds in following format:\n * `{importantModifier}{variantModifiers}{classGroupId}`\n * @example 'float'\n * @example 'hover:focus:bg-color'\n * @example 'md:!pr'\n */\n const classGroupsInConflict = [];\n const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);\n let result = '';\n for (let index = classNames.length - 1; index >= 0; index -= 1) {\n const originalClassName = classNames[index];\n const {\n isExternal,\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n } = parseClassName(originalClassName);\n if (isExternal) {\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n let hasPostfixModifier = !!maybePostfixModifierPosition;\n let classGroupId;\n if (hasPostfixModifier) {\n const baseClassNameWithoutPostfix = baseClassName.substring(0, maybePostfixModifierPosition);\n classGroupId = getClassGroupId(baseClassNameWithoutPostfix);\n const classGroupIdWithPostfix = classGroupId && postfixLookupClassGroupIds[classGroupId] ? getClassGroupId(baseClassName) : undefined;\n if (classGroupIdWithPostfix && classGroupIdWithPostfix !== classGroupId) {\n classGroupId = classGroupIdWithPostfix;\n hasPostfixModifier = false;\n }\n } else {\n classGroupId = getClassGroupId(baseClassName);\n }\n if (!classGroupId) {\n if (!hasPostfixModifier) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n classGroupId = getClassGroupId(baseClassName);\n if (!classGroupId) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n hasPostfixModifier = false;\n }\n // Fast path: skip sorting for empty or single modifier\n const variantModifier = modifiers.length === 0 ? '' : modifiers.length === 1 ? modifiers[0] : sortModifiers(modifiers).join(':');\n const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;\n const classId = modifierId + classGroupId;\n if (classGroupsInConflict.indexOf(classId) > -1) {\n // Tailwind class omitted due to conflict\n continue;\n }\n classGroupsInConflict.push(classId);\n const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);\n for (let i = 0; i < conflictGroups.length; ++i) {\n const group = conflictGroups[i];\n classGroupsInConflict.push(modifierId + group);\n }\n // Tailwind class not in conflict\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n }\n return result;\n};\n\n/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n */\nconst twJoin = (...classLists) => {\n let index = 0;\n let argument;\n let resolvedValue;\n let string = '';\n while (index < classLists.length) {\n if (argument = classLists[index++]) {\n if (resolvedValue = toValue(argument)) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nconst toValue = mix => {\n // Fast path for strings\n if (typeof mix === 'string') {\n return mix;\n }\n let resolvedValue;\n let string = '';\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if (resolvedValue = toValue(mix[k])) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nconst createTailwindMerge = (createConfigFirst, ...createConfigRest) => {\n let configUtils;\n let cacheGet;\n let cacheSet;\n let functionToCall;\n const initTailwindMerge = classList => {\n const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());\n configUtils = createConfigUtils(config);\n cacheGet = configUtils.cache.get;\n cacheSet = configUtils.cache.set;\n functionToCall = tailwindMerge;\n return tailwindMerge(classList);\n };\n const tailwindMerge = classList => {\n const cachedResult = cacheGet(classList);\n if (cachedResult) {\n return cachedResult;\n }\n const result = mergeClassList(classList, configUtils);\n cacheSet(classList, result);\n return result;\n };\n functionToCall = initTailwindMerge;\n return (...args) => functionToCall(twJoin(...args));\n};\nconst fallbackThemeArr = [];\nconst fromTheme = key => {\n const themeGetter = theme => theme[key] || fallbackThemeArr;\n themeGetter.isThemeGetter = true;\n return themeGetter;\n};\nconst arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i;\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i;\nconst fractionRegex = /^\\d+(?:\\.\\d+)?\\/\\d+(?:\\.\\d+)?$/;\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/;\nconst lengthUnitRegex = /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/;\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\\(.+\\)$/;\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/;\nconst imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/;\nconst isFraction = value => fractionRegex.test(value);\nconst isNumber = value => !!value && !Number.isNaN(Number(value));\nconst isInteger = value => !!value && Number.isInteger(Number(value));\nconst isPercent = value => value.endsWith('%') && isNumber(value.slice(0, -1));\nconst isTshirtSize = value => tshirtUnitRegex.test(value);\nconst isAny = () => true;\nconst isLengthOnly = value =>\n// `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n// For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n// I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\nlengthUnitRegex.test(value) && !colorFunctionRegex.test(value);\nconst isNever = () => false;\nconst isShadow = value => shadowRegex.test(value);\nconst isImage = value => imageRegex.test(value);\nconst isAnyNonArbitrary = value => !isArbitraryValue(value) && !isArbitraryVariable(value);\nconst isNamedContainerQuery = value => value.startsWith('@container') && (value[10] === '/' && value[11] !== undefined || value[11] === 's' && value[16] !== undefined && value.startsWith('-size/', 10) || value[11] === 'n' && value[18] !== undefined && value.startsWith('-normal/', 10));\nconst isArbitrarySize = value => getIsArbitraryValue(value, isLabelSize, isNever);\nconst isArbitraryValue = value => arbitraryValueRegex.test(value);\nconst isArbitraryLength = value => getIsArbitraryValue(value, isLabelLength, isLengthOnly);\nconst isArbitraryNumber = value => getIsArbitraryValue(value, isLabelNumber, isNumber);\nconst isArbitraryWeight = value => getIsArbitraryValue(value, isLabelWeight, isAny);\nconst isArbitraryFamilyName = value => getIsArbitraryValue(value, isLabelFamilyName, isNever);\nconst isArbitraryPosition = value => getIsArbitraryValue(value, isLabelPosition, isNever);\nconst isArbitraryImage = value => getIsArbitraryValue(value, isLabelImage, isImage);\nconst isArbitraryShadow = value => getIsArbitraryValue(value, isLabelShadow, isShadow);\nconst isArbitraryVariable = value => arbitraryVariableRegex.test(value);\nconst isArbitraryVariableLength = value => getIsArbitraryVariable(value, isLabelLength);\nconst isArbitraryVariableFamilyName = value => getIsArbitraryVariable(value, isLabelFamilyName);\nconst isArbitraryVariablePosition = value => getIsArbitraryVariable(value, isLabelPosition);\nconst isArbitraryVariableSize = value => getIsArbitraryVariable(value, isLabelSize);\nconst isArbitraryVariableImage = value => getIsArbitraryVariable(value, isLabelImage);\nconst isArbitraryVariableShadow = value => getIsArbitraryVariable(value, isLabelShadow, true);\nconst isArbitraryVariableWeight = value => getIsArbitraryVariable(value, isLabelWeight, true);\n// Helpers\nconst getIsArbitraryValue = (value, testLabel, testValue) => {\n const result = arbitraryValueRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return testValue(result[2]);\n }\n return false;\n};\nconst getIsArbitraryVariable = (value, testLabel, shouldMatchNoLabel = false) => {\n const result = arbitraryVariableRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return shouldMatchNoLabel;\n }\n return false;\n};\n// Labels\nconst isLabelPosition = label => label === 'position' || label === 'percentage';\nconst isLabelImage = label => label === 'image' || label === 'url';\nconst isLabelSize = label => label === 'length' || label === 'size' || label === 'bg-size';\nconst isLabelLength = label => label === 'length';\nconst isLabelNumber = label => label === 'number';\nconst isLabelFamilyName = label => label === 'family-name';\nconst isLabelWeight = label => label === 'number' || label === 'weight';\nconst isLabelShadow = label => label === 'shadow';\nconst validators = /*#__PURE__*/Object.defineProperty({\n __proto__: null,\n isAny,\n isAnyNonArbitrary,\n isArbitraryFamilyName,\n isArbitraryImage,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryValue,\n isArbitraryVariable,\n isArbitraryVariableFamilyName,\n isArbitraryVariableImage,\n isArbitraryVariableLength,\n isArbitraryVariablePosition,\n isArbitraryVariableShadow,\n isArbitraryVariableSize,\n isArbitraryVariableWeight,\n isArbitraryWeight,\n isFraction,\n isInteger,\n isNamedContainerQuery,\n isNumber,\n isPercent,\n isTshirtSize\n}, Symbol.toStringTag, {\n value: 'Module'\n});\nconst getDefaultConfig = () => {\n /**\n * Theme getters for theme variable namespaces\n * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces\n */\n /***/\n const themeColor = fromTheme('color');\n const themeFont = fromTheme('font');\n const themeText = fromTheme('text');\n const themeFontWeight = fromTheme('font-weight');\n const themeTracking = fromTheme('tracking');\n const themeLeading = fromTheme('leading');\n const themeBreakpoint = fromTheme('breakpoint');\n const themeContainer = fromTheme('container');\n const themeSpacing = fromTheme('spacing');\n const themeRadius = fromTheme('radius');\n const themeShadow = fromTheme('shadow');\n const themeInsetShadow = fromTheme('inset-shadow');\n const themeTextShadow = fromTheme('text-shadow');\n const themeDropShadow = fromTheme('drop-shadow');\n const themeBlur = fromTheme('blur');\n const themePerspective = fromTheme('perspective');\n const themeAspect = fromTheme('aspect');\n const themeEase = fromTheme('ease');\n const themeAnimate = fromTheme('animate');\n /**\n * Helpers to avoid repeating the same scales\n *\n * We use functions that create a new array every time they're called instead of static arrays.\n * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.\n */\n /***/\n const scaleBreak = () => ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'];\n const scalePosition = () => ['center', 'top', 'bottom', 'left', 'right', 'top-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-top', 'top-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-top', 'bottom-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-bottom', 'bottom-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-bottom'];\n const scalePositionWithArbitrary = () => [...scalePosition(), isArbitraryVariable, isArbitraryValue];\n const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'];\n const scaleOverscroll = () => ['auto', 'contain', 'none'];\n const scaleUnambiguousSpacing = () => [isArbitraryVariable, isArbitraryValue, themeSpacing];\n const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()];\n const scaleGridTemplateColsRows = () => [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartAndEnd = () => ['auto', {\n span: ['full', isInteger, isArbitraryVariable, isArbitraryValue]\n }, isInteger, isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartOrEnd = () => [isInteger, 'auto', isArbitraryVariable, isArbitraryValue];\n const scaleGridAutoColsRows = () => ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue];\n const scaleAlignPrimaryAxis = () => ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch', 'baseline', 'center-safe', 'end-safe'];\n const scaleAlignSecondaryAxis = () => ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'];\n const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()];\n const scaleSizing = () => [isFraction, 'auto', 'full', 'dvw', 'dvh', 'lvw', 'lvh', 'svw', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleSizingInline = () => [isFraction, 'screen', 'full', 'dvw', 'lvw', 'svw', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleSizingBlock = () => [isFraction, 'screen', 'full', 'lh', 'dvh', 'lvh', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue];\n const scaleBgPosition = () => [...scalePosition(), isArbitraryVariablePosition, isArbitraryPosition, {\n position: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleBgRepeat = () => ['no-repeat', {\n repeat: ['', 'x', 'y', 'space', 'round']\n }];\n const scaleBgSize = () => ['auto', 'cover', 'contain', isArbitraryVariableSize, isArbitrarySize, {\n size: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleGradientStopPosition = () => [isPercent, isArbitraryVariableLength, isArbitraryLength];\n const scaleRadius = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', 'full', themeRadius, isArbitraryVariable, isArbitraryValue];\n const scaleBorderWidth = () => ['', isNumber, isArbitraryVariableLength, isArbitraryLength];\n const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'];\n const scaleBlendMode = () => ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity'];\n const scaleMaskImagePosition = () => [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition];\n const scaleBlur = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeBlur, isArbitraryVariable, isArbitraryValue];\n const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()];\n return {\n cacheSize: 500,\n theme: {\n animate: ['spin', 'ping', 'pulse', 'bounce'],\n aspect: ['video'],\n blur: [isTshirtSize],\n breakpoint: [isTshirtSize],\n color: [isAny],\n container: [isTshirtSize],\n 'drop-shadow': [isTshirtSize],\n ease: ['in', 'out', 'in-out'],\n font: [isAnyNonArbitrary],\n 'font-weight': ['thin', 'extralight', 'light', 'normal', 'medium', 'semibold', 'bold', 'extrabold', 'black'],\n 'inset-shadow': [isTshirtSize],\n leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],\n perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],\n radius: [isTshirtSize],\n shadow: [isTshirtSize],\n spacing: ['px', isNumber],\n text: [isTshirtSize],\n 'text-shadow': [isTshirtSize],\n tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest']\n },\n classGroups: {\n // --------------\n // --- Layout ---\n // --------------\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [{\n aspect: ['auto', 'square', isFraction, isArbitraryValue, isArbitraryVariable, themeAspect]\n }],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n * @deprecated since Tailwind CSS v4.0.0\n */\n container: ['container'],\n /**\n * Container Type\n * @see https://tailwindcss.com/docs/responsive-design#container-queries\n */\n 'container-type': [{\n '@container': ['', 'normal', 'size', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Container Name\n * @see https://tailwindcss.com/docs/responsive-design#named-containers\n */\n 'container-named': [isNamedContainerQuery],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [{\n columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer]\n }],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{\n 'break-after': scaleBreak()\n }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{\n 'break-before': scaleBreak()\n }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{\n 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column']\n }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{\n 'box-decoration': ['slice', 'clone']\n }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{\n box: ['border', 'content']\n }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: ['block', 'inline-block', 'inline', 'flex', 'inline-flex', 'table', 'inline-table', 'table-caption', 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row-group', 'table-row', 'flow-root', 'grid', 'inline-grid', 'contents', 'list-item', 'hidden'],\n /**\n * Screen Reader Only\n * @see https://tailwindcss.com/docs/display#screen-reader-only\n */\n sr: ['sr-only', 'not-sr-only'],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{\n float: ['right', 'left', 'none', 'start', 'end']\n }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{\n clear: ['left', 'right', 'both', 'none', 'start', 'end']\n }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: ['isolate', 'isolation-auto'],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n 'object-fit': [{\n object: ['contain', 'cover', 'fill', 'none', 'scale-down']\n }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{\n object: scalePositionWithArbitrary()\n }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{\n overflow: scaleOverflow()\n }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{\n 'overflow-x': scaleOverflow()\n }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{\n 'overflow-y': scaleOverflow()\n }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{\n overscroll: scaleOverscroll()\n }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{\n 'overscroll-x': scaleOverscroll()\n }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{\n 'overscroll-y': scaleOverscroll()\n }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n /**\n * Inset\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{\n inset: scaleInset()\n }],\n /**\n * Inset Inline\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{\n 'inset-x': scaleInset()\n }],\n /**\n * Inset Block\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{\n 'inset-y': scaleInset()\n }],\n /**\n * Inset Inline Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n * @todo class group will be renamed to `inset-s` in next major release\n */\n start: [{\n 'inset-s': scaleInset(),\n /**\n * @deprecated since Tailwind CSS v4.2.0 in favor of `inset-s-*` utilities.\n * @see https://github.com/tailwindlabs/tailwindcss/pull/19613\n */\n start: scaleInset()\n }],\n /**\n * Inset Inline End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n * @todo class group will be renamed to `inset-e` in next major release\n */\n end: [{\n 'inset-e': scaleInset(),\n /**\n * @deprecated since Tailwind CSS v4.2.0 in favor of `inset-e-*` utilities.\n * @see https://github.com/tailwindlabs/tailwindcss/pull/19613\n */\n end: scaleInset()\n }],\n /**\n * Inset Block Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-bs': [{\n 'inset-bs': scaleInset()\n }],\n /**\n * Inset Block End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-be': [{\n 'inset-be': scaleInset()\n }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{\n top: scaleInset()\n }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{\n right: scaleInset()\n }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{\n bottom: scaleInset()\n }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{\n left: scaleInset()\n }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: ['visible', 'invisible', 'collapse'],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{\n z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------------\n // --- Flexbox and Grid ---\n // ------------------------\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [{\n basis: [isFraction, 'full', 'auto', themeContainer, ...scaleUnambiguousSpacing()]\n }],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{\n flex: ['row', 'row-reverse', 'col', 'col-reverse']\n }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{\n flex: ['nowrap', 'wrap', 'wrap-reverse']\n }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{\n flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue]\n }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{\n grow: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{\n shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [{\n order: [isInteger, 'first', 'last', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{\n 'grid-cols': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{\n col: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{\n 'col-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{\n 'col-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{\n 'grid-rows': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{\n row: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{\n 'row-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{\n 'row-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{\n 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense']\n }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{\n 'auto-cols': scaleGridAutoColsRows()\n }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{\n 'auto-rows': scaleGridAutoColsRows()\n }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{\n gap: scaleUnambiguousSpacing()\n }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{\n 'gap-x': scaleUnambiguousSpacing()\n }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{\n 'gap-y': scaleUnambiguousSpacing()\n }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{\n justify: [...scaleAlignPrimaryAxis(), 'normal']\n }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{\n 'justify-items': [...scaleAlignSecondaryAxis(), 'normal']\n }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{\n 'justify-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{\n content: ['normal', ...scaleAlignPrimaryAxis()]\n }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{\n items: [...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [{\n self: ['auto', ...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{\n 'place-content': scaleAlignPrimaryAxis()\n }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{\n 'place-items': [...scaleAlignSecondaryAxis(), 'baseline']\n }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{\n 'place-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{\n p: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Inline\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{\n px: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Block\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{\n py: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Inline Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{\n ps: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Inline End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{\n pe: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Block Start\n * @see https://tailwindcss.com/docs/padding\n */\n pbs: [{\n pbs: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Block End\n * @see https://tailwindcss.com/docs/padding\n */\n pbe: [{\n pbe: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{\n pt: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{\n pr: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{\n pb: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{\n pl: scaleUnambiguousSpacing()\n }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{\n m: scaleMargin()\n }],\n /**\n * Margin Inline\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{\n mx: scaleMargin()\n }],\n /**\n * Margin Block\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{\n my: scaleMargin()\n }],\n /**\n * Margin Inline Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{\n ms: scaleMargin()\n }],\n /**\n * Margin Inline End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{\n me: scaleMargin()\n }],\n /**\n * Margin Block Start\n * @see https://tailwindcss.com/docs/margin\n */\n mbs: [{\n mbs: scaleMargin()\n }],\n /**\n * Margin Block End\n * @see https://tailwindcss.com/docs/margin\n */\n mbe: [{\n mbe: scaleMargin()\n }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{\n mt: scaleMargin()\n }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{\n mr: scaleMargin()\n }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{\n mb: scaleMargin()\n }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{\n ml: scaleMargin()\n }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x': [{\n 'space-x': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y': [{\n 'space-y': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y-reverse': ['space-y-reverse'],\n // --------------\n // --- Sizing ---\n // --------------\n /**\n * Size\n * @see https://tailwindcss.com/docs/width#setting-both-width-and-height\n */\n size: [{\n size: scaleSizing()\n }],\n /**\n * Inline Size\n * @see https://tailwindcss.com/docs/width\n */\n 'inline-size': [{\n inline: ['auto', ...scaleSizingInline()]\n }],\n /**\n * Min-Inline Size\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-inline-size': [{\n 'min-inline': ['auto', ...scaleSizingInline()]\n }],\n /**\n * Max-Inline Size\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-inline-size': [{\n 'max-inline': ['none', ...scaleSizingInline()]\n }],\n /**\n * Block Size\n * @see https://tailwindcss.com/docs/height\n */\n 'block-size': [{\n block: ['auto', ...scaleSizingBlock()]\n }],\n /**\n * Min-Block Size\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-block-size': [{\n 'min-block': ['auto', ...scaleSizingBlock()]\n }],\n /**\n * Max-Block Size\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-block-size': [{\n 'max-block': ['none', ...scaleSizingBlock()]\n }],\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{\n w: [themeContainer, 'screen', ...scaleSizing()]\n }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [{\n 'min-w': [themeContainer, 'screen', /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'none', ...scaleSizing()]\n }],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [{\n 'max-w': [themeContainer, 'screen', 'none', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'prose', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n {\n screen: [themeBreakpoint]\n }, ...scaleSizing()]\n }],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{\n h: ['screen', 'lh', ...scaleSizing()]\n }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{\n 'min-h': ['screen', 'lh', 'none', ...scaleSizing()]\n }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{\n 'max-h': ['screen', 'lh', ...scaleSizing()]\n }],\n // ------------------\n // --- Typography ---\n // ------------------\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [{\n text: ['base', themeText, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n 'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n 'font-style': ['italic', 'not-italic'],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n 'font-weight': [{\n font: [themeFontWeight, isArbitraryVariableWeight, isArbitraryWeight]\n }],\n /**\n * Font Stretch\n * @see https://tailwindcss.com/docs/font-stretch\n */\n 'font-stretch': [{\n 'font-stretch': ['ultra-condensed', 'extra-condensed', 'condensed', 'semi-condensed', 'normal', 'semi-expanded', 'expanded', 'extra-expanded', 'ultra-expanded', isPercent, isArbitraryValue]\n }],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [{\n font: [isArbitraryVariableFamilyName, isArbitraryFamilyName, themeFont]\n }],\n /**\n * Font Feature Settings\n * @see https://tailwindcss.com/docs/font-feature-settings\n */\n 'font-features': [{\n 'font-features': [isArbitraryValue]\n }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-normal': ['normal-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-ordinal': ['ordinal'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-slashed-zero': ['slashed-zero'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [{\n tracking: [themeTracking, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [{\n 'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [{\n leading: [/** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n themeLeading, ...scaleUnambiguousSpacing()]\n }],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{\n 'list-image': ['none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{\n list: ['inside', 'outside']\n }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [{\n list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{\n text: ['left', 'center', 'right', 'justify', 'start', 'end']\n }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://v3.tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{\n placeholder: scaleColor()\n }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{\n text: scaleColor()\n }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n 'text-decoration-style': [{\n decoration: [...scaleLineStyle(), 'wavy']\n }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [{\n decoration: [isNumber, 'from-font', 'auto', isArbitraryVariable, isArbitraryLength]\n }],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{\n decoration: scaleColor()\n }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [{\n 'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n /**\n * Text Wrap\n * @see https://tailwindcss.com/docs/text-wrap\n */\n 'text-wrap': [{\n text: ['wrap', 'nowrap', 'balance', 'pretty']\n }],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{\n indent: scaleUnambiguousSpacing()\n }],\n /**\n * Tab Size\n * @see https://tailwindcss.com/docs/tab-size\n */\n 'tab-size': [{\n tab: [isInteger, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [{\n align: ['baseline', 'top', 'middle', 'bottom', 'text-top', 'text-bottom', 'sub', 'super', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [{\n whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces']\n }],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n break: [{\n break: ['normal', 'words', 'all', 'keep']\n }],\n /**\n * Overflow Wrap\n * @see https://tailwindcss.com/docs/overflow-wrap\n */\n wrap: [{\n wrap: ['break-word', 'anywhere', 'normal']\n }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{\n hyphens: ['none', 'manual', 'auto']\n }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{\n content: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // -------------------\n // --- Backgrounds ---\n // -------------------\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{\n bg: ['fixed', 'local', 'scroll']\n }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{\n 'bg-clip': ['border', 'padding', 'content', 'text']\n }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{\n 'bg-origin': ['border', 'padding', 'content']\n }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{\n bg: scaleBgPosition()\n }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{\n bg: scaleBgRepeat()\n }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{\n bg: scaleBgSize()\n }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [{\n bg: ['none', {\n linear: [{\n to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl']\n }, isInteger, isArbitraryVariable, isArbitraryValue],\n radial: ['', isArbitraryVariable, isArbitraryValue],\n conic: [isInteger, isArbitraryVariable, isArbitraryValue]\n }, isArbitraryVariableImage, isArbitraryImage]\n }],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{\n bg: scaleColor()\n }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{\n from: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{\n via: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{\n to: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{\n from: scaleColor()\n }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{\n via: scaleColor()\n }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{\n to: scaleColor()\n }],\n // ---------------\n // --- Borders ---\n // ---------------\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{\n rounded: scaleRadius()\n }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{\n 'rounded-s': scaleRadius()\n }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{\n 'rounded-e': scaleRadius()\n }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{\n 'rounded-t': scaleRadius()\n }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{\n 'rounded-r': scaleRadius()\n }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{\n 'rounded-b': scaleRadius()\n }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{\n 'rounded-l': scaleRadius()\n }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{\n 'rounded-ss': scaleRadius()\n }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{\n 'rounded-se': scaleRadius()\n }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{\n 'rounded-ee': scaleRadius()\n }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{\n 'rounded-es': scaleRadius()\n }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{\n 'rounded-tl': scaleRadius()\n }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{\n 'rounded-tr': scaleRadius()\n }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{\n 'rounded-br': scaleRadius()\n }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{\n 'rounded-bl': scaleRadius()\n }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{\n border: scaleBorderWidth()\n }],\n /**\n * Border Width Inline\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{\n 'border-x': scaleBorderWidth()\n }],\n /**\n * Border Width Block\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{\n 'border-y': scaleBorderWidth()\n }],\n /**\n * Border Width Inline Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{\n 'border-s': scaleBorderWidth()\n }],\n /**\n * Border Width Inline End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{\n 'border-e': scaleBorderWidth()\n }],\n /**\n * Border Width Block Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-bs': [{\n 'border-bs': scaleBorderWidth()\n }],\n /**\n * Border Width Block End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-be': [{\n 'border-be': scaleBorderWidth()\n }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{\n 'border-t': scaleBorderWidth()\n }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{\n 'border-r': scaleBorderWidth()\n }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{\n 'border-b': scaleBorderWidth()\n }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{\n 'border-l': scaleBorderWidth()\n }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x': [{\n 'divide-x': scaleBorderWidth()\n }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y': [{\n 'divide-y': scaleBorderWidth()\n }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{\n border: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style\n */\n 'divide-style': [{\n divide: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{\n border: scaleColor()\n }],\n /**\n * Border Color Inline\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{\n 'border-x': scaleColor()\n }],\n /**\n * Border Color Block\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{\n 'border-y': scaleColor()\n }],\n /**\n * Border Color Inline Start\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-s': [{\n 'border-s': scaleColor()\n }],\n /**\n * Border Color Inline End\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-e': [{\n 'border-e': scaleColor()\n }],\n /**\n * Border Color Block Start\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-bs': [{\n 'border-bs': scaleColor()\n }],\n /**\n * Border Color Block End\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-be': [{\n 'border-be': scaleColor()\n }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{\n 'border-t': scaleColor()\n }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{\n 'border-r': scaleColor()\n }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{\n 'border-b': scaleColor()\n }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{\n 'border-l': scaleColor()\n }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{\n divide: scaleColor()\n }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{\n outline: [...scaleLineStyle(), 'none', 'hidden']\n }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [{\n 'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [{\n outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{\n outline: scaleColor()\n }],\n // ---------------\n // --- Effects ---\n // ---------------\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [{\n shadow: [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color\n */\n 'shadow-color': [{\n shadow: scaleColor()\n }],\n /**\n * Inset Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow\n */\n 'inset-shadow': [{\n 'inset-shadow': ['none', themeInsetShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Inset Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color\n */\n 'inset-shadow-color': [{\n 'inset-shadow': scaleColor()\n }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring\n */\n 'ring-w': [{\n ring: scaleBorderWidth()\n }],\n /**\n * Ring Width Inset\n * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color\n */\n 'ring-color': [{\n ring: scaleColor()\n }],\n /**\n * Ring Offset Width\n * @see https://v3.tailwindcss.com/docs/ring-offset-width\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-w': [{\n 'ring-offset': [isNumber, isArbitraryLength]\n }],\n /**\n * Ring Offset Color\n * @see https://v3.tailwindcss.com/docs/ring-offset-color\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-color': [{\n 'ring-offset': scaleColor()\n }],\n /**\n * Inset Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring\n */\n 'inset-ring-w': [{\n 'inset-ring': scaleBorderWidth()\n }],\n /**\n * Inset Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color\n */\n 'inset-ring-color': [{\n 'inset-ring': scaleColor()\n }],\n /**\n * Text Shadow\n * @see https://tailwindcss.com/docs/text-shadow\n */\n 'text-shadow': [{\n 'text-shadow': ['none', themeTextShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Text Shadow Color\n * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color\n */\n 'text-shadow-color': [{\n 'text-shadow': scaleColor()\n }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{\n opacity: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{\n 'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter']\n }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{\n 'bg-blend': scaleBlendMode()\n }],\n /**\n * Mask Clip\n * @see https://tailwindcss.com/docs/mask-clip\n */\n 'mask-clip': [{\n 'mask-clip': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }, 'mask-no-clip'],\n /**\n * Mask Composite\n * @see https://tailwindcss.com/docs/mask-composite\n */\n 'mask-composite': [{\n mask: ['add', 'subtract', 'intersect', 'exclude']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image-linear-pos': [{\n 'mask-linear': [isNumber]\n }],\n 'mask-image-linear-from-pos': [{\n 'mask-linear-from': scaleMaskImagePosition()\n }],\n 'mask-image-linear-to-pos': [{\n 'mask-linear-to': scaleMaskImagePosition()\n }],\n 'mask-image-linear-from-color': [{\n 'mask-linear-from': scaleColor()\n }],\n 'mask-image-linear-to-color': [{\n 'mask-linear-to': scaleColor()\n }],\n 'mask-image-t-from-pos': [{\n 'mask-t-from': scaleMaskImagePosition()\n }],\n 'mask-image-t-to-pos': [{\n 'mask-t-to': scaleMaskImagePosition()\n }],\n 'mask-image-t-from-color': [{\n 'mask-t-from': scaleColor()\n }],\n 'mask-image-t-to-color': [{\n 'mask-t-to': scaleColor()\n }],\n 'mask-image-r-from-pos': [{\n 'mask-r-from': scaleMaskImagePosition()\n }],\n 'mask-image-r-to-pos': [{\n 'mask-r-to': scaleMaskImagePosition()\n }],\n 'mask-image-r-from-color': [{\n 'mask-r-from': scaleColor()\n }],\n 'mask-image-r-to-color': [{\n 'mask-r-to': scaleColor()\n }],\n 'mask-image-b-from-pos': [{\n 'mask-b-from': scaleMaskImagePosition()\n }],\n 'mask-image-b-to-pos': [{\n 'mask-b-to': scaleMaskImagePosition()\n }],\n 'mask-image-b-from-color': [{\n 'mask-b-from': scaleColor()\n }],\n 'mask-image-b-to-color': [{\n 'mask-b-to': scaleColor()\n }],\n 'mask-image-l-from-pos': [{\n 'mask-l-from': scaleMaskImagePosition()\n }],\n 'mask-image-l-to-pos': [{\n 'mask-l-to': scaleMaskImagePosition()\n }],\n 'mask-image-l-from-color': [{\n 'mask-l-from': scaleColor()\n }],\n 'mask-image-l-to-color': [{\n 'mask-l-to': scaleColor()\n }],\n 'mask-image-x-from-pos': [{\n 'mask-x-from': scaleMaskImagePosition()\n }],\n 'mask-image-x-to-pos': [{\n 'mask-x-to': scaleMaskImagePosition()\n }],\n 'mask-image-x-from-color': [{\n 'mask-x-from': scaleColor()\n }],\n 'mask-image-x-to-color': [{\n 'mask-x-to': scaleColor()\n }],\n 'mask-image-y-from-pos': [{\n 'mask-y-from': scaleMaskImagePosition()\n }],\n 'mask-image-y-to-pos': [{\n 'mask-y-to': scaleMaskImagePosition()\n }],\n 'mask-image-y-from-color': [{\n 'mask-y-from': scaleColor()\n }],\n 'mask-image-y-to-color': [{\n 'mask-y-to': scaleColor()\n }],\n 'mask-image-radial': [{\n 'mask-radial': [isArbitraryVariable, isArbitraryValue]\n }],\n 'mask-image-radial-from-pos': [{\n 'mask-radial-from': scaleMaskImagePosition()\n }],\n 'mask-image-radial-to-pos': [{\n 'mask-radial-to': scaleMaskImagePosition()\n }],\n 'mask-image-radial-from-color': [{\n 'mask-radial-from': scaleColor()\n }],\n 'mask-image-radial-to-color': [{\n 'mask-radial-to': scaleColor()\n }],\n 'mask-image-radial-shape': [{\n 'mask-radial': ['circle', 'ellipse']\n }],\n 'mask-image-radial-size': [{\n 'mask-radial': [{\n closest: ['side', 'corner'],\n farthest: ['side', 'corner']\n }]\n }],\n 'mask-image-radial-pos': [{\n 'mask-radial-at': scalePosition()\n }],\n 'mask-image-conic-pos': [{\n 'mask-conic': [isNumber]\n }],\n 'mask-image-conic-from-pos': [{\n 'mask-conic-from': scaleMaskImagePosition()\n }],\n 'mask-image-conic-to-pos': [{\n 'mask-conic-to': scaleMaskImagePosition()\n }],\n 'mask-image-conic-from-color': [{\n 'mask-conic-from': scaleColor()\n }],\n 'mask-image-conic-to-color': [{\n 'mask-conic-to': scaleColor()\n }],\n /**\n * Mask Mode\n * @see https://tailwindcss.com/docs/mask-mode\n */\n 'mask-mode': [{\n mask: ['alpha', 'luminance', 'match']\n }],\n /**\n * Mask Origin\n * @see https://tailwindcss.com/docs/mask-origin\n */\n 'mask-origin': [{\n 'mask-origin': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }],\n /**\n * Mask Position\n * @see https://tailwindcss.com/docs/mask-position\n */\n 'mask-position': [{\n mask: scaleBgPosition()\n }],\n /**\n * Mask Repeat\n * @see https://tailwindcss.com/docs/mask-repeat\n */\n 'mask-repeat': [{\n mask: scaleBgRepeat()\n }],\n /**\n * Mask Size\n * @see https://tailwindcss.com/docs/mask-size\n */\n 'mask-size': [{\n mask: scaleBgSize()\n }],\n /**\n * Mask Type\n * @see https://tailwindcss.com/docs/mask-type\n */\n 'mask-type': [{\n 'mask-type': ['alpha', 'luminance']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image': [{\n mask: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // ---------------\n // --- Filters ---\n // ---------------\n /**\n * Filter\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [{\n filter: [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{\n blur: scaleBlur()\n }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{\n brightness: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{\n contrast: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [{\n 'drop-shadow': [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeDropShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Drop Shadow Color\n * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color\n */\n 'drop-shadow-color': [{\n 'drop-shadow': scaleColor()\n }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{\n grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{\n 'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{\n invert: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{\n saturate: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{\n sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Filter\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [{\n 'backdrop-filter': [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{\n 'backdrop-blur': scaleBlur()\n }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [{\n 'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [{\n 'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [{\n 'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [{\n 'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [{\n 'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [{\n 'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [{\n 'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [{\n 'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n // --------------\n // --- Tables ---\n // --------------\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{\n border: ['collapse', 'separate']\n }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{\n 'border-spacing': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{\n 'border-spacing-x': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{\n 'border-spacing-y': scaleUnambiguousSpacing()\n }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{\n table: ['auto', 'fixed']\n }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{\n caption: ['top', 'bottom']\n }],\n // ---------------------------------\n // --- Transitions and Animation ---\n // ---------------------------------\n /**\n * Transition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [{\n transition: ['', 'all', 'colors', 'opacity', 'shadow', 'transform', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Behavior\n * @see https://tailwindcss.com/docs/transition-behavior\n */\n 'transition-behavior': [{\n transition: ['normal', 'discrete']\n }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{\n duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [{\n ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{\n delay: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{\n animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------\n // --- Transforms ---\n // ------------------\n /**\n * Backface Visibility\n * @see https://tailwindcss.com/docs/backface-visibility\n */\n backface: [{\n backface: ['hidden', 'visible']\n }],\n /**\n * Perspective\n * @see https://tailwindcss.com/docs/perspective\n */\n perspective: [{\n perspective: [themePerspective, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Perspective Origin\n * @see https://tailwindcss.com/docs/perspective-origin\n */\n 'perspective-origin': [{\n 'perspective-origin': scalePositionWithArbitrary()\n }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{\n rotate: scaleRotate()\n }],\n /**\n * Rotate X\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-x': [{\n 'rotate-x': scaleRotate()\n }],\n /**\n * Rotate Y\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-y': [{\n 'rotate-y': scaleRotate()\n }],\n /**\n * Rotate Z\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-z': [{\n 'rotate-z': scaleRotate()\n }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{\n scale: scaleScale()\n }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{\n 'scale-x': scaleScale()\n }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{\n 'scale-y': scaleScale()\n }],\n /**\n * Scale Z\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-z': [{\n 'scale-z': scaleScale()\n }],\n /**\n * Scale 3D\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-3d': ['scale-3d'],\n /**\n * Skew\n * @see https://tailwindcss.com/docs/skew\n */\n skew: [{\n skew: scaleSkew()\n }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{\n 'skew-x': scaleSkew()\n }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{\n 'skew-y': scaleSkew()\n }],\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [{\n transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu']\n }],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [{\n origin: scalePositionWithArbitrary()\n }],\n /**\n * Transform Style\n * @see https://tailwindcss.com/docs/transform-style\n */\n 'transform-style': [{\n transform: ['3d', 'flat']\n }],\n /**\n * Translate\n * @see https://tailwindcss.com/docs/translate\n */\n translate: [{\n translate: scaleTranslate()\n }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{\n 'translate-x': scaleTranslate()\n }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{\n 'translate-y': scaleTranslate()\n }],\n /**\n * Translate Z\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-z': [{\n 'translate-z': scaleTranslate()\n }],\n /**\n * Translate None\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-none': ['translate-none'],\n /**\n * Zoom\n * @see https://tailwindcss.com/docs/zoom\n */\n zoom: [{\n zoom: [isInteger, isArbitraryVariable, isArbitraryValue]\n }],\n // ---------------------\n // --- Interactivity ---\n // ---------------------\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{\n accent: scaleColor()\n }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{\n appearance: ['none', 'auto']\n }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{\n caret: scaleColor()\n }],\n /**\n * Color Scheme\n * @see https://tailwindcss.com/docs/color-scheme\n */\n 'color-scheme': [{\n scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light']\n }],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [{\n cursor: ['auto', 'default', 'pointer', 'wait', 'text', 'move', 'help', 'not-allowed', 'none', 'context-menu', 'progress', 'cell', 'crosshair', 'vertical-text', 'alias', 'copy', 'no-drop', 'grab', 'grabbing', 'all-scroll', 'col-resize', 'row-resize', 'n-resize', 'e-resize', 's-resize', 'w-resize', 'ne-resize', 'nw-resize', 'se-resize', 'sw-resize', 'ew-resize', 'ns-resize', 'nesw-resize', 'nwse-resize', 'zoom-in', 'zoom-out', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Field Sizing\n * @see https://tailwindcss.com/docs/field-sizing\n */\n 'field-sizing': [{\n 'field-sizing': ['fixed', 'content']\n }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{\n 'pointer-events': ['auto', 'none']\n }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{\n resize: ['none', '', 'y', 'x']\n }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{\n scroll: ['auto', 'smooth']\n }],\n /**\n * Scrollbar Thumb Color\n * @see https://tailwindcss.com/docs/scrollbar-color\n */\n 'scrollbar-thumb-color': [{\n 'scrollbar-thumb': scaleColor()\n }],\n /**\n * Scrollbar Track Color\n * @see https://tailwindcss.com/docs/scrollbar-color\n */\n 'scrollbar-track-color': [{\n 'scrollbar-track': scaleColor()\n }],\n /**\n * Scrollbar Gutter\n * @see https://tailwindcss.com/docs/scrollbar-gutter\n */\n 'scrollbar-gutter': [{\n 'scrollbar-gutter': ['auto', 'stable', 'both']\n }],\n /**\n * Scrollbar Width\n * @see https://tailwindcss.com/docs/scrollbar-width\n */\n 'scrollbar-w': [{\n scrollbar: ['auto', 'thin', 'none']\n }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{\n 'scroll-m': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Inline\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{\n 'scroll-mx': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Block\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{\n 'scroll-my': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Inline Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{\n 'scroll-ms': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Inline End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{\n 'scroll-me': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Block Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mbs': [{\n 'scroll-mbs': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Block End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mbe': [{\n 'scroll-mbe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{\n 'scroll-mt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{\n 'scroll-mr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{\n 'scroll-mb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{\n 'scroll-ml': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{\n 'scroll-p': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Inline\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{\n 'scroll-px': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Block\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{\n 'scroll-py': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Inline Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{\n 'scroll-ps': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Inline End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{\n 'scroll-pe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Block Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pbs': [{\n 'scroll-pbs': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Block End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pbe': [{\n 'scroll-pbe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{\n 'scroll-pt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{\n 'scroll-pr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{\n 'scroll-pb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{\n 'scroll-pl': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{\n snap: ['start', 'end', 'center', 'align-none']\n }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{\n snap: ['normal', 'always']\n }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{\n snap: ['none', 'x', 'y', 'both']\n }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{\n snap: ['mandatory', 'proximity']\n }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [{\n touch: ['auto', 'none', 'manipulation']\n }],\n /**\n * Touch Action X\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-x': [{\n 'touch-pan': ['x', 'left', 'right']\n }],\n /**\n * Touch Action Y\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-y': [{\n 'touch-pan': ['y', 'up', 'down']\n }],\n /**\n * Touch Action Pinch Zoom\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-pz': ['touch-pinch-zoom'],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{\n select: ['none', 'text', 'all', 'auto']\n }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [{\n 'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryVariable, isArbitraryValue]\n }],\n // -----------\n // --- SVG ---\n // -----------\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{\n fill: ['none', ...scaleColor()]\n }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [{\n stroke: [isNumber, isArbitraryVariableLength, isArbitraryLength, isArbitraryNumber]\n }],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{\n stroke: ['none', ...scaleColor()]\n }],\n // ---------------------\n // --- Accessibility ---\n // ---------------------\n /**\n * Forced Color Adjust\n * @see https://tailwindcss.com/docs/forced-color-adjust\n */\n 'forced-color-adjust': [{\n 'forced-color-adjust': ['auto', 'none']\n }]\n },\n conflictingClassGroups: {\n 'container-named': ['container-type'],\n overflow: ['overflow-x', 'overflow-y'],\n overscroll: ['overscroll-x', 'overscroll-y'],\n inset: ['inset-x', 'inset-y', 'inset-bs', 'inset-be', 'start', 'end', 'top', 'right', 'bottom', 'left'],\n 'inset-x': ['right', 'left'],\n 'inset-y': ['top', 'bottom'],\n flex: ['basis', 'grow', 'shrink'],\n gap: ['gap-x', 'gap-y'],\n p: ['px', 'py', 'ps', 'pe', 'pbs', 'pbe', 'pt', 'pr', 'pb', 'pl'],\n px: ['pr', 'pl'],\n py: ['pt', 'pb'],\n m: ['mx', 'my', 'ms', 'me', 'mbs', 'mbe', 'mt', 'mr', 'mb', 'ml'],\n mx: ['mr', 'ml'],\n my: ['mt', 'mb'],\n size: ['w', 'h'],\n 'font-size': ['leading'],\n 'fvn-normal': ['fvn-ordinal', 'fvn-slashed-zero', 'fvn-figure', 'fvn-spacing', 'fvn-fraction'],\n 'fvn-ordinal': ['fvn-normal'],\n 'fvn-slashed-zero': ['fvn-normal'],\n 'fvn-figure': ['fvn-normal'],\n 'fvn-spacing': ['fvn-normal'],\n 'fvn-fraction': ['fvn-normal'],\n 'line-clamp': ['display', 'overflow'],\n rounded: ['rounded-s', 'rounded-e', 'rounded-t', 'rounded-r', 'rounded-b', 'rounded-l', 'rounded-ss', 'rounded-se', 'rounded-ee', 'rounded-es', 'rounded-tl', 'rounded-tr', 'rounded-br', 'rounded-bl'],\n 'rounded-s': ['rounded-ss', 'rounded-es'],\n 'rounded-e': ['rounded-se', 'rounded-ee'],\n 'rounded-t': ['rounded-tl', 'rounded-tr'],\n 'rounded-r': ['rounded-tr', 'rounded-br'],\n 'rounded-b': ['rounded-br', 'rounded-bl'],\n 'rounded-l': ['rounded-tl', 'rounded-bl'],\n 'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n 'border-w': ['border-w-x', 'border-w-y', 'border-w-s', 'border-w-e', 'border-w-bs', 'border-w-be', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],\n 'border-w-x': ['border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-t', 'border-w-b'],\n 'border-color': ['border-color-x', 'border-color-y', 'border-color-s', 'border-color-e', 'border-color-bs', 'border-color-be', 'border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],\n 'border-color-x': ['border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-t', 'border-color-b'],\n translate: ['translate-x', 'translate-y', 'translate-none'],\n 'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],\n 'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mbs', 'scroll-mbe', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],\n 'scroll-mx': ['scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mt', 'scroll-mb'],\n 'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pbs', 'scroll-pbe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],\n 'scroll-px': ['scroll-pr', 'scroll-pl'],\n 'scroll-py': ['scroll-pt', 'scroll-pb'],\n touch: ['touch-x', 'touch-y', 'touch-pz'],\n 'touch-x': ['touch'],\n 'touch-y': ['touch'],\n 'touch-pz': ['touch']\n },\n conflictingClassGroupModifiers: {\n 'font-size': ['leading']\n },\n postfixLookupClassGroups: ['container-type'],\n orderSensitiveModifiers: ['*', '**', 'after', 'backdrop', 'before', 'details-content', 'file', 'first-letter', 'first-line', 'marker', 'placeholder', 'selection']\n };\n};\n\n/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nconst mergeConfigs = (baseConfig, {\n cacheSize,\n prefix,\n experimentalParseClassName,\n extend = {},\n override = {}\n}) => {\n overrideProperty(baseConfig, 'cacheSize', cacheSize);\n overrideProperty(baseConfig, 'prefix', prefix);\n overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName);\n overrideConfigProperties(baseConfig.theme, override.theme);\n overrideConfigProperties(baseConfig.classGroups, override.classGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroupModifiers, override.conflictingClassGroupModifiers);\n overrideProperty(baseConfig, 'postfixLookupClassGroups', override.postfixLookupClassGroups);\n overrideProperty(baseConfig, 'orderSensitiveModifiers', override.orderSensitiveModifiers);\n mergeConfigProperties(baseConfig.theme, extend.theme);\n mergeConfigProperties(baseConfig.classGroups, extend.classGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroupModifiers, extend.conflictingClassGroupModifiers);\n mergeArrayProperties(baseConfig, extend, 'postfixLookupClassGroups');\n mergeArrayProperties(baseConfig, extend, 'orderSensitiveModifiers');\n return baseConfig;\n};\nconst overrideProperty = (baseObject, overrideKey, overrideValue) => {\n if (overrideValue !== undefined) {\n baseObject[overrideKey] = overrideValue;\n }\n};\nconst overrideConfigProperties = (baseObject, overrideObject) => {\n if (overrideObject) {\n for (const key in overrideObject) {\n overrideProperty(baseObject, key, overrideObject[key]);\n }\n }\n};\nconst mergeConfigProperties = (baseObject, mergeObject) => {\n if (mergeObject) {\n for (const key in mergeObject) {\n mergeArrayProperties(baseObject, mergeObject, key);\n }\n }\n};\nconst mergeArrayProperties = (baseObject, mergeObject, key) => {\n const mergeValue = mergeObject[key];\n if (mergeValue !== undefined) {\n baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue;\n }\n};\nconst extendTailwindMerge = (configExtension, ...createConfig) => typeof configExtension === 'function' ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig) : createTailwindMerge(() => mergeConfigs(getDefaultConfig(), configExtension), ...createConfig);\nconst twMerge = /*#__PURE__*/createTailwindMerge(getDefaultConfig);\nexport { createTailwindMerge, extendTailwindMerge, fromTheme, getDefaultConfig, mergeConfigs, twJoin, twMerge, validators };\n//# sourceMappingURL=bundle-mjs.mjs.map\n","import { ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport const cn = (...inputs: ClassValue[]) => {\n return twMerge(clsx(inputs));\n};\n","/**\n * @license React\n * react.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nfunction getIteratorFn(maybeIterable) {\n if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n maybeIterable =\n (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n maybeIterable[\"@@iterator\"];\n return \"function\" === typeof maybeIterable ? maybeIterable : null;\n}\nvar ReactNoopUpdateQueue = {\n isMounted: function () {\n return !1;\n },\n enqueueForceUpdate: function () {},\n enqueueReplaceState: function () {},\n enqueueSetState: function () {}\n },\n assign = Object.assign,\n emptyObject = {};\nfunction Component(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n}\nComponent.prototype.isReactComponent = {};\nComponent.prototype.setState = function (partialState, callback) {\n if (\n \"object\" !== typeof partialState &&\n \"function\" !== typeof partialState &&\n null != partialState\n )\n throw Error(\n \"takes an object of state variables to update or a function which returns an object of state variables.\"\n );\n this.updater.enqueueSetState(this, partialState, callback, \"setState\");\n};\nComponent.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this, callback, \"forceUpdate\");\n};\nfunction ComponentDummy() {}\nComponentDummy.prototype = Component.prototype;\nfunction PureComponent(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n}\nvar pureComponentPrototype = (PureComponent.prototype = new ComponentDummy());\npureComponentPrototype.constructor = PureComponent;\nassign(pureComponentPrototype, Component.prototype);\npureComponentPrototype.isPureReactComponent = !0;\nvar isArrayImpl = Array.isArray;\nfunction noop() {}\nvar ReactSharedInternals = { H: null, A: null, T: null, S: null },\n hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction ReactElement(type, key, props) {\n var refProp = props.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== refProp ? refProp : null,\n props: props\n };\n}\nfunction cloneAndReplaceKey(oldElement, newKey) {\n return ReactElement(oldElement.type, newKey, oldElement.props);\n}\nfunction isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n}\nfunction escape(key) {\n var escaperLookup = { \"=\": \"=0\", \":\": \"=2\" };\n return (\n \"$\" +\n key.replace(/[=:]/g, function (match) {\n return escaperLookup[match];\n })\n );\n}\nvar userProvidedKeyEscapeRegex = /\\/+/g;\nfunction getElementKey(element, index) {\n return \"object\" === typeof element && null !== element && null != element.key\n ? escape(\"\" + element.key)\n : index.toString(36);\n}\nfunction resolveThenable(thenable) {\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n default:\n switch (\n (\"string\" === typeof thenable.status\n ? thenable.then(noop, noop)\n : ((thenable.status = \"pending\"),\n thenable.then(\n function (fulfilledValue) {\n \"pending\" === thenable.status &&\n ((thenable.status = \"fulfilled\"),\n (thenable.value = fulfilledValue));\n },\n function (error) {\n \"pending\" === thenable.status &&\n ((thenable.status = \"rejected\"), (thenable.reason = error));\n }\n )),\n thenable.status)\n ) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n }\n }\n throw thenable;\n}\nfunction mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n var type = typeof children;\n if (\"undefined\" === type || \"boolean\" === type) children = null;\n var invokeCallback = !1;\n if (null === children) invokeCallback = !0;\n else\n switch (type) {\n case \"bigint\":\n case \"string\":\n case \"number\":\n invokeCallback = !0;\n break;\n case \"object\":\n switch (children.$$typeof) {\n case REACT_ELEMENT_TYPE:\n case REACT_PORTAL_TYPE:\n invokeCallback = !0;\n break;\n case REACT_LAZY_TYPE:\n return (\n (invokeCallback = children._init),\n mapIntoArray(\n invokeCallback(children._payload),\n array,\n escapedPrefix,\n nameSoFar,\n callback\n )\n );\n }\n }\n if (invokeCallback)\n return (\n (callback = callback(children)),\n (invokeCallback =\n \"\" === nameSoFar ? \".\" + getElementKey(children, 0) : nameSoFar),\n isArrayImpl(callback)\n ? ((escapedPrefix = \"\"),\n null != invokeCallback &&\n (escapedPrefix =\n invokeCallback.replace(userProvidedKeyEscapeRegex, \"$&/\") + \"/\"),\n mapIntoArray(callback, array, escapedPrefix, \"\", function (c) {\n return c;\n }))\n : null != callback &&\n (isValidElement(callback) &&\n (callback = cloneAndReplaceKey(\n callback,\n escapedPrefix +\n (null == callback.key ||\n (children && children.key === callback.key)\n ? \"\"\n : (\"\" + callback.key).replace(\n userProvidedKeyEscapeRegex,\n \"$&/\"\n ) + \"/\") +\n invokeCallback\n )),\n array.push(callback)),\n 1\n );\n invokeCallback = 0;\n var nextNamePrefix = \"\" === nameSoFar ? \".\" : nameSoFar + \":\";\n if (isArrayImpl(children))\n for (var i = 0; i < children.length; i++)\n (nameSoFar = children[i]),\n (type = nextNamePrefix + getElementKey(nameSoFar, i)),\n (invokeCallback += mapIntoArray(\n nameSoFar,\n array,\n escapedPrefix,\n type,\n callback\n ));\n else if (((i = getIteratorFn(children)), \"function\" === typeof i))\n for (\n children = i.call(children), i = 0;\n !(nameSoFar = children.next()).done;\n\n )\n (nameSoFar = nameSoFar.value),\n (type = nextNamePrefix + getElementKey(nameSoFar, i++)),\n (invokeCallback += mapIntoArray(\n nameSoFar,\n array,\n escapedPrefix,\n type,\n callback\n ));\n else if (\"object\" === type) {\n if (\"function\" === typeof children.then)\n return mapIntoArray(\n resolveThenable(children),\n array,\n escapedPrefix,\n nameSoFar,\n callback\n );\n array = String(children);\n throw Error(\n \"Objects are not valid as a React child (found: \" +\n (\"[object Object]\" === array\n ? \"object with keys {\" + Object.keys(children).join(\", \") + \"}\"\n : array) +\n \"). If you meant to render a collection of children, use an array instead.\"\n );\n }\n return invokeCallback;\n}\nfunction mapChildren(children, func, context) {\n if (null == children) return children;\n var result = [],\n count = 0;\n mapIntoArray(children, result, \"\", \"\", function (child) {\n return func.call(context, child, count++);\n });\n return result;\n}\nfunction lazyInitializer(payload) {\n if (-1 === payload._status) {\n var ctor = payload._result;\n ctor = ctor();\n ctor.then(\n function (moduleObject) {\n if (0 === payload._status || -1 === payload._status)\n (payload._status = 1), (payload._result = moduleObject);\n },\n function (error) {\n if (0 === payload._status || -1 === payload._status)\n (payload._status = 2), (payload._result = error);\n }\n );\n -1 === payload._status && ((payload._status = 0), (payload._result = ctor));\n }\n if (1 === payload._status) return payload._result.default;\n throw payload._result;\n}\nvar reportGlobalError =\n \"function\" === typeof reportError\n ? reportError\n : function (error) {\n if (\n \"object\" === typeof window &&\n \"function\" === typeof window.ErrorEvent\n ) {\n var event = new window.ErrorEvent(\"error\", {\n bubbles: !0,\n cancelable: !0,\n message:\n \"object\" === typeof error &&\n null !== error &&\n \"string\" === typeof error.message\n ? String(error.message)\n : String(error),\n error: error\n });\n if (!window.dispatchEvent(event)) return;\n } else if (\n \"object\" === typeof process &&\n \"function\" === typeof process.emit\n ) {\n process.emit(\"uncaughtException\", error);\n return;\n }\n console.error(error);\n },\n Children = {\n map: mapChildren,\n forEach: function (children, forEachFunc, forEachContext) {\n mapChildren(\n children,\n function () {\n forEachFunc.apply(this, arguments);\n },\n forEachContext\n );\n },\n count: function (children) {\n var n = 0;\n mapChildren(children, function () {\n n++;\n });\n return n;\n },\n toArray: function (children) {\n return (\n mapChildren(children, function (child) {\n return child;\n }) || []\n );\n },\n only: function (children) {\n if (!isValidElement(children))\n throw Error(\n \"React.Children.only expected to receive a single React element child.\"\n );\n return children;\n }\n };\nexports.Activity = REACT_ACTIVITY_TYPE;\nexports.Children = Children;\nexports.Component = Component;\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.Profiler = REACT_PROFILER_TYPE;\nexports.PureComponent = PureComponent;\nexports.StrictMode = REACT_STRICT_MODE_TYPE;\nexports.Suspense = REACT_SUSPENSE_TYPE;\nexports.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n ReactSharedInternals;\nexports.__COMPILER_RUNTIME = {\n __proto__: null,\n c: function (size) {\n return ReactSharedInternals.H.useMemoCache(size);\n }\n};\nexports.cache = function (fn) {\n return function () {\n return fn.apply(null, arguments);\n };\n};\nexports.cacheSignal = function () {\n return null;\n};\nexports.cloneElement = function (element, config, children) {\n if (null === element || void 0 === element)\n throw Error(\n \"The argument must be a React element, but you passed \" + element + \".\"\n );\n var props = assign({}, element.props),\n key = element.key;\n if (null != config)\n for (propName in (void 0 !== config.key && (key = \"\" + config.key), config))\n !hasOwnProperty.call(config, propName) ||\n \"key\" === propName ||\n \"__self\" === propName ||\n \"__source\" === propName ||\n (\"ref\" === propName && void 0 === config.ref) ||\n (props[propName] = config[propName]);\n var propName = arguments.length - 2;\n if (1 === propName) props.children = children;\n else if (1 < propName) {\n for (var childArray = Array(propName), i = 0; i < propName; i++)\n childArray[i] = arguments[i + 2];\n props.children = childArray;\n }\n return ReactElement(element.type, key, props);\n};\nexports.createContext = function (defaultValue) {\n defaultValue = {\n $$typeof: REACT_CONTEXT_TYPE,\n _currentValue: defaultValue,\n _currentValue2: defaultValue,\n _threadCount: 0,\n Provider: null,\n Consumer: null\n };\n defaultValue.Provider = defaultValue;\n defaultValue.Consumer = {\n $$typeof: REACT_CONSUMER_TYPE,\n _context: defaultValue\n };\n return defaultValue;\n};\nexports.createElement = function (type, config, children) {\n var propName,\n props = {},\n key = null;\n if (null != config)\n for (propName in (void 0 !== config.key && (key = \"\" + config.key), config))\n hasOwnProperty.call(config, propName) &&\n \"key\" !== propName &&\n \"__self\" !== propName &&\n \"__source\" !== propName &&\n (props[propName] = config[propName]);\n var childrenLength = arguments.length - 2;\n if (1 === childrenLength) props.children = children;\n else if (1 < childrenLength) {\n for (var childArray = Array(childrenLength), i = 0; i < childrenLength; i++)\n childArray[i] = arguments[i + 2];\n props.children = childArray;\n }\n if (type && type.defaultProps)\n for (propName in ((childrenLength = type.defaultProps), childrenLength))\n void 0 === props[propName] &&\n (props[propName] = childrenLength[propName]);\n return ReactElement(type, key, props);\n};\nexports.createRef = function () {\n return { current: null };\n};\nexports.forwardRef = function (render) {\n return { $$typeof: REACT_FORWARD_REF_TYPE, render: render };\n};\nexports.isValidElement = isValidElement;\nexports.lazy = function (ctor) {\n return {\n $$typeof: REACT_LAZY_TYPE,\n _payload: { _status: -1, _result: ctor },\n _init: lazyInitializer\n };\n};\nexports.memo = function (type, compare) {\n return {\n $$typeof: REACT_MEMO_TYPE,\n type: type,\n compare: void 0 === compare ? null : compare\n };\n};\nexports.startTransition = function (scope) {\n var prevTransition = ReactSharedInternals.T,\n currentTransition = {};\n ReactSharedInternals.T = currentTransition;\n try {\n var returnValue = scope(),\n onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish &&\n onStartTransitionFinish(currentTransition, returnValue);\n \"object\" === typeof returnValue &&\n null !== returnValue &&\n \"function\" === typeof returnValue.then &&\n returnValue.then(noop, reportGlobalError);\n } catch (error) {\n reportGlobalError(error);\n } finally {\n null !== prevTransition &&\n null !== currentTransition.types &&\n (prevTransition.types = currentTransition.types),\n (ReactSharedInternals.T = prevTransition);\n }\n};\nexports.unstable_useCacheRefresh = function () {\n return ReactSharedInternals.H.useCacheRefresh();\n};\nexports.use = function (usable) {\n return ReactSharedInternals.H.use(usable);\n};\nexports.useActionState = function (action, initialState, permalink) {\n return ReactSharedInternals.H.useActionState(action, initialState, permalink);\n};\nexports.useCallback = function (callback, deps) {\n return ReactSharedInternals.H.useCallback(callback, deps);\n};\nexports.useContext = function (Context) {\n return ReactSharedInternals.H.useContext(Context);\n};\nexports.useDebugValue = function () {};\nexports.useDeferredValue = function (value, initialValue) {\n return ReactSharedInternals.H.useDeferredValue(value, initialValue);\n};\nexports.useEffect = function (create, deps) {\n return ReactSharedInternals.H.useEffect(create, deps);\n};\nexports.useEffectEvent = function (callback) {\n return ReactSharedInternals.H.useEffectEvent(callback);\n};\nexports.useId = function () {\n return ReactSharedInternals.H.useId();\n};\nexports.useImperativeHandle = function (ref, create, deps) {\n return ReactSharedInternals.H.useImperativeHandle(ref, create, deps);\n};\nexports.useInsertionEffect = function (create, deps) {\n return ReactSharedInternals.H.useInsertionEffect(create, deps);\n};\nexports.useLayoutEffect = function (create, deps) {\n return ReactSharedInternals.H.useLayoutEffect(create, deps);\n};\nexports.useMemo = function (create, deps) {\n return ReactSharedInternals.H.useMemo(create, deps);\n};\nexports.useOptimistic = function (passthrough, reducer) {\n return ReactSharedInternals.H.useOptimistic(passthrough, reducer);\n};\nexports.useReducer = function (reducer, initialArg, init) {\n return ReactSharedInternals.H.useReducer(reducer, initialArg, init);\n};\nexports.useRef = function (initialValue) {\n return ReactSharedInternals.H.useRef(initialValue);\n};\nexports.useState = function (initialState) {\n return ReactSharedInternals.H.useState(initialState);\n};\nexports.useSyncExternalStore = function (\n subscribe,\n getSnapshot,\n getServerSnapshot\n) {\n return ReactSharedInternals.H.useSyncExternalStore(\n subscribe,\n getSnapshot,\n getServerSnapshot\n );\n};\nexports.useTransition = function () {\n return ReactSharedInternals.H.useTransition();\n};\nexports.version = \"19.2.7\";\n","/**\n * @license React\n * react.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function defineDeprecationWarning(methodName, info) {\n Object.defineProperty(Component.prototype, methodName, {\n get: function () {\n console.warn(\n \"%s(...) is deprecated in plain JavaScript React classes. %s\",\n info[0],\n info[1]\n );\n }\n });\n }\n function getIteratorFn(maybeIterable) {\n if (null === maybeIterable || \"object\" !== typeof maybeIterable)\n return null;\n maybeIterable =\n (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n maybeIterable[\"@@iterator\"];\n return \"function\" === typeof maybeIterable ? maybeIterable : null;\n }\n function warnNoop(publicInstance, callerName) {\n publicInstance =\n ((publicInstance = publicInstance.constructor) &&\n (publicInstance.displayName || publicInstance.name)) ||\n \"ReactClass\";\n var warningKey = publicInstance + \".\" + callerName;\n didWarnStateUpdateForUnmountedComponent[warningKey] ||\n (console.error(\n \"Can't call %s on a component that is not yet mounted. This is a no-op, but it might indicate a bug in your application. Instead, assign to `this.state` directly or define a `state = {};` class property with the desired state in the %s component.\",\n callerName,\n publicInstance\n ),\n (didWarnStateUpdateForUnmountedComponent[warningKey] = !0));\n }\n function Component(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n }\n function ComponentDummy() {}\n function PureComponent(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n }\n function noop() {}\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkKeyStringCoercion(value) {\n try {\n testStringCoercion(value);\n var JSCompiler_inline_result = !1;\n } catch (e) {\n JSCompiler_inline_result = !0;\n }\n if (JSCompiler_inline_result) {\n JSCompiler_inline_result = console;\n var JSCompiler_temp_const = JSCompiler_inline_result.error;\n var JSCompiler_inline_result$jscomp$0 =\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n value[Symbol.toStringTag]) ||\n value.constructor.name ||\n \"Object\";\n JSCompiler_temp_const.call(\n JSCompiler_inline_result,\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n JSCompiler_inline_result$jscomp$0\n );\n return testStringCoercion(value);\n }\n }\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (\n (\"number\" === typeof type.tag &&\n console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ),\n type.$$typeof)\n ) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return type.displayName || \"Context\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function getTaskName(type) {\n if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n if (\n \"object\" === typeof type &&\n null !== type &&\n type.$$typeof === REACT_LAZY_TYPE\n )\n return \"<...>\";\n try {\n var name = getComponentNameFromType(type);\n return name ? \"<\" + name + \">\" : \"<...>\";\n } catch (x) {\n return \"<...>\";\n }\n }\n function getOwner() {\n var dispatcher = ReactSharedInternals.A;\n return null === dispatcher ? null : dispatcher.getOwner();\n }\n function UnknownOwner() {\n return Error(\"react-stack-top-frame\");\n }\n function hasValidKey(config) {\n if (hasOwnProperty.call(config, \"key\")) {\n var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n if (getter && getter.isReactWarning) return !1;\n }\n return void 0 !== config.key;\n }\n function defineKeyPropWarningGetter(props, displayName) {\n function warnAboutAccessingKey() {\n specialPropKeyWarningShown ||\n ((specialPropKeyWarningShown = !0),\n console.error(\n \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n displayName\n ));\n }\n warnAboutAccessingKey.isReactWarning = !0;\n Object.defineProperty(props, \"key\", {\n get: warnAboutAccessingKey,\n configurable: !0\n });\n }\n function elementRefGetterWithDeprecationWarning() {\n var componentName = getComponentNameFromType(this.type);\n didWarnAboutElementRef[componentName] ||\n ((didWarnAboutElementRef[componentName] = !0),\n console.error(\n \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n ));\n componentName = this.props.ref;\n return void 0 !== componentName ? componentName : null;\n }\n function ReactElement(type, key, props, owner, debugStack, debugTask) {\n var refProp = props.ref;\n type = {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n props: props,\n _owner: owner\n };\n null !== (void 0 !== refProp ? refProp : null)\n ? Object.defineProperty(type, \"ref\", {\n enumerable: !1,\n get: elementRefGetterWithDeprecationWarning\n })\n : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n type._store = {};\n Object.defineProperty(type._store, \"validated\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: 0\n });\n Object.defineProperty(type, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n });\n Object.defineProperty(type, \"_debugStack\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugStack\n });\n Object.defineProperty(type, \"_debugTask\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugTask\n });\n Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n return type;\n }\n function cloneAndReplaceKey(oldElement, newKey) {\n newKey = ReactElement(\n oldElement.type,\n newKey,\n oldElement.props,\n oldElement._owner,\n oldElement._debugStack,\n oldElement._debugTask\n );\n oldElement._store &&\n (newKey._store.validated = oldElement._store.validated);\n return newKey;\n }\n function validateChildKeys(node) {\n isValidElement(node)\n ? node._store && (node._store.validated = 1)\n : \"object\" === typeof node &&\n null !== node &&\n node.$$typeof === REACT_LAZY_TYPE &&\n (\"fulfilled\" === node._payload.status\n ? isValidElement(node._payload.value) &&\n node._payload.value._store &&\n (node._payload.value._store.validated = 1)\n : node._store && (node._store.validated = 1));\n }\n function isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n }\n function escape(key) {\n var escaperLookup = { \"=\": \"=0\", \":\": \"=2\" };\n return (\n \"$\" +\n key.replace(/[=:]/g, function (match) {\n return escaperLookup[match];\n })\n );\n }\n function getElementKey(element, index) {\n return \"object\" === typeof element &&\n null !== element &&\n null != element.key\n ? (checkKeyStringCoercion(element.key), escape(\"\" + element.key))\n : index.toString(36);\n }\n function resolveThenable(thenable) {\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n default:\n switch (\n (\"string\" === typeof thenable.status\n ? thenable.then(noop, noop)\n : ((thenable.status = \"pending\"),\n thenable.then(\n function (fulfilledValue) {\n \"pending\" === thenable.status &&\n ((thenable.status = \"fulfilled\"),\n (thenable.value = fulfilledValue));\n },\n function (error) {\n \"pending\" === thenable.status &&\n ((thenable.status = \"rejected\"),\n (thenable.reason = error));\n }\n )),\n thenable.status)\n ) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n }\n }\n throw thenable;\n }\n function mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n var type = typeof children;\n if (\"undefined\" === type || \"boolean\" === type) children = null;\n var invokeCallback = !1;\n if (null === children) invokeCallback = !0;\n else\n switch (type) {\n case \"bigint\":\n case \"string\":\n case \"number\":\n invokeCallback = !0;\n break;\n case \"object\":\n switch (children.$$typeof) {\n case REACT_ELEMENT_TYPE:\n case REACT_PORTAL_TYPE:\n invokeCallback = !0;\n break;\n case REACT_LAZY_TYPE:\n return (\n (invokeCallback = children._init),\n mapIntoArray(\n invokeCallback(children._payload),\n array,\n escapedPrefix,\n nameSoFar,\n callback\n )\n );\n }\n }\n if (invokeCallback) {\n invokeCallback = children;\n callback = callback(invokeCallback);\n var childKey =\n \"\" === nameSoFar ? \".\" + getElementKey(invokeCallback, 0) : nameSoFar;\n isArrayImpl(callback)\n ? ((escapedPrefix = \"\"),\n null != childKey &&\n (escapedPrefix =\n childKey.replace(userProvidedKeyEscapeRegex, \"$&/\") + \"/\"),\n mapIntoArray(callback, array, escapedPrefix, \"\", function (c) {\n return c;\n }))\n : null != callback &&\n (isValidElement(callback) &&\n (null != callback.key &&\n ((invokeCallback && invokeCallback.key === callback.key) ||\n checkKeyStringCoercion(callback.key)),\n (escapedPrefix = cloneAndReplaceKey(\n callback,\n escapedPrefix +\n (null == callback.key ||\n (invokeCallback && invokeCallback.key === callback.key)\n ? \"\"\n : (\"\" + callback.key).replace(\n userProvidedKeyEscapeRegex,\n \"$&/\"\n ) + \"/\") +\n childKey\n )),\n \"\" !== nameSoFar &&\n null != invokeCallback &&\n isValidElement(invokeCallback) &&\n null == invokeCallback.key &&\n invokeCallback._store &&\n !invokeCallback._store.validated &&\n (escapedPrefix._store.validated = 2),\n (callback = escapedPrefix)),\n array.push(callback));\n return 1;\n }\n invokeCallback = 0;\n childKey = \"\" === nameSoFar ? \".\" : nameSoFar + \":\";\n if (isArrayImpl(children))\n for (var i = 0; i < children.length; i++)\n (nameSoFar = children[i]),\n (type = childKey + getElementKey(nameSoFar, i)),\n (invokeCallback += mapIntoArray(\n nameSoFar,\n array,\n escapedPrefix,\n type,\n callback\n ));\n else if (((i = getIteratorFn(children)), \"function\" === typeof i))\n for (\n i === children.entries &&\n (didWarnAboutMaps ||\n console.warn(\n \"Using Maps as children is not supported. Use an array of keyed ReactElements instead.\"\n ),\n (didWarnAboutMaps = !0)),\n children = i.call(children),\n i = 0;\n !(nameSoFar = children.next()).done;\n\n )\n (nameSoFar = nameSoFar.value),\n (type = childKey + getElementKey(nameSoFar, i++)),\n (invokeCallback += mapIntoArray(\n nameSoFar,\n array,\n escapedPrefix,\n type,\n callback\n ));\n else if (\"object\" === type) {\n if (\"function\" === typeof children.then)\n return mapIntoArray(\n resolveThenable(children),\n array,\n escapedPrefix,\n nameSoFar,\n callback\n );\n array = String(children);\n throw Error(\n \"Objects are not valid as a React child (found: \" +\n (\"[object Object]\" === array\n ? \"object with keys {\" + Object.keys(children).join(\", \") + \"}\"\n : array) +\n \"). If you meant to render a collection of children, use an array instead.\"\n );\n }\n return invokeCallback;\n }\n function mapChildren(children, func, context) {\n if (null == children) return children;\n var result = [],\n count = 0;\n mapIntoArray(children, result, \"\", \"\", function (child) {\n return func.call(context, child, count++);\n });\n return result;\n }\n function lazyInitializer(payload) {\n if (-1 === payload._status) {\n var ioInfo = payload._ioInfo;\n null != ioInfo && (ioInfo.start = ioInfo.end = performance.now());\n ioInfo = payload._result;\n var thenable = ioInfo();\n thenable.then(\n function (moduleObject) {\n if (0 === payload._status || -1 === payload._status) {\n payload._status = 1;\n payload._result = moduleObject;\n var _ioInfo = payload._ioInfo;\n null != _ioInfo && (_ioInfo.end = performance.now());\n void 0 === thenable.status &&\n ((thenable.status = \"fulfilled\"),\n (thenable.value = moduleObject));\n }\n },\n function (error) {\n if (0 === payload._status || -1 === payload._status) {\n payload._status = 2;\n payload._result = error;\n var _ioInfo2 = payload._ioInfo;\n null != _ioInfo2 && (_ioInfo2.end = performance.now());\n void 0 === thenable.status &&\n ((thenable.status = \"rejected\"), (thenable.reason = error));\n }\n }\n );\n ioInfo = payload._ioInfo;\n if (null != ioInfo) {\n ioInfo.value = thenable;\n var displayName = thenable.displayName;\n \"string\" === typeof displayName && (ioInfo.name = displayName);\n }\n -1 === payload._status &&\n ((payload._status = 0), (payload._result = thenable));\n }\n if (1 === payload._status)\n return (\n (ioInfo = payload._result),\n void 0 === ioInfo &&\n console.error(\n \"lazy: Expected the result of a dynamic import() call. Instead received: %s\\n\\nYour code should look like: \\n const MyComponent = lazy(() => import('./MyComponent'))\\n\\nDid you accidentally put curly braces around the import?\",\n ioInfo\n ),\n \"default\" in ioInfo ||\n console.error(\n \"lazy: Expected the result of a dynamic import() call. Instead received: %s\\n\\nYour code should look like: \\n const MyComponent = lazy(() => import('./MyComponent'))\",\n ioInfo\n ),\n ioInfo.default\n );\n throw payload._result;\n }\n function resolveDispatcher() {\n var dispatcher = ReactSharedInternals.H;\n null === dispatcher &&\n console.error(\n \"Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\\n1. You might have mismatching versions of React and the renderer (such as React DOM)\\n2. You might be breaking the Rules of Hooks\\n3. You might have more than one copy of React in the same app\\nSee https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.\"\n );\n return dispatcher;\n }\n function releaseAsyncTransition() {\n ReactSharedInternals.asyncTransitions--;\n }\n function enqueueTask(task) {\n if (null === enqueueTaskImpl)\n try {\n var requireString = (\"require\" + Math.random()).slice(0, 7);\n enqueueTaskImpl = (module && module[requireString]).call(\n module,\n \"timers\"\n ).setImmediate;\n } catch (_err) {\n enqueueTaskImpl = function (callback) {\n !1 === didWarnAboutMessageChannel &&\n ((didWarnAboutMessageChannel = !0),\n \"undefined\" === typeof MessageChannel &&\n console.error(\n \"This browser does not have a MessageChannel implementation, so enqueuing tasks via await act(async () => ...) will fail. Please file an issue at https://github.com/facebook/react/issues if you encounter this warning.\"\n ));\n var channel = new MessageChannel();\n channel.port1.onmessage = callback;\n channel.port2.postMessage(void 0);\n };\n }\n return enqueueTaskImpl(task);\n }\n function aggregateErrors(errors) {\n return 1 < errors.length && \"function\" === typeof AggregateError\n ? new AggregateError(errors)\n : errors[0];\n }\n function popActScope(prevActQueue, prevActScopeDepth) {\n prevActScopeDepth !== actScopeDepth - 1 &&\n console.error(\n \"You seem to have overlapping act() calls, this is not supported. Be sure to await previous act() calls before making a new one. \"\n );\n actScopeDepth = prevActScopeDepth;\n }\n function recursivelyFlushAsyncActWork(returnValue, resolve, reject) {\n var queue = ReactSharedInternals.actQueue;\n if (null !== queue)\n if (0 !== queue.length)\n try {\n flushActQueue(queue);\n enqueueTask(function () {\n return recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n });\n return;\n } catch (error) {\n ReactSharedInternals.thrownErrors.push(error);\n }\n else ReactSharedInternals.actQueue = null;\n 0 < ReactSharedInternals.thrownErrors.length\n ? ((queue = aggregateErrors(ReactSharedInternals.thrownErrors)),\n (ReactSharedInternals.thrownErrors.length = 0),\n reject(queue))\n : resolve(returnValue);\n }\n function flushActQueue(queue) {\n if (!isFlushing) {\n isFlushing = !0;\n var i = 0;\n try {\n for (; i < queue.length; i++) {\n var callback = queue[i];\n do {\n ReactSharedInternals.didUsePromise = !1;\n var continuation = callback(!1);\n if (null !== continuation) {\n if (ReactSharedInternals.didUsePromise) {\n queue[i] = callback;\n queue.splice(0, i);\n return;\n }\n callback = continuation;\n } else break;\n } while (1);\n }\n queue.length = 0;\n } catch (error) {\n queue.splice(0, i + 1), ReactSharedInternals.thrownErrors.push(error);\n } finally {\n isFlushing = !1;\n }\n }\n }\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());\n var REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n MAYBE_ITERATOR_SYMBOL = Symbol.iterator,\n didWarnStateUpdateForUnmountedComponent = {},\n ReactNoopUpdateQueue = {\n isMounted: function () {\n return !1;\n },\n enqueueForceUpdate: function (publicInstance) {\n warnNoop(publicInstance, \"forceUpdate\");\n },\n enqueueReplaceState: function (publicInstance) {\n warnNoop(publicInstance, \"replaceState\");\n },\n enqueueSetState: function (publicInstance) {\n warnNoop(publicInstance, \"setState\");\n }\n },\n assign = Object.assign,\n emptyObject = {};\n Object.freeze(emptyObject);\n Component.prototype.isReactComponent = {};\n Component.prototype.setState = function (partialState, callback) {\n if (\n \"object\" !== typeof partialState &&\n \"function\" !== typeof partialState &&\n null != partialState\n )\n throw Error(\n \"takes an object of state variables to update or a function which returns an object of state variables.\"\n );\n this.updater.enqueueSetState(this, partialState, callback, \"setState\");\n };\n Component.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this, callback, \"forceUpdate\");\n };\n var deprecatedAPIs = {\n isMounted: [\n \"isMounted\",\n \"Instead, make sure to clean up subscriptions and pending requests in componentWillUnmount to prevent memory leaks.\"\n ],\n replaceState: [\n \"replaceState\",\n \"Refactor your code to use setState instead (see https://github.com/facebook/react/issues/3236).\"\n ]\n };\n for (fnName in deprecatedAPIs)\n deprecatedAPIs.hasOwnProperty(fnName) &&\n defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n ComponentDummy.prototype = Component.prototype;\n deprecatedAPIs = PureComponent.prototype = new ComponentDummy();\n deprecatedAPIs.constructor = PureComponent;\n assign(deprecatedAPIs, Component.prototype);\n deprecatedAPIs.isPureReactComponent = !0;\n var isArrayImpl = Array.isArray,\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n ReactSharedInternals = {\n H: null,\n A: null,\n T: null,\n S: null,\n actQueue: null,\n asyncTransitions: 0,\n isBatchingLegacy: !1,\n didScheduleLegacyUpdate: !1,\n didUsePromise: !1,\n thrownErrors: [],\n getCurrentStack: null,\n recentlyCreatedOwnerStacks: 0\n },\n hasOwnProperty = Object.prototype.hasOwnProperty,\n createTask = console.createTask\n ? console.createTask\n : function () {\n return null;\n };\n deprecatedAPIs = {\n react_stack_bottom_frame: function (callStackForError) {\n return callStackForError();\n }\n };\n var specialPropKeyWarningShown, didWarnAboutOldJSXRuntime;\n var didWarnAboutElementRef = {};\n var unknownOwnerDebugStack = deprecatedAPIs.react_stack_bottom_frame.bind(\n deprecatedAPIs,\n UnknownOwner\n )();\n var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));\n var didWarnAboutMaps = !1,\n userProvidedKeyEscapeRegex = /\\/+/g,\n reportGlobalError =\n \"function\" === typeof reportError\n ? reportError\n : function (error) {\n if (\n \"object\" === typeof window &&\n \"function\" === typeof window.ErrorEvent\n ) {\n var event = new window.ErrorEvent(\"error\", {\n bubbles: !0,\n cancelable: !0,\n message:\n \"object\" === typeof error &&\n null !== error &&\n \"string\" === typeof error.message\n ? String(error.message)\n : String(error),\n error: error\n });\n if (!window.dispatchEvent(event)) return;\n } else if (\n \"object\" === typeof process &&\n \"function\" === typeof process.emit\n ) {\n process.emit(\"uncaughtException\", error);\n return;\n }\n console.error(error);\n },\n didWarnAboutMessageChannel = !1,\n enqueueTaskImpl = null,\n actScopeDepth = 0,\n didWarnNoAwaitAct = !1,\n isFlushing = !1,\n queueSeveralMicrotasks =\n \"function\" === typeof queueMicrotask\n ? function (callback) {\n queueMicrotask(function () {\n return queueMicrotask(callback);\n });\n }\n : enqueueTask;\n deprecatedAPIs = Object.freeze({\n __proto__: null,\n c: function (size) {\n return resolveDispatcher().useMemoCache(size);\n }\n });\n var fnName = {\n map: mapChildren,\n forEach: function (children, forEachFunc, forEachContext) {\n mapChildren(\n children,\n function () {\n forEachFunc.apply(this, arguments);\n },\n forEachContext\n );\n },\n count: function (children) {\n var n = 0;\n mapChildren(children, function () {\n n++;\n });\n return n;\n },\n toArray: function (children) {\n return (\n mapChildren(children, function (child) {\n return child;\n }) || []\n );\n },\n only: function (children) {\n if (!isValidElement(children))\n throw Error(\n \"React.Children.only expected to receive a single React element child.\"\n );\n return children;\n }\n };\n exports.Activity = REACT_ACTIVITY_TYPE;\n exports.Children = fnName;\n exports.Component = Component;\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.Profiler = REACT_PROFILER_TYPE;\n exports.PureComponent = PureComponent;\n exports.StrictMode = REACT_STRICT_MODE_TYPE;\n exports.Suspense = REACT_SUSPENSE_TYPE;\n exports.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n ReactSharedInternals;\n exports.__COMPILER_RUNTIME = deprecatedAPIs;\n exports.act = function (callback) {\n var prevActQueue = ReactSharedInternals.actQueue,\n prevActScopeDepth = actScopeDepth;\n actScopeDepth++;\n var queue = (ReactSharedInternals.actQueue =\n null !== prevActQueue ? prevActQueue : []),\n didAwaitActCall = !1;\n try {\n var result = callback();\n } catch (error) {\n ReactSharedInternals.thrownErrors.push(error);\n }\n if (0 < ReactSharedInternals.thrownErrors.length)\n throw (\n (popActScope(prevActQueue, prevActScopeDepth),\n (callback = aggregateErrors(ReactSharedInternals.thrownErrors)),\n (ReactSharedInternals.thrownErrors.length = 0),\n callback)\n );\n if (\n null !== result &&\n \"object\" === typeof result &&\n \"function\" === typeof result.then\n ) {\n var thenable = result;\n queueSeveralMicrotasks(function () {\n didAwaitActCall ||\n didWarnNoAwaitAct ||\n ((didWarnNoAwaitAct = !0),\n console.error(\n \"You called act(async () => ...) without await. This could lead to unexpected testing behaviour, interleaving multiple act calls and mixing their scopes. You should - await act(async () => ...);\"\n ));\n });\n return {\n then: function (resolve, reject) {\n didAwaitActCall = !0;\n thenable.then(\n function (returnValue) {\n popActScope(prevActQueue, prevActScopeDepth);\n if (0 === prevActScopeDepth) {\n try {\n flushActQueue(queue),\n enqueueTask(function () {\n return recursivelyFlushAsyncActWork(\n returnValue,\n resolve,\n reject\n );\n });\n } catch (error$0) {\n ReactSharedInternals.thrownErrors.push(error$0);\n }\n if (0 < ReactSharedInternals.thrownErrors.length) {\n var _thrownError = aggregateErrors(\n ReactSharedInternals.thrownErrors\n );\n ReactSharedInternals.thrownErrors.length = 0;\n reject(_thrownError);\n }\n } else resolve(returnValue);\n },\n function (error) {\n popActScope(prevActQueue, prevActScopeDepth);\n 0 < ReactSharedInternals.thrownErrors.length\n ? ((error = aggregateErrors(\n ReactSharedInternals.thrownErrors\n )),\n (ReactSharedInternals.thrownErrors.length = 0),\n reject(error))\n : reject(error);\n }\n );\n }\n };\n }\n var returnValue$jscomp$0 = result;\n popActScope(prevActQueue, prevActScopeDepth);\n 0 === prevActScopeDepth &&\n (flushActQueue(queue),\n 0 !== queue.length &&\n queueSeveralMicrotasks(function () {\n didAwaitActCall ||\n didWarnNoAwaitAct ||\n ((didWarnNoAwaitAct = !0),\n console.error(\n \"A component suspended inside an `act` scope, but the `act` call was not awaited. When testing React components that depend on asynchronous data, you must await the result:\\n\\nawait act(() => ...)\"\n ));\n }),\n (ReactSharedInternals.actQueue = null));\n if (0 < ReactSharedInternals.thrownErrors.length)\n throw (\n ((callback = aggregateErrors(ReactSharedInternals.thrownErrors)),\n (ReactSharedInternals.thrownErrors.length = 0),\n callback)\n );\n return {\n then: function (resolve, reject) {\n didAwaitActCall = !0;\n 0 === prevActScopeDepth\n ? ((ReactSharedInternals.actQueue = queue),\n enqueueTask(function () {\n return recursivelyFlushAsyncActWork(\n returnValue$jscomp$0,\n resolve,\n reject\n );\n }))\n : resolve(returnValue$jscomp$0);\n }\n };\n };\n exports.cache = function (fn) {\n return function () {\n return fn.apply(null, arguments);\n };\n };\n exports.cacheSignal = function () {\n return null;\n };\n exports.captureOwnerStack = function () {\n var getCurrentStack = ReactSharedInternals.getCurrentStack;\n return null === getCurrentStack ? null : getCurrentStack();\n };\n exports.cloneElement = function (element, config, children) {\n if (null === element || void 0 === element)\n throw Error(\n \"The argument must be a React element, but you passed \" +\n element +\n \".\"\n );\n var props = assign({}, element.props),\n key = element.key,\n owner = element._owner;\n if (null != config) {\n var JSCompiler_inline_result;\n a: {\n if (\n hasOwnProperty.call(config, \"ref\") &&\n (JSCompiler_inline_result = Object.getOwnPropertyDescriptor(\n config,\n \"ref\"\n ).get) &&\n JSCompiler_inline_result.isReactWarning\n ) {\n JSCompiler_inline_result = !1;\n break a;\n }\n JSCompiler_inline_result = void 0 !== config.ref;\n }\n JSCompiler_inline_result && (owner = getOwner());\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (key = \"\" + config.key));\n for (propName in config)\n !hasOwnProperty.call(config, propName) ||\n \"key\" === propName ||\n \"__self\" === propName ||\n \"__source\" === propName ||\n (\"ref\" === propName && void 0 === config.ref) ||\n (props[propName] = config[propName]);\n }\n var propName = arguments.length - 2;\n if (1 === propName) props.children = children;\n else if (1 < propName) {\n JSCompiler_inline_result = Array(propName);\n for (var i = 0; i < propName; i++)\n JSCompiler_inline_result[i] = arguments[i + 2];\n props.children = JSCompiler_inline_result;\n }\n props = ReactElement(\n element.type,\n key,\n props,\n owner,\n element._debugStack,\n element._debugTask\n );\n for (key = 2; key < arguments.length; key++)\n validateChildKeys(arguments[key]);\n return props;\n };\n exports.createContext = function (defaultValue) {\n defaultValue = {\n $$typeof: REACT_CONTEXT_TYPE,\n _currentValue: defaultValue,\n _currentValue2: defaultValue,\n _threadCount: 0,\n Provider: null,\n Consumer: null\n };\n defaultValue.Provider = defaultValue;\n defaultValue.Consumer = {\n $$typeof: REACT_CONSUMER_TYPE,\n _context: defaultValue\n };\n defaultValue._currentRenderer = null;\n defaultValue._currentRenderer2 = null;\n return defaultValue;\n };\n exports.createElement = function (type, config, children) {\n for (var i = 2; i < arguments.length; i++)\n validateChildKeys(arguments[i]);\n i = {};\n var key = null;\n if (null != config)\n for (propName in (didWarnAboutOldJSXRuntime ||\n !(\"__self\" in config) ||\n \"key\" in config ||\n ((didWarnAboutOldJSXRuntime = !0),\n console.warn(\n \"Your app (or one of its dependencies) is using an outdated JSX transform. Update to the modern JSX transform for faster performance: https://react.dev/link/new-jsx-transform\"\n )),\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (key = \"\" + config.key)),\n config))\n hasOwnProperty.call(config, propName) &&\n \"key\" !== propName &&\n \"__self\" !== propName &&\n \"__source\" !== propName &&\n (i[propName] = config[propName]);\n var childrenLength = arguments.length - 2;\n if (1 === childrenLength) i.children = children;\n else if (1 < childrenLength) {\n for (\n var childArray = Array(childrenLength), _i = 0;\n _i < childrenLength;\n _i++\n )\n childArray[_i] = arguments[_i + 2];\n Object.freeze && Object.freeze(childArray);\n i.children = childArray;\n }\n if (type && type.defaultProps)\n for (propName in ((childrenLength = type.defaultProps), childrenLength))\n void 0 === i[propName] && (i[propName] = childrenLength[propName]);\n key &&\n defineKeyPropWarningGetter(\n i,\n \"function\" === typeof type\n ? type.displayName || type.name || \"Unknown\"\n : type\n );\n var propName = 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return ReactElement(\n type,\n key,\n i,\n getOwner(),\n propName ? Error(\"react-stack-top-frame\") : unknownOwnerDebugStack,\n propName ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n exports.createRef = function () {\n var refObject = { current: null };\n Object.seal(refObject);\n return refObject;\n };\n exports.forwardRef = function (render) {\n null != render && render.$$typeof === REACT_MEMO_TYPE\n ? console.error(\n \"forwardRef requires a render function but received a `memo` component. Instead of forwardRef(memo(...)), use memo(forwardRef(...)).\"\n )\n : \"function\" !== typeof render\n ? console.error(\n \"forwardRef requires a render function but was given %s.\",\n null === render ? \"null\" : typeof render\n )\n : 0 !== render.length &&\n 2 !== render.length &&\n console.error(\n \"forwardRef render functions accept exactly two parameters: props and ref. %s\",\n 1 === render.length\n ? \"Did you forget to use the ref parameter?\"\n : \"Any additional parameter will be undefined.\"\n );\n null != render &&\n null != render.defaultProps &&\n console.error(\n \"forwardRef render functions do not support defaultProps. Did you accidentally pass a React component?\"\n );\n var elementType = { $$typeof: REACT_FORWARD_REF_TYPE, render: render },\n ownName;\n Object.defineProperty(elementType, \"displayName\", {\n enumerable: !1,\n configurable: !0,\n get: function () {\n return ownName;\n },\n set: function (name) {\n ownName = name;\n render.name ||\n render.displayName ||\n (Object.defineProperty(render, \"name\", { value: name }),\n (render.displayName = name));\n }\n });\n return elementType;\n };\n exports.isValidElement = isValidElement;\n exports.lazy = function (ctor) {\n ctor = { _status: -1, _result: ctor };\n var lazyType = {\n $$typeof: REACT_LAZY_TYPE,\n _payload: ctor,\n _init: lazyInitializer\n },\n ioInfo = {\n name: \"lazy\",\n start: -1,\n end: -1,\n value: null,\n owner: null,\n debugStack: Error(\"react-stack-top-frame\"),\n debugTask: console.createTask ? console.createTask(\"lazy()\") : null\n };\n ctor._ioInfo = ioInfo;\n lazyType._debugInfo = [{ awaited: ioInfo }];\n return lazyType;\n };\n exports.memo = function (type, compare) {\n null == type &&\n console.error(\n \"memo: The first argument must be a component. Instead received: %s\",\n null === type ? \"null\" : typeof type\n );\n compare = {\n $$typeof: REACT_MEMO_TYPE,\n type: type,\n compare: void 0 === compare ? null : compare\n };\n var ownName;\n Object.defineProperty(compare, \"displayName\", {\n enumerable: !1,\n configurable: !0,\n get: function () {\n return ownName;\n },\n set: function (name) {\n ownName = name;\n type.name ||\n type.displayName ||\n (Object.defineProperty(type, \"name\", { value: name }),\n (type.displayName = name));\n }\n });\n return compare;\n };\n exports.startTransition = function (scope) {\n var prevTransition = ReactSharedInternals.T,\n currentTransition = {};\n currentTransition._updatedFibers = new Set();\n ReactSharedInternals.T = currentTransition;\n try {\n var returnValue = scope(),\n onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish &&\n onStartTransitionFinish(currentTransition, returnValue);\n \"object\" === typeof returnValue &&\n null !== returnValue &&\n \"function\" === typeof returnValue.then &&\n (ReactSharedInternals.asyncTransitions++,\n returnValue.then(releaseAsyncTransition, releaseAsyncTransition),\n returnValue.then(noop, reportGlobalError));\n } catch (error) {\n reportGlobalError(error);\n } finally {\n null === prevTransition &&\n currentTransition._updatedFibers &&\n ((scope = currentTransition._updatedFibers.size),\n currentTransition._updatedFibers.clear(),\n 10 < scope &&\n console.warn(\n \"Detected a large number of updates inside startTransition. If this is due to a subscription please re-write it to use React provided hooks. Otherwise concurrent mode guarantees are off the table.\"\n )),\n null !== prevTransition &&\n null !== currentTransition.types &&\n (null !== prevTransition.types &&\n prevTransition.types !== currentTransition.types &&\n console.error(\n \"We expected inner Transitions to have transferred the outer types set and that you cannot add to the outer Transition while inside the inner.This is a bug in React.\"\n ),\n (prevTransition.types = currentTransition.types)),\n (ReactSharedInternals.T = prevTransition);\n }\n };\n exports.unstable_useCacheRefresh = function () {\n return resolveDispatcher().useCacheRefresh();\n };\n exports.use = function (usable) {\n return resolveDispatcher().use(usable);\n };\n exports.useActionState = function (action, initialState, permalink) {\n return resolveDispatcher().useActionState(\n action,\n initialState,\n permalink\n );\n };\n exports.useCallback = function (callback, deps) {\n return resolveDispatcher().useCallback(callback, deps);\n };\n exports.useContext = function (Context) {\n var dispatcher = resolveDispatcher();\n Context.$$typeof === REACT_CONSUMER_TYPE &&\n console.error(\n \"Calling useContext(Context.Consumer) is not supported and will cause bugs. Did you mean to call useContext(Context) instead?\"\n );\n return dispatcher.useContext(Context);\n };\n exports.useDebugValue = function (value, formatterFn) {\n return resolveDispatcher().useDebugValue(value, formatterFn);\n };\n exports.useDeferredValue = function (value, initialValue) {\n return resolveDispatcher().useDeferredValue(value, initialValue);\n };\n exports.useEffect = function (create, deps) {\n null == create &&\n console.warn(\n \"React Hook useEffect requires an effect callback. Did you forget to pass a callback to the hook?\"\n );\n return resolveDispatcher().useEffect(create, deps);\n };\n exports.useEffectEvent = function (callback) {\n return resolveDispatcher().useEffectEvent(callback);\n };\n exports.useId = function () {\n return resolveDispatcher().useId();\n };\n exports.useImperativeHandle = function (ref, create, deps) {\n return resolveDispatcher().useImperativeHandle(ref, create, deps);\n };\n exports.useInsertionEffect = function (create, deps) {\n null == create &&\n console.warn(\n \"React Hook useInsertionEffect requires an effect callback. Did you forget to pass a callback to the hook?\"\n );\n return resolveDispatcher().useInsertionEffect(create, deps);\n };\n exports.useLayoutEffect = function (create, deps) {\n null == create &&\n console.warn(\n \"React Hook useLayoutEffect requires an effect callback. Did you forget to pass a callback to the hook?\"\n );\n return resolveDispatcher().useLayoutEffect(create, deps);\n };\n exports.useMemo = function (create, deps) {\n return resolveDispatcher().useMemo(create, deps);\n };\n exports.useOptimistic = function (passthrough, reducer) {\n return resolveDispatcher().useOptimistic(passthrough, reducer);\n };\n exports.useReducer = function (reducer, initialArg, init) {\n return resolveDispatcher().useReducer(reducer, initialArg, init);\n };\n exports.useRef = function (initialValue) {\n return resolveDispatcher().useRef(initialValue);\n };\n exports.useState = function (initialState) {\n return resolveDispatcher().useState(initialState);\n };\n exports.useSyncExternalStore = function (\n subscribe,\n getSnapshot,\n getServerSnapshot\n ) {\n return resolveDispatcher().useSyncExternalStore(\n subscribe,\n getSnapshot,\n getServerSnapshot\n );\n };\n exports.useTransition = function () {\n return resolveDispatcher().useTransition();\n };\n exports.version = \"19.2.7\";\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","/**\n * @license lucide-react v1.17.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst mergeClasses = (...classes) => classes.filter((className, index, array) => {\n return Boolean(className) && className.trim() !== \"\" && array.indexOf(className) === index;\n}).join(\" \").trim();\n\nexport { mergeClasses };\n//# sourceMappingURL=mergeClasses.mjs.map\n","/**\n * @license lucide-react v1.17.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\n\nexport { toKebabCase };\n//# sourceMappingURL=toKebabCase.mjs.map\n","/**\n * @license lucide-react v1.17.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst toCamelCase = (string) => string.replace(\n /^([A-Z])|[\\s-_]+(\\w)/g,\n (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()\n);\n\nexport { toCamelCase };\n//# sourceMappingURL=toCamelCase.mjs.map\n","/**\n * @license lucide-react v1.17.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { toCamelCase } from './toCamelCase.mjs';\n\nconst toPascalCase = (string) => {\n const camelCase = toCamelCase(string);\n return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);\n};\n\nexport { toPascalCase };\n//# sourceMappingURL=toPascalCase.mjs.map\n","/**\n * @license lucide-react v1.17.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nvar defaultAttributes = {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n};\n\nexport { defaultAttributes as default };\n//# sourceMappingURL=defaultAttributes.mjs.map\n","/**\n * @license lucide-react v1.17.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst hasA11yProp = (props) => {\n for (const prop in props) {\n if (prop.startsWith(\"aria-\") || prop === \"role\" || prop === \"title\") {\n return true;\n }\n }\n return false;\n};\n\nexport { hasA11yProp };\n//# sourceMappingURL=hasA11yProp.mjs.map\n","\"use strict\";\n\"use client\";\n/**\n * @license lucide-react v1.17.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { createContext, useContext, useMemo, createElement } from 'react';\n\nconst LucideContext = createContext({});\nfunction LucideProvider({\n children,\n size,\n color,\n strokeWidth,\n absoluteStrokeWidth,\n className\n}) {\n const value = useMemo(\n () => ({\n size,\n color,\n strokeWidth,\n absoluteStrokeWidth,\n className\n }),\n [size, color, strokeWidth, absoluteStrokeWidth, className]\n );\n return createElement(LucideContext.Provider, { value }, children);\n}\nconst useLucideContext = () => useContext(LucideContext);\n\nexport { LucideProvider, useLucideContext };\n//# sourceMappingURL=context.mjs.map\n","\"use strict\";\n\"use client\";\n/**\n * @license lucide-react v1.17.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport defaultAttributes from './defaultAttributes.mjs';\nimport { hasA11yProp } from './shared/src/utils/hasA11yProp.mjs';\nimport { mergeClasses } from './shared/src/utils/mergeClasses.mjs';\nimport { useLucideContext } from './context.mjs';\n\nconst Icon = forwardRef(\n ({ color, size, strokeWidth, absoluteStrokeWidth, className = \"\", children, iconNode, ...rest }, ref) => {\n const {\n size: contextSize = 24,\n strokeWidth: contextStrokeWidth = 2,\n absoluteStrokeWidth: contextAbsoluteStrokeWidth = false,\n color: contextColor = \"currentColor\",\n className: contextClass = \"\"\n } = useLucideContext() ?? {};\n const calculatedStrokeWidth = absoluteStrokeWidth ?? contextAbsoluteStrokeWidth ? Number(strokeWidth ?? contextStrokeWidth) * 24 / Number(size ?? contextSize) : strokeWidth ?? contextStrokeWidth;\n return createElement(\n \"svg\",\n {\n ref,\n ...defaultAttributes,\n width: size ?? contextSize ?? defaultAttributes.width,\n height: size ?? contextSize ?? defaultAttributes.height,\n stroke: color ?? contextColor,\n strokeWidth: calculatedStrokeWidth,\n className: mergeClasses(\"lucide\", contextClass, className),\n ...!children && !hasA11yProp(rest) && { \"aria-hidden\": \"true\" },\n ...rest\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...Array.isArray(children) ? children : [children]\n ]\n );\n }\n);\n\nexport { Icon as default };\n//# sourceMappingURL=Icon.mjs.map\n","/**\n * @license lucide-react v1.17.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport { mergeClasses } from './shared/src/utils/mergeClasses.mjs';\nimport { toKebabCase } from './shared/src/utils/toKebabCase.mjs';\nimport { toPascalCase } from './shared/src/utils/toPascalCase.mjs';\nimport Icon from './Icon.mjs';\n\nconst createLucideIcon = (iconName, iconNode) => {\n const Component = forwardRef(\n ({ className, ...props }, ref) => createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className\n ),\n ...props\n })\n );\n Component.displayName = toPascalCase(iconName);\n return Component;\n};\n\nexport { createLucideIcon as default };\n//# sourceMappingURL=createLucideIcon.mjs.map\n","/**\n * @license lucide-react v1.17.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"M18 6 6 18\", key: \"1bl5f8\" }],\n [\"path\", { d: \"m6 6 12 12\", key: \"d8bk6v\" }]\n];\nconst X = createLucideIcon(\"x\", __iconNode);\n\nexport { __iconNode, X as default };\n//# sourceMappingURL=x.mjs.map\n","/**\n * Copyright 2022 Joe Bell. All rights reserved.\n *\n * This file is licensed to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with the\n * License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR REPRESENTATIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations under\n * the License.\n */ import { clsx } from \"clsx\";\nconst falsyToString = (value)=>typeof value === \"boolean\" ? `${value}` : value === 0 ? \"0\" : value;\nexport const cx = clsx;\nexport const cva = (base, config)=>(props)=>{\n var _config_compoundVariants;\n if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n const { variants, defaultVariants } = config;\n const getVariantClassNames = Object.keys(variants).map((variant)=>{\n const variantProp = props === null || props === void 0 ? void 0 : props[variant];\n const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];\n if (variantProp === null) return null;\n const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);\n return variants[variant][variantKey];\n });\n const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param)=>{\n let [key, value] = param;\n if (value === undefined) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (_config_compoundVariants = config.compoundVariants) === null || _config_compoundVariants === void 0 ? void 0 : _config_compoundVariants.reduce((acc, param)=>{\n let { class: cvClass, className: cvClassName, ...compoundVariantOptions } = param;\n return Object.entries(compoundVariantOptions).every((param)=>{\n let [key, value] = param;\n return Array.isArray(value) ? value.includes({\n ...defaultVariants,\n ...propsWithoutUndefined\n }[key]) : ({\n ...defaultVariants,\n ...propsWithoutUndefined\n })[key] === value;\n }) ? [\n ...acc,\n cvClass,\n cvClassName\n ] : acc;\n }, []);\n return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n };\n\n","import { cva } from 'class-variance-authority';\n\nexport const alertWrapperStyles = cva(\n 'flex flex-row bg-default text-default p-3 gap-2.5 rounded-md border border-transparent',\n {\n variants: {\n appearance: {\n filled: 'bg-default',\n outline: 'border-default',\n dashed: 'border-dashed border-default',\n },\n variant: {\n default: 'bg-default text-default',\n primary: 'bg-primary text-white',\n info: ' bg-info text-white',\n success: 'bg-success text-white',\n warning: 'bg-warning text-white',\n danger: 'bg-danger text-white',\n },\n size: { sm: 'p-3 gap-2.5', md: 'p-3.5 gap-3', lg: 'p-4 gap-3.5' },\n inverted: {\n true: 'bg-default-inverted text-default-inverted',\n },\n },\n compoundVariants: [\n {\n appearance: ['dashed', 'outline'],\n variant: ['default'],\n className: 'border-default bg-base',\n },\n {\n appearance: ['dashed', 'outline'],\n variant: ['primary'],\n className: 'border-primary bg-base',\n },\n {\n appearance: ['dashed', 'outline'],\n variant: ['info'],\n className: 'border-info bg-base',\n },\n {\n appearance: ['dashed', 'outline'],\n variant: ['success'],\n className: 'border-success bg-base',\n },\n {\n appearance: ['dashed', 'outline'],\n variant: ['warning'],\n className: 'border-warning bg-base',\n },\n {\n appearance: ['dashed', 'outline'],\n variant: ['danger'],\n className: 'border-danger bg-base',\n },\n\n /* FILLED INVERTED */\n {\n appearance: ['filled'],\n variant: ['default'],\n inverted: true,\n className: 'bg-default-inverted text-default-inverted',\n },\n {\n appearance: ['filled'],\n variant: ['primary'],\n inverted: true,\n className: 'bg-primary-inverted text-default',\n },\n {\n appearance: ['filled'],\n variant: ['info'],\n inverted: true,\n className: 'bg-info-inverted text-default',\n },\n {\n appearance: ['filled'],\n variant: ['success'],\n inverted: true,\n className: 'bg-success-inverted text-default',\n },\n {\n appearance: ['filled'],\n variant: ['warning'],\n inverted: true,\n className: 'bg-warning-inverted text-default',\n },\n {\n appearance: ['filled'],\n variant: ['danger'],\n inverted: true,\n className: 'bg-danger-inverted text-default',\n },\n ],\n defaultVariants: {\n variant: 'default',\n appearance: 'filled',\n size: 'md',\n },\n },\n);\n\nexport const alertContentWrapperStyles = cva('flex flex-col flex-1 gap-2', {\n variants: {\n variant: {\n default: '',\n primary: '',\n info: '',\n success: '',\n warning: '',\n danger: '',\n },\n appearance: {\n filled: '',\n outline: '',\n dashed: '',\n },\n size: { sm: 'gap-2', md: 'gap2.5', lg: 'gap-3' },\n },\n compoundVariants: [{}],\n defaultVariants: {\n size: 'md',\n },\n});\n\nexport const alertTitleStyles = cva('font-semibold', {\n variants: {\n appearance: {\n filled: '',\n outline: '',\n dashed: '',\n },\n variant: {\n default: '',\n primary: '',\n info: '',\n success: '',\n warning: '',\n danger: '',\n },\n size: { sm: 'text-sm', md: 'text-base', lg: 'text-lg' },\n inverted: {\n true: '',\n },\n },\n compoundVariants: [\n {\n appearance: ['outline', 'dashed'],\n variant: 'default',\n className: 'text-default',\n },\n {\n appearance: ['outline', 'dashed'],\n variant: 'primary',\n className: 'text-primary',\n },\n {\n appearance: ['outline', 'dashed'],\n variant: 'info',\n className: 'text-info',\n },\n {\n appearance: ['outline', 'dashed'],\n variant: 'success',\n className: 'text-success',\n },\n {\n appearance: ['outline', 'dashed'],\n variant: 'warning',\n className: 'text-warning',\n },\n {\n appearance: ['outline', 'dashed'],\n variant: 'danger',\n className: 'text-danger',\n },\n ],\n defaultVariants: {\n size: 'md',\n },\n});\n\nexport const alertDescriptionStyles = cva('', {\n variants: {\n appearance: {\n filled: 'text-white',\n outline: '',\n dashed: '',\n },\n variant: {\n default: 'text-default',\n primary: '',\n info: '',\n success: '',\n warning: '',\n danger: '',\n },\n size: { sm: 'text-xs', md: 'text-sm', lg: 'text-base' },\n inverted: {\n true: 'text-default-inverted',\n },\n },\n compoundVariants: [\n {\n appearance: ['outline', 'dashed'],\n variant: ['default', 'primary', 'info', 'success', 'warning', 'danger'],\n className: 'text-default',\n },\n {\n appearance: ['filled', 'outline', 'dashed'],\n variant: ['primary', 'info', 'success', 'warning', 'danger'],\n inverted: true,\n className: 'text-default',\n },\n ],\n defaultVariants: {\n size: 'md',\n },\n});\n\nexport const alertIconStyles = cva('stroke-2', {\n variants: {\n appearance: {\n filled: '',\n outline: '',\n dashed: '',\n },\n variant: {\n default: '',\n primary: '',\n info: '',\n success: '',\n warning: '',\n danger: '',\n },\n size: { sm: 'size-5 pt-0.12', md: 'size-6 pt-0.25', lg: 'size-7 pt-0.5' },\n inverted: {\n true: '',\n },\n },\n compoundVariants: [\n {\n appearance: ['outline', 'dashed'],\n variant: 'default',\n className: 'text-default',\n },\n {\n appearance: ['outline', 'dashed'],\n variant: 'primary',\n className: 'text-primary',\n },\n {\n appearance: ['outline', 'dashed'],\n variant: 'info',\n className: 'text-info',\n },\n {\n appearance: ['outline', 'dashed'],\n variant: 'success',\n className: 'text-success',\n },\n {\n appearance: ['outline', 'dashed'],\n variant: 'warning',\n className: 'text-warning',\n },\n {\n appearance: ['outline', 'dashed'],\n variant: 'danger',\n className: 'text-danger',\n },\n\n /* FILLED INVERTED */\n {\n appearance: ['filled'],\n variant: ['default'],\n inverted: true,\n className: 'text-default-inverted',\n },\n {\n appearance: ['filled'],\n variant: ['primary'],\n inverted: true,\n className: 'text-primary',\n },\n {\n appearance: ['filled'],\n variant: ['info'],\n inverted: true,\n className: 'text-info',\n },\n {\n appearance: ['filled'],\n variant: ['success'],\n inverted: true,\n className: 'text-success',\n },\n {\n appearance: ['filled'],\n variant: ['warning'],\n inverted: true,\n className: 'text-warning',\n },\n {\n appearance: ['filled'],\n variant: ['danger'],\n inverted: true,\n className: 'text-danger',\n },\n ],\n defaultVariants: {\n size: 'md',\n },\n});\n\nexport const alertCloseButtonStyles = cva(\n 'shrink-0 cursor-pointer text-default',\n {\n variants: {\n appearance: {\n filled: 'text-white',\n outline: '',\n dashed: '',\n },\n variant: {\n default: 'text-default',\n primary: '',\n info: '',\n success: '',\n warning: '',\n danger: '',\n },\n size: { sm: 'size-5', md: 'size-6', lg: 'size-7' },\n inverted: {\n true: 'text-default',\n },\n },\n compoundVariants: [\n /* FILLED INVERTED */\n {\n appearance: ['filled'],\n variant: ['default'],\n inverted: true,\n className: 'text-default-inverted',\n },\n {\n appearance: ['outline', 'dashed'],\n variant: ['primary', 'info', 'success', 'warning', 'danger'],\n inverted: true,\n className: 'text-default',\n },\n ],\n defaultVariants: {\n size: 'md',\n },\n },\n);\n","/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n var key = null;\n void 0 !== maybeKey && (key = \"\" + maybeKey);\n void 0 !== config.key && (key = \"\" + config.key);\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n config = maybeKey.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== config ? config : null,\n props: maybeKey\n };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (\n (\"number\" === typeof type.tag &&\n console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ),\n type.$$typeof)\n ) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return type.displayName || \"Context\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkKeyStringCoercion(value) {\n try {\n testStringCoercion(value);\n var JSCompiler_inline_result = !1;\n } catch (e) {\n JSCompiler_inline_result = !0;\n }\n if (JSCompiler_inline_result) {\n JSCompiler_inline_result = console;\n var JSCompiler_temp_const = JSCompiler_inline_result.error;\n var JSCompiler_inline_result$jscomp$0 =\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n value[Symbol.toStringTag]) ||\n value.constructor.name ||\n \"Object\";\n JSCompiler_temp_const.call(\n JSCompiler_inline_result,\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n JSCompiler_inline_result$jscomp$0\n );\n return testStringCoercion(value);\n }\n }\n function getTaskName(type) {\n if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n if (\n \"object\" === typeof type &&\n null !== type &&\n type.$$typeof === REACT_LAZY_TYPE\n )\n return \"<...>\";\n try {\n var name = getComponentNameFromType(type);\n return name ? \"<\" + name + \">\" : \"<...>\";\n } catch (x) {\n return \"<...>\";\n }\n }\n function getOwner() {\n var dispatcher = ReactSharedInternals.A;\n return null === dispatcher ? null : dispatcher.getOwner();\n }\n function UnknownOwner() {\n return Error(\"react-stack-top-frame\");\n }\n function hasValidKey(config) {\n if (hasOwnProperty.call(config, \"key\")) {\n var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n if (getter && getter.isReactWarning) return !1;\n }\n return void 0 !== config.key;\n }\n function defineKeyPropWarningGetter(props, displayName) {\n function warnAboutAccessingKey() {\n specialPropKeyWarningShown ||\n ((specialPropKeyWarningShown = !0),\n console.error(\n \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n displayName\n ));\n }\n warnAboutAccessingKey.isReactWarning = !0;\n Object.defineProperty(props, \"key\", {\n get: warnAboutAccessingKey,\n configurable: !0\n });\n }\n function elementRefGetterWithDeprecationWarning() {\n var componentName = getComponentNameFromType(this.type);\n didWarnAboutElementRef[componentName] ||\n ((didWarnAboutElementRef[componentName] = !0),\n console.error(\n \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n ));\n componentName = this.props.ref;\n return void 0 !== componentName ? componentName : null;\n }\n function ReactElement(type, key, props, owner, debugStack, debugTask) {\n var refProp = props.ref;\n type = {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n props: props,\n _owner: owner\n };\n null !== (void 0 !== refProp ? refProp : null)\n ? Object.defineProperty(type, \"ref\", {\n enumerable: !1,\n get: elementRefGetterWithDeprecationWarning\n })\n : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n type._store = {};\n Object.defineProperty(type._store, \"validated\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: 0\n });\n Object.defineProperty(type, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n });\n Object.defineProperty(type, \"_debugStack\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugStack\n });\n Object.defineProperty(type, \"_debugTask\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugTask\n });\n Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n return type;\n }\n function jsxDEVImpl(\n type,\n config,\n maybeKey,\n isStaticChildren,\n debugStack,\n debugTask\n ) {\n var children = config.children;\n if (void 0 !== children)\n if (isStaticChildren)\n if (isArrayImpl(children)) {\n for (\n isStaticChildren = 0;\n isStaticChildren < children.length;\n isStaticChildren++\n )\n validateChildKeys(children[isStaticChildren]);\n Object.freeze && Object.freeze(children);\n } else\n console.error(\n \"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.\"\n );\n else validateChildKeys(children);\n if (hasOwnProperty.call(config, \"key\")) {\n children = getComponentNameFromType(type);\n var keys = Object.keys(config).filter(function (k) {\n return \"key\" !== k;\n });\n isStaticChildren =\n 0 < keys.length\n ? \"{key: someKey, \" + keys.join(\": ..., \") + \": ...}\"\n : \"{key: someKey}\";\n didWarnAboutKeySpread[children + isStaticChildren] ||\n ((keys =\n 0 < keys.length ? \"{\" + keys.join(\": ..., \") + \": ...}\" : \"{}\"),\n console.error(\n 'A props object containing a \"key\" prop is being spread into JSX:\\n let props = %s;\\n <%s {...props} />\\nReact keys must be passed directly to JSX without using spread:\\n let props = %s;\\n <%s key={someKey} {...props} />',\n isStaticChildren,\n children,\n keys,\n children\n ),\n (didWarnAboutKeySpread[children + isStaticChildren] = !0));\n }\n children = null;\n void 0 !== maybeKey &&\n (checkKeyStringCoercion(maybeKey), (children = \"\" + maybeKey));\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (children = \"\" + config.key));\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n children &&\n defineKeyPropWarningGetter(\n maybeKey,\n \"function\" === typeof type\n ? type.displayName || type.name || \"Unknown\"\n : type\n );\n return ReactElement(\n type,\n children,\n maybeKey,\n getOwner(),\n debugStack,\n debugTask\n );\n }\n function validateChildKeys(node) {\n isValidElement(node)\n ? node._store && (node._store.validated = 1)\n : \"object\" === typeof node &&\n null !== node &&\n node.$$typeof === REACT_LAZY_TYPE &&\n (\"fulfilled\" === node._payload.status\n ? isValidElement(node._payload.value) &&\n node._payload.value._store &&\n (node._payload.value._store.validated = 1)\n : node._store && (node._store.validated = 1));\n }\n function isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n }\n var React = require(\"react\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n hasOwnProperty = Object.prototype.hasOwnProperty,\n isArrayImpl = Array.isArray,\n createTask = console.createTask\n ? console.createTask\n : function () {\n return null;\n };\n React = {\n react_stack_bottom_frame: function (callStackForError) {\n return callStackForError();\n }\n };\n var specialPropKeyWarningShown;\n var didWarnAboutElementRef = {};\n var unknownOwnerDebugStack = React.react_stack_bottom_frame.bind(\n React,\n UnknownOwner\n )();\n var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));\n var didWarnAboutKeySpread = {};\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.jsx = function (type, config, maybeKey) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !1,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n exports.jsxs = function (type, config, maybeKey) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !0,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","import { X } from 'lucide-react';\nimport { FC, ReactNode, SVGProps } from 'react';\nimport { type VariantProps } from 'class-variance-authority';\n\nimport { cn, RemoveNull } from '@/utils';\n\nimport {\n alertCloseButtonStyles,\n alertContentWrapperStyles,\n alertDescriptionStyles,\n alertIconStyles,\n alertTitleStyles,\n alertWrapperStyles,\n} from './Alert.styles';\n\nexport interface AlertProps extends RemoveNull<\n VariantProps<typeof alertWrapperStyles>\n> {\n title?: string;\n icon?: FC<SVGProps<SVGSVGElement>>;\n children?: ReactNode;\n onClose?: () => void;\n}\n\nexport const Alert: FC<AlertProps> = ({\n variant,\n appearance,\n size,\n inverted = false,\n title,\n icon: Icon,\n children,\n onClose,\n ...restProps\n}) => {\n const alertWrapperClassName = cn(\n alertWrapperStyles({\n variant,\n appearance,\n size,\n inverted,\n }),\n );\n const alertContentWrapperClassName = cn(\n alertContentWrapperStyles({\n variant,\n appearance,\n size,\n }),\n );\n const alertTitleClassName = cn(\n alertTitleStyles({\n variant,\n appearance,\n size,\n }),\n );\n const alertDescriptionClassName = cn(\n alertDescriptionStyles({\n appearance,\n variant,\n size,\n inverted,\n }),\n );\n const alertIconClassName = cn(\n alertIconStyles({ variant, appearance, size, inverted }),\n );\n const alertCloseButtonClassName = cn(\n alertCloseButtonStyles({\n appearance,\n variant,\n size,\n inverted,\n }),\n );\n return (\n <div {...restProps} className={alertWrapperClassName}>\n <div>\n {Icon && <Icon className={alertIconClassName} strokeWidth={1} />}\n </div>\n <div className={alertContentWrapperClassName}>\n <div className={alertTitleClassName}>{title}</div>\n <div className={alertDescriptionClassName}>{children}</div>\n </div>\n {onClose && <X className={alertCloseButtonClassName} onClick={onClose} />}\n </div>\n );\n};\n","import { cva } from 'class-variance-authority';\n\nexport const badgeVariants = cva(\n 'inline-flex items-center justify-center border border-1 border-base overflow-hidden relative font-medium whitespace-nowrap',\n {\n variants: {\n variant: {\n primary: 'bg-primary text-white',\n default: 'bg-default text-default',\n info: 'bg-info text-white',\n success: 'bg-success text-white',\n warning: 'bg-warning text-white',\n danger: 'bg-danger text-white',\n },\n appearance: {\n dots: '',\n icon: '',\n text: '',\n },\n size: {\n sm: 'text-xs',\n md: 'text-sm',\n lg: 'text-lg',\n },\n shape: {\n circle: 'rounded-full',\n square: 'rounded',\n },\n inverted: {\n true: '',\n false: '',\n },\n hasIcon: {\n true: '',\n false: '',\n },\n },\n defaultVariants: {\n variant: 'default',\n appearance: 'text',\n size: 'md',\n shape: 'circle',\n inverted: false,\n hasIcon: false,\n },\n compoundVariants: [\n { appearance: 'dots', size: 'sm', className: 'size-2' },\n { appearance: 'dots', size: 'md', className: 'size-3' },\n { appearance: 'dots', size: 'lg', className: 'size-4' },\n { appearance: 'icon', size: 'sm', className: 'size-5.5 p-0' },\n {\n appearance: 'icon',\n size: 'md',\n className: 'size-8 p-0',\n },\n {\n appearance: 'icon',\n size: 'lg',\n className: 'size-10 p-0',\n },\n\n {\n appearance: 'text',\n size: 'sm',\n className: 'h-6 min-h-6 min-w-6 px-1',\n },\n {\n appearance: 'text',\n size: 'md',\n className: 'h-7 min-h-7 min-w-7 px-1.5',\n },\n {\n appearance: 'text',\n size: 'lg',\n className: 'h-8 min-h-8 min-w-8 px-2.5',\n },\n\n { appearance: 'text', hasIcon: true, size: 'sm', className: 'gap-1' },\n { appearance: 'text', hasIcon: true, size: 'md', className: 'gap-2' },\n { appearance: 'text', hasIcon: true, size: 'lg', className: 'gap-3' },\n\n {\n inverted: true,\n variant: 'default',\n className: 'bg-default-inverted text-white',\n },\n {\n inverted: true,\n variant: 'info',\n className: 'bg-info-inverted text-default',\n },\n {\n inverted: true,\n variant: 'success',\n className: 'bg-success-inverted text-default',\n },\n {\n inverted: true,\n variant: 'warning',\n className: 'bg-warning-inverted text-default',\n },\n {\n inverted: true,\n variant: 'danger',\n className: 'bg-danger-inverted text-default',\n },\n {\n inverted: true,\n variant: 'primary',\n className: 'bg-primary-inverted text-white',\n },\n ],\n },\n);\n\nexport const badgeIconStyles = cva('shrink-0', {\n variants: {\n size: {\n sm: 'size-3.5',\n md: 'size-5',\n lg: 'size-7',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n});\n\nexport const badgeTextStyles = cva('leading-none font-medium', {\n variants: {\n size: {\n sm: 'text-xs',\n md: 'text-sm',\n lg: 'text-lg',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n});\n","import { FC, HTMLAttributes, SVGProps } from 'react';\nimport { type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/utils';\n\nimport {\n badgeIconStyles,\n badgeTextStyles,\n badgeVariants,\n} from './Badge.styles';\nexport interface BadgeProps\n extends\n HTMLAttributes<HTMLSpanElement>,\n Omit<VariantProps<typeof badgeVariants>, 'appearance'> {\n icon?: FC<SVGProps<SVGSVGElement>>;\n}\n\nexport const Badge: FC<BadgeProps> = ({\n variant = 'default',\n size = 'md',\n shape = 'circle',\n inverted = false,\n icon: Icon,\n children,\n role,\n className,\n ...restProps\n}) => {\n const hasText = !!children || children === 0;\n const appearance = hasText ? 'text' : Icon ? 'icon' : 'dots';\n const hasIcon = Icon && appearance !== 'dots';\n const resolvedRole = hasText ? role : (role ?? 'img');\n const defaultAriaLabel =\n resolvedRole === 'img' ? `Badge, ${variant}` : undefined;\n const ariaLabel = restProps['aria-label'] ?? defaultAriaLabel;\n const hasTextIcon = hasText && Icon && appearance === 'text';\n\n const badgeClassName = cn(\n badgeVariants({\n variant,\n size,\n shape,\n appearance,\n inverted,\n hasIcon: hasTextIcon,\n }),\n );\n const badgeIconClassName = cn(badgeIconStyles({ size }));\n const badgeTextClassName = cn(badgeTextStyles({ size }));\n\n return (\n <span\n {...restProps}\n role={resolvedRole}\n aria-label={ariaLabel}\n className={cn(badgeClassName, className)}\n >\n {hasIcon && (\n <Icon\n aria-hidden='true'\n focusable='false'\n className={badgeIconClassName}\n />\n )}\n {hasText && <span className={badgeTextClassName}>{children}</span>}\n </span>\n );\n};\n","import { cva } from 'class-variance-authority';\n\nexport const buttonStyles = cva(\n 'inline-flex w-fit items-center justify-center gap-2.5 cursor-pointer text-sm p-2 rounded border outline-none border-transparent hover:bg-default-hovered active:bg-default-pressed',\n {\n variants: {\n size: {\n sm: 'p-2 text-sm gap-2',\n md: 'px-3 py-2 text-base gap-2.5',\n lg: 'px-3.5 py-2 text-lg gap-3',\n },\n variant: {\n default: 'text-default',\n primary: 'text-primary',\n info: 'text-info',\n success: 'text-success',\n warning: 'text-warning',\n danger: 'text-danger',\n },\n appearance: {\n filled: 'bg-default',\n outline: 'bg-transparent',\n dashed: 'bg-transparent border-dashed',\n ghost: 'bg-transparent',\n },\n disabled: {\n true: 'opacity-40 disabled:cursor-not-allowed disabled:pointer-events-none',\n },\n loading: {\n true: '',\n },\n fullWidth: {\n true: 'w-full',\n },\n inverted: {\n true: '',\n },\n },\n compoundVariants: [\n /* FILLED */\n {\n appearance: 'filled',\n variant: 'default',\n className: 'bg-default text-default',\n },\n {\n appearance: 'filled',\n variant: 'primary',\n className:\n 'bg-primary text-white hover:bg-primary-hovered active:bg-primary-pressed',\n },\n {\n appearance: 'filled',\n variant: 'info',\n className:\n 'bg-info text-white hover:bg-info-hovered active:bg-info-pressed',\n },\n {\n appearance: 'filled',\n variant: 'success',\n className:\n 'bg-success text-white hover:bg-success-hovered active:bg-success-pressed',\n },\n {\n appearance: 'filled',\n variant: 'warning',\n className:\n 'bg-warning text-white hover:bg-warning-hovered active:bg-warning-pressed',\n },\n {\n appearance: 'filled',\n variant: 'danger',\n className:\n 'bg-danger text-white hover:bg-danger-hovered active:bg-danger-pressed',\n },\n {\n appearance: 'filled',\n variant: 'default',\n inverted: true,\n className:\n 'bg-default-inverted text-default-inverted hover:bg-default-hovered-inverted active:bg-default-pressed-inverted',\n },\n {\n appearance: 'filled',\n variant: 'primary',\n inverted: true,\n className:\n 'bg-primary-inverted text-white-inverted hover:bg-primary-hovered-inverted active:bg-primary-pressed-inverted',\n },\n {\n appearance: 'filled',\n variant: 'info',\n inverted: true,\n className:\n 'bg-info-inverted text-white-inverted hover:bg-info-hovered-inverted active:bg-info-pressed-inverted',\n },\n {\n appearance: 'filled',\n variant: 'success',\n inverted: true,\n className:\n 'bg-success-inverted text-white-inverted hover:bg-success-hovered-inverted active:bg-success-pressed-inverted',\n },\n {\n appearance: 'filled',\n variant: 'warning',\n inverted: true,\n className:\n 'bg-warning-inverted text-white-inverted hover:bg-warning-hovered-inverted active:bg-warning-pressed-inverted',\n },\n {\n appearance: 'filled',\n variant: 'danger',\n inverted: true,\n className:\n 'bg-danger-inverted text-white-inverted hover:bg-danger-hovered-inverted active:bg-danger-pressed-inverted',\n },\n\n /* OUTLINE & DASHED */\n {\n appearance: ['outline', 'dashed'],\n variant: 'default',\n className: 'border-default',\n },\n {\n appearance: ['outline', 'dashed'],\n variant: 'primary',\n className: 'border-primary',\n },\n {\n appearance: ['outline', 'dashed'],\n variant: 'info',\n className: 'border-info',\n },\n {\n appearance: ['outline', 'dashed'],\n variant: 'success',\n className: 'border-success',\n },\n {\n appearance: ['outline', 'dashed'],\n variant: 'warning',\n className: 'border-warning',\n },\n {\n appearance: ['outline', 'dashed'],\n variant: 'danger',\n className: 'border-danger',\n },\n {\n appearance: ['outline', 'dashed'],\n variant: 'default',\n inverted: true,\n className:\n 'text-default-inverted hover:bg-default-hovered-inverted active:bg-default-pressed-inverted',\n },\n {\n appearance: ['outline', 'dashed'],\n variant: 'primary',\n inverted: true,\n className:\n 'text-primary-inverted hover:bg-primary-hovered-inverted active:bg-primary-pressed-inverted hover:text-primary active:text-primary',\n },\n {\n appearance: ['outline', 'dashed'],\n variant: 'info',\n inverted: true,\n className:\n 'text-info-inverted hover:bg-info-hovered-inverted active:bg-info-pressed-inverted hover:text-info active:text-info',\n },\n {\n appearance: ['outline', 'dashed'],\n variant: 'success',\n inverted: true,\n className:\n 'text-success-inverted hover:bg-success-hovered-inverted active:bg-success-pressed-inverted hover:text-success active:text-success',\n },\n {\n appearance: ['outline', 'dashed'],\n variant: 'warning',\n inverted: true,\n className:\n 'text-warning-inverted hover:bg-warning-hovered-inverted active:bg-warning-pressed-inverted hover:text-warning active:text-warning',\n },\n {\n appearance: ['outline', 'dashed'],\n variant: 'danger',\n inverted: true,\n className:\n 'text-danger-inverted hover:bg-danger-hovered-inverted active:bg-danger-pressed-inverted hover:text-danger active:text-danger',\n },\n\n /* GHOST BUTTON */\n {\n appearance: 'ghost',\n variant: 'default',\n className: 'text-default',\n },\n {\n appearance: 'ghost',\n variant: 'primary',\n className: 'text-primary',\n },\n {\n appearance: 'ghost',\n variant: 'info',\n className: 'text-info',\n },\n {\n appearance: 'ghost',\n variant: 'success',\n className: 'text-success',\n },\n {\n appearance: 'ghost',\n variant: 'warning',\n className: 'text-warning',\n },\n {\n appearance: 'ghost',\n variant: 'danger',\n className: 'text-danger',\n },\n {\n appearance: 'ghost',\n variant: 'default',\n inverted: true,\n className:\n 'text-default-inverted hover:bg-default-hovered-inverted active:bg-default-pressed-inverted',\n },\n {\n appearance: 'ghost',\n variant: 'primary',\n inverted: true,\n className:\n 'text-primary-inverted hover:bg-primary-hovered-inverted active:bg-primary-pressed-inverted hover:text-primary active:text-primary',\n },\n {\n appearance: 'ghost',\n variant: 'info',\n inverted: true,\n className:\n 'text-info-inverted hover:bg-info-hovered-inverted active:bg-info-pressed-inverted hover:text-info active:text-info',\n },\n {\n appearance: 'ghost',\n variant: 'success',\n inverted: true,\n className:\n 'text-success-inverted hover:bg-success-hovered-inverted active:bg-success-pressed-inverted hover:text-success active:text-success',\n },\n {\n appearance: 'ghost',\n variant: 'warning',\n inverted: true,\n className:\n 'text-warning-inverted hover:bg-warning-hovered-inverted active:bg-warning-pressed-inverted hover:text-warning active:text-warning',\n },\n {\n appearance: 'ghost',\n variant: 'danger',\n inverted: true,\n className:\n 'text-danger-inverted hover:bg-danger-hovered-inverted active:bg-danger-pressed-inverted hover:text-danger active:text-danger',\n },\n\n /* VARIANT LOADING */\n {\n appearance: ['filled', 'dashed', 'outline', 'ghost'],\n variant: 'default',\n loading: true,\n className:\n 'bg-default-loading text-loading hover:bg-default-loading active:bg-default-loading',\n },\n {\n appearance: 'filled',\n variant: 'primary',\n loading: true,\n className:\n 'bg-primary-loading text-white hover:bg-primary-loading active:bg-primary-loading',\n },\n {\n appearance: 'filled',\n variant: 'info',\n loading: true,\n className:\n 'bg-info-loading text-white hover:bg-info-loading active:bg-info-loading',\n },\n {\n appearance: 'filled',\n variant: 'success',\n loading: true,\n className:\n 'bg-success-loading text-white hover:bg-success-loading active:bg-success-loading',\n },\n {\n appearance: 'filled',\n variant: 'warning',\n loading: true,\n className:\n 'bg-warning-loading text-white hover:bg-warning-loading active:bg-warning-loading',\n },\n {\n appearance: 'filled',\n variant: 'danger',\n loading: true,\n className:\n 'bg-danger-loading text-white hover:bg-danger-loading active:bg-danger-loading',\n },\n {\n appearance: ['dashed', 'outline', 'ghost'],\n variant: ['default', 'primary', 'info', 'success', 'warning', 'danger'],\n loading: true,\n className:\n 'bg-default-loading hover:bg-default-loading active:bg-default-loading',\n },\n {\n appearance: ['filled', 'dashed', 'outline', 'ghost'],\n variant: 'default',\n loading: true,\n inverted: true,\n className:\n 'bg-default-loading-inverted text-loading-inverted hover:bg-default-loading-inverted active:bg-default-loading-inverted',\n },\n {\n appearance: 'filled',\n variant: 'primary',\n loading: true,\n inverted: true,\n className:\n 'bg-primary-loading-inverted text-white-inverted hover:bg-primary-loading-inverted active:bg-primary-loading-inverted',\n },\n {\n appearance: 'filled',\n variant: 'info',\n loading: true,\n inverted: true,\n className:\n 'bg-info-loading-inverted text-white-inverted hover:bg-info-loading-inverted active:bg-info-loading-inverted',\n },\n {\n appearance: 'filled',\n variant: 'success',\n loading: true,\n inverted: true,\n className:\n 'bg-success-loading-inverted text-white-inverted hover:bg-success-loading-inverted active:bg-success-loading-inverted',\n },\n {\n appearance: 'filled',\n variant: 'warning',\n loading: true,\n inverted: true,\n className:\n 'bg-warning-loading-inverted text-white-inverted hover:bg-warning-loading-inverted active:bg-warning-loading-inverted',\n },\n {\n appearance: 'filled',\n variant: 'danger',\n loading: true,\n inverted: true,\n className:\n 'bg-danger-loading-inverted text-white-inverted hover:bg-danger-loading-inverted active:bg-danger-loading-inverted',\n },\n {\n appearance: ['dashed', 'outline', 'ghost'],\n variant: ['default', 'primary', 'info', 'success', 'warning', 'danger'],\n loading: true,\n inverted: true,\n className:\n 'bg-default-loading-inverted text-loading-inverted hover:bg-default-loading-inverted active:bg-default-loading-inverted',\n },\n ],\n defaultVariants: {},\n },\n);\n\nexport const buttonSpinnerStyles = cva(\n 'inline-block animate-spin rounded-full border-2 border-current border-t-transparent',\n {\n variants: {\n size: {\n sm: 'size-4',\n md: 'size-5',\n lg: 'size-6',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n\nexport const buttonIconStyle = cva('shrink-0', {\n variants: {\n size: {\n sm: 'size-4',\n md: 'size-5',\n lg: 'size-6',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n});\n","import { ComponentPropsWithRef, FC, ReactNode, SVGProps } from 'react';\nimport { type VariantProps } from 'class-variance-authority';\n\nimport { cn, RemoveNull } from '../../utils';\nimport {\n buttonIconStyle,\n buttonSpinnerStyles,\n buttonStyles,\n} from './Button.styles';\n\nexport interface ButtonProps\n extends\n ComponentPropsWithRef<'button'>,\n RemoveNull<Omit<VariantProps<typeof buttonStyles>, 'disabled'>> {\n children: ReactNode;\n leadingIcon?: FC<SVGProps<SVGSVGElement>>;\n trailingIcon?: FC<SVGProps<SVGSVGElement>>;\n}\n\nexport const Button: FC<ButtonProps> = ({\n ref,\n size,\n variant,\n appearance,\n disabled,\n loading,\n fullWidth,\n inverted,\n children,\n leadingIcon: LeadingIcon,\n trailingIcon: TrailingIcon,\n className,\n ...restProps\n}) => {\n const isDisabled = loading || disabled;\n\n return (\n <button\n {...restProps}\n ref={ref}\n className={cn(\n buttonStyles({\n variant,\n size,\n appearance,\n disabled: isDisabled,\n loading,\n fullWidth,\n inverted,\n }),\n className,\n )}\n disabled={isDisabled}\n >\n {loading ? (\n <span aria-hidden='true' className={buttonSpinnerStyles({ size })} />\n ) : (\n <>\n {LeadingIcon && <LeadingIcon className={buttonIconStyle({ size })} />}\n {children && <span>{children}</span>}\n {TrailingIcon && (\n <TrailingIcon className={buttonIconStyle({ size })} />\n )}\n </>\n )}\n </button>\n );\n};\n","import { cva } from 'class-variance-authority';\n\nexport const buttonGroupStyles = cva(\n 'inline-flex isolate overflow-hidden rounded-md border border-default',\n {\n variants: {\n orientation: {\n horizontal: 'flex-row items-center',\n vertical: 'flex-col items-stretch',\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n },\n },\n);\n\nexport const buttonGroupItemStyles = cva('inline-flex', {\n variants: {\n orientation: {\n horizontal: '',\n vertical: '',\n },\n position: {\n single: '',\n first: '',\n middle: '',\n last: '',\n },\n fullWidth: {\n true: 'flex-1',\n false: '',\n },\n },\n compoundVariants: [\n {\n orientation: 'horizontal',\n position: 'first',\n className: 'border-r border-default',\n },\n {\n orientation: 'horizontal',\n position: 'middle',\n className: 'border-r border-default',\n },\n {\n orientation: 'horizontal',\n position: 'last',\n className: 'border-r-0',\n },\n {\n orientation: 'horizontal',\n position: 'single',\n className: 'border-r-0',\n },\n {\n orientation: 'vertical',\n position: 'first',\n className: 'border-b border-default',\n },\n {\n orientation: 'vertical',\n position: 'middle',\n className: 'border-b border-default',\n },\n {\n orientation: 'vertical',\n position: 'last',\n className: 'border-b-0',\n },\n {\n orientation: 'vertical',\n position: 'single',\n className: 'border-b-0',\n },\n ],\n});\n\nexport const buttonGroupItemInnerStyles = cva(\n 'rounded-none border-0 !rounded-none shadow-none',\n {\n variants: {\n fullWidth: {\n true: 'w-full',\n false: 'w-fit',\n },\n },\n defaultVariants: {\n fullWidth: false,\n },\n },\n);\n","import { type FC } from 'react';\n\nimport { cn } from '@/utils';\n\nimport { Button, type ButtonProps } from '../Button';\nimport {\n buttonGroupItemInnerStyles,\n buttonGroupItemStyles,\n buttonGroupStyles,\n} from './ButtonGroup.styles';\nimport type {\n ButtonGroupItem,\n ButtonGroupProps,\n ButtonGroupOrientation,\n} from './types';\n\ntype ButtonGroupItemPosition = 'single' | 'first' | 'middle' | 'last';\n\nconst getItemPosition = (\n index: number,\n total: number,\n): ButtonGroupItemPosition => {\n if (total === 1) {\n return 'single';\n }\n\n if (index === 0) {\n return 'first';\n }\n\n if (index === total - 1) {\n return 'last';\n }\n\n return 'middle';\n};\n\nconst resolveInheritedValue = <T,>(\n itemValue: T | undefined,\n groupValue: T,\n): T => itemValue ?? groupValue;\n\nexport const ButtonGroup: FC<ButtonGroupProps> = ({\n buttons = [],\n orientation = 'horizontal',\n size,\n inverted,\n role = 'group',\n ...restProps\n}) => {\n const total = buttons.length;\n\n return (\n <div\n role={role}\n aria-label={restProps['aria-label'] ?? 'Button group'}\n className={cn(\n buttonGroupStyles({\n orientation: orientation as ButtonGroupOrientation,\n }),\n )}\n {...restProps}\n >\n {buttons.map((item, index) => {\n const {\n id,\n children,\n size: itemSize,\n variant: itemVariant,\n appearance: itemAppearance,\n loading: itemLoading,\n inverted: itemInverted,\n fullWidth: itemFullWidth,\n ...buttonProps\n } = item as ButtonGroupItem;\n\n const itemPosition = getItemPosition(index, total);\n const resolvedSize = resolveInheritedValue(itemSize, size);\n const resolvedVariant = itemVariant ?? 'default';\n const resolvedAppearance = itemAppearance ?? 'filled';\n const resolvedInverted = resolveInheritedValue(itemInverted, inverted);\n\n return (\n <div\n key={id ?? index}\n className={cn(\n buttonGroupItemStyles({\n orientation,\n position: itemPosition,\n fullWidth: Boolean(itemFullWidth),\n }),\n )}\n >\n <Button\n {...(buttonProps as ButtonProps)}\n size={resolvedSize}\n variant={resolvedVariant}\n appearance={resolvedAppearance}\n loading={itemLoading}\n inverted={resolvedInverted}\n fullWidth={Boolean(itemFullWidth)}\n className={cn(\n buttonGroupItemInnerStyles({\n fullWidth: Boolean(itemFullWidth),\n }),\n )}\n >\n {children}\n </Button>\n </div>\n );\n })}\n </div>\n );\n};\n","import { cva } from 'class-variance-authority';\n\nexport const avatarContainerStyles = cva(\n 'relative inline-flex shrink-0 items-center justify-center font-medium',\n {\n variants: {\n size: {\n xs: 'size-4',\n sm: 'size-6',\n md: 'size-9',\n lg: 'size-10',\n },\n variant: {\n default: '',\n primary: '',\n info: '',\n success: '',\n warning: '',\n danger: '',\n },\n shape: {\n circle: 'rounded-full',\n square: 'rounded',\n },\n inverted: {\n true: '',\n false: '',\n },\n stroke: {\n true: 'border border-base',\n false: '',\n },\n },\n defaultVariants: {\n size: 'md',\n shape: 'circle',\n variant: 'default',\n inverted: false,\n stroke: false,\n },\n compoundVariants: [\n {\n variant: 'default',\n inverted: false,\n className: 'bg-default text-default',\n },\n {\n variant: 'primary',\n inverted: false,\n className: 'bg-primary text-white',\n },\n {\n variant: 'info',\n inverted: false,\n className: 'bg-info text-white',\n },\n {\n variant: 'success',\n inverted: false,\n className: 'bg-success text-white',\n },\n {\n variant: 'warning',\n inverted: false,\n className: 'bg-warning text-white',\n },\n {\n variant: 'danger',\n inverted: false,\n className: 'bg-danger text-white',\n },\n {\n variant: 'default',\n inverted: true,\n className: 'bg-default-inverted text-white',\n },\n {\n variant: 'primary',\n inverted: true,\n className: 'bg-primary-inverted text-default',\n },\n {\n variant: 'info',\n inverted: true,\n className: 'bg-info-inverted text-default',\n },\n {\n variant: 'success',\n inverted: true,\n className: 'bg-success-inverted text-default',\n },\n {\n variant: 'warning',\n inverted: true,\n className: 'bg-warning-inverted text-default',\n },\n {\n variant: 'danger',\n inverted: true,\n className: 'bg-danger-inverted text-default',\n },\n ],\n },\n);\n\nexport const avatarImageStyles = cva(\n 'absolute inset-0 size-full object-cover',\n {\n variants: {\n shape: {\n circle: 'rounded-full',\n square: 'rounded',\n },\n size: {\n xs: '',\n sm: '',\n md: '',\n lg: '',\n },\n },\n defaultVariants: {\n shape: 'circle',\n size: 'md',\n },\n },\n);\n\nexport const avatarTextStyles = cva('relative leading-none font-semibold', {\n variants: {\n size: {\n xs: 'text-xs',\n sm: 'text-xs',\n md: 'text-sm',\n lg: 'text-base',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n});\n\nexport const avatarIconStyles = cva('relative shrink-0', {\n variants: {\n size: {\n xs: 'size-2',\n sm: 'size-3',\n md: 'size-4',\n lg: 'size-5',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n});\n\nexport const avatarStatusStyles = cva(\n 'absolute z-10 rounded-full border border-white',\n {\n variants: {\n status: {\n info: 'bg-info',\n success: 'bg-success',\n warning: 'bg-warning',\n danger: 'bg-danger',\n primary: 'bg-primary',\n },\n shape: {\n circle: '',\n square: '',\n },\n position: {\n 'top-right': '',\n 'top-left': '',\n 'bottom-right': '',\n 'bottom-left': '',\n },\n size: {\n xs: 'size-1.5',\n sm: 'size-1.5',\n md: 'size-2',\n lg: 'size-2.5',\n },\n },\n compoundVariants: [\n {\n shape: 'square',\n position: 'top-right',\n className: 'right-0 top-0 translate-x-[2px] -translate-y-[2px]',\n },\n {\n shape: 'square',\n position: 'top-left',\n className: 'left-0 top-0 -translate-x-[2px] -translate-y-[2px]',\n },\n {\n shape: 'square',\n position: 'bottom-right',\n className: 'right-0 bottom-0 translate-x-[2px] translate-y-[2px]',\n },\n {\n shape: 'square',\n position: 'bottom-left',\n className: 'left-0 bottom-0 -translate-x-[2px] translate-y-[2px]',\n },\n {\n shape: 'circle',\n position: 'top-right',\n className: 'right-0.5 top-0.5',\n },\n {\n shape: 'circle',\n position: 'top-left',\n className: 'left-0.5 top-0.5',\n },\n {\n shape: 'circle',\n position: 'bottom-right',\n className: 'right-0.5 bottom-0.5',\n },\n {\n shape: 'circle',\n position: 'bottom-left',\n className: 'left-0.5 bottom-0.5',\n },\n ],\n defaultVariants: {\n status: 'primary',\n position: 'top-right',\n shape: 'circle',\n size: 'md',\n },\n },\n);\n","import type { FC, HTMLAttributes } from 'react';\nimport { type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/utils';\n\nimport {\n avatarContainerStyles,\n avatarIconStyles,\n avatarImageStyles,\n avatarStatusStyles,\n avatarTextStyles,\n} from './Avatar.styles';\nimport type {\n AvatarIcon,\n AvatarImage,\n AvatarSizes,\n AvatarShapes,\n AvatarVariants,\n AvatarStatus,\n AvatarStatusPosition,\n} from './types';\n\nexport interface AvatarProps\n extends\n HTMLAttributes<HTMLSpanElement>,\n Omit<VariantProps<typeof avatarContainerStyles>, 'stroke'> {\n icon?: AvatarIcon;\n img?: AvatarImage;\n initials?: string;\n status?: AvatarStatus;\n statusPosition?: AvatarStatusPosition;\n size?: AvatarSizes;\n shape?: AvatarShapes;\n variant?: AvatarVariants;\n inverted?: boolean;\n stroke?: boolean;\n}\n\nexport const Avatar: FC<AvatarProps> = ({\n icon: Icon,\n img,\n initials,\n status,\n statusPosition = 'top-right',\n size = 'md',\n shape = 'circle',\n variant = 'default',\n inverted = false,\n stroke = false,\n className,\n role = 'img',\n ...restProps\n}) => {\n const hasImage = typeof img?.src === 'string' && img.src.length > 0;\n const hasIcon = typeof Icon !== 'undefined';\n const normalizedInitials = initials?.trim();\n const resolvedInitials =\n size === 'xs' ? normalizedInitials?.slice(0, 1) : normalizedInitials;\n const showInitials = Boolean(resolvedInitials);\n const resolvedAriaLabel =\n restProps['aria-label'] ??\n (hasImage\n ? img?.alt || 'User avatar'\n : hasIcon\n ? 'User avatar'\n : showInitials\n ? `${resolvedInitials} avatar`\n : 'User avatar');\n\n return (\n <span\n {...restProps}\n role={role}\n aria-label={resolvedAriaLabel}\n className={cn(\n avatarContainerStyles({\n size,\n shape,\n variant,\n inverted,\n stroke,\n }),\n className,\n )}\n >\n {hasImage ? (\n <img\n src={img.src}\n alt={img.alt}\n className={avatarImageStyles({ shape })}\n />\n ) : hasIcon ? (\n <Icon\n className={avatarIconStyles({ size })}\n aria-hidden='true'\n focusable='false'\n />\n ) : showInitials ? (\n <span className={avatarTextStyles({ size })}>{resolvedInitials}</span>\n ) : null}\n\n {status && (\n <span\n data-avatar-status\n className={avatarStatusStyles({\n status,\n shape,\n position: statusPosition,\n size,\n })}\n />\n )}\n </span>\n );\n};\n","import { cva } from 'class-variance-authority';\n\nexport const avatarGroupStyles = cva(\n 'inline-flex items-center -space-x-[8px]',\n {\n variants: {\n size: {\n xs: '',\n sm: '',\n md: '',\n lg: '',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n\nexport const avatarGroupCounterStyles = cva(\n 'inline-flex shrink-0 items-center justify-center border border-base text-white font-medium leading-none z-10',\n {\n variants: {\n variant: {\n default: 'bg-default-pressed',\n primary: 'bg-primary-pressed',\n info: 'bg-info-pressed',\n success: 'bg-success-pressed',\n warning: 'bg-warning-pressed',\n danger: 'bg-danger-pressed',\n },\n size: {\n xs: 'size-4 text-xs',\n sm: 'size-6 text-xs',\n md: 'size-9 text-sm',\n lg: 'size-10 text-base',\n },\n shape: {\n circle: 'rounded-full',\n square: 'rounded',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'md',\n shape: 'circle',\n },\n compoundVariants: [],\n },\n);\n","import type { FC } from 'react';\n\nimport { cn } from '@/utils';\n\nimport { Avatar } from '../Avatar';\nimport {\n avatarGroupCounterStyles,\n avatarGroupStyles,\n} from './AvatarGroup.styles';\nimport type { AvatarGroupProps } from './types';\n\nexport const AvatarGroup: FC<AvatarGroupProps> = ({\n items,\n size = 'md',\n variant = 'default',\n shape = 'circle',\n max = 4,\n inverted = false,\n stroke = true,\n className,\n role = 'group',\n ...restProps\n}) => {\n const { ['aria-label']: ariaLabel, ...rest } = restProps;\n const normalizedItems = items ?? [];\n const normalizedMax = Math.max(1, max);\n const visibleItems = normalizedItems.slice(0, normalizedMax);\n const remaining = Math.max(0, normalizedItems.length - visibleItems.length);\n const resolvedAriaLabel = ariaLabel ?? 'Avatar group';\n\n return (\n <div\n {...rest}\n role={role}\n aria-label={resolvedAriaLabel}\n className={cn(avatarGroupStyles({ size }), className)}\n >\n {visibleItems.map((item, index) => (\n <Avatar\n key={item.id ?? index}\n {...item}\n variant={variant}\n size={size}\n shape={shape}\n inverted={inverted}\n stroke={stroke}\n />\n ))}\n {remaining > 0 && (\n <span\n aria-hidden='true'\n className={avatarGroupCounterStyles({ size, shape, variant })}\n >\n +{remaining}\n </span>\n )}\n </div>\n );\n};\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n return array(select.apply(this, arguments));\n };\n}\n\nexport default function(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nexport function childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\nexport default function(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = new Map,\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function(value, key) {\n if (!arguments.length) return Array.from(this, datum);\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data\n ? data // Array, TypedArray, NodeList, array-like\n : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter) enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update) update = update.selection();\n }\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n var selection = context.selection ? context.selection() : context;\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","function contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","export default function*() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) yield node;\n }\n }\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","export default function(event) {\n let sourceEvent;\n while (sourceEvent = event.sourceEvent) event = sourceEvent;\n return event;\n}\n","import sourceEvent from \"./sourceEvent.js\";\n\nexport default function(event, node) {\n event = sourceEvent(event);\n if (node === undefined) node = event.currentTarget;\n if (node) {\n var svg = node.ownerSVGElement || node;\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n if (node.getBoundingClientRect) {\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n }\n }\n return [event.pageX, event.pageY];\n}\n","export default function cumsum(values, valueof) {\n var sum = 0, index = 0;\n return Float64Array.from(values, valueof === undefined\n ? v => (sum += +v || 0)\n : v => (sum += +valueof(v, index++, values) || 0));\n}","export default function max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\n}\n","export default function min(values, valueof) {\n let min;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n }\n return min;\n}\n","export default function sum(values, valueof) {\n let sum = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value = +value) {\n sum += value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if (value = +valueof(value, ++index, values)) {\n sum += value;\n }\n }\n }\n return sum;\n}\n","function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;\n else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\n\nexport default function() {\n return this.eachAfter(count);\n}\n","export default function(callback, that) {\n let index = -1;\n for (const node of this) {\n callback.call(that, node, ++index, this);\n }\n return this;\n}\n","export default function(callback, that) {\n var node = this, nodes = [node], children, i, index = -1;\n while (node = nodes.pop()) {\n callback.call(that, node, ++index, this);\n if (children = node.children) {\n for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n }\n return this;\n}\n","export default function(callback, that) {\n var node = this, nodes = [node], next = [], children, i, n, index = -1;\n while (node = nodes.pop()) {\n next.push(node);\n if (children = node.children) {\n for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n }\n while (node = next.pop()) {\n callback.call(that, node, ++index, this);\n }\n return this;\n}\n","export default function(callback, that) {\n let index = -1;\n for (const node of this) {\n if (callback.call(that, node, ++index, this)) {\n return node;\n }\n }\n}\n","export default function(value) {\n return this.eachAfter(function(node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}\n","export default function(compare) {\n return this.eachBefore(function(node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\n","export default function(end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\n","export default function() {\n var node = this, nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n var leaves = [];\n this.eachBefore(function(node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}\n","export default function() {\n var root = this, links = [];\n root.each(function(node) {\n if (node !== root) { // Don’t include the root’s parent, if any.\n links.push({source: node.parent, target: node});\n }\n });\n return links;\n}\n","export default function*() {\n var node = this, current, next = [node], children, i, n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n yield node;\n if (children = node.children) {\n for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n }\n } while (next.length);\n}\n","import node_count from \"./count.js\";\nimport node_each from \"./each.js\";\nimport node_eachBefore from \"./eachBefore.js\";\nimport node_eachAfter from \"./eachAfter.js\";\nimport node_find from \"./find.js\";\nimport node_sum from \"./sum.js\";\nimport node_sort from \"./sort.js\";\nimport node_path from \"./path.js\";\nimport node_ancestors from \"./ancestors.js\";\nimport node_descendants from \"./descendants.js\";\nimport node_leaves from \"./leaves.js\";\nimport node_links from \"./links.js\";\nimport node_iterator from \"./iterator.js\";\n\nexport default function hierarchy(data, children) {\n if (data instanceof Map) {\n data = [undefined, data];\n if (children === undefined) children = mapChildren;\n } else if (children === undefined) {\n children = objectChildren;\n }\n\n var root = new Node(data),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n\n while (node = nodes.pop()) {\n if ((childs = children(node.data)) && (n = (childs = Array.from(childs)).length)) {\n node.children = childs;\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = childs[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n\n return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\n\nfunction objectChildren(d) {\n return d.children;\n}\n\nfunction mapChildren(d) {\n return Array.isArray(d) ? d[1] : null;\n}\n\nfunction copyData(node) {\n if (node.data.value !== undefined) node.value = node.data.value;\n node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height;\n while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n this.data = data;\n this.depth =\n this.height = 0;\n this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n constructor: Node,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n find: node_find,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy,\n [Symbol.iterator]: node_iterator\n};\n","export function optional(f) {\n return f == null ? null : required(f);\n}\n\nexport function required(f) {\n if (typeof f !== \"function\") throw new Error;\n return f;\n}\n","import {optional} from \"./accessors.js\";\nimport {Node, computeHeight} from \"./hierarchy/index.js\";\n\nvar preroot = {depth: -1},\n ambiguous = {},\n imputed = {};\n\nfunction defaultId(d) {\n return d.id;\n}\n\nfunction defaultParentId(d) {\n return d.parentId;\n}\n\nexport default function() {\n var id = defaultId,\n parentId = defaultParentId,\n path;\n\n function stratify(data) {\n var nodes = Array.from(data),\n currentId = id,\n currentParentId = parentId,\n n,\n d,\n i,\n root,\n parent,\n node,\n nodeId,\n nodeKey,\n nodeByKey = new Map;\n\n if (path != null) {\n const I = nodes.map((d, i) => normalize(path(d, i, data)));\n const P = I.map(parentof);\n const S = new Set(I).add(\"\");\n for (const i of P) {\n if (!S.has(i)) {\n S.add(i);\n I.push(i);\n P.push(parentof(i));\n nodes.push(imputed);\n }\n }\n currentId = (_, i) => I[i];\n currentParentId = (_, i) => P[i];\n }\n\n for (i = 0, n = nodes.length; i < n; ++i) {\n d = nodes[i], node = nodes[i] = new Node(d);\n if ((nodeId = currentId(d, i, data)) != null && (nodeId += \"\")) {\n nodeKey = node.id = nodeId;\n nodeByKey.set(nodeKey, nodeByKey.has(nodeKey) ? ambiguous : node);\n }\n if ((nodeId = currentParentId(d, i, data)) != null && (nodeId += \"\")) {\n node.parent = nodeId;\n }\n }\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (nodeId = node.parent) {\n parent = nodeByKey.get(nodeId);\n if (!parent) throw new Error(\"missing: \" + nodeId);\n if (parent === ambiguous) throw new Error(\"ambiguous: \" + nodeId);\n if (parent.children) parent.children.push(node);\n else parent.children = [node];\n node.parent = parent;\n } else {\n if (root) throw new Error(\"multiple roots\");\n root = node;\n }\n }\n\n if (!root) throw new Error(\"no root\");\n\n // When imputing internal nodes, only introduce roots if needed.\n // Then replace the imputed marker data with null.\n if (path != null) {\n while (root.data === imputed && root.children.length === 1) {\n root = root.children[0], --n;\n }\n for (let i = nodes.length - 1; i >= 0; --i) {\n node = nodes[i];\n if (node.data !== imputed) break;\n node.data = null;\n }\n }\n\n root.parent = preroot;\n root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(computeHeight);\n root.parent = null;\n if (n > 0) throw new Error(\"cycle\");\n\n return root;\n }\n\n stratify.id = function(x) {\n return arguments.length ? (id = optional(x), stratify) : id;\n };\n\n stratify.parentId = function(x) {\n return arguments.length ? (parentId = optional(x), stratify) : parentId;\n };\n\n stratify.path = function(x) {\n return arguments.length ? (path = optional(x), stratify) : path;\n };\n\n return stratify;\n}\n\n// To normalize a path, we coerce to a string, strip the trailing slash if any\n// (as long as the trailing slash is not immediately preceded by another slash),\n// and add leading slash if missing.\nfunction normalize(path) {\n path = `${path}`;\n let i = path.length;\n if (slash(path, i - 1) && !slash(path, i - 2)) path = path.slice(0, -1);\n return path[0] === \"/\" ? path : `/${path}`;\n}\n\n// Walk backwards to find the first slash that is not the leading slash, e.g.:\n// \"/foo/bar\" ⇥ \"/foo\", \"/foo\" ⇥ \"/\", \"/\" ↦ \"\". (The root is special-cased\n// because the id of the root must be a truthy value.)\nfunction parentof(path) {\n let i = path.length;\n if (i < 2) return \"\";\n while (--i > 1) if (slash(path, i)) break;\n return path.slice(0, i);\n}\n\n// Slashes can be escaped; to determine whether a slash is a path delimiter, we\n// count the number of preceding backslashes escaping the forward slash: an odd\n// number indicates an escaped forward slash.\nfunction slash(path, i) {\n if (path[i] === \"/\") {\n let k = 0;\n while (i > 0 && path[--i] === \"\\\\\") ++k;\n if ((k & 1) === 0) return true;\n }\n return false;\n}\n","import {Node} from \"./hierarchy/index.js\";\n\nfunction defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\n// function radialSeparation(a, b) {\n// return (a.parent === b.parent ? 1 : 2) / a.depth;\n// }\n\n// This function is used to traverse the left contour of a subtree (or\n// subforest). It returns the successor of v on this contour. This successor is\n// either given by the leftmost child of v or by the thread of v. The function\n// returns null if and only if v is on the highest level of its subtree.\nfunction nextLeft(v) {\n var children = v.children;\n return children ? children[0] : v.t;\n}\n\n// This function works analogously to nextLeft.\nfunction nextRight(v) {\n var children = v.children;\n return children ? children[children.length - 1] : v.t;\n}\n\n// Shifts the current subtree rooted at w+. This is done by increasing\n// prelim(w+) and mod(w+) by shift.\nfunction moveSubtree(wm, wp, shift) {\n var change = shift / (wp.i - wm.i);\n wp.c -= change;\n wp.s += shift;\n wm.c += change;\n wp.z += shift;\n wp.m += shift;\n}\n\n// All other shifts, applied to the smaller subtrees between w- and w+, are\n// performed by this function. To prepare the shifts, we have to adjust\n// change(w+), shift(w+), and change(w-).\nfunction executeShifts(v) {\n var shift = 0,\n change = 0,\n children = v.children,\n i = children.length,\n w;\n while (--i >= 0) {\n w = children[i];\n w.z += shift;\n w.m += shift;\n shift += w.s + (change += w.c);\n }\n}\n\n// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise,\n// returns the specified (default) ancestor.\nfunction nextAncestor(vim, v, ancestor) {\n return vim.a.parent === v.parent ? vim.a : ancestor;\n}\n\nfunction TreeNode(node, i) {\n this._ = node;\n this.parent = null;\n this.children = null;\n this.A = null; // default ancestor\n this.a = this; // ancestor\n this.z = 0; // prelim\n this.m = 0; // mod\n this.c = 0; // change\n this.s = 0; // shift\n this.t = null; // thread\n this.i = i; // number\n}\n\nTreeNode.prototype = Object.create(Node.prototype);\n\nfunction treeRoot(root) {\n var tree = new TreeNode(root, 0),\n node,\n nodes = [tree],\n child,\n children,\n i,\n n;\n\n while (node = nodes.pop()) {\n if (children = node._.children) {\n node.children = new Array(n = children.length);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new TreeNode(children[i], i));\n child.parent = node;\n }\n }\n }\n\n (tree.parent = new TreeNode(null, 0)).children = [tree];\n return tree;\n}\n\n// Node-link tree diagram using the Reingold-Tilford \"tidy\" algorithm\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = null;\n\n function tree(root) {\n var t = treeRoot(root);\n\n // Compute the layout using Buchheim et al.’s algorithm.\n t.eachAfter(firstWalk), t.parent.m = -t.z;\n t.eachBefore(secondWalk);\n\n // If a fixed node size is specified, scale x and y.\n if (nodeSize) root.eachBefore(sizeNode);\n\n // If a fixed tree size is specified, scale x and y based on the extent.\n // Compute the left-most, right-most, and depth-most nodes for extents.\n else {\n var left = root,\n right = root,\n bottom = root;\n root.eachBefore(function(node) {\n if (node.x < left.x) left = node;\n if (node.x > right.x) right = node;\n if (node.depth > bottom.depth) bottom = node;\n });\n var s = left === right ? 1 : separation(left, right) / 2,\n tx = s - left.x,\n kx = dx / (right.x + s + tx),\n ky = dy / (bottom.depth || 1);\n root.eachBefore(function(node) {\n node.x = (node.x + tx) * kx;\n node.y = node.depth * ky;\n });\n }\n\n return root;\n }\n\n // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is\n // applied recursively to the children of v, as well as the function\n // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the\n // node v is placed to the midpoint of its outermost children.\n function firstWalk(v) {\n var children = v.children,\n siblings = v.parent.children,\n w = v.i ? siblings[v.i - 1] : null;\n if (children) {\n executeShifts(v);\n var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n if (w) {\n v.z = w.z + separation(v._, w._);\n v.m = v.z - midpoint;\n } else {\n v.z = midpoint;\n }\n } else if (w) {\n v.z = w.z + separation(v._, w._);\n }\n v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n }\n\n // Computes all real x-coordinates by summing up the modifiers recursively.\n function secondWalk(v) {\n v._.x = v.z + v.parent.m;\n v.m += v.parent.m;\n }\n\n // The core of the algorithm. Here, a new subtree is combined with the\n // previous subtrees. Threads are used to traverse the inside and outside\n // contours of the left and right subtree up to the highest common level. The\n // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the\n // superscript o means outside and i means inside, the subscript - means left\n // subtree and + means right subtree. For summing up the modifiers along the\n // contour, we use respective variables si+, si-, so-, and so+. Whenever two\n // nodes of the inside contours conflict, we compute the left one of the\n // greatest uncommon ancestors using the function ANCESTOR and call MOVE\n // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.\n // Finally, we add a new thread (if necessary).\n function apportion(v, w, ancestor) {\n if (w) {\n var vip = v,\n vop = v,\n vim = w,\n vom = vip.parent.children[0],\n sip = vip.m,\n sop = vop.m,\n sim = vim.m,\n som = vom.m,\n shift;\n while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {\n vom = nextLeft(vom);\n vop = nextRight(vop);\n vop.a = v;\n shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n if (shift > 0) {\n moveSubtree(nextAncestor(vim, v, ancestor), v, shift);\n sip += shift;\n sop += shift;\n }\n sim += vim.m;\n sip += vip.m;\n som += vom.m;\n sop += vop.m;\n }\n if (vim && !nextRight(vop)) {\n vop.t = vim;\n vop.m += sim - sop;\n }\n if (vip && !nextLeft(vom)) {\n vom.t = vip;\n vom.m += sip - som;\n ancestor = v;\n }\n }\n return ancestor;\n }\n\n function sizeNode(node) {\n node.x *= dx;\n node.y = node.depth * dy;\n }\n\n tree.separation = function(x) {\n return arguments.length ? (separation = x, tree) : separation;\n };\n\n tree.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]);\n };\n\n tree.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null);\n };\n\n return tree;\n}\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","// These are typically used in conjunction with noevent to ensure that we can\n// preventDefault on the event.\nexport const nonpassive = {passive: false};\nexport const nonpassivecapture = {capture: true, passive: false};\n\nexport function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {select} from \"d3-selection\";\nimport noevent, {nonpassivecapture} from \"./noevent.js\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, nonpassivecapture);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, nonpassivecapture);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nexport function yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", noevent, nonpassivecapture);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","var epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\nexport default (function zoomRho(rho, rho2, rho4) {\n\n // p0 = [ux0, uy0, w0]\n // p1 = [ux1, uy1, w1]\n function zoom(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000 * rho / Math.SQRT2;\n\n return i;\n }\n\n zoom.rho = function(_) {\n var _1 = Math.max(1e-3, +_), _2 = _1 * _1, _4 = _2 * _2;\n return zoomRho(_1, _2, _4);\n };\n\n return zoom;\n})(Math.SQRT2, 2, 4);\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error;\n set(this, id).ease = v;\n };\n}\n\nexport default function(value) {\n if (typeof value !== \"function\") throw new Error;\n return this.each(easeVarying(this._id, value));\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n\n // The selection was empty, resolve end immediately\n if (size === 0) resolve();\n });\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","export default x => () => x;\n","export default function ZoomEvent(type, {\n sourceEvent,\n target,\n transform,\n dispatch\n}) {\n Object.defineProperties(this, {\n type: {value: type, enumerable: true, configurable: true},\n sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n target: {value: target, enumerable: true, configurable: true},\n transform: {value: transform, enumerable: true, configurable: true},\n _: {value: dispatch}\n });\n}\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n","export function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {select, pointer} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\n// except for pinch-to-zoom, which is sent as a wheel+ctrlKey event\nfunction defaultFilter(event) {\n return (!event.ctrlKey || event.type === 'wheel') && !event.button;\n}\n\nfunction defaultExtent() {\n var e = this;\n if (e instanceof SVGElement) {\n e = e.ownerSVGElement || e;\n if (e.hasAttribute(\"viewBox\")) {\n e = e.viewBox.baseVal;\n return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n }\n return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n }\n return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta(event) {\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002) * (event.ctrlKey ? 10 : 1);\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n return transform.translate(\n dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n );\n}\n\nexport default function() {\n var filter = defaultFilter,\n extent = defaultExtent,\n constrain = defaultConstrain,\n wheelDelta = defaultWheelDelta,\n touchable = defaultTouchable,\n scaleExtent = [0, Infinity],\n translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n duration = 250,\n interpolate = interpolateZoom,\n listeners = dispatch(\"start\", \"zoom\", \"end\"),\n touchstarting,\n touchfirst,\n touchending,\n touchDelay = 500,\n wheelDelay = 150,\n clickDistance2 = 0,\n tapDistance = 10;\n\n function zoom(selection) {\n selection\n .property(\"__zoom\", defaultTransform)\n .on(\"wheel.zoom\", wheeled, {passive: false})\n .on(\"mousedown.zoom\", mousedowned)\n .on(\"dblclick.zoom\", dblclicked)\n .filter(touchable)\n .on(\"touchstart.zoom\", touchstarted)\n .on(\"touchmove.zoom\", touchmoved)\n .on(\"touchend.zoom touchcancel.zoom\", touchended)\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n zoom.transform = function(collection, transform, point, event) {\n var selection = collection.selection ? collection.selection() : collection;\n selection.property(\"__zoom\", defaultTransform);\n if (collection !== selection) {\n schedule(collection, transform, point, event);\n } else {\n selection.interrupt().each(function() {\n gesture(this, arguments)\n .event(event)\n .start()\n .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n .end();\n });\n }\n };\n\n zoom.scaleBy = function(selection, k, p, event) {\n zoom.scaleTo(selection, function() {\n var k0 = this.__zoom.k,\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return k0 * k1;\n }, p, event);\n };\n\n zoom.scaleTo = function(selection, k, p, event) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t0 = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n p1 = t0.invert(p0),\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n }, p, event);\n };\n\n zoom.translateBy = function(selection, x, y, event) {\n zoom.transform(selection, function() {\n return constrain(this.__zoom.translate(\n typeof x === \"function\" ? x.apply(this, arguments) : x,\n typeof y === \"function\" ? y.apply(this, arguments) : y\n ), extent.apply(this, arguments), translateExtent);\n }, null, event);\n };\n\n zoom.translateTo = function(selection, x, y, p, event) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n typeof y === \"function\" ? -y.apply(this, arguments) : -y\n ), e, translateExtent);\n }, p, event);\n };\n\n function scale(transform, k) {\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n }\n\n function translate(transform, p0, p1) {\n var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n }\n\n function centroid(extent) {\n return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n }\n\n function schedule(transition, transform, point, event) {\n transition\n .on(\"start.zoom\", function() { gesture(this, arguments).event(event).start(); })\n .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).event(event).end(); })\n .tween(\"zoom\", function() {\n var that = this,\n args = arguments,\n g = gesture(that, args).event(event),\n e = extent.apply(that, args),\n p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n a = that.__zoom,\n b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n return function(t) {\n if (t === 1) t = b; // Avoid rounding error on end.\n else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n g.zoom(null, t);\n };\n });\n }\n\n function gesture(that, args, clean) {\n return (!clean && that.__zooming) || new Gesture(that, args);\n }\n\n function Gesture(that, args) {\n this.that = that;\n this.args = args;\n this.active = 0;\n this.sourceEvent = null;\n this.extent = extent.apply(that, args);\n this.taps = 0;\n }\n\n Gesture.prototype = {\n event: function(event) {\n if (event) this.sourceEvent = event;\n return this;\n },\n start: function() {\n if (++this.active === 1) {\n this.that.__zooming = this;\n this.emit(\"start\");\n }\n return this;\n },\n zoom: function(key, transform) {\n if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n this.that.__zoom = transform;\n this.emit(\"zoom\");\n return this;\n },\n end: function() {\n if (--this.active === 0) {\n delete this.that.__zooming;\n this.emit(\"end\");\n }\n return this;\n },\n emit: function(type) {\n var d = select(this.that).datum();\n listeners.call(\n type,\n this.that,\n new ZoomEvent(type, {\n sourceEvent: this.sourceEvent,\n target: zoom,\n type,\n transform: this.that.__zoom,\n dispatch: listeners\n }),\n d\n );\n }\n };\n\n function wheeled(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var g = gesture(this, args).event(event),\n t = this.__zoom,\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n p = pointer(event);\n\n // If the mouse is in the same location as before, reuse it.\n // If there were recent wheel events, reset the wheel idle timeout.\n if (g.wheel) {\n if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n g.mouse[1] = t.invert(g.mouse[0] = p);\n }\n clearTimeout(g.wheel);\n }\n\n // If this wheel event won’t trigger a transform change, ignore it.\n else if (t.k === k) return;\n\n // Otherwise, capture the mouse point and location at the start.\n else {\n g.mouse = [p, t.invert(p)];\n interrupt(this);\n g.start();\n }\n\n noevent(event);\n g.wheel = setTimeout(wheelidled, wheelDelay);\n g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n function wheelidled() {\n g.wheel = null;\n g.end();\n }\n }\n\n function mousedowned(event, ...args) {\n if (touchending || !filter.apply(this, arguments)) return;\n var currentTarget = event.currentTarget,\n g = gesture(this, args, true).event(event),\n v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n p = pointer(event, currentTarget),\n x0 = event.clientX,\n y0 = event.clientY;\n\n dragDisable(event.view);\n nopropagation(event);\n g.mouse = [p, this.__zoom.invert(p)];\n interrupt(this);\n g.start();\n\n function mousemoved(event) {\n noevent(event);\n if (!g.moved) {\n var dx = event.clientX - x0, dy = event.clientY - y0;\n g.moved = dx * dx + dy * dy > clickDistance2;\n }\n g.event(event)\n .zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = pointer(event, currentTarget), g.mouse[1]), g.extent, translateExtent));\n }\n\n function mouseupped(event) {\n v.on(\"mousemove.zoom mouseup.zoom\", null);\n dragEnable(event.view, g.moved);\n noevent(event);\n g.event(event).end();\n }\n }\n\n function dblclicked(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var t0 = this.__zoom,\n p0 = pointer(event.changedTouches ? event.changedTouches[0] : event, this),\n p1 = t0.invert(p0),\n k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, args), translateExtent);\n\n noevent(event);\n if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0, event);\n else select(this).call(zoom.transform, t1, p0, event);\n }\n\n function touchstarted(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var touches = event.touches,\n n = touches.length,\n g = gesture(this, args, event.changedTouches.length === n).event(event),\n started, i, t, p;\n\n nopropagation(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n p = [p, this.__zoom.invert(p), t.identifier];\n if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n }\n\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n if (started) {\n if (g.taps < 2) touchfirst = p[0], touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n interrupt(this);\n g.start();\n }\n }\n\n function touchmoved(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length, i, t, p, l;\n\n noevent(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n }\n t = g.that.__zoom;\n if (g.touch1) {\n var p0 = g.touch0[0], l0 = g.touch0[1],\n p1 = g.touch1[0], l1 = g.touch1[1],\n dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n t = scale(t, Math.sqrt(dp / dl));\n p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n }\n else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n else return;\n\n g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n }\n\n function touchended(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length, i, t;\n\n nopropagation(event);\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, touchDelay);\n for (i = 0; i < n; ++i) {\n t = touches[i];\n if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n }\n if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n else {\n g.end();\n // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n if (g.taps === 2) {\n t = pointer(t, this);\n if (Math.hypot(touchfirst[0] - t[0], touchfirst[1] - t[1]) < tapDistance) {\n var p = select(this).on(\"dblclick.zoom\");\n if (p) p.apply(this, arguments);\n }\n }\n }\n }\n\n zoom.wheelDelta = function(_) {\n return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n };\n\n zoom.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n };\n\n zoom.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n };\n\n zoom.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n };\n\n zoom.scaleExtent = function(_) {\n return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n };\n\n zoom.translateExtent = function(_) {\n return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n };\n\n zoom.constrain = function(_) {\n return arguments.length ? (constrain = _, zoom) : constrain;\n };\n\n zoom.duration = function(_) {\n return arguments.length ? (duration = +_, zoom) : duration;\n };\n\n zoom.interpolate = function(_) {\n return arguments.length ? (interpolate = _, zoom) : interpolate;\n };\n\n zoom.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? zoom : value;\n };\n\n zoom.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n };\n\n zoom.tapDistance = function(_) {\n return arguments.length ? (tapDistance = +_, zoom) : tapDistance;\n };\n\n return zoom;\n}\n","function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;\n else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\n\nexport default function() {\n return this.eachAfter(count);\n}\n","export default function(callback) {\n var node = this, current, next = [node], children, i, n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n callback(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n } while (next.length);\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], children, i;\n while (node = nodes.pop()) {\n callback(node), children = node.children;\n if (children) for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], next = [], children, i, n;\n while (node = nodes.pop()) {\n next.push(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n while (node = next.pop()) {\n callback(node);\n }\n return this;\n}\n","export default function(value) {\n return this.eachAfter(function(node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}\n","export default function(compare) {\n return this.eachBefore(function(node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\n","export default function(end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\n","export default function() {\n var node = this, nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\n","export default function() {\n var nodes = [];\n this.each(function(node) {\n nodes.push(node);\n });\n return nodes;\n}\n","export default function() {\n var leaves = [];\n this.eachBefore(function(node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}\n","export default function() {\n var root = this, links = [];\n root.each(function(node) {\n if (node !== root) { // Don’t include the root’s parent, if any.\n links.push({source: node.parent, target: node});\n }\n });\n return links;\n}\n","import node_count from \"./count.js\";\nimport node_each from \"./each.js\";\nimport node_eachBefore from \"./eachBefore.js\";\nimport node_eachAfter from \"./eachAfter.js\";\nimport node_sum from \"./sum.js\";\nimport node_sort from \"./sort.js\";\nimport node_path from \"./path.js\";\nimport node_ancestors from \"./ancestors.js\";\nimport node_descendants from \"./descendants.js\";\nimport node_leaves from \"./leaves.js\";\nimport node_links from \"./links.js\";\n\nexport default function hierarchy(data, children) {\n var root = new Node(data),\n valued = +data.value && (root.value = data.value),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n\n if (children == null) children = defaultChildren;\n\n while (node = nodes.pop()) {\n if (valued) node.value = +node.data.value;\n if ((childs = children(node.data)) && (n = childs.length)) {\n node.children = new Array(n);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n\n return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\n\nfunction defaultChildren(d) {\n return d.children;\n}\n\nfunction copyData(node) {\n node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height;\n while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n this.data = data;\n this.depth =\n this.height = 0;\n this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n constructor: Node,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy\n};\n","{\n \"name\": \"d3-flextree\",\n \"version\": \"2.1.2\",\n \"main\": \"build/d3-flextree.js\",\n \"module\": \"index\",\n \"jsnext:main\": \"index\",\n \"author\": {\n \"name\": \"Chris Maloney\",\n \"url\": \"http://chrismaloney.org\"\n },\n \"description\": \"Flexible tree layout algorithm that allows for variable node sizes.\",\n \"keywords\": [\n \"d3\",\n \"d3-module\",\n \"layout\",\n \"tree\",\n \"hierarchy\",\n \"d3-hierarchy\",\n \"plugin\",\n \"d3-plugin\",\n \"infovis\",\n \"visualization\",\n \"2d\"\n ],\n \"homepage\": \"https://github.com/klortho/d3-flextree\",\n \"license\": \"WTFPL\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/klortho/d3-flextree.git\"\n },\n \"scripts\": {\n \"clean\": \"rm -rf build demo test\",\n \"build:demo\": \"rollup -c --environment BUILD:demo\",\n \"build:dev\": \"rollup -c --environment BUILD:dev\",\n \"build:prod\": \"rollup -c --environment BUILD:prod\",\n \"build:test\": \"rollup -c --environment BUILD:test\",\n \"build\": \"rollup -c\",\n \"lint\": \"eslint index.js src\",\n \"test:main\": \"node test/bundle.js\",\n \"test:browser\": \"node test/browser-tests.js\",\n \"test\": \"npm-run-all test:*\",\n \"prepare\": \"npm-run-all clean build lint test\"\n },\n \"dependencies\": {\n \"d3-hierarchy\": \"^1.1.5\"\n },\n \"devDependencies\": {\n \"babel-plugin-external-helpers\": \"^6.22.0\",\n \"babel-preset-es2015-rollup\": \"^3.0.0\",\n \"d3\": \"^4.13.0\",\n \"d3-selection-multi\": \"^1.0.1\",\n \"eslint\": \"^4.19.1\",\n \"jsdom\": \"^11.6.2\",\n \"npm-run-all\": \"^4.1.2\",\n \"rollup\": \"^0.55.3\",\n \"rollup-plugin-babel\": \"^2.7.1\",\n \"rollup-plugin-commonjs\": \"^8.0.2\",\n \"rollup-plugin-copy\": \"^0.2.3\",\n \"rollup-plugin-json\": \"^2.3.0\",\n \"rollup-plugin-node-resolve\": \"^3.0.2\",\n \"rollup-plugin-uglify\": \"^3.0.0\",\n \"uglify-es\": \"^3.3.9\"\n }\n}\n","import {hierarchy} from 'd3-hierarchy';\nimport packageInfo from '../package.json';\n\nconst {version} = packageInfo;\nconst defaults = Object.freeze({\n children: data => data.children,\n nodeSize: node => node.data.size,\n spacing: 0,\n});\n\n// Create a layout function with customizable options. Per D3-style, the\n// options can be set at any time using setter methods. The layout function\n// will compute the tree node positions based on the options in effect at the\n// time it is called.\nexport default function flextree(options) {\n const opts = Object.assign({}, defaults, options);\n function accessor(name) {\n const opt = opts[name];\n return typeof opt === 'function' ? opt : () => opt;\n }\n\n function layout(tree) {\n const wtree = wrap(getWrapper(), tree, node=>node.children);\n wtree.update();\n return wtree.data;\n }\n\n function getFlexNode() {\n const nodeSize = accessor('nodeSize');\n const spacing = accessor('spacing');\n return class FlexNode extends hierarchy.prototype.constructor {\n constructor(data) {\n super(data);\n }\n copy() {\n const c = wrap(this.constructor, this, node=>node.children);\n c.each(node => node.data = node.data.data);\n return c;\n }\n get size() { return nodeSize(this); }\n spacing(oNode) { return spacing(this, oNode); }\n get nodes() { return this.descendants(); }\n get xSize() { return this.size[0]; }\n get ySize() { return this.size[1]; }\n get top() { return this.y; }\n get bottom() { return this.y + this.ySize; }\n get left() { return this.x - this.xSize / 2; }\n get right() { return this.x + this.xSize / 2; }\n get root() {\n const ancs = this.ancestors();\n return ancs[ancs.length - 1];\n }\n get numChildren() {\n return this.hasChildren ? this.children.length : 0;\n }\n get hasChildren() { return !this.noChildren; }\n get noChildren() { return this.children === null; }\n get firstChild() {\n return this.hasChildren ? this.children[0] : null;\n }\n get lastChild() {\n return this.hasChildren ? this.children[this.numChildren - 1] : null;\n }\n get extents() {\n return (this.children || []).reduce(\n (acc, kid) => FlexNode.maxExtents(acc, kid.extents),\n this.nodeExtents);\n }\n get nodeExtents() {\n return {\n top: this.top,\n bottom: this.bottom,\n left: this.left,\n right: this.right,\n };\n }\n static maxExtents(e0, e1) {\n return {\n top: Math.min(e0.top, e1.top),\n bottom: Math.max(e0.bottom, e1.bottom),\n left: Math.min(e0.left, e1.left),\n right: Math.max(e0.right, e1.right),\n };\n }\n };\n }\n\n function getWrapper() {\n const FlexNode = getFlexNode();\n const nodeSize = accessor('nodeSize');\n const spacing = accessor('spacing');\n return class extends FlexNode {\n constructor(data) {\n super(data);\n Object.assign(this, {\n x: 0, y: 0,\n relX: 0, prelim: 0, shift: 0, change: 0,\n lExt: this, lExtRelX: 0, lThr: null,\n rExt: this, rExtRelX: 0, rThr: null,\n });\n }\n get size() { return nodeSize(this.data); }\n spacing(oNode) { return spacing(this.data, oNode.data); }\n get x() { return this.data.x; }\n set x(v) { this.data.x = v; }\n get y() { return this.data.y; }\n set y(v) { this.data.y = v; }\n update() {\n layoutChildren(this);\n resolveX(this);\n return this;\n }\n };\n }\n\n function wrap(FlexClass, treeData, children) {\n const _wrap = (data, parent) => {\n const node = new FlexClass(data);\n Object.assign(node, {\n parent,\n depth: parent === null ? 0 : parent.depth + 1,\n height: 0,\n length: 1,\n });\n const kidsData = children(data) || [];\n node.children = kidsData.length === 0 ? null\n : kidsData.map(kd => _wrap(kd, node));\n if (node.children) {\n Object.assign(node, node.children.reduce(\n (hl, kid) => ({\n height: Math.max(hl.height, kid.height + 1),\n length: hl.length + kid.length,\n }), node\n ));\n }\n return node;\n };\n return _wrap(treeData, null);\n }\n\n\n Object.assign(layout, {\n nodeSize(arg) {\n return arguments.length ? (opts.nodeSize = arg, layout) : opts.nodeSize;\n },\n spacing(arg) {\n return arguments.length ? (opts.spacing = arg, layout) : opts.spacing;\n },\n children(arg) {\n return arguments.length ? (opts.children = arg, layout) : opts.children;\n },\n hierarchy(treeData, children) {\n const kids = typeof children === 'undefined' ? opts.children : children;\n return wrap(getFlexNode(), treeData, kids);\n },\n dump(tree) {\n const nodeSize = accessor('nodeSize');\n const _dump = i0 => node => {\n const i1 = i0 + ' ';\n const i2 = i0 + ' ';\n const {x, y} = node;\n const size = nodeSize(node);\n const kids = (node.children || []);\n const kdumps = (kids.length === 0) ? ' ' :\n `,${i1}children: [${i2}${kids.map(_dump(i2)).join(i2)}${i1}],${i0}`;\n return `{ size: [${size.join(', ')}],${i1}x: ${x}, y: ${y}${kdumps}},`;\n };\n return _dump('\\n')(tree);\n },\n });\n return layout;\n}\nflextree.version = version;\n\nconst layoutChildren = (w, y = 0) => {\n w.y = y;\n (w.children || []).reduce((acc, kid) => {\n const [i, lastLows] = acc;\n layoutChildren(kid, w.y + w.ySize);\n // The lowest vertical coordinate while extreme nodes still point\n // in current subtree.\n const lowY = (i === 0 ? kid.lExt : kid.rExt).bottom;\n if (i !== 0) separate(w, i, lastLows);\n const lows = updateLows(lowY, i, lastLows);\n return [i + 1, lows];\n }, [0, null]);\n shiftChange(w);\n positionRoot(w);\n return w;\n};\n\n// Resolves the relative coordinate properties - relX and prelim --\n// to set the final, absolute x coordinate for each node. This also sets\n// `prelim` to 0, so that `relX` for each node is its x-coordinate relative\n// to its parent.\nconst resolveX = (w, prevSum, parentX) => {\n // A call to resolveX without arguments is assumed to be for the root of\n // the tree. This will set the root's x-coord to zero.\n if (typeof prevSum === 'undefined') {\n prevSum = -w.relX - w.prelim;\n parentX = 0;\n }\n const sum = prevSum + w.relX;\n w.relX = sum + w.prelim - parentX;\n w.prelim = 0;\n w.x = parentX + w.relX;\n (w.children || []).forEach(k => resolveX(k, sum, w.x));\n return w;\n};\n\n// Process shift and change for all children, to add intermediate spacing to\n// each child's modifier.\nconst shiftChange = w => {\n (w.children || []).reduce((acc, child) => {\n const [lastShiftSum, lastChangeSum] = acc;\n const shiftSum = lastShiftSum + child.shift;\n const changeSum = lastChangeSum + shiftSum + child.change;\n child.relX += changeSum;\n return [shiftSum, changeSum];\n }, [0, 0]);\n};\n\n// Separates the latest child from its previous sibling\n/* eslint-disable complexity */\nconst separate = (w, i, lows) => {\n const lSib = w.children[i - 1];\n const curSubtree = w.children[i];\n let rContour = lSib;\n let rSumMods = lSib.relX;\n let lContour = curSubtree;\n let lSumMods = curSubtree.relX;\n let isFirst = true;\n while (rContour && lContour) {\n if (rContour.bottom > lows.lowY) lows = lows.next;\n // How far to the left of the right side of rContour is the left side\n // of lContour? First compute the center-to-center distance, then add\n // the \"spacing\"\n const dist =\n (rSumMods + rContour.prelim) - (lSumMods + lContour.prelim) +\n rContour.xSize / 2 + lContour.xSize / 2 +\n rContour.spacing(lContour);\n if (dist > 0 || (dist < 0 && isFirst)) {\n lSumMods += dist;\n // Move subtree by changing relX.\n moveSubtree(curSubtree, dist);\n distributeExtra(w, i, lows.index, dist);\n }\n isFirst = false;\n // Advance highest node(s) and sum(s) of modifiers\n const rightBottom = rContour.bottom;\n const leftBottom = lContour.bottom;\n if (rightBottom <= leftBottom) {\n rContour = nextRContour(rContour);\n if (rContour) rSumMods += rContour.relX;\n }\n if (rightBottom >= leftBottom) {\n lContour = nextLContour(lContour);\n if (lContour) lSumMods += lContour.relX;\n }\n }\n // Set threads and update extreme nodes. In the first case, the\n // current subtree is taller than the left siblings.\n if (!rContour && lContour) setLThr(w, i, lContour, lSumMods);\n // In the next case, the left siblings are taller than the current subtree\n else if (rContour && !lContour) setRThr(w, i, rContour, rSumMods);\n};\n/* eslint-enable complexity */\n\n// Move subtree by changing relX.\nconst moveSubtree = (subtree, distance) => {\n subtree.relX += distance;\n subtree.lExtRelX += distance;\n subtree.rExtRelX += distance;\n};\n\nconst distributeExtra = (w, curSubtreeI, leftSibI, dist) => {\n const curSubtree = w.children[curSubtreeI];\n const n = curSubtreeI - leftSibI;\n // Are there intermediate children?\n if (n > 1) {\n const delta = dist / n;\n w.children[leftSibI + 1].shift += delta;\n curSubtree.shift -= delta;\n curSubtree.change -= dist - delta;\n }\n};\n\nconst nextLContour = w => {\n return w.hasChildren ? w.firstChild : w.lThr;\n};\n\nconst nextRContour = w => {\n return w.hasChildren ? w.lastChild : w.rThr;\n};\n\nconst setLThr = (w, i, lContour, lSumMods) => {\n const firstChild = w.firstChild;\n const lExt = firstChild.lExt;\n const curSubtree = w.children[i];\n lExt.lThr = lContour;\n // Change relX so that the sum of modifier after following thread is correct.\n const diff = lSumMods - lContour.relX - firstChild.lExtRelX;\n lExt.relX += diff;\n // Change preliminary x coordinate so that the node does not move.\n lExt.prelim -= diff;\n // Update extreme node and its sum of modifiers.\n firstChild.lExt = curSubtree.lExt;\n firstChild.lExtRelX = curSubtree.lExtRelX;\n};\n\n// Mirror image of setLThr.\nconst setRThr = (w, i, rContour, rSumMods) => {\n const curSubtree = w.children[i];\n const rExt = curSubtree.rExt;\n const lSib = w.children[i - 1];\n rExt.rThr = rContour;\n const diff = rSumMods - rContour.relX - curSubtree.rExtRelX;\n rExt.relX += diff;\n rExt.prelim -= diff;\n curSubtree.rExt = lSib.rExt;\n curSubtree.rExtRelX = lSib.rExtRelX;\n};\n\n// Position root between children, taking into account their modifiers\nconst positionRoot = w => {\n if (w.hasChildren) {\n const k0 = w.firstChild;\n const kf = w.lastChild;\n const prelim = (k0.prelim + k0.relX - k0.xSize / 2 +\n kf.relX + kf.prelim + kf.xSize / 2 ) / 2;\n Object.assign(w, {\n prelim,\n lExt: k0.lExt, lExtRelX: k0.lExtRelX,\n rExt: kf.rExt, rExtRelX: kf.rExtRelX,\n });\n }\n};\n\n// Make/maintain a linked list of the indexes of left siblings and their\n// lowest vertical coordinate.\nconst updateLows = (lowY, index, lastLows) => {\n // Remove siblings that are hidden by the new subtree.\n while (lastLows !== null && lowY >= lastLows.lowY)\n lastLows = lastLows.next;\n // Prepend the new subtree.\n return {\n lowY,\n index,\n next: lastLows,\n };\n};\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","const pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction append(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += arguments[i] + strings[i];\n }\n}\n\nfunction appendRound(digits) {\n let d = Math.floor(digits);\n if (!(d >= 0)) throw new Error(`invalid digits: ${digits}`);\n if (d > 15) return append;\n const k = 10 ** d;\n return function(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += Math.round(arguments[i] * k) / k + strings[i];\n }\n };\n}\n\nexport class Path {\n constructor(digits) {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n this._append = digits == null ? append : appendRound(digits);\n }\n moveTo(x, y) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n }\n closePath() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._append`Z`;\n }\n }\n lineTo(x, y) {\n this._append`L${this._x1 = +x},${this._y1 = +y}`;\n }\n quadraticCurveTo(x1, y1, x, y) {\n this._append`Q${+x1},${+y1},${this._x1 = +x},${this._y1 = +y}`;\n }\n bezierCurveTo(x1, y1, x2, y2, x, y) {\n this._append`C${+x1},${+y1},${+x2},${+y2},${this._x1 = +x},${this._y1 = +y}`;\n }\n arcTo(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._append`M${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._append`L${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Otherwise, draw an arc!\n else {\n let x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._append`L${x1 + t01 * x01},${y1 + t01 * y01}`;\n }\n\n this._append`A${r},${r},0,0,${+(y01 * x20 > x01 * y20)},${this._x1 = x1 + t21 * x21},${this._y1 = y1 + t21 * y21}`;\n }\n }\n arc(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._append`M${x0},${y0}`;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._append`L${x0},${y0}`;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._append`A${r},${r},0,1,${cw},${x - dx},${y - dy}A${r},${r},0,1,${cw},${this._x1 = x0},${this._y1 = y0}`;\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._append`A${r},${r},0,${+(da >= pi)},${cw},${this._x1 = x + r * Math.cos(a1)},${this._y1 = y + r * Math.sin(a1)}`;\n }\n }\n rect(x, y, w, h) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${w = +w}v${+h}h${-w}Z`;\n }\n toString() {\n return this._;\n }\n}\n\nexport function path() {\n return new Path;\n}\n\n// Allow instanceof d3.path\npath.prototype = Path.prototype;\n\nexport function pathRound(digits = 3) {\n return new Path(+digits);\n}\n","import {Path} from \"d3-path\";\n\nexport function withPath(shape) {\n let digits = 3;\n\n shape.digits = function(_) {\n if (!arguments.length) return digits;\n if (_ == null) {\n digits = null;\n } else {\n const d = Math.floor(_);\n if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n digits = d;\n }\n return shape;\n };\n\n return () => new Path(digits);\n}\n","export var slice = Array.prototype.slice;\n\nexport default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import pointRadial from \"../pointRadial.js\";\n\nclass Bump {\n constructor(context, x) {\n this._context = context;\n this._x = x;\n }\n areaStart() {\n this._line = 0;\n }\n areaEnd() {\n this._line = NaN;\n }\n lineStart() {\n this._point = 0;\n }\n lineEnd() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n }\n point(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: {\n this._point = 1;\n if (this._line) this._context.lineTo(x, y);\n else this._context.moveTo(x, y);\n break;\n }\n case 1: this._point = 2; // falls through\n default: {\n if (this._x) this._context.bezierCurveTo(this._x0 = (this._x0 + x) / 2, this._y0, this._x0, y, x, y);\n else this._context.bezierCurveTo(this._x0, this._y0 = (this._y0 + y) / 2, x, this._y0, x, y);\n break;\n }\n }\n this._x0 = x, this._y0 = y;\n }\n}\n\nclass BumpRadial {\n constructor(context) {\n this._context = context;\n }\n lineStart() {\n this._point = 0;\n }\n lineEnd() {}\n point(x, y) {\n x = +x, y = +y;\n if (this._point === 0) {\n this._point = 1;\n } else {\n const p0 = pointRadial(this._x0, this._y0);\n const p1 = pointRadial(this._x0, this._y0 = (this._y0 + y) / 2);\n const p2 = pointRadial(x, this._y0);\n const p3 = pointRadial(x, y);\n this._context.moveTo(...p0);\n this._context.bezierCurveTo(...p1, ...p2, ...p3);\n }\n this._x0 = x, this._y0 = y;\n }\n}\n\nexport function bumpX(context) {\n return new Bump(context, true);\n}\n\nexport function bumpY(context) {\n return new Bump(context, false);\n}\n\nexport function bumpRadial(context) {\n return new BumpRadial(context);\n}\n","import {slice} from \"./array.js\";\nimport constant from \"./constant.js\";\nimport {bumpX, bumpY, bumpRadial} from \"./curve/bump.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nfunction linkSource(d) {\n return d.source;\n}\n\nfunction linkTarget(d) {\n return d.target;\n}\n\nexport function link(curve) {\n let source = linkSource,\n target = linkTarget,\n x = pointX,\n y = pointY,\n context = null,\n output = null,\n path = withPath(link);\n\n function link() {\n let buffer;\n const argv = slice.call(arguments);\n const s = source.apply(this, argv);\n const t = target.apply(this, argv);\n if (context == null) output = curve(buffer = path());\n output.lineStart();\n argv[0] = s, output.point(+x.apply(this, argv), +y.apply(this, argv));\n argv[0] = t, output.point(+x.apply(this, argv), +y.apply(this, argv));\n output.lineEnd();\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n link.source = function(_) {\n return arguments.length ? (source = _, link) : source;\n };\n\n link.target = function(_) {\n return arguments.length ? (target = _, link) : target;\n };\n\n link.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), link) : x;\n };\n\n link.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), link) : y;\n };\n\n link.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), link) : context;\n };\n\n return link;\n}\n\nexport function linkHorizontal() {\n return link(bumpX);\n}\n\nexport function linkVertical() {\n return link(bumpY);\n}\n\nexport function linkRadial() {\n const l = link(bumpRadial);\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n return l;\n}\n","import { selection, select } from \"d3-selection\";\nimport { max, min, sum, cumsum } from \"d3-array\";\nimport { tree, stratify } from \"d3-hierarchy\";\nimport { zoom, zoomIdentity } from \"d3-zoom\";\nimport { flextree } from 'd3-flextree';\nimport { linkHorizontal } from 'd3-shape';\n\nconst d3 = {\n selection,\n select,\n max,\n min,\n sum,\n cumsum,\n tree,\n stratify,\n zoom,\n zoomIdentity,\n linkHorizontal,\n flextree\n}\n\nexport class OrgChart {\n constructor() {\n\n // Exposed variables test test\n const attrs = {\n\n /* NOT INTENDED FOR PUBLIC OVERRIDE */\n\n id: `ID${Math.floor(Math.random() * 1000000)}`, // Id for event handlings\n firstDraw: true, // Whether chart is drawn for the first time\n ctx: document.createElement('canvas').getContext('2d'),\n initialExpandLevel: 1,\n nodeDefaultBackground: 'none',\n lastTransform: { x: 0, y: 0, k: 1 }, // Panning and zooming values\n allowedNodesCount: {},\n zoomBehavior: null,\n generateRoot: null,\n\n /* INTENDED FOR PUBLIC OVERRIDE */\n\n svgWidth: 800, // Configure svg width\n svgHeight: window.innerHeight - 100, // Configure svg height\n container: \"body\", // Set parent container, either CSS style selector or DOM element\n data: null, // Set data, it must be an array of objects, where hierarchy is clearly defined via id and parent ID (property names are configurable)\n connections: [], // Sets connection data, array of objects, SAMPLE: [{from:\"145\",to:\"201\",label:\"Conflicts of interest\"}]\n defaultFont: \"Helvetica\", // Set default font\n nodeId: d => d.nodeId || d.id, // Configure accessor for node id, default is either odeId or id\n parentNodeId: d => d.parentNodeId || d.parentId, // Configure accessor for parent node id, default is either parentNodeId or parentId\n rootMargin: 40, // Configure how much root node is offset from top\n nodeWidth: d3Node => 250, // Configure each node width, use with caution, it is better to have the same value set for all nodes\n nodeHeight: d => 150, // Configure each node height, use with caution, it is better to have the same value set for all nodes\n neighbourMargin: (n1, n2) => 80, // Configure margin between two nodes, use with caution, it is better to have the same value set for all nodes\n siblingsMargin: d3Node => 20, // Configure margin between two siblings, use with caution, it is better to have the same value set for all nodes\n childrenMargin: d => 60, // Configure margin between parent and children, use with caution, it is better to have the same value set for all nodes\n compactMarginPair: d => 100, // Configure margin between two nodes in compact mode, use with caution, it is better to have the same value set for all nodes\n compactMarginBetween: (d3Node => 20), // Configure margin between two nodes in compact mode, use with caution, it is better to have the same value set for all nodes\n nodeButtonWidth: d => 40, // Configure expand & collapse button width\n nodeButtonHeight: d => 40, // Configure expand & collapse button height\n nodeButtonX: d => -20, // Configure expand & collapse button x position\n nodeButtonY: d => -20, // Configure expand & collapse button y position\n linkYOffset: 30, // When correcting links which is not working for safari\n pagingStep: d => 5, // Configure how many nodes to show when making new nodes appear\n minPagingVisibleNodes: d => 2000, // Configure minimum number of visible nodes , after which paging button appears\n scaleExtent: [0.001, 20], // Configure zoom scale extent , if you don't want any kind of zooming, set it to [1,1]\n duration: 400, // Configure duration of transitions\n imageName: 'Chart', // Configure exported PNG and SVG image name\n setActiveNodeCentered: true, // Configure if active node should be centered when expanded and collapsed\n layout: \"top\",// Configure layout direction , possible values are \"top\", \"left\", \"right\", \"bottom\"\n compact: true, // Configure if compact mode is enabled , when enabled, nodes are shown in compact positions, instead of horizontal spread\n createZoom: d => d3.zoom(),\n onZoomStart: e => { }, // Callback for zoom & panning start\n onZoom: e => { }, // Callback for zoom & panning \n onZoomEnd: e => { }, // Callback for zoom & panning end\n onNodeClick: (d) => d, // Callback for node click\n onExpandOrCollapse: (d) => d, // Callback for node expand or collapse\n\n /*\n * Node HTML content generation , remember that you can access some helper methods:\n\n * node=> node.data - to access node's original data\n * node=> node.leaves() - to access node's leaves\n * node=> node.descendants() - to access node's descendants\n * node=> node.children - to access node's children\n * node=> node.parent - to access node's parent\n * node=> node.depth - to access node's depth\n * node=> node.hierarchyHeight - to access node's hierarchy height ( Height, which d3 assigns to hierarchy nodes)\n * node=> node.height - to access node's height\n * node=> node.width - to access node's width\n * \n * You can also access additional properties to style your node:\n * \n * d=>d.data._centeredWithDescendants - when node is centered with descendants\n * d=>d.data._directSubordinatesPaging - subordinates count in paging mode\n * d=>d.data._directSubordinates - subordinates count\n * d=>d.data._totalSubordinates - total subordinates count\n * d=>d._highlighted - when node is highlighted\n * d=>d._upToTheRootHighlighted - when node is highlighted up to the root\n * d=>d._expanded - when node is expanded\n * d=>d.data._centered - when node is centered\n */\n nodeContent: d => `<div style=\"padding:5px;font-size:10px;\">Sample Node(id=${d.id}), override using <br/> \n <code>chart.nodeContent({data}=>{ <br/>\n &nbsp;&nbsp;&nbsp;&nbsp;return '' // Custom HTML <br/>\n })</code>\n <br/> \n Or check different <a href=\"https://github.com/bumbeishvili/org-chart#jump-to-examples\" target=\"_blank\">layout examples</a>\n </div>`,\n\n /* Node expand & collapse button content and styling. You can access same helper methods as above */\n buttonContent: ({ node, state }) => {\n const icons = {\n \"left\": d => d ?\n `<div style=\"display:flex;\"><span style=\"align-items:center;display:flex;\"><svg width=\"8\" height=\"8\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M14.283 3.50094L6.51 11.4749C6.37348 11.615 6.29707 11.8029 6.29707 11.9984C6.29707 12.194 6.37348 12.3819 6.51 12.5219L14.283 20.4989C14.3466 20.5643 14.4226 20.6162 14.5066 20.6516C14.5906 20.6871 14.6808 20.7053 14.772 20.7053C14.8632 20.7053 14.9534 20.6871 15.0374 20.6516C15.1214 20.6162 15.1974 20.5643 15.261 20.4989C15.3918 20.365 15.4651 20.1852 15.4651 19.9979C15.4651 19.8107 15.3918 19.6309 15.261 19.4969L7.9515 11.9984L15.261 4.50144C15.3914 4.36756 15.4643 4.18807 15.4643 4.00119C15.4643 3.81431 15.3914 3.63482 15.261 3.50094C15.1974 3.43563 15.1214 3.38371 15.0374 3.34827C14.9534 3.31282 14.8632 3.29456 14.772 3.29456C14.6808 3.29456 14.5906 3.31282 14.5066 3.34827C14.4226 3.38371 14.3466 3.43563 14.283 3.50094V3.50094Z\" fill=\"#716E7B\" stroke=\"#716E7B\"/>\n </svg></span><span style=\"color:#716E7B\">${node.data._directSubordinatesPaging} </span></div>` :\n `<div style=\"display:flex;\"><span style=\"align-items:center;display:flex;\"><svg width=\"8\" height=\"8\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7.989 3.49944C7.85817 3.63339 7.78492 3.8132 7.78492 4.00044C7.78492 4.18768 7.85817 4.36749 7.989 4.50144L15.2985 11.9999L7.989 19.4969C7.85817 19.6309 7.78492 19.8107 7.78492 19.9979C7.78492 20.1852 7.85817 20.365 7.989 20.4989C8.05259 20.5643 8.12863 20.6162 8.21261 20.6516C8.2966 20.6871 8.38684 20.7053 8.478 20.7053C8.56916 20.7053 8.6594 20.6871 8.74338 20.6516C8.82737 20.6162 8.90341 20.5643 8.967 20.4989L16.74 12.5234C16.8765 12.3834 16.9529 12.1955 16.9529 11.9999C16.9529 11.8044 16.8765 11.6165 16.74 11.4764L8.967 3.50094C8.90341 3.43563 8.82737 3.38371 8.74338 3.34827C8.6594 3.31282 8.56916 3.29456 8.478 3.29456C8.38684 3.29456 8.2966 3.31282 8.21261 3.34827C8.12863 3.38371 8.05259 3.43563 7.989 3.50094V3.49944Z\" fill=\"#716E7B\" stroke=\"#716E7B\"/>\n </svg></span><span style=\"color:#716E7B\">${node.data._directSubordinatesPaging} </span></div>`\n ,\n \"bottom\": d => d ? `<div style=\"display:flex;\"><span style=\"align-items:center;display:flex;\"><svg width=\"8\" height=\"8\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M19.497 7.98903L12 15.297L4.503 7.98903C4.36905 7.85819 4.18924 7.78495 4.002 7.78495C3.81476 7.78495 3.63495 7.85819 3.501 7.98903C3.43614 8.05257 3.38462 8.12842 3.34944 8.21213C3.31427 8.29584 3.29615 8.38573 3.29615 8.47653C3.29615 8.56733 3.31427 8.65721 3.34944 8.74092C3.38462 8.82463 3.43614 8.90048 3.501 8.96403L11.4765 16.74C11.6166 16.8765 11.8044 16.953 12 16.953C12.1956 16.953 12.3834 16.8765 12.5235 16.74L20.499 8.96553C20.5643 8.90193 20.6162 8.8259 20.6517 8.74191C20.6871 8.65792 20.7054 8.56769 20.7054 8.47653C20.7054 8.38537 20.6871 8.29513 20.6517 8.21114C20.6162 8.12715 20.5643 8.05112 20.499 7.98753C20.3651 7.85669 20.1852 7.78345 19.998 7.78345C19.8108 7.78345 19.6309 7.85669 19.497 7.98753V7.98903Z\" fill=\"#716E7B\" stroke=\"#716E7B\"/>\n </svg></span><span style=\"margin-left:1px;color:#716E7B\" >${node.data._directSubordinatesPaging} </span></div>\n ` : `<div style=\"display:flex;\"><span style=\"align-items:center;display:flex;\"><svg width=\"8\" height=\"8\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M11.457 8.07005L3.49199 16.4296C3.35903 16.569 3.28485 16.7543 3.28485 16.9471C3.28485 17.1398 3.35903 17.3251 3.49199 17.4646L3.50099 17.4736C3.56545 17.5414 3.64304 17.5954 3.72904 17.6324C3.81504 17.6693 3.90765 17.6883 4.00124 17.6883C4.09483 17.6883 4.18745 17.6693 4.27344 17.6324C4.35944 17.5954 4.43703 17.5414 4.50149 17.4736L12.0015 9.60155L19.4985 17.4736C19.563 17.5414 19.6405 17.5954 19.7265 17.6324C19.8125 17.6693 19.9052 17.6883 19.9987 17.6883C20.0923 17.6883 20.1849 17.6693 20.2709 17.6324C20.3569 17.5954 20.4345 17.5414 20.499 17.4736L20.508 17.4646C20.641 17.3251 20.7151 17.1398 20.7151 16.9471C20.7151 16.7543 20.641 16.569 20.508 16.4296L12.543 8.07005C12.4729 7.99653 12.3887 7.93801 12.2954 7.89801C12.202 7.85802 12.1015 7.8374 12 7.8374C11.8984 7.8374 11.798 7.85802 11.7046 7.89801C11.6113 7.93801 11.527 7.99653 11.457 8.07005Z\" fill=\"#716E7B\" stroke=\"#716E7B\"/>\n </svg></span><span style=\"margin-left:1px;color:#716E7B\" >${node.data._directSubordinatesPaging} </span></div>\n `,\n \"right\": d => d ? `<div style=\"display:flex;\"><span style=\"align-items:center;display:flex;\"><svg width=\"8\" height=\"8\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7.989 3.49944C7.85817 3.63339 7.78492 3.8132 7.78492 4.00044C7.78492 4.18768 7.85817 4.36749 7.989 4.50144L15.2985 11.9999L7.989 19.4969C7.85817 19.6309 7.78492 19.8107 7.78492 19.9979C7.78492 20.1852 7.85817 20.365 7.989 20.4989C8.05259 20.5643 8.12863 20.6162 8.21261 20.6516C8.2966 20.6871 8.38684 20.7053 8.478 20.7053C8.56916 20.7053 8.6594 20.6871 8.74338 20.6516C8.82737 20.6162 8.90341 20.5643 8.967 20.4989L16.74 12.5234C16.8765 12.3834 16.9529 12.1955 16.9529 11.9999C16.9529 11.8044 16.8765 11.6165 16.74 11.4764L8.967 3.50094C8.90341 3.43563 8.82737 3.38371 8.74338 3.34827C8.6594 3.31282 8.56916 3.29456 8.478 3.29456C8.38684 3.29456 8.2966 3.31282 8.21261 3.34827C8.12863 3.38371 8.05259 3.43563 7.989 3.50094V3.49944Z\" fill=\"#716E7B\" stroke=\"#716E7B\"/>\n </svg></span><span style=\"color:#716E7B\">${node.data._directSubordinatesPaging} </span></div>` :\n `<div style=\"display:flex;\"><span style=\"align-items:center;display:flex;\"><svg width=\"8\" height=\"8\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M14.283 3.50094L6.51 11.4749C6.37348 11.615 6.29707 11.8029 6.29707 11.9984C6.29707 12.194 6.37348 12.3819 6.51 12.5219L14.283 20.4989C14.3466 20.5643 14.4226 20.6162 14.5066 20.6516C14.5906 20.6871 14.6808 20.7053 14.772 20.7053C14.8632 20.7053 14.9534 20.6871 15.0374 20.6516C15.1214 20.6162 15.1974 20.5643 15.261 20.4989C15.3918 20.365 15.4651 20.1852 15.4651 19.9979C15.4651 19.8107 15.3918 19.6309 15.261 19.4969L7.9515 11.9984L15.261 4.50144C15.3914 4.36756 15.4643 4.18807 15.4643 4.00119C15.4643 3.81431 15.3914 3.63482 15.261 3.50094C15.1974 3.43563 15.1214 3.38371 15.0374 3.34827C14.9534 3.31282 14.8632 3.29456 14.772 3.29456C14.6808 3.29456 14.5906 3.31282 14.5066 3.34827C14.4226 3.38371 14.3466 3.43563 14.283 3.50094V3.50094Z\" fill=\"#716E7B\" stroke=\"#716E7B\"/>\n </svg></span><span style=\"color:#716E7B\">${node.data._directSubordinatesPaging} </span></div>`,\n \"top\": d => d ? `<div style=\"display:flex;\"><span style=\"align-items:center;display:flex;\"><svg width=\"8\" height=\"8\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M11.457 8.07005L3.49199 16.4296C3.35903 16.569 3.28485 16.7543 3.28485 16.9471C3.28485 17.1398 3.35903 17.3251 3.49199 17.4646L3.50099 17.4736C3.56545 17.5414 3.64304 17.5954 3.72904 17.6324C3.81504 17.6693 3.90765 17.6883 4.00124 17.6883C4.09483 17.6883 4.18745 17.6693 4.27344 17.6324C4.35944 17.5954 4.43703 17.5414 4.50149 17.4736L12.0015 9.60155L19.4985 17.4736C19.563 17.5414 19.6405 17.5954 19.7265 17.6324C19.8125 17.6693 19.9052 17.6883 19.9987 17.6883C20.0923 17.6883 20.1849 17.6693 20.2709 17.6324C20.3569 17.5954 20.4345 17.5414 20.499 17.4736L20.508 17.4646C20.641 17.3251 20.7151 17.1398 20.7151 16.9471C20.7151 16.7543 20.641 16.569 20.508 16.4296L12.543 8.07005C12.4729 7.99653 12.3887 7.93801 12.2954 7.89801C12.202 7.85802 12.1015 7.8374 12 7.8374C11.8984 7.8374 11.798 7.85802 11.7046 7.89801C11.6113 7.93801 11.527 7.99653 11.457 8.07005Z\" fill=\"#716E7B\" stroke=\"#716E7B\"/>\n </svg></span><span style=\"margin-left:1px;color:#716E7B\">${node.data._directSubordinatesPaging} </span></div>\n ` : `<div style=\"display:flex;\"><span style=\"align-items:center;display:flex;\"><svg width=\"8\" height=\"8\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M19.497 7.98903L12 15.297L4.503 7.98903C4.36905 7.85819 4.18924 7.78495 4.002 7.78495C3.81476 7.78495 3.63495 7.85819 3.501 7.98903C3.43614 8.05257 3.38462 8.12842 3.34944 8.21213C3.31427 8.29584 3.29615 8.38573 3.29615 8.47653C3.29615 8.56733 3.31427 8.65721 3.34944 8.74092C3.38462 8.82463 3.43614 8.90048 3.501 8.96403L11.4765 16.74C11.6166 16.8765 11.8044 16.953 12 16.953C12.1956 16.953 12.3834 16.8765 12.5235 16.74L20.499 8.96553C20.5643 8.90193 20.6162 8.8259 20.6517 8.74191C20.6871 8.65792 20.7054 8.56769 20.7054 8.47653C20.7054 8.38537 20.6871 8.29513 20.6517 8.21114C20.6162 8.12715 20.5643 8.05112 20.499 7.98753C20.3651 7.85669 20.1852 7.78345 19.998 7.78345C19.8108 7.78345 19.6309 7.85669 19.497 7.98753V7.98903Z\" fill=\"#716E7B\" stroke=\"#716E7B\"/>\n </svg></span><span style=\"margin-left:1px;color:#716E7B\">${node.data._directSubordinatesPaging} </span></div>\n `,\n }\n return `<div style=\"border:1px solid #E4E2E9;border-radius:3px;padding:3px;font-size:9px;margin:auto auto;background-color:white\"> ${icons[state.layout](node.children)} </div>`\n },\n /* Node paging button content and styling. You can access same helper methods as above. */\n pagingButton: (d, i, arr, state) => {\n const step = state.pagingStep(d.parent);\n const currentIndex = d.parent.data._pagingStep;\n const diff = d.parent.data._directSubordinatesPaging - currentIndex;\n const min = Math.min(diff, step);\n return `\n <div style=\"margin-top:90px;\">\n <div style=\"display:flex;width:170px;border-radius:20px;padding:5px 15px; padding-bottom:4px;;background-color:#E5E9F2\">\n <div><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M5.59 7.41L10.18 12L5.59 16.59L7 18L13 12L7 6L5.59 7.41ZM16 6H18V18H16V6Z\" fill=\"#716E7B\" stroke=\"#716E7B\"/>\n </svg>\n </div><div style=\"line-height:2\"> Show next ${min} nodes </div></div>\n </div>\n `\n },\n /* You can access and modify actual node DOM element in runtime using this method. */\n nodeUpdate: function (d, i, arr) {\n d3.select(this)\n .select('.node-rect')\n .attr(\"stroke\", d => d.data._highlighted || d.data._upToTheRootHighlighted ? '#E27396' : 'none')\n .attr(\"stroke-width\", d.data._highlighted || d.data._upToTheRootHighlighted ? 10 : 1)\n },\n nodeEnter: (d) => d, // Custom handling of node update\n nodeExit: (d) => d, // Custom handling of exit node\n /* You can access and modify actual link DOM element in runtime using this method. */\n linkUpdate: function (d, i, arr) {\n d3.select(this)\n .attr(\"stroke\", d => d.data._upToTheRootHighlighted ? '#E27396' : '#E4E2E9')\n .attr(\"stroke-width\", d => d.data._upToTheRootHighlighted ? 5 : 1)\n\n if (d.data._upToTheRootHighlighted) {\n d3.select(this).raise()\n }\n },\n /* Horizontal diagonal generation algorithm - https://observablehq.com/@bumbeishvili/curved-edges-compact-horizontal */\n hdiagonal: function (s, t, m) {\n // Define source and target x,y coordinates\n const x = s.x;\n const y = s.y;\n const ex = t.x;\n const ey = t.y;\n\n let mx = m && m.x != null ? m.x : x; // This is a changed line\n let my = m && m.y != null ? m.y : y; // This also is a changed line\n\n // Values in case of top reversed and left reversed diagonals\n let xrvs = ex - x < 0 ? -1 : 1;\n let yrvs = ey - y < 0 ? -1 : 1;\n\n // Define preferred curve radius\n let rdef = 35;\n\n // Reduce curve radius, if source-target x space is smaller\n let r = Math.abs(ex - x) / 2 < rdef ? Math.abs(ex - x) / 2 : rdef;\n\n // Further reduce curve radius, is y space is more small\n r = Math.abs(ey - y) / 2 < r ? Math.abs(ey - y) / 2 : r;\n\n // Defin width and height of link, excluding radius\n let h = Math.abs(ey - y) / 2 - r;\n let w = Math.abs(ex - x) / 2 - r;\n\n // Build and return custom arc command\n return `\n M ${mx} ${my}\n L ${mx} ${y}\n L ${x} ${y}\n L ${x + w * xrvs} ${y}\n C ${x + w * xrvs + r * xrvs} ${y} \n ${x + w * xrvs + r * xrvs} ${y} \n ${x + w * xrvs + r * xrvs} ${y + r * yrvs}\n L ${x + w * xrvs + r * xrvs} ${ey - r * yrvs} \n C ${x + w * xrvs + r * xrvs} ${ey} \n ${x + w * xrvs + r * xrvs} ${ey} \n ${ex - w * xrvs} ${ey}\n L ${ex} ${ey}\n `;\n },\n /* Vertical diagonal generation algorithm - https://observablehq.com/@bumbeishvili/curved-edges-compacty-vertical */\n diagonal: function (s, t, m, offsets = { sy: 0, }) {\n const x = s.x;\n let y = s.y;\n\n const ex = t.x;\n const ey = t.y;\n\n let mx = m && m.x != null ? m.x : x; // This is a changed line\n let my = m && m.y != null ? m.y : y; // This also is a changed line\n\n let xrvs = ex - x < 0 ? -1 : 1;\n let yrvs = ey - y < 0 ? -1 : 1;\n\n y += offsets.sy;\n\n\n let rdef = 35;\n let r = Math.abs(ex - x) / 2 < rdef ? Math.abs(ex - x) / 2 : rdef;\n\n r = Math.abs(ey - y) / 2 < r ? Math.abs(ey - y) / 2 : r;\n\n let h = Math.abs(ey - y) / 2 - r;\n let w = Math.abs(ex - x) - r * 2;\n //w=0;\n const path = `\n M ${mx} ${my}\n L ${x} ${my}\n L ${x} ${y}\n L ${x} ${y + h * yrvs}\n C ${x} ${y + h * yrvs + r * yrvs} ${x} ${y + h * yrvs + r * yrvs\n } ${x + r * xrvs} ${y + h * yrvs + r * yrvs}\n L ${x + w * xrvs + r * xrvs} ${y + h * yrvs + r * yrvs}\n C ${ex} ${y + h * yrvs + r * yrvs} ${ex} ${y + h * yrvs + r * yrvs\n } ${ex} ${ey - h * yrvs}\n L ${ex} ${ey}\n `;\n return path;\n },\n // Defining arrows with markers for connections\n defs: function (state, visibleConnections) {\n return `<defs>\n ${visibleConnections.map(conn => {\n const labelWidth = this.getTextWidth(conn.label, { ctx: state.ctx, fontSize: 2, defaultFont: state.defaultFont });\n return `\n <marker id=\"${conn.from + \"_\" + conn.to}\" refX=\"${conn._source.x < conn._target.x ? -7 : 7}\" refY=\"5\" markerWidth=\"500\" markerHeight=\"500\" orient=\"${conn._source.x < conn._target.x ? \"auto\" : \"auto-start-reverse\"}\" >\n <rect rx=0.5 width=${conn.label ? labelWidth + 3 : 0} height=3 y=1 fill=\"#E27396\"></rect>\n <text font-size=\"2px\" x=1 fill=\"white\" y=3>${conn.label || ''}</text>\n </marker>\n\n <marker id=\"arrow-${conn.from + \"_\" + conn.to}\" markerWidth=\"500\" markerHeight=\"500\" refY=\"2\" refX=\"1\" orient=\"${conn._source.x < conn._target.x ? \"auto\" : \"auto-start-reverse\"}\" >\n <path transform=\"translate(0)\" d='M0,0 V4 L2,2 Z' fill='#E27396' />\n </marker>\n `}).join(\"\")}\n </defs>\n `},\n /* You can update connections with custom styling using this function */\n connectionsUpdate: function (d, i, arr) {\n d3.select(this)\n .attr(\"stroke\", d => '#E27396')\n .attr('stroke-linecap', 'round')\n .attr(\"stroke-width\", d => '5')\n .attr('pointer-events', 'none')\n .attr(\"marker-start\", d => `url(#${d.from + \"_\" + d.to})`)\n .attr(\"marker-end\", d => `url(#arrow-${d.from + \"_\" + d.to})`)\n },\n // Link generator for connections\n linkGroupArc: d3.linkHorizontal().x(d => d.x).y(d => d.y),\n\n /*\n * You can customize/offset positions for each node and link by overriding these functions\n * For example, suppose you want to move link y position 30 px bellow in top layout. You can do it like this:\n * ```javascript\n * const layout = chart.layoutBindings();\n * layout.top.linkY = node => node.y + 30;\n * chart.layoutBindings(layout);\n * ```\n */\n layoutBindings: {\n \"left\": {\n \"nodeLeftX\": node => 0,\n \"nodeRightX\": node => node.width,\n \"nodeTopY\": node => - node.height / 2,\n \"nodeBottomY\": node => node.height / 2,\n \"nodeJoinX\": node => node.x + node.width,\n \"nodeJoinY\": node => node.y - node.height / 2,\n \"linkJoinX\": node => node.x + node.width,\n \"linkJoinY\": node => node.y,\n \"linkX\": node => node.x,\n \"linkY\": node => node.y,\n \"linkCompactXStart\": node => node.x + node.width / 2,//node.x + (node.compactEven ? node.width / 2 : -node.width / 2),\n \"linkCompactYStart\": node => node.y + (node.compactEven ? node.height / 2 : -node.height / 2),\n \"compactLinkMidX\": (node, state) => node.firstCompactNode.x,// node.firstCompactNode.x + node.firstCompactNode.flexCompactDim[0] / 4 + state.compactMarginPair(node) / 4,\n \"compactLinkMidY\": (node, state) => node.firstCompactNode.y + node.firstCompactNode.flexCompactDim[0] / 4 + state.compactMarginPair(node) / 4,\n \"linkParentX\": node => node.parent.x + node.parent.width,\n \"linkParentY\": node => node.parent.y,\n \"buttonX\": node => node.width,\n \"buttonY\": node => node.height / 2,\n \"centerTransform\": ({ root, rootMargin, centerY, scale, centerX }) => `translate(${rootMargin},${centerY}) scale(${scale})`,\n \"compactDimension\": {\n sizeColumn: node => node.height,\n sizeRow: node => node.width,\n reverse: arr => arr.slice().reverse()\n },\n \"nodeFlexSize\": ({ height, width, siblingsMargin, childrenMargin, state, node }) => {\n if (state.compact && node.flexCompactDim) {\n const result = [node.flexCompactDim[0], node.flexCompactDim[1]]\n return result;\n };\n return [height + siblingsMargin, width + childrenMargin]\n },\n \"zoomTransform\": ({ centerY, scale }) => `translate(${0},${centerY}) scale(${scale})`,\n \"diagonal\": this.hdiagonal.bind(this),\n \"swap\": d => { const x = d.x; d.x = d.y; d.y = x; },\n \"nodeUpdateTransform\": ({ x, y, width, height }) => `translate(${x},${y - height / 2})`,\n },\n \"top\": {\n \"nodeLeftX\": node => -node.width / 2,\n \"nodeRightX\": node => node.width / 2,\n \"nodeTopY\": node => 0,\n \"nodeBottomY\": node => node.height,\n \"nodeJoinX\": node => node.x - node.width / 2,\n \"nodeJoinY\": node => node.y + node.height,\n \"linkJoinX\": node => node.x,\n \"linkJoinY\": node => node.y + node.height,\n \"linkCompactXStart\": node => node.x + (node.compactEven ? node.width / 2 : -node.width / 2),\n \"linkCompactYStart\": node => node.y + node.height / 2,\n \"compactLinkMidX\": (node, state) => node.firstCompactNode.x + node.firstCompactNode.flexCompactDim[0] / 4 + state.compactMarginPair(node) / 4,\n \"compactLinkMidY\": node => node.firstCompactNode.y,\n \"compactDimension\": {\n sizeColumn: node => node.width,\n sizeRow: node => node.height,\n reverse: arr => arr,\n },\n \"linkX\": node => node.x,\n \"linkY\": node => node.y,\n \"linkParentX\": node => node.parent.x,\n \"linkParentY\": node => node.parent.y + node.parent.height,\n \"buttonX\": node => node.width / 2,\n \"buttonY\": node => node.height,\n \"centerTransform\": ({ root, rootMargin, centerY, scale, centerX }) => `translate(${centerX},${rootMargin}) scale(${scale})`,\n \"nodeFlexSize\": ({ height, width, siblingsMargin, childrenMargin, state, node, compactViewIndex }) => {\n if (state.compact && node.flexCompactDim) {\n const result = [node.flexCompactDim[0], node.flexCompactDim[1]]\n return result;\n };\n return [width + siblingsMargin, height + childrenMargin];\n },\n \"zoomTransform\": ({ centerX, scale }) => `translate(${centerX},0}) scale(${scale})`,\n \"diagonal\": this.diagonal.bind(this),\n \"swap\": d => { },\n \"nodeUpdateTransform\": ({ x, y, width, height }) => `translate(${x - width / 2},${y})`,\n\n },\n \"bottom\": {\n \"nodeLeftX\": node => -node.width / 2,\n \"nodeRightX\": node => node.width / 2,\n \"nodeTopY\": node => -node.height,\n \"nodeBottomY\": node => 0,\n \"nodeJoinX\": node => node.x - node.width / 2,\n \"nodeJoinY\": node => node.y - node.height - node.height,\n \"linkJoinX\": node => node.x,\n \"linkJoinY\": node => node.y - node.height,\n \"linkCompactXStart\": node => node.x + (node.compactEven ? node.width / 2 : -node.width / 2),\n \"linkCompactYStart\": node => node.y - node.height / 2,\n \"compactLinkMidX\": (node, state) => node.firstCompactNode.x + node.firstCompactNode.flexCompactDim[0] / 4 + state.compactMarginPair(node) / 4,\n \"compactLinkMidY\": node => node.firstCompactNode.y,\n \"linkX\": node => node.x,\n \"linkY\": node => node.y,\n \"compactDimension\": {\n sizeColumn: node => node.width,\n sizeRow: node => node.height,\n reverse: arr => arr,\n },\n \"linkParentX\": node => node.parent.x,\n \"linkParentY\": node => node.parent.y - node.parent.height,\n \"buttonX\": node => node.width / 2,\n \"buttonY\": node => 0,\n \"centerTransform\": ({ root, rootMargin, centerY, scale, centerX, chartHeight }) => `translate(${centerX},${chartHeight - rootMargin}) scale(${scale})`,\n \"nodeFlexSize\": ({ height, width, siblingsMargin, childrenMargin, state, node }) => {\n if (state.compact && node.flexCompactDim) {\n const result = [node.flexCompactDim[0], node.flexCompactDim[1]]\n return result;\n };\n return [width + siblingsMargin, height + childrenMargin]\n },\n \"zoomTransform\": ({ centerX, scale }) => `translate(${centerX},0}) scale(${scale})`,\n \"diagonal\": this.diagonal.bind(this),\n \"swap\": d => { d.y = -d.y; },\n \"nodeUpdateTransform\": ({ x, y, width, height }) => `translate(${x - width / 2},${y - height})`,\n },\n \"right\": {\n \"nodeLeftX\": node => -node.width,\n \"nodeRightX\": node => 0,\n \"nodeTopY\": node => - node.height / 2,\n \"nodeBottomY\": node => node.height / 2,\n \"nodeJoinX\": node => node.x - node.width - node.width,\n \"nodeJoinY\": node => node.y - node.height / 2,\n \"linkJoinX\": node => node.x - node.width,\n \"linkJoinY\": node => node.y,\n \"linkX\": node => node.x,\n \"linkY\": node => node.y,\n \"linkParentX\": node => node.parent.x - node.parent.width,\n \"linkParentY\": node => node.parent.y,\n \"buttonX\": node => 0,\n \"buttonY\": node => node.height / 2,\n \"linkCompactXStart\": node => node.x - node.width / 2,//node.x + (node.compactEven ? node.width / 2 : -node.width / 2),\n \"linkCompactYStart\": node => node.y + (node.compactEven ? node.height / 2 : -node.height / 2),\n \"compactLinkMidX\": (node, state) => node.firstCompactNode.x,// node.firstCompactNode.x + node.firstCompactNode.flexCompactDim[0] / 4 + state.compactMarginPair(node) / 4,\n \"compactLinkMidY\": (node, state) => node.firstCompactNode.y + node.firstCompactNode.flexCompactDim[0] / 4 + state.compactMarginPair(node) / 4,\n \"centerTransform\": ({ root, rootMargin, centerY, scale, centerX, chartWidth }) => `translate(${chartWidth - rootMargin},${centerY}) scale(${scale})`,\n \"nodeFlexSize\": ({ height, width, siblingsMargin, childrenMargin, state, node }) => {\n if (state.compact && node.flexCompactDim) {\n const result = [node.flexCompactDim[0], node.flexCompactDim[1]]\n return result;\n };\n return [height + siblingsMargin, width + childrenMargin]\n },\n \"compactDimension\": {\n sizeColumn: node => node.height,\n sizeRow: node => node.width,\n reverse: arr => arr.slice().reverse()\n },\n \"zoomTransform\": ({ centerY, scale }) => `translate(${0},${centerY}) scale(${scale})`,\n \"diagonal\": this.hdiagonal.bind(this),\n \"swap\": d => { const x = d.x; d.x = -d.y; d.y = x; },\n \"nodeUpdateTransform\": ({ x, y, width, height }) => `translate(${x - width},${y - height / 2})`,\n },\n }\n\n };\n\n this.getChartState = () => attrs;\n\n // Dynamically set getter and setter functions for Chart class\n Object.keys(attrs).forEach((key) => {\n //@ts-ignore\n this[key] = function (_) {\n if (!arguments.length) {\n return attrs[key];\n } else {\n attrs[key] = _;\n }\n return this;\n };\n });\n\n this.initializeEnterExitUpdatePattern();\n }\n\n initializeEnterExitUpdatePattern() {\n d3.selection.prototype.patternify = function (params) {\n var container = this;\n var selector = params.selector;\n var elementTag = params.tag;\n var data = params.data || [selector];\n\n // Pattern in action\n var selection = container.selectAll(\".\" + selector).data(data, (d, i) => {\n if (typeof d === \"object\") {\n if (d.id) { return d.id; }\n }\n return i;\n });\n selection.exit().remove();\n selection = selection.enter().append(elementTag).merge(selection);\n selection.attr(\"class\", selector);\n return selection;\n };\n }\n\n // This method retrieves passed node's children IDs (including node)\n getNodeChildren({ data, children, _children }, nodeStore) {\n // Store current node ID\n nodeStore.push(data);\n\n // Loop over children and recursively store descendants id (expanded nodes)\n if (children) {\n children.forEach((d) => {\n this.getNodeChildren(d, nodeStore);\n });\n }\n\n // Loop over _children and recursively store descendants id (collapsed nodes)\n if (_children) {\n _children.forEach((d) => {\n this.getNodeChildren(d, nodeStore);\n });\n }\n\n // Return result\n return nodeStore;\n }\n\n // This method can be invoked via chart.setZoomFactor API, it zooms to particulat scale\n initialZoom(zoomLevel) {\n const attrs = this.getChartState();\n attrs.lastTransform.k = zoomLevel;\n return this;\n }\n\n render() {\n //InnerFunctions which will update visuals\n const attrs = this.getChartState();\n if (!attrs.data || attrs.data.length == 0) {\n console.log('ORG CHART - Data is empty');\n if (attrs.container) {\n select(attrs.container).select('.nodes-wrapper').remove();\n select(attrs.container).select('.links-wrapper').remove();\n select(attrs.container).select('.connections-wrapper').remove();\n }\n return this;\n }\n\n //Drawing containers\n const container = d3.select(attrs.container);\n const containerRect = container.node().getBoundingClientRect();\n if (containerRect.width > 0) attrs.svgWidth = containerRect.width;\n\n //Calculated properties\n const calc = {\n id: `ID${Math.floor(Math.random() * 1000000)}`, // id for event handlings,\n chartWidth: attrs.svgWidth,\n chartHeight: attrs.svgHeight\n };\n attrs.calc = calc;\n\n // Calculate max node depth (it's needed for layout heights calculation)\n calc.centerX = calc.chartWidth / 2;\n calc.centerY = calc.chartHeight / 2;\n\n // ******************* BEHAVIORS **********************\n if (attrs.firstDraw) {\n const behaviors = {\n zoom: null\n };\n\n // Get zooming function\n behaviors.zoom = attrs.createZoom()\n .clickDistance(10)\n .on('start', (event, d) => attrs.onZoomStart(event))\n .on('end', (event, d) => attrs.onZoomEnd(event))\n .on(\"zoom\", (event, d) => {\n attrs.onZoom(event);\n this.zoomed(event, d);\n })\n .scaleExtent(attrs.scaleExtent)\n attrs.zoomBehavior = behaviors.zoom;\n }\n\n //****************** ROOT node work ************************\n\n attrs.flexTreeLayout = flextree({\n nodeSize: node => {\n const width = attrs.nodeWidth(node);;\n const height = attrs.nodeHeight(node);\n const siblingsMargin = attrs.siblingsMargin(node)\n const childrenMargin = attrs.childrenMargin(node);\n return attrs.layoutBindings[attrs.layout].nodeFlexSize({\n state: attrs,\n node: node,\n width,\n height,\n siblingsMargin,\n childrenMargin\n });\n }\n })\n .spacing((nodeA, nodeB) => nodeA.parent == nodeB.parent ? 0 : attrs.neighbourMargin(nodeA, nodeB));\n\n this.setLayouts({ expandNodesFirst: false });\n\n // ************************* DRAWING **************************\n //Add svg\n const svg = container\n .patternify({\n tag: \"svg\",\n selector: \"svg-chart-container\"\n })\n .attr(\"width\", attrs.svgWidth)\n .attr(\"height\", attrs.svgHeight)\n .attr(\"font-family\", attrs.defaultFont)\n\n if (attrs.firstDraw) {\n svg.call(attrs.zoomBehavior)\n .on(\"dblclick.zoom\", null)\n .attr(\"cursor\", \"move\")\n }\n\n attrs.svg = svg;\n\n //Add container g element\n const chart = svg\n .patternify({\n tag: \"g\",\n selector: \"chart\"\n })\n\n // Add one more container g element, for better positioning controls\n attrs.centerG = chart\n .patternify({\n tag: \"g\",\n selector: \"center-group\"\n })\n\n attrs.linksWrapper = attrs.centerG.patternify({\n tag: \"g\",\n selector: \"links-wrapper\"\n })\n\n attrs.nodesWrapper = attrs.centerG.patternify({\n tag: \"g\",\n selector: \"nodes-wrapper\"\n })\n\n attrs.connectionsWrapper = attrs.centerG.patternify({\n tag: \"g\",\n selector: \"connections-wrapper\"\n })\n\n attrs.defsWrapper = svg.patternify({\n tag: \"g\",\n selector: \"defs-wrapper\"\n })\n\n if (attrs.firstDraw) {\n attrs.centerG.attr(\"transform\", () => {\n return attrs.layoutBindings[attrs.layout].centerTransform({\n centerX: calc.centerX,\n centerY: calc.centerY,\n scale: attrs.lastTransform.k,\n rootMargin: attrs.rootMargin,\n root: attrs.root,\n chartHeight: calc.chartHeight,\n chartWidth: calc.chartWidth\n })\n });\n }\n\n attrs.chart = chart;\n\n // Display tree contenrs\n this.update(attrs.root);\n\n\n //######################################### UTIL FUNCS ##################################\n // This function restyles foreign object elements ()\n\n d3.select(window).on(`resize.${attrs.id}`, () => {\n const containerRect = d3.select(attrs.container).node().getBoundingClientRect();\n attrs.svg.attr('width', containerRect.width)\n });\n\n if (attrs.firstDraw) {\n attrs.firstDraw = false;\n }\n\n return this;\n }\n\n // This function can be invoked via chart.addNode API, and it adds node in tree at runtime\n addNode(obj) {\n const attrs = this.getChartState();\n if (obj && (attrs.parentNodeId(obj) == null || attrs.parentNodeId(obj) == attrs.nodeId(obj)) && attrs.data.length == 0) {\n attrs.data.push(obj);\n this.render()\n return this;\n }\n const root = attrs.generateRoot(attrs.data)\n const descendants = root.descendants();\n const nodeFound = descendants.filter(({ data }) => attrs.nodeId(data).toString() === attrs.nodeId(obj).toString())[0];\n const parentFound = descendants.filter(({ data }) => attrs.nodeId(data).toString() === attrs.parentNodeId(obj).toString())[0];\n if (nodeFound) {\n console.log(`ORG CHART - ADD - Node with id \"${attrs.nodeId(obj)}\" already exists in tree`)\n return this;\n }\n\n if (obj._centered && !obj._expanded) obj._expanded = true;\n attrs.data.push(obj);\n\n // Update state of nodes and redraw graph\n this.updateNodesState();\n\n return this;\n }\n\n // This function can be invoked via chart.removeNode API, and it removes node from tree at runtime\n removeNode(nodeId) {\n const attrs = this.getChartState();\n const root = attrs.generateRoot(attrs.data)\n const descendants = root.descendants();\n const node = descendants.filter(({ data }) => attrs.nodeId(data) == nodeId)[0];\n\n if (!node) {\n console.log(`ORG CHART - REMOVE - Node with id \"${nodeId}\" not found in the tree`);\n return this;\n }\n\n // Get all node descendants\n const nodeDescendants = node.descendants()\n\n // Mark all node children and node itself for removal\n nodeDescendants\n .forEach(d => d.data._filteredOut = true)\n\n // Filter out retrieved nodes and reassign data\n attrs.data = attrs.data.filter(d => !d._filteredOut);\n\n if (attrs.data.length == 0) {\n this.render();\n } else {\n const updateNodesState = this.updateNodesState.bind(this);\n // Update state of nodes and redraw graph\n updateNodesState();\n }\n return this;\n }\n\n groupBy(array, accessor, aggegator) {\n const grouped = {}\n array.forEach(item => {\n const key = accessor(item)\n if (!grouped[key]) {\n grouped[key] = []\n }\n grouped[key].push(item)\n })\n\n Object.keys(grouped).forEach(key => {\n grouped[key] = aggegator(grouped[key])\n })\n return Object.entries(grouped);\n }\n calculateCompactFlexDimensions(root) {\n const attrs = this.getChartState();\n root.eachBefore(node => {\n node.firstCompact = null;\n node.compactEven = null;\n node.flexCompactDim = null;\n node.firstCompactNode = null;\n })\n root.eachBefore(node => {\n if (node.children && node.children.length > 1) {\n const compactChildren = node.children\n .filter(d => !d.children)\n\n if (compactChildren.length < 2) return;\n compactChildren.forEach((child, i) => {\n if (!i) child.firstCompact = true;\n if (i % 2) child.compactEven = false;\n else child.compactEven = true;\n child.row = Math.floor(i / 2);\n })\n const evenMaxColumnDimension = d3.max(compactChildren.filter(d => d.compactEven), attrs.layoutBindings[attrs.layout].compactDimension.sizeColumn);\n const oddMaxColumnDimension = d3.max(compactChildren.filter(d => !d.compactEven), attrs.layoutBindings[attrs.layout].compactDimension.sizeColumn);\n const columnSize = Math.max(evenMaxColumnDimension, oddMaxColumnDimension) * 2;\n const rowsMapNew = this.groupBy(compactChildren, d => d.row, reducedGroup => d3.max(reducedGroup, d => attrs.layoutBindings[attrs.layout].compactDimension.sizeRow(d) + attrs.compactMarginBetween(d)));\n const rowSize = d3.sum(rowsMapNew.map(v => v[1]))\n compactChildren.forEach(node => {\n node.firstCompactNode = compactChildren[0];\n if (node.firstCompact) {\n node.flexCompactDim = [\n columnSize + attrs.compactMarginPair(node),\n rowSize - attrs.compactMarginBetween(node)\n ];\n } else {\n node.flexCompactDim = [0, 0];\n }\n })\n node.flexCompactDim = null;\n }\n })\n }\n\n calculateCompactFlexPositions(root) {\n const attrs = this.getChartState();\n root.eachBefore(node => {\n if (node.children) {\n const compactChildren = node.children.filter(d => d.flexCompactDim);\n const fch = compactChildren[0];\n if (!fch) return;\n compactChildren.forEach((child, i, arr) => {\n if (i == 0) fch.x -= fch.flexCompactDim[0] / 2;\n if (i & i % 2 - 1) child.x = fch.x + fch.flexCompactDim[0] * 0.25 - attrs.compactMarginPair(child) / 4;\n else if (i) child.x = fch.x + fch.flexCompactDim[0] * 0.75 + attrs.compactMarginPair(child) / 4;\n })\n const centerX = fch.x + fch.flexCompactDim[0] * 0.5;\n fch.x = fch.x + fch.flexCompactDim[0] * 0.25 - attrs.compactMarginPair(fch) / 4;\n const offsetX = node.x - centerX;\n if (Math.abs(offsetX) < 10) {\n compactChildren.forEach(d => d.x += offsetX);\n }\n\n const rowsMapNew = this.groupBy(compactChildren, d => d.row, reducedGroup => d3.max(reducedGroup, d => attrs.layoutBindings[attrs.layout].compactDimension.sizeRow(d)));\n const cumSum = d3.cumsum(rowsMapNew.map(d => d[1] + attrs.compactMarginBetween(d)));\n compactChildren\n .forEach((node, i) => {\n if (node.row) {\n node.y = fch.y + cumSum[node.row - 1]\n } else {\n node.y = fch.y;\n }\n })\n\n }\n })\n }\n\n // This function basically redraws visible graph, based on nodes state\n update({ x0, y0, x = 0, y = 0, width, height }) {\n const attrs = this.getChartState();\n const calc = attrs.calc;\n\n // Paging\n if (attrs.compact) {\n this.calculateCompactFlexDimensions(attrs.root);\n }\n\n // Assigns the x and y position for the nodes\n const treeData = attrs.flexTreeLayout(attrs.root);\n\n // Reassigns the x and y position for the based on the compact layout\n if (attrs.compact) {\n this.calculateCompactFlexPositions(attrs.root);\n }\n\n const nodes = treeData.descendants();\n\n // console.table(nodes.map(d => ({ x: d.x, y: d.y, width: d.width, height: d.height, flexCompactDim: d.flexCompactDim + \"\" })))\n\n // Get all links\n const links = treeData.descendants().slice(1);\n nodes.forEach(attrs.layoutBindings[attrs.layout].swap)\n\n // Connections\n const connections = attrs.connections;\n const allNodesMap = {};\n attrs.allNodes.forEach(d => allNodesMap[attrs.nodeId(d.data)] = d);\n\n const visibleNodesMap = {}\n nodes.forEach(d => visibleNodesMap[attrs.nodeId(d.data)] = d);\n\n connections.forEach(connection => {\n const source = allNodesMap[connection.from];\n const target = allNodesMap[connection.to];\n connection._source = source;\n connection._target = target;\n })\n const visibleConnections = connections.filter(d => visibleNodesMap[d.from] && visibleNodesMap[d.to]);\n const defsString = attrs.defs.bind(this)(attrs, visibleConnections);\n const existingString = attrs.defsWrapper.html();\n if (defsString !== existingString) {\n attrs.defsWrapper.html(defsString)\n }\n\n // -------------------------- LINKS ----------------------\n // Get links selection\n const linkSelection = attrs.linksWrapper\n .selectAll(\"path.link\")\n .data(links, (d) => attrs.nodeId(d.data));\n\n // Enter any new links at the parent's previous position.\n const linkEnter = linkSelection\n .enter()\n .insert(\"path\", \"g\")\n .attr(\"class\", \"link\")\n .attr(\"d\", (d) => {\n const xo = attrs.layoutBindings[attrs.layout].linkJoinX({ x: x0, y: y0, width, height });\n const yo = attrs.layoutBindings[attrs.layout].linkJoinY({ x: x0, y: y0, width, height });\n const o = { x: xo, y: yo };\n return attrs.layoutBindings[attrs.layout].diagonal(o, o, o);\n });\n\n // Get links update selection\n const linkUpdate = linkEnter.merge(linkSelection);\n\n // Styling links\n linkUpdate\n .attr(\"fill\", \"none\")\n\n\n if (this.isEdge()) {\n linkUpdate\n .style('display', d => {\n const display = d.data._pagingButton ? 'none' : 'auto'\n return display;\n })\n } else {\n linkUpdate\n .attr('display', d => {\n const display = d.data._pagingButton ? 'none' : 'auto'\n return display;\n })\n }\n\n // Allow external modifications\n linkUpdate.each(attrs.linkUpdate);\n\n // Transition back to the parent element position\n linkUpdate\n .transition()\n .duration(attrs.duration)\n .attr(\"d\", (d) => {\n const n = attrs.compact && d.flexCompactDim ?\n {\n x: attrs.layoutBindings[attrs.layout].compactLinkMidX(d, attrs),\n y: attrs.layoutBindings[attrs.layout].compactLinkMidY(d, attrs)\n } :\n {\n x: attrs.layoutBindings[attrs.layout].linkX(d),\n y: attrs.layoutBindings[attrs.layout].linkY(d)\n };\n\n const p = {\n x: attrs.layoutBindings[attrs.layout].linkParentX(d),\n y: attrs.layoutBindings[attrs.layout].linkParentY(d),\n };\n\n const m = attrs.compact && d.flexCompactDim ? {\n x: attrs.layoutBindings[attrs.layout].linkCompactXStart(d),\n y: attrs.layoutBindings[attrs.layout].linkCompactYStart(d),\n } : n;\n return attrs.layoutBindings[attrs.layout].diagonal(n, p, m, { sy: attrs.linkYOffset });\n });\n\n // Remove any links which is exiting after animation\n const linkExit = linkSelection\n .exit()\n .transition()\n .duration(attrs.duration)\n .attr(\"d\", (d) => {\n const xo = attrs.layoutBindings[attrs.layout].linkJoinX({ x, y, width, height });\n const yo = attrs.layoutBindings[attrs.layout].linkJoinY({ x, y, width, height });\n const o = { x: xo, y: yo };\n return attrs.layoutBindings[attrs.layout].diagonal(o, o, null, { sy: attrs.linkYOffset });\n })\n .remove();\n\n\n // -------------------------- CONNECTIONS ----------------------\n\n const connectionsSel = attrs.connectionsWrapper\n .selectAll(\"path.connection\")\n .data(visibleConnections)\n\n // Enter any new connections at the parent's previous position.\n const connEnter = connectionsSel\n .enter()\n .insert(\"path\", \"g\")\n .attr(\"class\", \"connection\")\n .attr(\"d\", (d) => {\n const xo = attrs.layoutBindings[attrs.layout].linkJoinX({ x: x0, y: y0, width, height });\n const yo = attrs.layoutBindings[attrs.layout].linkJoinY({ x: x0, y: y0, width, height });\n const o = { x: xo, y: yo };\n return attrs.layoutBindings[attrs.layout].diagonal(o, o, null, { sy: attrs.linkYOffset });\n });\n\n\n // Get connections update selection\n const connUpdate = connEnter.merge(connectionsSel);\n\n // Styling connections\n connUpdate.attr(\"fill\", \"none\")\n\n // Transition back to the parent element position\n connUpdate\n .transition()\n .duration(attrs.duration)\n .attr('d', (d) => {\n const xs = attrs.layoutBindings[attrs.layout].linkX({ x: d._source.x, y: d._source.y, width: d._source.width, height: d._source.height });\n const ys = attrs.layoutBindings[attrs.layout].linkY({ x: d._source.x, y: d._source.y, width: d._source.width, height: d._source.height });\n const xt = attrs.layoutBindings[attrs.layout].linkJoinX({ x: d._target.x, y: d._target.y, width: d._target.width, height: d._target.height });\n const yt = attrs.layoutBindings[attrs.layout].linkJoinY({ x: d._target.x, y: d._target.y, width: d._target.width, height: d._target.height });\n return attrs.linkGroupArc({ source: { x: xs, y: ys }, target: { x: xt, y: yt } })\n })\n\n // Allow external modifications\n connUpdate.each(attrs.connectionsUpdate);\n\n // Remove any links which is exiting after animation\n const connExit = connectionsSel\n .exit()\n .transition()\n .duration(attrs.duration)\n .attr('opacity', 0)\n .remove();\n\n // -------------------------- NODES ----------------------\n // Get nodes selection\n const nodesSelection = attrs.nodesWrapper\n .selectAll(\"g.node\")\n .data(nodes, ({ data }) => attrs.nodeId(data));\n\n // Enter any new nodes at the parent's previous position.\n const nodeEnter = nodesSelection\n .enter()\n .append(\"g\")\n .attr(\"class\", \"node\")\n .attr(\"transform\", (d) => {\n if (d == attrs.root) return `translate(${x0},${y0})`\n const xj = attrs.layoutBindings[attrs.layout].nodeJoinX({ x: x0, y: y0, width, height });\n const yj = attrs.layoutBindings[attrs.layout].nodeJoinY({ x: x0, y: y0, width, height });\n return `translate(${xj},${yj})`\n })\n .attr(\"cursor\", \"pointer\")\n .on(\"click.node\", (event, node) => {\n const { data } = node;\n if ([...event.srcElement.classList].includes(\"node-button-foreign-object\")) {\n return;\n }\n if ([...event.srcElement.classList].includes(\"paging-button-wrapper\")) {\n this.loadPagingNodes(node);\n return;\n }\n if (!data._pagingButton) {\n attrs.onNodeClick(node);\n return;\n }\n console.log('event fired, no handlers')\n })\n // Event handler to the expand button\n .on(\"keydown.node\", (event, node) => {\n const { data } = node;\n if (event.key === 'Enter' || event.key === ' ' || event.key === 'Spacebar') {\n if ([...event.srcElement.classList].includes(\"node-button-foreign-object\")) {\n return;\n }\n if ([...event.srcElement.classList].includes(\"paging-button-wrapper\")) {\n this.loadPagingNodes(node);\n return;\n }\n if (event.key === 'Enter' || event.key === ' ' || event.key === 'Spacebar') {\n this.onButtonClick(event, node)\n }\n }\n });\n nodeEnter.each(attrs.nodeEnter)\n\n // Add background rectangle for the nodes\n nodeEnter\n .patternify({\n tag: \"rect\",\n selector: \"node-rect\",\n data: (d) => [d]\n })\n\n // Node update styles\n const nodeUpdate = nodeEnter\n .merge(nodesSelection)\n .style(\"font\", \"12px sans-serif\");\n\n // Add foreignObject element inside rectangle\n const fo = nodeUpdate.patternify({\n tag: \"foreignObject\",\n selector: \"node-foreign-object\",\n data: (d) => [d]\n })\n .style('overflow', 'visible')\n\n // Add foreign object\n fo.patternify({\n tag: \"xhtml:div\",\n selector: \"node-foreign-object-div\",\n data: (d) => [d]\n })\n\n this.restyleForeignObjectElements();\n\n // Add Node button circle's group (expand-collapse button)\n const nodeButtonGroups = nodeEnter\n .patternify({\n tag: \"g\",\n selector: \"node-button-g\",\n data: (d) => [d]\n })\n .on(\"click\", (event, d) => this.onButtonClick(event, d))\n .on(\"keydown\", (event, d) => {\n if (event.key === 'Enter' || event.key === ' ' || event.key === 'Spacebar') {\n this.onButtonClick(event, d)\n }\n });\n\n nodeButtonGroups.patternify({\n tag: 'rect',\n selector: 'node-button-rect',\n data: (d) => [d]\n })\n .attr('opacity', 0)\n .attr('pointer-events', 'all')\n .attr('width', d => attrs.nodeButtonWidth(d))\n .attr('height', d => attrs.nodeButtonHeight(d))\n .attr('x', d => attrs.nodeButtonX(d))\n .attr('y', d => attrs.nodeButtonY(d))\n\n // Add expand collapse button content\n const nodeFo = nodeButtonGroups\n .patternify({\n tag: \"foreignObject\",\n selector: \"node-button-foreign-object\",\n data: (d) => [d]\n })\n .attr('width', d => attrs.nodeButtonWidth(d))\n .attr('height', d => attrs.nodeButtonHeight(d))\n .attr('x', d => attrs.nodeButtonX(d))\n .attr('y', d => attrs.nodeButtonY(d))\n .style('overflow', 'visible')\n .patternify({\n tag: \"xhtml:div\",\n selector: \"node-button-div\",\n data: (d) => [d]\n })\n .style('pointer-events', 'none')\n .style('display', 'flex')\n .style('width', '100%')\n .style('height', '100%')\n\n\n\n // Transition to the proper position for the node\n nodeUpdate\n .transition()\n .attr(\"opacity\", 0)\n .duration(attrs.duration)\n .attr(\"transform\", ({ x, y, width, height }) => {\n return attrs.layoutBindings[attrs.layout].nodeUpdateTransform({ x, y, width, height });\n\n })\n .attr(\"opacity\", 1);\n\n // Style node rectangles\n nodeUpdate\n .select(\".node-rect\")\n .attr(\"width\", ({ width }) => width)\n .attr(\"height\", ({ height }) => height)\n .attr(\"x\", ({ width }) => 0)\n .attr(\"y\", ({ height }) => 0)\n .attr(\"cursor\", \"pointer\")\n .attr('rx', 3)\n .attr(\"fill\", attrs.nodeDefaultBackground)\n\n\n nodeUpdate.select(\".node-button-g\").attr(\"transform\", ({ data, width, height }) => {\n const x = attrs.layoutBindings[attrs.layout].buttonX({ width, height });\n const y = attrs.layoutBindings[attrs.layout].buttonY({ width, height });\n return `translate(${x},${y})`\n })\n .attr(\"display\", ({ data }) => {\n return data._directSubordinates > 0 ? null : 'none';\n })\n .attr(\"opacity\", ({ data, children, _children }) => {\n if (data._pagingButton) {\n return 0;\n }\n if (children || _children) {\n return 1;\n }\n return 0;\n });\n\n // Restyle node button circle\n nodeUpdate\n .select(\".node-button-foreign-object .node-button-div\")\n .html((node) => {\n return attrs.buttonContent({ node, state: attrs })\n })\n\n // Restyle button texts\n nodeUpdate\n .select(\".node-button-text\")\n .attr(\"text-anchor\", \"middle\")\n .attr(\"alignment-baseline\", \"middle\")\n .attr(\"font-size\", ({ children }) => {\n if (children) return 40;\n return 26;\n })\n .text(({ children }) => {\n if (children) return \"-\";\n return \"+\";\n })\n .attr(\"y\", this.isEdge() ? 10 : 0);\n\n nodeUpdate.each(attrs.nodeUpdate)\n\n // Remove any exiting nodes after transition\n const nodeExitTransition = nodesSelection\n .exit()\n nodeExitTransition.each(attrs.nodeExit)\n\n const maxDepthNode = nodeExitTransition.data().reduce((a, b) => a.depth < b.depth ? a : b, { depth: Infinity });\n\n nodeExitTransition.attr(\"opacity\", 1)\n .transition()\n .duration(attrs.duration)\n .attr(\"transform\", (d) => {\n\n let { x, y, width, height } = maxDepthNode.parent || {};\n const ex = attrs.layoutBindings[attrs.layout].nodeJoinX({ x, y, width, height });\n const ey = attrs.layoutBindings[attrs.layout].nodeJoinY({ x, y, width, height });\n return `translate(${ex},${ey})`\n })\n .on(\"end\", function () {\n d3.select(this).remove();\n })\n .attr(\"opacity\", 0);\n\n // Store the old positions for transition.\n nodes.forEach((d) => {\n d.x0 = d.x;\n d.y0 = d.y;\n });\n\n // CHECK FOR CENTERING\n const centeredNode = attrs.allNodes.filter(d => d.data._centered)[0]\n if (centeredNode) {\n let centeredNodes = [centeredNode]\n if (centeredNode.data._centeredWithDescendants) {\n if (attrs.compact) {\n centeredNodes = centeredNode.descendants().filter((d, i) => i < 7);\n } else {\n centeredNodes = centeredNode.descendants().filter((d, i, arr) => {\n const h = Math.round(arr.length / 2);\n const spread = 2;\n if (arr.length % 2) {\n return i > h - spread && i < h + spread - 1;\n }\n\n return i > h - spread && i < h + spread;\n });\n }\n\n }\n centeredNode.data._centeredWithDescendants = null;\n centeredNode.data._centered = null;\n this.fit({\n animate: true,\n scale: false,\n nodes: centeredNodes\n })\n }\n\n }\n\n // This function detects whether current browser is edge\n isEdge() {\n return window.navigator.userAgent.includes(\"Edge\");\n }\n\n // Generate horizontal diagonal - play with it here - https://observablehq.com/@bumbeishvili/curved-edges-horizontal-d3-v3-v4-v5-v6\n hdiagonal(s, t, m, offsets) {\n const state = this.getChartState();\n return state.hdiagonal(s, t, m, offsets);\n }\n\n // Generate custom diagonal - play with it here - https://observablehq.com/@bumbeishvili/curved-edges\n diagonal(s, t, m, offsets) {\n const state = this.getChartState();\n return state.diagonal(s, t, m, offsets);\n }\n\n restyleForeignObjectElements() {\n const attrs = this.getChartState();\n\n attrs.svg\n .selectAll(\".node-foreign-object\")\n .attr(\"width\", ({ width }) => width)\n .attr(\"height\", ({ height }) => height)\n .attr(\"x\", ({ width }) => 0)\n .attr(\"y\", ({ height }) => 0);\n attrs.svg\n .selectAll(\".node-foreign-object-div\")\n .style(\"width\", ({ width }) => `${width}px`)\n .style(\"height\", ({ height }) => `${height}px`)\n .html(function (d, i, arr) {\n if (d.data._pagingButton) {\n return `<div class=\"paging-button-wrapper\"><div style=\"pointer-events:none\">${attrs.pagingButton(d, i, arr, attrs)}</div></div>`;\n }\n return attrs.nodeContent.bind(this)(d, i, arr, attrs)\n })\n }\n\n // Toggle children on click.\n onButtonClick(event, d) {\n const attrs = this.getChartState();\n if (d.data._pagingButton) {\n return;\n }\n if (attrs.setActiveNodeCentered) {\n d.data._centered = true;\n d.data._centeredWithDescendants = true;\n }\n\n // If childrens are expanded\n if (d.children) {\n //Collapse them\n d._children = d.children;\n d.children = null;\n\n // Set descendants expanded property to false\n this.setExpansionFlagToChildren(d, false);\n } else {\n // Expand children\n d.children = d._children;\n d._children = null;\n\n // Set each children as expanded\n if (d.children) {\n d.children.forEach(({ data }) => (data._expanded = true));\n }\n }\n\n // Redraw Graph\n this.update(d);\n event.stopPropagation();\n\n // Trigger callback\n attrs.onExpandOrCollapse(d);\n\n }\n\n // This function changes `expanded` property to descendants\n setExpansionFlagToChildren({ data, children, _children }, flag) {\n // Set flag to the current property\n data._expanded = flag;\n\n // Loop over and recursively update expanded children's descendants\n if (children) {\n children.forEach((d) => {\n this.setExpansionFlagToChildren(d, flag);\n });\n }\n\n // Loop over and recursively update collapsed children's descendants\n if (_children) {\n _children.forEach((d) => {\n this.setExpansionFlagToChildren(d, flag);\n });\n }\n }\n\n\n // Method which only expands nodes, which have property set \"expanded=true\"\n expandSomeNodes(d) {\n // If node has expanded property set\n if (d.data._expanded) {\n // Retrieve node's parent\n let parent = d.parent;\n\n // While we can go up\n while (parent && parent._children) {\n // Expand all current parent's children\n parent.children = parent._children;\n parent._children = null;\n // Replace current parent holding object\n parent = parent.parent;\n }\n }\n\n // Recursively do the same for collapsed nodes\n if (d._children) {\n d._children.forEach((ch) => this.expandSomeNodes(ch));\n }\n\n // Recursively do the same for expanded nodes\n if (d.children) {\n d.children.forEach((ch) => this.expandSomeNodes(ch));\n }\n }\n\n // This function updates nodes state and redraws graph, usually after data change\n updateNodesState() {\n const attrs = this.getChartState();\n\n\n this.setLayouts({ expandNodesFirst: true });\n\n // Redraw Graphs\n this.update(attrs.root);\n }\n\n setLayouts({ expandNodesFirst = true }) {\n const attrs = this.getChartState();\n // Store new root by converting flat data to hierarchy\n\n attrs.generateRoot = d3\n .stratify()\n .id((d) => attrs.nodeId(d))\n .parentId(d => attrs.parentNodeId(d))\n attrs.root = attrs.generateRoot(attrs.data);\n\n const descendantsBefore = attrs.root.descendants();\n if (attrs.initialExpandLevel > 1 && descendantsBefore.length > 0) {\n descendantsBefore.forEach((d) => {\n if (d.depth <= attrs.initialExpandLevel) {\n d.data._expanded = true;\n }\n })\n attrs.initialExpandLevel = 1;\n }\n\n\n const hiddenNodesMap = {};\n attrs.root.descendants()\n .filter(node => node.children)\n .filter(node => !node.data._pagingStep)\n .forEach(node => {\n node.data._pagingStep = attrs.minPagingVisibleNodes(node);\n })\n\n\n\n attrs.root.eachBefore((node, i) => {\n node.data._directSubordinatesPaging = node.children ? node.children.length : 0;\n if (node.children) {\n node.children.forEach((child, j) => {\n child.data._pagingButton = false;\n if (j > node.data._pagingStep) {\n hiddenNodesMap[child.id] = true;\n }\n if (j === node.data._pagingStep && (node.children.length - 1) > node.data._pagingStep) {\n child.data._pagingButton = true;\n }\n if (hiddenNodesMap[child.parent.id]) {\n hiddenNodesMap[child.id] = true;\n }\n if (child.data._expanded || child.data._centered || child.data._highlighted || child.data._upToTheRootHighlighted) {\n let localNode = child;\n while (localNode && (hiddenNodesMap[localNode.id] || localNode.data._pagingButton)) {\n hiddenNodesMap[localNode.id] = false;\n if (localNode.data._pagingButton) {\n localNode.data._pagingButton = false;\n localNode.parent.children.forEach(ch => {\n ch.data._expanded = true;\n hiddenNodesMap[ch.id] = false;\n })\n }\n localNode = localNode.parent;\n }\n }\n })\n }\n })\n\n\n attrs.root = d3\n .stratify()\n .id((d) => attrs.nodeId(d))\n .parentId(d => attrs.parentNodeId(d))(attrs.data.filter(d => hiddenNodesMap[d.id] !== true));\n\n attrs.root.each((node, i, arr) => {\n let _hierarchyHeight = node._hierarchyHeight || node.height\n let width = attrs.nodeWidth(node);\n let height = attrs.nodeHeight(node);\n Object.assign(node, { width, height, _hierarchyHeight })\n })\n\n // Store positions, where children appear during their enter animation\n attrs.root.x0 = 0;\n attrs.root.y0 = 0;\n attrs.allNodes = attrs.root.descendants();\n\n // Store direct and total descendants count\n attrs.allNodes.forEach((d) => {\n Object.assign(d.data, {\n _directSubordinates: d.children ? d.children.length : 0,\n _totalSubordinates: d.descendants().length - 1\n });\n });\n\n if (attrs.root.children) {\n if (expandNodesFirst) {\n // Expand all nodes first\n attrs.root.children.forEach(this.expand);\n }\n // Then collapse them all\n attrs.root.children.forEach((d) => this.collapse(d));\n\n // Collapse root if level is 0\n if (attrs.initialExpandLevel == 0) {\n attrs.root._children = attrs.root.children;\n attrs.root.children = null;\n }\n\n // Then only expand nodes, which have expanded property set to true\n [attrs.root].forEach((ch) => this.expandSomeNodes(ch));\n }\n }\n\n // Function which collapses passed node and it's descendants\n collapse(d) {\n if (d.children) {\n d._children = d.children;\n d._children.forEach((ch) => this.collapse(ch));\n d.children = null;\n }\n }\n\n // Function which expands passed node and it's descendants\n expand(d) {\n if (d._children) {\n d.children = d._children;\n d.children.forEach((ch) => this.expand(ch));\n d._children = null;\n }\n }\n\n // Zoom handler function\n zoomed(event, d) {\n const attrs = this.getChartState();\n const chart = attrs.chart;\n\n // Get d3 event's transform object\n const transform = event.transform;\n\n // Store it\n attrs.lastTransform = transform;\n\n // Reposition and rescale chart accordingly\n chart.attr(\"transform\", transform);\n\n // Apply new styles to the foreign object element\n if (this.isEdge()) {\n this.restyleForeignObjectElements();\n }\n }\n\n zoomTreeBounds({ x0, x1, y0, y1, params = { animate: true, scale: true, onCompleted: () => { } } }) {\n const { centerG, svgWidth: w, svgHeight: h, svg, zoomBehavior, duration, lastTransform } = this.getChartState()\n let scaleVal = Math.min(8, 0.9 / Math.max((x1 - x0) / w, (y1 - y0) / h));\n let identity = d3.zoomIdentity.translate(w / 2, h / 2)\n identity = identity.scale(params.scale ? scaleVal : lastTransform.k)\n\n identity = identity.translate(-(x0 + x1) / 2, -(y0 + y1) / 2);\n // Transition zoom wrapper component into specified bounds\n svg.transition().duration(params.animate ? duration : 0).call(zoomBehavior.transform, identity);\n centerG.transition().duration(params.animate ? duration : 0).attr('transform', 'translate(0,0)')\n .on('end', function () {\n if (params.onCompleted) {\n params.onCompleted()\n }\n })\n }\n\n fit({ animate = true, nodes, scale = true, onCompleted = () => { } } = {}) {\n const attrs = this.getChartState();\n const { root } = attrs;\n let descendants = nodes ? nodes : root.descendants();\n const minX = d3.min(descendants, d => d.x + attrs.layoutBindings[attrs.layout].nodeLeftX(d))\n const maxX = d3.max(descendants, d => d.x + attrs.layoutBindings[attrs.layout].nodeRightX(d))\n const minY = d3.min(descendants, d => d.y + attrs.layoutBindings[attrs.layout].nodeTopY(d))\n const maxY = d3.max(descendants, d => d.y + attrs.layoutBindings[attrs.layout].nodeBottomY(d))\n\n this.zoomTreeBounds({\n params: { animate: animate, scale, onCompleted },\n x0: minX - 50,\n x1: maxX + 50,\n y0: minY - 50,\n y1: maxY + 50,\n\n });\n return this;\n }\n\n // Load Paging Nodes\n loadPagingNodes(node) {\n const attrs = this.getChartState();\n node.data._pagingButton = false;\n const current = node.parent.data._pagingStep;\n const step = attrs.pagingStep(node.parent)\n const newPagingIndex = current + step;\n node.parent.data._pagingStep = newPagingIndex;\n this.updateNodesState();\n }\n\n // This function can be invoked via chart.setExpanded API, it expands or collapses particular node\n setExpanded(id, expandedFlag = true) {\n\n const attrs = this.getChartState();\n // Retrieve node by node Id\n const node = attrs.allNodes.filter(({ data }) => attrs.nodeId(data) == id)[0];\n\n if (!node) {\n console.log(`ORG CHART - ${expandedFlag ? \"EXPAND\" : \"COLLAPSE\"} - Node with id (${id}) not found in the tree`)\n return this;\n }\n node.data._expanded = expandedFlag;\n if (expandedFlag == false) {\n const parent = node.parent || { descendants: () => [] };\n const descendants = parent.descendants().filter(d => d != parent);\n descendants.forEach(d => d.data._expanded = false)\n }\n\n\n return this;\n }\n\n setCentered(nodeId) {\n const attrs = this.getChartState();\n // this.setExpanded(nodeId)\n const root = attrs.generateRoot(attrs.data)\n const descendants = root.descendants();\n const node = descendants.filter(({ data }) => attrs.nodeId(data).toString() == nodeId.toString())[0];\n if (!node) {\n console.log(`ORG CHART - CENTER - Node with id (${nodeId}) not found in the tree`)\n return this;\n }\n const ancestors = node.ancestors();\n ancestors.forEach(d => d.data._expanded = true)\n node.data._centered = true;\n node.data._expanded = true;\n return this;\n }\n\n setHighlighted(nodeId) {\n const attrs = this.getChartState();\n const root = attrs.generateRoot(attrs.data)\n const descendants = root.descendants();\n const node = descendants.filter(d => attrs.nodeId(d.data).toString() === nodeId.toString())[0];\n if (!node) {\n console.log(`ORG CHART - HIGHLIGHT - Node with id (${nodeId}) not found in the tree`);\n return this\n }\n const ancestors = node.ancestors();\n ancestors.forEach(d => d.data._expanded = true)\n node.data._highlighted = true;\n node.data._expanded = true;\n node.data._centered = true;\n return this;\n }\n\n setUpToTheRootHighlighted(nodeId) {\n const attrs = this.getChartState();\n const root = attrs.generateRoot(attrs.data)\n const descendants = root.descendants();\n const node = descendants.filter(d => attrs.nodeId(d.data).toString() === nodeId.toString())[0];\n if (!node) {\n console.log(`ORG CHART - HIGHLIGHTROOT - Node with id (${nodeId}) not found in the tree`)\n return this;\n }\n const ancestors = node.ancestors();\n ancestors.forEach(d => d.data._expanded = true)\n node.data._upToTheRootHighlighted = true;\n node.data._expanded = true;\n node.ancestors().forEach(d => d.data._upToTheRootHighlighted = true)\n return this;\n }\n\n clearHighlighting() {\n const attrs = this.getChartState();\n attrs.allNodes.forEach(d => {\n d.data._highlighted = false;\n d.data._upToTheRootHighlighted = false;\n })\n this.update(attrs.root);\n return this;\n }\n\n // It can take selector which would go fullscreen\n fullscreen(elem) {\n const attrs = this.getChartState();\n const el = d3.select(elem || attrs.container).node();\n\n d3.select(document).on('fullscreenchange.' + attrs.id, function (d) {\n const fsElement = document.fullscreenElement || document.mozFullscreenElement || document.webkitFullscreenElement;\n if (fsElement == el) {\n setTimeout(d => {\n attrs.svg.attr('height', window.innerHeight - 40);\n }, 500)\n } else {\n attrs.svg.attr('height', attrs.svgHeight)\n }\n })\n\n if (el.requestFullscreen) {\n el.requestFullscreen();\n } else if (el.mozRequestFullScreen) {\n el.mozRequestFullScreen();\n } else if (el.webkitRequestFullscreen) {\n el.webkitRequestFullscreen();\n } else if (el.msRequestFullscreen) {\n el.msRequestFullscreen();\n }\n }\n\n // Zoom in exposed method\n zoomIn() {\n const { svg, zoomBehavior } = this.getChartState();\n svg.transition().call(zoomBehavior.scaleBy, 1.3);\n }\n\n // Zoom out exposed method\n zoomOut() {\n const { svg, zoomBehavior } = this.getChartState();\n svg.transition().call(zoomBehavior.scaleBy, 0.78);\n }\n\n toDataURL(url, callback) {\n var xhr = new XMLHttpRequest();\n xhr.onload = function () {\n var reader = new FileReader();\n reader.onloadend = function () {\n callback(reader.result);\n }\n reader.readAsDataURL(xhr.response);\n };\n xhr.open('GET', url);\n xhr.responseType = 'blob';\n xhr.send();\n }\n\n exportImg({ full = false, scale = 3, onLoad = d => d, save = true, backgroundColor = \"#FAFAFA\" } = {}) {\n const that = this;\n const attrs = this.getChartState();\n const { svg: svgImg, root } = attrs\n let count = 0;\n const selection = svgImg.selectAll('img')\n let total = selection.size()\n\n const exportImage = () => {\n const transform = JSON.parse(JSON.stringify(that.lastTransform()));\n const duration = that.duration();\n if (full) {\n that.fit();\n }\n const { svg } = that.getChartState()\n\n setTimeout(d => {\n that.downloadImage({\n node: svg.node(), scale,\n isSvg: false,\n backgroundColor,\n onAlreadySerialized: d => {\n that.update(root)\n },\n imageName: attrs.imageName,\n onLoad: onLoad,\n save\n })\n }, full ? duration + 10 : 0)\n }\n\n if (total > 0) {\n selection\n .each(function () {\n that.toDataURL(this.src, (dataUrl) => {\n this.src = dataUrl;\n if (++count == total) {\n exportImage();\n }\n })\n })\n } else {\n exportImage();\n }\n\n\n }\n\n\n\n exportSvg() {\n const { svg, imageName } = this.getChartState();\n this.downloadImage({ imageName: imageName, node: svg.node(), scale: 3, isSvg: true })\n return this;\n }\n\n expandAll() {\n const { allNodes, root, data } = this.getChartState();\n data.forEach(d => d._expanded = true)\n // allNodes.forEach(d => d.data._expanded = true);\n this.render()\n return this;\n }\n\n collapseAll() {\n const { allNodes, root } = this.getChartState();\n allNodes.forEach(d => d.data._expanded = false);\n this.initialExpandLevel(0)\n this.render();\n return this;\n }\n\n downloadImage({ node, scale = 2, imageName = 'graph', isSvg = false, save = true, backgroundColor = \"#FAFAFA\", onAlreadySerialized = d => { }, onLoad = d => { } }) {\n // Retrieve svg node\n const svgNode = node;\n\n function saveAs(uri, filename) {\n // create link\n var link = document.createElement('a');\n if (typeof link.download === 'string') {\n document.body.appendChild(link); // Firefox requires the link to be in the body\n link.download = filename;\n link.href = uri;\n link.click();\n document.body.removeChild(link); // remove the link when done\n } else {\n location.replace(uri);\n }\n }\n // This function serializes SVG and sets all necessary attributes\n function serializeString(svg) {\n const xmlns = 'http://www.w3.org/2000/xmlns/';\n const xlinkns = 'http://www.w3.org/1999/xlink';\n const svgns = 'http://www.w3.org/2000/svg';\n svg = svg.cloneNode(true);\n const fragment = window.location.href + '#';\n const walker = document.createTreeWalker(svg, NodeFilter.SHOW_ELEMENT, null, false);\n while (walker.nextNode()) {\n for (const attr of walker.currentNode.attributes) {\n if (attr.value.includes(fragment)) {\n attr.value = attr.value.replace(fragment, '#');\n }\n }\n }\n svg.setAttributeNS(xmlns, 'xmlns', svgns);\n svg.setAttributeNS(xmlns, 'xmlns:xlink', xlinkns);\n const serializer = new XMLSerializer();\n const string = serializer.serializeToString(svg);\n return string;\n }\n\n if (isSvg) {\n let source = serializeString(svgNode);\n //add xml declaration\n source = '<?xml version=\"1.0\" standalone=\"no\"?>\\r\\n' + source;\n //convert svg source to URI data scheme.\n var url = \"data:image/svg+xml;charset=utf-8,\" + encodeURIComponent(source);\n saveAs(url, imageName + \".svg\");\n onAlreadySerialized()\n return;\n }\n // Get image quality index (basically, index you can zoom in)\n const quality = scale\n // Create image\n const image = document.createElement('img');\n image.onload = function () {\n // Create image canvas\n const canvas = document.createElement('canvas');\n // Set width and height based on SVG node\n const rect = svgNode.getBoundingClientRect();\n canvas.width = rect.width * quality;\n canvas.height = rect.height * quality;\n // Draw background\n const context = canvas.getContext('2d');\n context.fillStyle = backgroundColor;;\n context.fillRect(0, 0, rect.width * quality, rect.height * quality);\n context.drawImage(image, 0, 0, rect.width * quality, rect.height * quality);\n // Set some image metadata\n let dt = canvas.toDataURL('image/png');\n if (onLoad) {\n onLoad(dt)\n }\n if (save) {\n // Invoke saving function\n saveAs(dt, imageName + '.png');\n }\n\n };\n\n var url = 'data:image/svg+xml; charset=utf8, ' + encodeURIComponent(serializeString(svgNode));\n\n onAlreadySerialized()\n\n image.src = url// URL.createObjectURL(blob);\n // This function invokes save window\n\n }\n\n // Calculate what size text will take\n getTextWidth(text, {\n fontSize = 14,\n fontWeight = 400,\n defaultFont = \"Helvetice\",\n ctx\n } = {}) {\n ctx.font = `${fontWeight || ''} ${fontSize}px ${defaultFont} `\n const measurement = ctx.measureText(text);\n return measurement.width;\n }\n\n // Clear after moving off from the page\n clear() {\n const attrs = this.getChartState();\n d3.select(window).on(`resize.${attrs.id}`, null);\n attrs.svg && attrs.svg.selectAll(\"*\").remove();\n }\n}","export const ORGANIZATION_CHART_NODE_WIDTH = 445;\nexport const ORGANIZATION_CHART_NODE_HEIGHT = 215;\n\nexport const organizationChartWrapperClassName =\n 'relative h-full w-full min-h-0 min-w-0 overflow-hidden rounded-md bg-default';\n\nexport const organizationChartEmptyStateClassName =\n 'flex h-full min-h-60 w-full min-w-0 items-center justify-center rounded-md border border-default bg-default p-6 text-base text-caption';\n\nexport const organizationChartZoomIndicatorClassName =\n 'pointer-events-none absolute bottom-6 right-6 z-10 rounded-full bg-black/85 px-3.5 py-2 text-sm font-semibold tracking-[0.5px] text-white shadow-lg backdrop-blur-sm';\n","import type { OrgChartApiNodeData, OrgChartNodeData } from './types';\n\nconst COLORS = {\n secured: 'var(--border-color-primary)',\n unsecured: 'var(--border-color-danger)',\n surface:\n 'color-mix(in srgb, var(--background-color-default) 86%, var(--text-color-white) 14%)',\n border: 'var(--border-color-default)',\n textPrimary: 'var(--text-color-default)',\n textSecondary: 'var(--text-color-caption)',\n chipBackground: 'var(--background-color-primary-inverted)',\n chipBorder: 'var(--border-color-primary)',\n chipText: 'var(--text-color-primary)',\n};\n\nexport const formatEnumLabel = (value?: string | null): string => {\n if (!value) {\n return '—';\n }\n\n return value\n .replace(/_/g, ' ')\n .replace(/([a-z0-9])([A-Z])/g, '$1 $2')\n .replace(/\\s+/g, ' ')\n .trim();\n};\n\nexport const formatRoleLabel = (value?: string | null): string | null => {\n const label = formatEnumLabel(value);\n\n if (label === '—' || label.toLowerCase() === 'not applicable') {\n return null;\n }\n\n return label;\n};\n\nexport const formatRevenue = (value?: number | null): string => {\n if (value === undefined || value === null) {\n return '-';\n }\n\n if (value >= 1_000_000) {\n const millions = value / 1_000_000;\n const formatted = new Intl.NumberFormat('en-US', {\n maximumFractionDigits: 2,\n })\n .format(millions)\n .replace(/\\.0+$/, '')\n .replace(/(\\.\\d*[1-9])0+$/, '$1');\n\n return `$${formatted} M`;\n }\n\n return `$${new Intl.NumberFormat('en-US').format(value)}`;\n};\n\nexport const formatRevenueShare = (value?: number | null): string | null => {\n if (value === undefined || value === null) {\n return null;\n }\n\n return `${Math.round(value * 100)}% of group`;\n};\n\nconst getCountryFlagSrc = (countryCode?: string | null): string | null => {\n if (!countryCode || countryCode.length !== 2) {\n return null;\n }\n\n return `https://flagcdn.com/24x18/${countryCode.toLowerCase()}.png`;\n};\n\nconst getBottomTags = (node: OrgChartNodeData): string[] => {\n const tags: string[] = [];\n const entityTypeLabel = node.entityType\n ? formatEnumLabel(node.entityType)\n : node.position;\n const roleLabel = formatRoleLabel(node.role);\n\n if (entityTypeLabel && entityTypeLabel !== '—') {\n tags.push(entityTypeLabel);\n }\n\n if (roleLabel && roleLabel !== 'Borrower') {\n tags.push(roleLabel);\n }\n\n if (!tags.length && node.companyCode) {\n tags.push(node.companyCode);\n }\n\n return tags;\n};\n\nexport const escapeHtml = (value: string): string => {\n return value\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;')\n .replace(/'/g, '&#39;');\n};\n\nexport const isOrgChartApiNodeData = (\n node: OrgChartNodeData | OrgChartApiNodeData,\n): node is OrgChartApiNodeData => {\n return 'entityName' in node;\n};\n\nexport const normalizeOrgChartNode = (\n node: OrgChartNodeData | OrgChartApiNodeData,\n): OrgChartNodeData => {\n if (!isOrgChartApiNodeData(node)) {\n return {\n ...node,\n countryName: node.countryName ?? node.location ?? node.position,\n entityType: node.entityType ?? node.position,\n role: node.role ?? null,\n securityPosition: node.securityPosition ?? 'Secured',\n };\n }\n\n return {\n id: node.id,\n parentId: node.parent?.id ?? null,\n name: node.entityName,\n position: node.entityType ?? 'Entity',\n countryCode: node.country?.country_code ?? null,\n countryName: node.country?.name ?? null,\n entityType: node.entityType ?? null,\n role: node.role ?? null,\n revenue: node.revenue ?? null,\n revenueShare: node.revenueAllocPct ?? null,\n securityPosition: node.securityPosition ?? null,\n };\n};\n\nexport const buildNodeContent = (\n node: OrgChartNodeData,\n width: number,\n height: number,\n): string => {\n const isBorrower = formatRoleLabel(node.role) === 'Borrower';\n const isUnsecured = node.securityPosition === 'Unsecured';\n const flagSrc = getCountryFlagSrc(node.countryCode);\n const revenueLabel = node.revenue !== undefined ? 'Revenue' : 'Headcount';\n const revenue =\n node.revenue !== undefined\n ? formatRevenue(node.revenue)\n : node.headcount || '-';\n const revenueShare =\n node.revenue !== undefined ? formatRevenueShare(node.revenueShare) : null;\n const tags = getBottomTags(node);\n const locationLabel = node.countryName ?? node.location ?? node.position;\n\n return `\n <div style=\"\n box-sizing: border-box;\n position: absolute;\n width: ${width}px;\n height: ${height}px;\n border-radius: 16px;\n border: 2px ${isUnsecured ? 'dashed' : 'solid'} ${isUnsecured ? COLORS.unsecured : COLORS.secured};\n background: ${COLORS.surface};\n font-family: var(--font-body);\n color: ${COLORS.textPrimary};\n padding: 20px;\n overflow: visible;\n \">\n ${\n isBorrower\n ? `<div style=\"\n position: absolute;\n top: -20px;\n right: 24px;\n border: 2px solid ${COLORS.chipBorder};\n border-radius: 999px;\n background: ${COLORS.chipBackground};\n padding: 8px 16px;\n color: ${COLORS.chipText};\n font-size: 14px;\n font-weight: 700;\n line-height: 1;\n text-transform: uppercase;\n \">BORROWER</div>`\n : ''\n }\n <div style=\"font-size: 18px; font-weight: 700; line-height: 1.25; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;\" title=\"${escapeHtml(node.name)}\">${escapeHtml(node.name)}</div>\n <div style=\"display:flex; align-items:center; gap:10px; margin-top:16px; font-size:14px; line-height:20px; color:${COLORS.textPrimary}; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;\">\n ${flagSrc ? `<img src=\"${flagSrc}\" alt=\"\" width=\"24\" height=\"18\" style=\"display:block; border-radius:2px; flex:0 0 auto;\" />` : ''}\n <span style=\"overflow:hidden; text-overflow:ellipsis;\">${escapeHtml(locationLabel)}</span>\n </div>\n <div style=\"margin-top:20px; font-size:16px; line-height:24px; color:${COLORS.textSecondary}; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;\">\n ${revenueLabel}: <span style=\"font-weight:700; color:${COLORS.textPrimary};\">${escapeHtml(revenue)}</span>\n ${revenueShare ? `<span> (${escapeHtml(revenueShare)})</span>` : ''}\n </div>\n <div style=\"height:1px; margin:18px 0 16px; background:${COLORS.border};\"></div>\n <div style=\"display:flex; flex-wrap:wrap; gap:8px;\">\n ${tags\n .map(\n tag => `<span style=\"\n display:inline-flex;\n align-items:center;\n width:fit-content;\n max-width:100%;\n padding:6px 12px;\n border:2px solid ${COLORS.chipBorder};\n border-radius:999px;\n background:${COLORS.chipBackground};\n color:${COLORS.chipText};\n font-size:13px;\n font-weight:700;\n line-height:1.2;\n white-space:normal;\n overflow-wrap:anywhere;\n text-align:center;\n \" title=\"${escapeHtml(tag)}\">${escapeHtml(tag)}</span>`,\n )\n .join('')}\n </div>\n </div>\n `;\n};\n\nexport const buildButtonContent = (childCount: number) => {\n return `\n <div style=\"\n display:flex;\n align-items:center;\n justify-content:center;\n min-width:32px;\n height:32px;\n margin:auto;\n border:2px solid ${COLORS.chipBorder};\n border-radius:999px;\n background:${COLORS.chipBackground};\n color:${COLORS.chipText};\n font-family:var(--font-body);\n font-size:13px;\n font-weight:700;\n line-height:1;\n box-sizing:border-box;\n padding:0 10px;\n \">${childCount}</div>\n `;\n};\n","import { OrgChart } from 'd3-org-chart';\nimport {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useLayoutEffect,\n useMemo,\n useRef,\n} from 'react';\n\nimport { cn } from '../../utils';\nimport {\n organizationChartEmptyStateClassName,\n ORGANIZATION_CHART_NODE_HEIGHT,\n ORGANIZATION_CHART_NODE_WIDTH,\n organizationChartWrapperClassName,\n organizationChartZoomIndicatorClassName,\n} from './OrganizationChart.styles';\nimport type {\n OrgChartComponentProps,\n OrgChartNodeData,\n OrgChartRef,\n} from './types';\nimport {\n buildButtonContent,\n buildNodeContent,\n normalizeOrgChartNode,\n} from './utils';\n\nexport const OrganizationChart = forwardRef<\n OrgChartRef,\n OrgChartComponentProps\n>(function OrganizationChart(\n {\n data,\n orientation = 'top',\n initialDepth = 1,\n imageName = 'organization-chart',\n onNodeClick,\n onZoomChange,\n className,\n emptyMessage = 'No organization chart data available.',\n showZoomBadge = true,\n dataTestId,\n ...restProps\n },\n ref,\n) {\n const rootRef = useRef<HTMLDivElement | null>(null);\n const containerRef = useRef<HTMLDivElement | null>(null);\n const chartRef = useRef<OrgChart<OrgChartNodeData> | null>(null);\n const zoomTextRef = useRef<HTMLDivElement | null>(null);\n const resizeObserverRef = useRef<ResizeObserver | null>(null);\n const normalizedData = useMemo(() => data.map(normalizeOrgChartNode), [data]);\n\n useImperativeHandle(\n ref,\n (): OrgChartRef => ({\n zoomIn: () => chartRef.current?.zoomIn(),\n zoomOut: () => chartRef.current?.zoomOut(),\n resetZoom: () => {\n chartRef.current?.render().fit();\n },\n resetLevel: () => {\n chartRef.current\n ?.collapseAll()\n .initialExpandLevel(initialDepth)\n .render()\n .fit();\n },\n exportImg: () => chartRef.current?.exportImg({ full: true }),\n exportSvg: () => {\n if (!chartRef.current) {\n return;\n }\n\n chartRef.current.render().fit();\n\n window.setTimeout(() => {\n chartRef.current?.exportSvg();\n }, 1000);\n },\n expandAll: () => {\n chartRef.current?.expandAll().fit();\n },\n collapseAll: () => {\n chartRef.current?.collapseAll().fit();\n },\n }),\n [initialDepth],\n );\n\n useLayoutEffect(() => {\n const container = containerRef.current;\n const root = rootRef.current;\n\n if (!container || !root || normalizedData.length === 0) {\n return;\n }\n\n container.replaceChildren();\n\n const chart = new OrgChart<OrgChartNodeData>();\n chartRef.current = chart;\n\n const renderChart = () => {\n chart\n .container(container as unknown as string)\n .data(normalizedData)\n .layout(orientation)\n .imageName(imageName)\n .initialExpandLevel(initialDepth)\n .svgHeight(Math.max(root.clientHeight, 720))\n .nodeWidth(() => ORGANIZATION_CHART_NODE_WIDTH)\n .nodeHeight(() => ORGANIZATION_CHART_NODE_HEIGHT)\n .childrenMargin(() => 64)\n .siblingsMargin(() => 80)\n .neighbourMargin(() => 96)\n .compact(false)\n .buttonContent(\n ({\n node,\n }: {\n node: { data: OrgChartNodeData & { _directSubordinates?: number } };\n }) => {\n const childCount = node.data._directSubordinates ?? 0;\n\n return buildButtonContent(childCount);\n },\n )\n .nodeButtonWidth(() => 44)\n .nodeButtonHeight(() => 32)\n .nodeUpdate((_, index, elements) => {\n const element = elements[index] as unknown as SVGElement;\n const buttonGroup =\n element.querySelector<SVGGElement>('.node-button-g');\n const buttonCircle = element.querySelector<SVGCircleElement>(\n '.node-button-circle',\n );\n const buttonText =\n element.querySelector<SVGTextElement>('.node-button-text');\n\n buttonGroup?.setAttribute('display', '');\n\n if (buttonCircle) {\n buttonCircle.setAttribute('fill', 'transparent');\n buttonCircle.setAttribute('stroke', 'transparent');\n }\n\n if (buttonText) {\n buttonText.setAttribute('display', 'none');\n }\n })\n .linkUpdate((_, index, elements) => {\n const element = elements[index] as unknown as SVGPathElement;\n\n element.setAttribute('stroke', 'var(--border-color-default)');\n element.setAttribute('stroke-width', '2');\n element.setAttribute('fill', 'none');\n })\n .onZoom((event: { transform?: { k?: number } }) => {\n const zoomPercent = Math.round((event.transform?.k ?? 1) * 100);\n\n if (zoomTextRef.current) {\n zoomTextRef.current.textContent = `Zoom: ${zoomPercent}%`;\n }\n\n onZoomChange?.(zoomPercent);\n })\n .onNodeClick((node: { id?: string | number | undefined }) => {\n if (node?.id) {\n onNodeClick?.(String(node.id));\n }\n })\n .nodeContent((node: { data: OrgChartNodeData }) =>\n buildNodeContent(\n node.data,\n ORGANIZATION_CHART_NODE_WIDTH,\n ORGANIZATION_CHART_NODE_HEIGHT,\n ),\n )\n .render()\n .fit();\n };\n\n renderChart();\n\n resizeObserverRef.current?.disconnect();\n resizeObserverRef.current = new ResizeObserver(() => {\n if (!chartRef.current || normalizedData.length === 0) {\n return;\n }\n\n renderChart();\n });\n resizeObserverRef.current.observe(root);\n\n return () => {\n resizeObserverRef.current?.disconnect();\n resizeObserverRef.current = null;\n if (chartRef.current === chart) {\n chartRef.current = null;\n }\n container.replaceChildren();\n };\n }, [\n imageName,\n initialDepth,\n normalizedData,\n onNodeClick,\n onZoomChange,\n orientation,\n ]);\n\n useEffect(() => {\n return () => {\n resizeObserverRef.current?.disconnect();\n chartRef.current?.clear();\n chartRef.current = null;\n };\n }, []);\n\n if (normalizedData.length === 0) {\n return (\n <div\n {...restProps}\n data-test-id={dataTestId}\n ref={rootRef}\n className={cn(organizationChartEmptyStateClassName, className)}\n >\n {emptyMessage}\n </div>\n );\n }\n\n return (\n <div\n {...restProps}\n data-test-id={dataTestId}\n ref={rootRef}\n className={cn(organizationChartWrapperClassName, className)}\n >\n {showZoomBadge ? (\n <div\n ref={zoomTextRef}\n className={organizationChartZoomIndicatorClassName}\n >\n Zoom: 100%\n </div>\n ) : null}\n <div\n ref={containerRef}\n role='region'\n aria-label='Organization chart'\n className='h-full w-full'\n />\n </div>\n );\n});\n","import React from 'react';\n\nexport const useToggle = () => {\n const [state, setState] = React.useState<boolean>(false);\n\n const toggle = React.useCallback(() => {\n setState(!state);\n }, [state]);\n\n return [state, toggle] as const;\n};\n","export enum EThemeOptions {\n LIGHT = 'light',\n DARK = 'dark',\n}\n","import { createContext } from 'react';\n\nimport { EThemeOptions } from './types';\n\nexport const ThemeContext = createContext<{\n theme: EThemeOptions;\n setTheme: (theme: EThemeOptions) => void;\n isDark: boolean;\n}>({\n theme: EThemeOptions.LIGHT,\n setTheme: () => {},\n isDark: false,\n});\n","import { use } from 'react';\n\nimport { ThemeContext } from '../providers/theme';\n\nexport const useTheme = () => {\n const { theme, setTheme, isDark } = use(ThemeContext);\n\n return { theme, isDark, setTheme };\n};\n"],"x_google_ignoreList":[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,18,19,20,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs.js","names":["namespaces","namespace","selector","Selection","selectorAll","Selection","matcher","Selection","Selection","sparse","constant","Selection","Selection","sparse","Selection","Selection","attrRemove","attrRemoveNS","attrConstant","attrConstantNS","attrFunction","attrFunctionNS","namespace","styleRemove","styleConstant","styleFunction","defaultView","textConstant","textFunction","creator","creator","selector","parseTypenames","defaultView","Selection","selection_select","selection_selectAll","selection_selectChild","selection_selectChildren","selection_filter","selection_data","selection_enter","selection_exit","selection_join","selection_merge","selection_order","selection_sort","selection_call","selection_nodes","selection_node","selection_size","selection_empty","selection_each","selection_attr","selection_style","selection_property","selection_classed","selection_text","selection_html","selection_raise","selection_lower","selection_append","selection_insert","selection_remove","selection_clone","selection_datum","selection_on","selection_dispatch","selection_iterator","Selection","sourceEvent","count","leastCommonAncestor","hierarchy","Node","computeHeight","node_copy","copyData","node_count","node_each","node_eachAfter","node_eachBefore","node_find","node_sum","node_sort","node_path","node_ancestors","node_descendants","node_leaves","node_links","node_iterator","Node","computeHeight","moveSubtree","Node","get","set","select","noevent","define","constant","rgb","colorRgb","basis","basisClosed","number","identity","identity","decompose","number","timeout","interpolateNumber","interpolateRgb","interpolateString","namespace","interpolateTransform","interpolate","namespace","matcher","selector","selectorAll","style","interpolateTransform","interpolate","transition_select","transition_selectAll","transition_filter","transition_merge","transition_selection","transition_transition","transition_on","transition_attr","transition_attrTween","transition_style","transition_styleTween","transition_text","transition_textTween","transition_remove","transition_tween","transition_delay","transition_duration","transition_ease","transition_easeVarying","transition_end","easeCubicInOut","selection_interrupt","selection_transition","interpolateZoom","select","pointer","constant","node_count","node_each","node_eachAfter","node_eachBefore","node_sum","node_sort","node_path","node_ancestors","node_descendants","node_leaves","node_links","packageInfo","x","pointX","y","pointY","constant"],"sources":["../node_modules/clsx/dist/clsx.mjs","../node_modules/tailwind-merge/dist/bundle-mjs.mjs","../src/utils/classNames.ts","../node_modules/react/cjs/react.production.js","../node_modules/react/cjs/react.development.js","../node_modules/react/index.js","../node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.mjs","../node_modules/lucide-react/dist/esm/shared/src/utils/toKebabCase.mjs","../node_modules/lucide-react/dist/esm/shared/src/utils/toCamelCase.mjs","../node_modules/lucide-react/dist/esm/shared/src/utils/toPascalCase.mjs","../node_modules/lucide-react/dist/esm/defaultAttributes.mjs","../node_modules/lucide-react/dist/esm/shared/src/utils/hasA11yProp.mjs","../node_modules/lucide-react/dist/esm/context.mjs","../node_modules/lucide-react/dist/esm/Icon.mjs","../node_modules/lucide-react/dist/esm/createLucideIcon.mjs","../node_modules/lucide-react/dist/esm/icons/x.mjs","../node_modules/class-variance-authority/dist/index.mjs","../src/components/Alert/Alert.styles.ts","../node_modules/react/cjs/react-jsx-runtime.production.js","../node_modules/react/cjs/react-jsx-runtime.development.js","../node_modules/react/jsx-runtime.js","../src/components/Alert/Alert.tsx","../src/components/Badge/Badge.styles.ts","../src/components/Badge/Badge.tsx","../src/components/Button/Button.styles.ts","../src/components/Button/Button.tsx","../src/components/ButtonGroup/ButtonGroup.styles.ts","../src/components/ButtonGroup/ButtonGroup.tsx","../src/components/Avatar/Avatar.styles.ts","../src/components/Avatar/Avatar.tsx","../src/components/AvatarGroup/AvatarGroup.styles.ts","../src/components/AvatarGroup/AvatarGroup.tsx","../node_modules/d3-selection/src/namespaces.js","../node_modules/d3-selection/src/namespace.js","../node_modules/d3-selection/src/creator.js","../node_modules/d3-selection/src/selector.js","../node_modules/d3-selection/src/selection/select.js","../node_modules/d3-selection/src/array.js","../node_modules/d3-selection/src/selectorAll.js","../node_modules/d3-selection/src/selection/selectAll.js","../node_modules/d3-selection/src/matcher.js","../node_modules/d3-selection/src/selection/selectChild.js","../node_modules/d3-selection/src/selection/selectChildren.js","../node_modules/d3-selection/src/selection/filter.js","../node_modules/d3-selection/src/selection/sparse.js","../node_modules/d3-selection/src/selection/enter.js","../node_modules/d3-selection/src/constant.js","../node_modules/d3-selection/src/selection/data.js","../node_modules/d3-selection/src/selection/exit.js","../node_modules/d3-selection/src/selection/join.js","../node_modules/d3-selection/src/selection/merge.js","../node_modules/d3-selection/src/selection/order.js","../node_modules/d3-selection/src/selection/sort.js","../node_modules/d3-selection/src/selection/call.js","../node_modules/d3-selection/src/selection/nodes.js","../node_modules/d3-selection/src/selection/node.js","../node_modules/d3-selection/src/selection/size.js","../node_modules/d3-selection/src/selection/empty.js","../node_modules/d3-selection/src/selection/each.js","../node_modules/d3-selection/src/selection/attr.js","../node_modules/d3-selection/src/window.js","../node_modules/d3-selection/src/selection/style.js","../node_modules/d3-selection/src/selection/property.js","../node_modules/d3-selection/src/selection/classed.js","../node_modules/d3-selection/src/selection/text.js","../node_modules/d3-selection/src/selection/html.js","../node_modules/d3-selection/src/selection/raise.js","../node_modules/d3-selection/src/selection/lower.js","../node_modules/d3-selection/src/selection/append.js","../node_modules/d3-selection/src/selection/insert.js","../node_modules/d3-selection/src/selection/remove.js","../node_modules/d3-selection/src/selection/clone.js","../node_modules/d3-selection/src/selection/datum.js","../node_modules/d3-selection/src/selection/on.js","../node_modules/d3-selection/src/selection/dispatch.js","../node_modules/d3-selection/src/selection/iterator.js","../node_modules/d3-selection/src/selection/index.js","../node_modules/d3-selection/src/select.js","../node_modules/d3-selection/src/sourceEvent.js","../node_modules/d3-selection/src/pointer.js","../node_modules/d3-array/src/cumsum.js","../node_modules/d3-array/src/max.js","../node_modules/d3-array/src/min.js","../node_modules/d3-array/src/sum.js","../node_modules/d3-hierarchy/src/hierarchy/count.js","../node_modules/d3-hierarchy/src/hierarchy/each.js","../node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","../node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","../node_modules/d3-hierarchy/src/hierarchy/find.js","../node_modules/d3-hierarchy/src/hierarchy/sum.js","../node_modules/d3-hierarchy/src/hierarchy/sort.js","../node_modules/d3-hierarchy/src/hierarchy/path.js","../node_modules/d3-hierarchy/src/hierarchy/ancestors.js","../node_modules/d3-hierarchy/src/hierarchy/descendants.js","../node_modules/d3-hierarchy/src/hierarchy/leaves.js","../node_modules/d3-hierarchy/src/hierarchy/links.js","../node_modules/d3-hierarchy/src/hierarchy/iterator.js","../node_modules/d3-hierarchy/src/hierarchy/index.js","../node_modules/d3-hierarchy/src/accessors.js","../node_modules/d3-hierarchy/src/stratify.js","../node_modules/d3-hierarchy/src/tree.js","../node_modules/d3-dispatch/src/dispatch.js","../node_modules/d3-drag/src/noevent.js","../node_modules/d3-drag/src/nodrag.js","../node_modules/d3-color/src/define.js","../node_modules/d3-color/src/color.js","../node_modules/d3-interpolate/src/basis.js","../node_modules/d3-interpolate/src/basisClosed.js","../node_modules/d3-interpolate/src/constant.js","../node_modules/d3-interpolate/src/color.js","../node_modules/d3-interpolate/src/rgb.js","../node_modules/d3-interpolate/src/number.js","../node_modules/d3-interpolate/src/string.js","../node_modules/d3-interpolate/src/transform/decompose.js","../node_modules/d3-interpolate/src/transform/parse.js","../node_modules/d3-interpolate/src/transform/index.js","../node_modules/d3-interpolate/src/zoom.js","../node_modules/d3-timer/src/timer.js","../node_modules/d3-timer/src/timeout.js","../node_modules/d3-transition/src/transition/schedule.js","../node_modules/d3-transition/src/interrupt.js","../node_modules/d3-transition/src/selection/interrupt.js","../node_modules/d3-transition/src/transition/tween.js","../node_modules/d3-transition/src/transition/interpolate.js","../node_modules/d3-transition/src/transition/attr.js","../node_modules/d3-transition/src/transition/attrTween.js","../node_modules/d3-transition/src/transition/delay.js","../node_modules/d3-transition/src/transition/duration.js","../node_modules/d3-transition/src/transition/ease.js","../node_modules/d3-transition/src/transition/easeVarying.js","../node_modules/d3-transition/src/transition/filter.js","../node_modules/d3-transition/src/transition/merge.js","../node_modules/d3-transition/src/transition/on.js","../node_modules/d3-transition/src/transition/remove.js","../node_modules/d3-transition/src/transition/select.js","../node_modules/d3-transition/src/transition/selectAll.js","../node_modules/d3-transition/src/transition/selection.js","../node_modules/d3-transition/src/transition/style.js","../node_modules/d3-transition/src/transition/styleTween.js","../node_modules/d3-transition/src/transition/text.js","../node_modules/d3-transition/src/transition/textTween.js","../node_modules/d3-transition/src/transition/transition.js","../node_modules/d3-transition/src/transition/end.js","../node_modules/d3-transition/src/transition/index.js","../node_modules/d3-ease/src/cubic.js","../node_modules/d3-transition/src/selection/transition.js","../node_modules/d3-transition/src/selection/index.js","../node_modules/d3-zoom/src/constant.js","../node_modules/d3-zoom/src/event.js","../node_modules/d3-zoom/src/transform.js","../node_modules/d3-zoom/src/noevent.js","../node_modules/d3-zoom/src/zoom.js","../node_modules/d3-flextree/node_modules/d3-hierarchy/src/hierarchy/count.js","../node_modules/d3-flextree/node_modules/d3-hierarchy/src/hierarchy/each.js","../node_modules/d3-flextree/node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","../node_modules/d3-flextree/node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","../node_modules/d3-flextree/node_modules/d3-hierarchy/src/hierarchy/sum.js","../node_modules/d3-flextree/node_modules/d3-hierarchy/src/hierarchy/sort.js","../node_modules/d3-flextree/node_modules/d3-hierarchy/src/hierarchy/path.js","../node_modules/d3-flextree/node_modules/d3-hierarchy/src/hierarchy/ancestors.js","../node_modules/d3-flextree/node_modules/d3-hierarchy/src/hierarchy/descendants.js","../node_modules/d3-flextree/node_modules/d3-hierarchy/src/hierarchy/leaves.js","../node_modules/d3-flextree/node_modules/d3-hierarchy/src/hierarchy/links.js","../node_modules/d3-flextree/node_modules/d3-hierarchy/src/hierarchy/index.js","../node_modules/d3-flextree/package.json","../node_modules/d3-flextree/src/flextree.js","../node_modules/d3-shape/src/constant.js","../node_modules/d3-path/src/path.js","../node_modules/d3-shape/src/path.js","../node_modules/d3-shape/src/array.js","../node_modules/d3-shape/src/point.js","../node_modules/d3-shape/src/curve/bump.js","../node_modules/d3-shape/src/link.js","../node_modules/d3-org-chart/src/d3-org-chart.js","../src/components/OrganizationChart/OrganizationChart.styles.ts","../src/components/OrganizationChart/utils.ts","../src/components/OrganizationChart/OrganizationChart.tsx","../src/hooks/useToggle.tsx","../src/providers/theme/types.ts","../src/providers/theme/context.ts","../src/hooks/useTheme.ts"],"sourcesContent":["function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","/**\n * Concatenates two arrays faster than the array spread operator.\n */\nconst concatArrays = (array1, array2) => {\n // Pre-allocate for better V8 optimization\n const combinedArray = new Array(array1.length + array2.length);\n for (let i = 0; i < array1.length; i++) {\n combinedArray[i] = array1[i];\n }\n for (let i = 0; i < array2.length; i++) {\n combinedArray[array1.length + i] = array2[i];\n }\n return combinedArray;\n};\n\n// Factory function ensures consistent object shapes\nconst createClassValidatorObject = (classGroupId, validator) => ({\n classGroupId,\n validator\n});\n// Factory ensures consistent ClassPartObject shape\nconst createClassPartObject = (nextPart = new Map(), validators = null, classGroupId) => ({\n nextPart,\n validators,\n classGroupId\n});\nconst CLASS_PART_SEPARATOR = '-';\nconst EMPTY_CONFLICTS = [];\n// I use two dots here because one dot is used as prefix for class groups in plugins\nconst ARBITRARY_PROPERTY_PREFIX = 'arbitrary..';\nconst createClassGroupUtils = config => {\n const classMap = createClassMap(config);\n const {\n conflictingClassGroups,\n conflictingClassGroupModifiers\n } = config;\n const getClassGroupId = className => {\n if (className.startsWith('[') && className.endsWith(']')) {\n return getGroupIdForArbitraryProperty(className);\n }\n const classParts = className.split(CLASS_PART_SEPARATOR);\n // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and skip it.\n const startIndex = classParts[0] === '' && classParts.length > 1 ? 1 : 0;\n return getGroupRecursive(classParts, startIndex, classMap);\n };\n const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {\n if (hasPostfixModifier) {\n const modifierConflicts = conflictingClassGroupModifiers[classGroupId];\n const baseConflicts = conflictingClassGroups[classGroupId];\n if (modifierConflicts) {\n if (baseConflicts) {\n // Merge base conflicts with modifier conflicts\n return concatArrays(baseConflicts, modifierConflicts);\n }\n // Only modifier conflicts\n return modifierConflicts;\n }\n // Fall back to without postfix if no modifier conflicts\n return baseConflicts || EMPTY_CONFLICTS;\n }\n return conflictingClassGroups[classGroupId] || EMPTY_CONFLICTS;\n };\n return {\n getClassGroupId,\n getConflictingClassGroupIds\n };\n};\nconst getGroupRecursive = (classParts, startIndex, classPartObject) => {\n const classPathsLength = classParts.length - startIndex;\n if (classPathsLength === 0) {\n return classPartObject.classGroupId;\n }\n const currentClassPart = classParts[startIndex];\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);\n if (nextClassPartObject) {\n const result = getGroupRecursive(classParts, startIndex + 1, nextClassPartObject);\n if (result) return result;\n }\n const validators = classPartObject.validators;\n if (validators === null) {\n return undefined;\n }\n // Build classRest string efficiently by joining from startIndex onwards\n const classRest = startIndex === 0 ? classParts.join(CLASS_PART_SEPARATOR) : classParts.slice(startIndex).join(CLASS_PART_SEPARATOR);\n const validatorsLength = validators.length;\n for (let i = 0; i < validatorsLength; i++) {\n const validatorObj = validators[i];\n if (validatorObj.validator(classRest)) {\n return validatorObj.classGroupId;\n }\n }\n return undefined;\n};\n/**\n * Get the class group ID for an arbitrary property.\n *\n * @param className - The class name to get the group ID for. Is expected to be string starting with `[` and ending with `]`.\n */\nconst getGroupIdForArbitraryProperty = className => className.slice(1, -1).indexOf(':') === -1 ? undefined : (() => {\n const content = className.slice(1, -1);\n const colonIndex = content.indexOf(':');\n const property = content.slice(0, colonIndex);\n return property ? ARBITRARY_PROPERTY_PREFIX + property : undefined;\n})();\n/**\n * Exported for testing only\n */\nconst createClassMap = config => {\n const {\n theme,\n classGroups\n } = config;\n return processClassGroups(classGroups, theme);\n};\n// Split into separate functions to maintain monomorphic call sites\nconst processClassGroups = (classGroups, theme) => {\n const classMap = createClassPartObject();\n for (const classGroupId in classGroups) {\n const group = classGroups[classGroupId];\n processClassesRecursively(group, classMap, classGroupId, theme);\n }\n return classMap;\n};\nconst processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {\n const len = classGroup.length;\n for (let i = 0; i < len; i++) {\n const classDefinition = classGroup[i];\n processClassDefinition(classDefinition, classPartObject, classGroupId, theme);\n }\n};\n// Split into separate functions for each type to maintain monomorphic call sites\nconst processClassDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n if (typeof classDefinition === 'string') {\n processStringDefinition(classDefinition, classPartObject, classGroupId);\n return;\n }\n if (typeof classDefinition === 'function') {\n processFunctionDefinition(classDefinition, classPartObject, classGroupId, theme);\n return;\n }\n processObjectDefinition(classDefinition, classPartObject, classGroupId, theme);\n};\nconst processStringDefinition = (classDefinition, classPartObject, classGroupId) => {\n const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);\n classPartObjectToEdit.classGroupId = classGroupId;\n};\nconst processFunctionDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);\n return;\n }\n if (classPartObject.validators === null) {\n classPartObject.validators = [];\n }\n classPartObject.validators.push(createClassValidatorObject(classGroupId, classDefinition));\n};\nconst processObjectDefinition = (classDefinition, classPartObject, classGroupId, theme) => {\n const entries = Object.entries(classDefinition);\n const len = entries.length;\n for (let i = 0; i < len; i++) {\n const [key, value] = entries[i];\n processClassesRecursively(value, getPart(classPartObject, key), classGroupId, theme);\n }\n};\nconst getPart = (classPartObject, path) => {\n let current = classPartObject;\n const parts = path.split(CLASS_PART_SEPARATOR);\n const len = parts.length;\n for (let i = 0; i < len; i++) {\n const part = parts[i];\n let next = current.nextPart.get(part);\n if (!next) {\n next = createClassPartObject();\n current.nextPart.set(part, next);\n }\n current = next;\n }\n return current;\n};\n// Type guard maintains monomorphic check\nconst isThemeGetter = func => 'isThemeGetter' in func && func.isThemeGetter === true;\n\n// LRU cache implementation using plain objects for simplicity\nconst createLruCache = maxCacheSize => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {}\n };\n }\n let cacheSize = 0;\n let cache = Object.create(null);\n let previousCache = Object.create(null);\n const update = (key, value) => {\n cache[key] = value;\n cacheSize++;\n if (cacheSize > maxCacheSize) {\n cacheSize = 0;\n previousCache = cache;\n cache = Object.create(null);\n }\n };\n return {\n get(key) {\n let value = cache[key];\n if (value !== undefined) {\n return value;\n }\n if ((value = previousCache[key]) !== undefined) {\n update(key, value);\n return value;\n }\n },\n set(key, value) {\n if (key in cache) {\n cache[key] = value;\n } else {\n update(key, value);\n }\n }\n };\n};\nconst IMPORTANT_MODIFIER = '!';\nconst MODIFIER_SEPARATOR = ':';\nconst EMPTY_MODIFIERS = [];\n// Pre-allocated result object shape for consistency\nconst createResultObject = (modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition, isExternal) => ({\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n isExternal\n});\nconst createParseClassName = config => {\n const {\n prefix,\n experimentalParseClassName\n } = config;\n /**\n * Parse class name into parts.\n *\n * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n */\n let parseClassName = className => {\n // Use simple array with push for better performance\n const modifiers = [];\n let bracketDepth = 0;\n let parenDepth = 0;\n let modifierStart = 0;\n let postfixModifierPosition;\n const len = className.length;\n for (let index = 0; index < len; index++) {\n const currentCharacter = className[index];\n if (bracketDepth === 0 && parenDepth === 0) {\n if (currentCharacter === MODIFIER_SEPARATOR) {\n modifiers.push(className.slice(modifierStart, index));\n modifierStart = index + 1;\n continue;\n }\n if (currentCharacter === '/') {\n postfixModifierPosition = index;\n continue;\n }\n }\n if (currentCharacter === '[') bracketDepth++;else if (currentCharacter === ']') bracketDepth--;else if (currentCharacter === '(') parenDepth++;else if (currentCharacter === ')') parenDepth--;\n }\n const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.slice(modifierStart);\n // Inline important modifier check\n let baseClassName = baseClassNameWithImportantModifier;\n let hasImportantModifier = false;\n if (baseClassNameWithImportantModifier.endsWith(IMPORTANT_MODIFIER)) {\n baseClassName = baseClassNameWithImportantModifier.slice(0, -1);\n hasImportantModifier = true;\n } else if (\n /**\n * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.\n * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864\n */\n baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER)) {\n baseClassName = baseClassNameWithImportantModifier.slice(1);\n hasImportantModifier = true;\n }\n const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;\n return createResultObject(modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition);\n };\n if (prefix) {\n const fullPrefix = prefix + MODIFIER_SEPARATOR;\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => className.startsWith(fullPrefix) ? parseClassNameOriginal(className.slice(fullPrefix.length)) : createResultObject(EMPTY_MODIFIERS, false, className, undefined, true);\n }\n if (experimentalParseClassName) {\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => experimentalParseClassName({\n className,\n parseClassName: parseClassNameOriginal\n });\n }\n return parseClassName;\n};\n\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nconst createSortModifiers = config => {\n // Pre-compute weights for all known modifiers for O(1) comparison\n const modifierWeights = new Map();\n // Assign weights to sensitive modifiers (highest priority, but preserve order)\n config.orderSensitiveModifiers.forEach((mod, index) => {\n modifierWeights.set(mod, 1000000 + index); // High weights for sensitive mods\n });\n return modifiers => {\n const result = [];\n let currentSegment = [];\n // Process modifiers in one pass\n for (let i = 0; i < modifiers.length; i++) {\n const modifier = modifiers[i];\n // Check if modifier is sensitive (starts with '[' or in orderSensitiveModifiers)\n const isArbitrary = modifier[0] === '[';\n const isOrderSensitive = modifierWeights.has(modifier);\n if (isArbitrary || isOrderSensitive) {\n // Sort and flush current segment alphabetically\n if (currentSegment.length > 0) {\n currentSegment.sort();\n result.push(...currentSegment);\n currentSegment = [];\n }\n result.push(modifier);\n } else {\n // Regular modifier - add to current segment for batch sorting\n currentSegment.push(modifier);\n }\n }\n // Sort and add any remaining segment items\n if (currentSegment.length > 0) {\n currentSegment.sort();\n result.push(...currentSegment);\n }\n return result;\n };\n};\nconst createConfigUtils = config => ({\n cache: createLruCache(config.cacheSize),\n parseClassName: createParseClassName(config),\n sortModifiers: createSortModifiers(config),\n postfixLookupClassGroupIds: createPostfixLookupClassGroupIds(config),\n ...createClassGroupUtils(config)\n});\nconst createPostfixLookupClassGroupIds = config => {\n const lookup = Object.create(null);\n const classGroupIds = config.postfixLookupClassGroups;\n if (classGroupIds) {\n for (let i = 0; i < classGroupIds.length; i++) {\n lookup[classGroupIds[i]] = true;\n }\n }\n return lookup;\n};\nconst SPLIT_CLASSES_REGEX = /\\s+/;\nconst mergeClassList = (classList, configUtils) => {\n const {\n parseClassName,\n getClassGroupId,\n getConflictingClassGroupIds,\n sortModifiers,\n postfixLookupClassGroupIds\n } = configUtils;\n /**\n * Set of classGroupIds in following format:\n * `{importantModifier}{variantModifiers}{classGroupId}`\n * @example 'float'\n * @example 'hover:focus:bg-color'\n * @example 'md:!pr'\n */\n const classGroupsInConflict = [];\n const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);\n let result = '';\n for (let index = classNames.length - 1; index >= 0; index -= 1) {\n const originalClassName = classNames[index];\n const {\n isExternal,\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n } = parseClassName(originalClassName);\n if (isExternal) {\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n let hasPostfixModifier = !!maybePostfixModifierPosition;\n let classGroupId;\n if (hasPostfixModifier) {\n const baseClassNameWithoutPostfix = baseClassName.substring(0, maybePostfixModifierPosition);\n classGroupId = getClassGroupId(baseClassNameWithoutPostfix);\n const classGroupIdWithPostfix = classGroupId && postfixLookupClassGroupIds[classGroupId] ? getClassGroupId(baseClassName) : undefined;\n if (classGroupIdWithPostfix && classGroupIdWithPostfix !== classGroupId) {\n classGroupId = classGroupIdWithPostfix;\n hasPostfixModifier = false;\n }\n } else {\n classGroupId = getClassGroupId(baseClassName);\n }\n if (!classGroupId) {\n if (!hasPostfixModifier) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n classGroupId = getClassGroupId(baseClassName);\n if (!classGroupId) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n hasPostfixModifier = false;\n }\n // Fast path: skip sorting for empty or single modifier\n const variantModifier = modifiers.length === 0 ? '' : modifiers.length === 1 ? modifiers[0] : sortModifiers(modifiers).join(':');\n const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;\n const classId = modifierId + classGroupId;\n if (classGroupsInConflict.indexOf(classId) > -1) {\n // Tailwind class omitted due to conflict\n continue;\n }\n classGroupsInConflict.push(classId);\n const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);\n for (let i = 0; i < conflictGroups.length; ++i) {\n const group = conflictGroups[i];\n classGroupsInConflict.push(modifierId + group);\n }\n // Tailwind class not in conflict\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n }\n return result;\n};\n\n/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n */\nconst twJoin = (...classLists) => {\n let index = 0;\n let argument;\n let resolvedValue;\n let string = '';\n while (index < classLists.length) {\n if (argument = classLists[index++]) {\n if (resolvedValue = toValue(argument)) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nconst toValue = mix => {\n // Fast path for strings\n if (typeof mix === 'string') {\n return mix;\n }\n let resolvedValue;\n let string = '';\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if (resolvedValue = toValue(mix[k])) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nconst createTailwindMerge = (createConfigFirst, ...createConfigRest) => {\n let configUtils;\n let cacheGet;\n let cacheSet;\n let functionToCall;\n const initTailwindMerge = classList => {\n const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());\n configUtils = createConfigUtils(config);\n cacheGet = configUtils.cache.get;\n cacheSet = configUtils.cache.set;\n functionToCall = tailwindMerge;\n return tailwindMerge(classList);\n };\n const tailwindMerge = classList => {\n const cachedResult = cacheGet(classList);\n if (cachedResult) {\n return cachedResult;\n }\n const result = mergeClassList(classList, configUtils);\n cacheSet(classList, result);\n return result;\n };\n functionToCall = initTailwindMerge;\n return (...args) => functionToCall(twJoin(...args));\n};\nconst fallbackThemeArr = [];\nconst fromTheme = key => {\n const themeGetter = theme => theme[key] || fallbackThemeArr;\n themeGetter.isThemeGetter = true;\n return themeGetter;\n};\nconst arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i;\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i;\nconst fractionRegex = /^\\d+(?:\\.\\d+)?\\/\\d+(?:\\.\\d+)?$/;\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/;\nconst lengthUnitRegex = /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/;\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\\(.+\\)$/;\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/;\nconst imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/;\nconst isFraction = value => fractionRegex.test(value);\nconst isNumber = value => !!value && !Number.isNaN(Number(value));\nconst isInteger = value => !!value && Number.isInteger(Number(value));\nconst isPercent = value => value.endsWith('%') && isNumber(value.slice(0, -1));\nconst isTshirtSize = value => tshirtUnitRegex.test(value);\nconst isAny = () => true;\nconst isLengthOnly = value =>\n// `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n// For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n// I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\nlengthUnitRegex.test(value) && !colorFunctionRegex.test(value);\nconst isNever = () => false;\nconst isShadow = value => shadowRegex.test(value);\nconst isImage = value => imageRegex.test(value);\nconst isAnyNonArbitrary = value => !isArbitraryValue(value) && !isArbitraryVariable(value);\nconst isNamedContainerQuery = value => value.startsWith('@container') && (value[10] === '/' && value[11] !== undefined || value[11] === 's' && value[16] !== undefined && value.startsWith('-size/', 10) || value[11] === 'n' && value[18] !== undefined && value.startsWith('-normal/', 10));\nconst isArbitrarySize = value => getIsArbitraryValue(value, isLabelSize, isNever);\nconst isArbitraryValue = value => arbitraryValueRegex.test(value);\nconst isArbitraryLength = value => getIsArbitraryValue(value, isLabelLength, isLengthOnly);\nconst isArbitraryNumber = value => getIsArbitraryValue(value, isLabelNumber, isNumber);\nconst isArbitraryWeight = value => getIsArbitraryValue(value, isLabelWeight, isAny);\nconst isArbitraryFamilyName = value => getIsArbitraryValue(value, isLabelFamilyName, isNever);\nconst isArbitraryPosition = value => getIsArbitraryValue(value, isLabelPosition, isNever);\nconst isArbitraryImage = value => getIsArbitraryValue(value, isLabelImage, isImage);\nconst isArbitraryShadow = value => getIsArbitraryValue(value, isLabelShadow, isShadow);\nconst isArbitraryVariable = value => arbitraryVariableRegex.test(value);\nconst isArbitraryVariableLength = value => getIsArbitraryVariable(value, isLabelLength);\nconst isArbitraryVariableFamilyName = value => getIsArbitraryVariable(value, isLabelFamilyName);\nconst isArbitraryVariablePosition = value => getIsArbitraryVariable(value, isLabelPosition);\nconst isArbitraryVariableSize = value => getIsArbitraryVariable(value, isLabelSize);\nconst isArbitraryVariableImage = value => getIsArbitraryVariable(value, isLabelImage);\nconst isArbitraryVariableShadow = value => getIsArbitraryVariable(value, isLabelShadow, true);\nconst isArbitraryVariableWeight = value => getIsArbitraryVariable(value, isLabelWeight, true);\n// Helpers\nconst getIsArbitraryValue = (value, testLabel, testValue) => {\n const result = arbitraryValueRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return testValue(result[2]);\n }\n return false;\n};\nconst getIsArbitraryVariable = (value, testLabel, shouldMatchNoLabel = false) => {\n const result = arbitraryVariableRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return shouldMatchNoLabel;\n }\n return false;\n};\n// Labels\nconst isLabelPosition = label => label === 'position' || label === 'percentage';\nconst isLabelImage = label => label === 'image' || label === 'url';\nconst isLabelSize = label => label === 'length' || label === 'size' || label === 'bg-size';\nconst isLabelLength = label => label === 'length';\nconst isLabelNumber = label => label === 'number';\nconst isLabelFamilyName = label => label === 'family-name';\nconst isLabelWeight = label => label === 'number' || label === 'weight';\nconst isLabelShadow = label => label === 'shadow';\nconst validators = /*#__PURE__*/Object.defineProperty({\n __proto__: null,\n isAny,\n isAnyNonArbitrary,\n isArbitraryFamilyName,\n isArbitraryImage,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryValue,\n isArbitraryVariable,\n isArbitraryVariableFamilyName,\n isArbitraryVariableImage,\n isArbitraryVariableLength,\n isArbitraryVariablePosition,\n isArbitraryVariableShadow,\n isArbitraryVariableSize,\n isArbitraryVariableWeight,\n isArbitraryWeight,\n isFraction,\n isInteger,\n isNamedContainerQuery,\n isNumber,\n isPercent,\n isTshirtSize\n}, Symbol.toStringTag, {\n value: 'Module'\n});\nconst getDefaultConfig = () => {\n /**\n * Theme getters for theme variable namespaces\n * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces\n */\n /***/\n const themeColor = fromTheme('color');\n const themeFont = fromTheme('font');\n const themeText = fromTheme('text');\n const themeFontWeight = fromTheme('font-weight');\n const themeTracking = fromTheme('tracking');\n const themeLeading = fromTheme('leading');\n const themeBreakpoint = fromTheme('breakpoint');\n const themeContainer = fromTheme('container');\n const themeSpacing = fromTheme('spacing');\n const themeRadius = fromTheme('radius');\n const themeShadow = fromTheme('shadow');\n const themeInsetShadow = fromTheme('inset-shadow');\n const themeTextShadow = fromTheme('text-shadow');\n const themeDropShadow = fromTheme('drop-shadow');\n const themeBlur = fromTheme('blur');\n const themePerspective = fromTheme('perspective');\n const themeAspect = fromTheme('aspect');\n const themeEase = fromTheme('ease');\n const themeAnimate = fromTheme('animate');\n /**\n * Helpers to avoid repeating the same scales\n *\n * We use functions that create a new array every time they're called instead of static arrays.\n * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.\n */\n /***/\n const scaleBreak = () => ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'];\n const scalePosition = () => ['center', 'top', 'bottom', 'left', 'right', 'top-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-top', 'top-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-top', 'bottom-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-bottom', 'bottom-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-bottom'];\n const scalePositionWithArbitrary = () => [...scalePosition(), isArbitraryVariable, isArbitraryValue];\n const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'];\n const scaleOverscroll = () => ['auto', 'contain', 'none'];\n const scaleUnambiguousSpacing = () => [isArbitraryVariable, isArbitraryValue, themeSpacing];\n const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()];\n const scaleGridTemplateColsRows = () => [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartAndEnd = () => ['auto', {\n span: ['full', isInteger, isArbitraryVariable, isArbitraryValue]\n }, isInteger, isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartOrEnd = () => [isInteger, 'auto', isArbitraryVariable, isArbitraryValue];\n const scaleGridAutoColsRows = () => ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue];\n const scaleAlignPrimaryAxis = () => ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch', 'baseline', 'center-safe', 'end-safe'];\n const scaleAlignSecondaryAxis = () => ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'];\n const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()];\n const scaleSizing = () => [isFraction, 'auto', 'full', 'dvw', 'dvh', 'lvw', 'lvh', 'svw', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleSizingInline = () => [isFraction, 'screen', 'full', 'dvw', 'lvw', 'svw', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleSizingBlock = () => [isFraction, 'screen', 'full', 'lh', 'dvh', 'lvh', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue];\n const scaleBgPosition = () => [...scalePosition(), isArbitraryVariablePosition, isArbitraryPosition, {\n position: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleBgRepeat = () => ['no-repeat', {\n repeat: ['', 'x', 'y', 'space', 'round']\n }];\n const scaleBgSize = () => ['auto', 'cover', 'contain', isArbitraryVariableSize, isArbitrarySize, {\n size: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleGradientStopPosition = () => [isPercent, isArbitraryVariableLength, isArbitraryLength];\n const scaleRadius = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', 'full', themeRadius, isArbitraryVariable, isArbitraryValue];\n const scaleBorderWidth = () => ['', isNumber, isArbitraryVariableLength, isArbitraryLength];\n const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'];\n const scaleBlendMode = () => ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity'];\n const scaleMaskImagePosition = () => [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition];\n const scaleBlur = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeBlur, isArbitraryVariable, isArbitraryValue];\n const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()];\n return {\n cacheSize: 500,\n theme: {\n animate: ['spin', 'ping', 'pulse', 'bounce'],\n aspect: ['video'],\n blur: [isTshirtSize],\n breakpoint: [isTshirtSize],\n color: [isAny],\n container: [isTshirtSize],\n 'drop-shadow': [isTshirtSize],\n ease: ['in', 'out', 'in-out'],\n font: [isAnyNonArbitrary],\n 'font-weight': ['thin', 'extralight', 'light', 'normal', 'medium', 'semibold', 'bold', 'extrabold', 'black'],\n 'inset-shadow': [isTshirtSize],\n leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],\n perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],\n radius: [isTshirtSize],\n shadow: [isTshirtSize],\n spacing: ['px', isNumber],\n text: [isTshirtSize],\n 'text-shadow': [isTshirtSize],\n tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest']\n },\n classGroups: {\n // --------------\n // --- Layout ---\n // --------------\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [{\n aspect: ['auto', 'square', isFraction, isArbitraryValue, isArbitraryVariable, themeAspect]\n }],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n * @deprecated since Tailwind CSS v4.0.0\n */\n container: ['container'],\n /**\n * Container Type\n * @see https://tailwindcss.com/docs/responsive-design#container-queries\n */\n 'container-type': [{\n '@container': ['', 'normal', 'size', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Container Name\n * @see https://tailwindcss.com/docs/responsive-design#named-containers\n */\n 'container-named': [isNamedContainerQuery],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [{\n columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer]\n }],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{\n 'break-after': scaleBreak()\n }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{\n 'break-before': scaleBreak()\n }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{\n 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column']\n }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{\n 'box-decoration': ['slice', 'clone']\n }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{\n box: ['border', 'content']\n }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: ['block', 'inline-block', 'inline', 'flex', 'inline-flex', 'table', 'inline-table', 'table-caption', 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row-group', 'table-row', 'flow-root', 'grid', 'inline-grid', 'contents', 'list-item', 'hidden'],\n /**\n * Screen Reader Only\n * @see https://tailwindcss.com/docs/display#screen-reader-only\n */\n sr: ['sr-only', 'not-sr-only'],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{\n float: ['right', 'left', 'none', 'start', 'end']\n }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{\n clear: ['left', 'right', 'both', 'none', 'start', 'end']\n }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: ['isolate', 'isolation-auto'],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n 'object-fit': [{\n object: ['contain', 'cover', 'fill', 'none', 'scale-down']\n }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{\n object: scalePositionWithArbitrary()\n }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{\n overflow: scaleOverflow()\n }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{\n 'overflow-x': scaleOverflow()\n }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{\n 'overflow-y': scaleOverflow()\n }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{\n overscroll: scaleOverscroll()\n }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{\n 'overscroll-x': scaleOverscroll()\n }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{\n 'overscroll-y': scaleOverscroll()\n }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n /**\n * Inset\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{\n inset: scaleInset()\n }],\n /**\n * Inset Inline\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{\n 'inset-x': scaleInset()\n }],\n /**\n * Inset Block\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{\n 'inset-y': scaleInset()\n }],\n /**\n * Inset Inline Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n * @todo class group will be renamed to `inset-s` in next major release\n */\n start: [{\n 'inset-s': scaleInset(),\n /**\n * @deprecated since Tailwind CSS v4.2.0 in favor of `inset-s-*` utilities.\n * @see https://github.com/tailwindlabs/tailwindcss/pull/19613\n */\n start: scaleInset()\n }],\n /**\n * Inset Inline End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n * @todo class group will be renamed to `inset-e` in next major release\n */\n end: [{\n 'inset-e': scaleInset(),\n /**\n * @deprecated since Tailwind CSS v4.2.0 in favor of `inset-e-*` utilities.\n * @see https://github.com/tailwindlabs/tailwindcss/pull/19613\n */\n end: scaleInset()\n }],\n /**\n * Inset Block Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-bs': [{\n 'inset-bs': scaleInset()\n }],\n /**\n * Inset Block End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-be': [{\n 'inset-be': scaleInset()\n }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{\n top: scaleInset()\n }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{\n right: scaleInset()\n }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{\n bottom: scaleInset()\n }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{\n left: scaleInset()\n }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: ['visible', 'invisible', 'collapse'],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{\n z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------------\n // --- Flexbox and Grid ---\n // ------------------------\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [{\n basis: [isFraction, 'full', 'auto', themeContainer, ...scaleUnambiguousSpacing()]\n }],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{\n flex: ['row', 'row-reverse', 'col', 'col-reverse']\n }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{\n flex: ['nowrap', 'wrap', 'wrap-reverse']\n }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{\n flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue]\n }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{\n grow: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{\n shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [{\n order: [isInteger, 'first', 'last', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{\n 'grid-cols': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{\n col: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{\n 'col-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{\n 'col-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{\n 'grid-rows': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{\n row: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{\n 'row-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{\n 'row-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{\n 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense']\n }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{\n 'auto-cols': scaleGridAutoColsRows()\n }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{\n 'auto-rows': scaleGridAutoColsRows()\n }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{\n gap: scaleUnambiguousSpacing()\n }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{\n 'gap-x': scaleUnambiguousSpacing()\n }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{\n 'gap-y': scaleUnambiguousSpacing()\n }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{\n justify: [...scaleAlignPrimaryAxis(), 'normal']\n }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{\n 'justify-items': [...scaleAlignSecondaryAxis(), 'normal']\n }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{\n 'justify-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{\n content: ['normal', ...scaleAlignPrimaryAxis()]\n }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{\n items: [...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [{\n self: ['auto', ...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{\n 'place-content': scaleAlignPrimaryAxis()\n }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{\n 'place-items': [...scaleAlignSecondaryAxis(), 'baseline']\n }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{\n 'place-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{\n p: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Inline\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{\n px: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Block\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{\n py: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Inline Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{\n ps: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Inline End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{\n pe: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Block Start\n * @see https://tailwindcss.com/docs/padding\n */\n pbs: [{\n pbs: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Block End\n * @see https://tailwindcss.com/docs/padding\n */\n pbe: [{\n pbe: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{\n pt: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{\n pr: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{\n pb: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{\n pl: scaleUnambiguousSpacing()\n }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{\n m: scaleMargin()\n }],\n /**\n * Margin Inline\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{\n mx: scaleMargin()\n }],\n /**\n * Margin Block\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{\n my: scaleMargin()\n }],\n /**\n * Margin Inline Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{\n ms: scaleMargin()\n }],\n /**\n * Margin Inline End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{\n me: scaleMargin()\n }],\n /**\n * Margin Block Start\n * @see https://tailwindcss.com/docs/margin\n */\n mbs: [{\n mbs: scaleMargin()\n }],\n /**\n * Margin Block End\n * @see https://tailwindcss.com/docs/margin\n */\n mbe: [{\n mbe: scaleMargin()\n }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{\n mt: scaleMargin()\n }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{\n mr: scaleMargin()\n }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{\n mb: scaleMargin()\n }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{\n ml: scaleMargin()\n }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x': [{\n 'space-x': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y': [{\n 'space-y': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y-reverse': ['space-y-reverse'],\n // --------------\n // --- Sizing ---\n // --------------\n /**\n * Size\n * @see https://tailwindcss.com/docs/width#setting-both-width-and-height\n */\n size: [{\n size: scaleSizing()\n }],\n /**\n * Inline Size\n * @see https://tailwindcss.com/docs/width\n */\n 'inline-size': [{\n inline: ['auto', ...scaleSizingInline()]\n }],\n /**\n * Min-Inline Size\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-inline-size': [{\n 'min-inline': ['auto', ...scaleSizingInline()]\n }],\n /**\n * Max-Inline Size\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-inline-size': [{\n 'max-inline': ['none', ...scaleSizingInline()]\n }],\n /**\n * Block Size\n * @see https://tailwindcss.com/docs/height\n */\n 'block-size': [{\n block: ['auto', ...scaleSizingBlock()]\n }],\n /**\n * Min-Block Size\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-block-size': [{\n 'min-block': ['auto', ...scaleSizingBlock()]\n }],\n /**\n * Max-Block Size\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-block-size': [{\n 'max-block': ['none', ...scaleSizingBlock()]\n }],\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{\n w: [themeContainer, 'screen', ...scaleSizing()]\n }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [{\n 'min-w': [themeContainer, 'screen', /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'none', ...scaleSizing()]\n }],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [{\n 'max-w': [themeContainer, 'screen', 'none', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'prose', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n {\n screen: [themeBreakpoint]\n }, ...scaleSizing()]\n }],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{\n h: ['screen', 'lh', ...scaleSizing()]\n }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{\n 'min-h': ['screen', 'lh', 'none', ...scaleSizing()]\n }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{\n 'max-h': ['screen', 'lh', ...scaleSizing()]\n }],\n // ------------------\n // --- Typography ---\n // ------------------\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [{\n text: ['base', themeText, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n 'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n 'font-style': ['italic', 'not-italic'],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n 'font-weight': [{\n font: [themeFontWeight, isArbitraryVariableWeight, isArbitraryWeight]\n }],\n /**\n * Font Stretch\n * @see https://tailwindcss.com/docs/font-stretch\n */\n 'font-stretch': [{\n 'font-stretch': ['ultra-condensed', 'extra-condensed', 'condensed', 'semi-condensed', 'normal', 'semi-expanded', 'expanded', 'extra-expanded', 'ultra-expanded', isPercent, isArbitraryValue]\n }],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [{\n font: [isArbitraryVariableFamilyName, isArbitraryFamilyName, themeFont]\n }],\n /**\n * Font Feature Settings\n * @see https://tailwindcss.com/docs/font-feature-settings\n */\n 'font-features': [{\n 'font-features': [isArbitraryValue]\n }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-normal': ['normal-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-ordinal': ['ordinal'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-slashed-zero': ['slashed-zero'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [{\n tracking: [themeTracking, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [{\n 'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [{\n leading: [/** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n themeLeading, ...scaleUnambiguousSpacing()]\n }],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{\n 'list-image': ['none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{\n list: ['inside', 'outside']\n }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [{\n list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{\n text: ['left', 'center', 'right', 'justify', 'start', 'end']\n }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://v3.tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{\n placeholder: scaleColor()\n }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{\n text: scaleColor()\n }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n 'text-decoration-style': [{\n decoration: [...scaleLineStyle(), 'wavy']\n }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [{\n decoration: [isNumber, 'from-font', 'auto', isArbitraryVariable, isArbitraryLength]\n }],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{\n decoration: scaleColor()\n }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [{\n 'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n /**\n * Text Wrap\n * @see https://tailwindcss.com/docs/text-wrap\n */\n 'text-wrap': [{\n text: ['wrap', 'nowrap', 'balance', 'pretty']\n }],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{\n indent: scaleUnambiguousSpacing()\n }],\n /**\n * Tab Size\n * @see https://tailwindcss.com/docs/tab-size\n */\n 'tab-size': [{\n tab: [isInteger, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [{\n align: ['baseline', 'top', 'middle', 'bottom', 'text-top', 'text-bottom', 'sub', 'super', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [{\n whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces']\n }],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n break: [{\n break: ['normal', 'words', 'all', 'keep']\n }],\n /**\n * Overflow Wrap\n * @see https://tailwindcss.com/docs/overflow-wrap\n */\n wrap: [{\n wrap: ['break-word', 'anywhere', 'normal']\n }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{\n hyphens: ['none', 'manual', 'auto']\n }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{\n content: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // -------------------\n // --- Backgrounds ---\n // -------------------\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{\n bg: ['fixed', 'local', 'scroll']\n }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{\n 'bg-clip': ['border', 'padding', 'content', 'text']\n }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{\n 'bg-origin': ['border', 'padding', 'content']\n }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{\n bg: scaleBgPosition()\n }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{\n bg: scaleBgRepeat()\n }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{\n bg: scaleBgSize()\n }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [{\n bg: ['none', {\n linear: [{\n to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl']\n }, isInteger, isArbitraryVariable, isArbitraryValue],\n radial: ['', isArbitraryVariable, isArbitraryValue],\n conic: [isInteger, isArbitraryVariable, isArbitraryValue]\n }, isArbitraryVariableImage, isArbitraryImage]\n }],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{\n bg: scaleColor()\n }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{\n from: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{\n via: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{\n to: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{\n from: scaleColor()\n }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{\n via: scaleColor()\n }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{\n to: scaleColor()\n }],\n // ---------------\n // --- Borders ---\n // ---------------\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{\n rounded: scaleRadius()\n }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{\n 'rounded-s': scaleRadius()\n }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{\n 'rounded-e': scaleRadius()\n }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{\n 'rounded-t': scaleRadius()\n }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{\n 'rounded-r': scaleRadius()\n }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{\n 'rounded-b': scaleRadius()\n }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{\n 'rounded-l': scaleRadius()\n }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{\n 'rounded-ss': scaleRadius()\n }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{\n 'rounded-se': scaleRadius()\n }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{\n 'rounded-ee': scaleRadius()\n }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{\n 'rounded-es': scaleRadius()\n }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{\n 'rounded-tl': scaleRadius()\n }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{\n 'rounded-tr': scaleRadius()\n }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{\n 'rounded-br': scaleRadius()\n }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{\n 'rounded-bl': scaleRadius()\n }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{\n border: scaleBorderWidth()\n }],\n /**\n * Border Width Inline\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{\n 'border-x': scaleBorderWidth()\n }],\n /**\n * Border Width Block\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{\n 'border-y': scaleBorderWidth()\n }],\n /**\n * Border Width Inline Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{\n 'border-s': scaleBorderWidth()\n }],\n /**\n * Border Width Inline End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{\n 'border-e': scaleBorderWidth()\n }],\n /**\n * Border Width Block Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-bs': [{\n 'border-bs': scaleBorderWidth()\n }],\n /**\n * Border Width Block End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-be': [{\n 'border-be': scaleBorderWidth()\n }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{\n 'border-t': scaleBorderWidth()\n }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{\n 'border-r': scaleBorderWidth()\n }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{\n 'border-b': scaleBorderWidth()\n }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{\n 'border-l': scaleBorderWidth()\n }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x': [{\n 'divide-x': scaleBorderWidth()\n }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y': [{\n 'divide-y': scaleBorderWidth()\n }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{\n border: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style\n */\n 'divide-style': [{\n divide: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{\n border: scaleColor()\n }],\n /**\n * Border Color Inline\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{\n 'border-x': scaleColor()\n }],\n /**\n * Border Color Block\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{\n 'border-y': scaleColor()\n }],\n /**\n * Border Color Inline Start\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-s': [{\n 'border-s': scaleColor()\n }],\n /**\n * Border Color Inline End\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-e': [{\n 'border-e': scaleColor()\n }],\n /**\n * Border Color Block Start\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-bs': [{\n 'border-bs': scaleColor()\n }],\n /**\n * Border Color Block End\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-be': [{\n 'border-be': scaleColor()\n }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{\n 'border-t': scaleColor()\n }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{\n 'border-r': scaleColor()\n }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{\n 'border-b': scaleColor()\n }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{\n 'border-l': scaleColor()\n }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{\n divide: scaleColor()\n }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{\n outline: [...scaleLineStyle(), 'none', 'hidden']\n }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [{\n 'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [{\n outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{\n outline: scaleColor()\n }],\n // ---------------\n // --- Effects ---\n // ---------------\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [{\n shadow: [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color\n */\n 'shadow-color': [{\n shadow: scaleColor()\n }],\n /**\n * Inset Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow\n */\n 'inset-shadow': [{\n 'inset-shadow': ['none', themeInsetShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Inset Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color\n */\n 'inset-shadow-color': [{\n 'inset-shadow': scaleColor()\n }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring\n */\n 'ring-w': [{\n ring: scaleBorderWidth()\n }],\n /**\n * Ring Width Inset\n * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color\n */\n 'ring-color': [{\n ring: scaleColor()\n }],\n /**\n * Ring Offset Width\n * @see https://v3.tailwindcss.com/docs/ring-offset-width\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-w': [{\n 'ring-offset': [isNumber, isArbitraryLength]\n }],\n /**\n * Ring Offset Color\n * @see https://v3.tailwindcss.com/docs/ring-offset-color\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-color': [{\n 'ring-offset': scaleColor()\n }],\n /**\n * Inset Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring\n */\n 'inset-ring-w': [{\n 'inset-ring': scaleBorderWidth()\n }],\n /**\n * Inset Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color\n */\n 'inset-ring-color': [{\n 'inset-ring': scaleColor()\n }],\n /**\n * Text Shadow\n * @see https://tailwindcss.com/docs/text-shadow\n */\n 'text-shadow': [{\n 'text-shadow': ['none', themeTextShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Text Shadow Color\n * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color\n */\n 'text-shadow-color': [{\n 'text-shadow': scaleColor()\n }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{\n opacity: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{\n 'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter']\n }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{\n 'bg-blend': scaleBlendMode()\n }],\n /**\n * Mask Clip\n * @see https://tailwindcss.com/docs/mask-clip\n */\n 'mask-clip': [{\n 'mask-clip': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }, 'mask-no-clip'],\n /**\n * Mask Composite\n * @see https://tailwindcss.com/docs/mask-composite\n */\n 'mask-composite': [{\n mask: ['add', 'subtract', 'intersect', 'exclude']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image-linear-pos': [{\n 'mask-linear': [isNumber]\n }],\n 'mask-image-linear-from-pos': [{\n 'mask-linear-from': scaleMaskImagePosition()\n }],\n 'mask-image-linear-to-pos': [{\n 'mask-linear-to': scaleMaskImagePosition()\n }],\n 'mask-image-linear-from-color': [{\n 'mask-linear-from': scaleColor()\n }],\n 'mask-image-linear-to-color': [{\n 'mask-linear-to': scaleColor()\n }],\n 'mask-image-t-from-pos': [{\n 'mask-t-from': scaleMaskImagePosition()\n }],\n 'mask-image-t-to-pos': [{\n 'mask-t-to': scaleMaskImagePosition()\n }],\n 'mask-image-t-from-color': [{\n 'mask-t-from': scaleColor()\n }],\n 'mask-image-t-to-color': [{\n 'mask-t-to': scaleColor()\n }],\n 'mask-image-r-from-pos': [{\n 'mask-r-from': scaleMaskImagePosition()\n }],\n 'mask-image-r-to-pos': [{\n 'mask-r-to': scaleMaskImagePosition()\n }],\n 'mask-image-r-from-color': [{\n 'mask-r-from': scaleColor()\n }],\n 'mask-image-r-to-color': [{\n 'mask-r-to': scaleColor()\n }],\n 'mask-image-b-from-pos': [{\n 'mask-b-from': scaleMaskImagePosition()\n }],\n 'mask-image-b-to-pos': [{\n 'mask-b-to': scaleMaskImagePosition()\n }],\n 'mask-image-b-from-color': [{\n 'mask-b-from': scaleColor()\n }],\n 'mask-image-b-to-color': [{\n 'mask-b-to': scaleColor()\n }],\n 'mask-image-l-from-pos': [{\n 'mask-l-from': scaleMaskImagePosition()\n }],\n 'mask-image-l-to-pos': [{\n 'mask-l-to': scaleMaskImagePosition()\n }],\n 'mask-image-l-from-color': [{\n 'mask-l-from': scaleColor()\n }],\n 'mask-image-l-to-color': [{\n 'mask-l-to': scaleColor()\n }],\n 'mask-image-x-from-pos': [{\n 'mask-x-from': scaleMaskImagePosition()\n }],\n 'mask-image-x-to-pos': [{\n 'mask-x-to': scaleMaskImagePosition()\n }],\n 'mask-image-x-from-color': [{\n 'mask-x-from': scaleColor()\n }],\n 'mask-image-x-to-color': [{\n 'mask-x-to': scaleColor()\n }],\n 'mask-image-y-from-pos': [{\n 'mask-y-from': scaleMaskImagePosition()\n }],\n 'mask-image-y-to-pos': [{\n 'mask-y-to': scaleMaskImagePosition()\n }],\n 'mask-image-y-from-color': [{\n 'mask-y-from': scaleColor()\n }],\n 'mask-image-y-to-color': [{\n 'mask-y-to': scaleColor()\n }],\n 'mask-image-radial': [{\n 'mask-radial': [isArbitraryVariable, isArbitraryValue]\n }],\n 'mask-image-radial-from-pos': [{\n 'mask-radial-from': scaleMaskImagePosition()\n }],\n 'mask-image-radial-to-pos': [{\n 'mask-radial-to': scaleMaskImagePosition()\n }],\n 'mask-image-radial-from-color': [{\n 'mask-radial-from': scaleColor()\n }],\n 'mask-image-radial-to-color': [{\n 'mask-radial-to': scaleColor()\n }],\n 'mask-image-radial-shape': [{\n 'mask-radial': ['circle', 'ellipse']\n }],\n 'mask-image-radial-size': [{\n 'mask-radial': [{\n closest: ['side', 'corner'],\n farthest: ['side', 'corner']\n }]\n }],\n 'mask-image-radial-pos': [{\n 'mask-radial-at': scalePosition()\n }],\n 'mask-image-conic-pos': [{\n 'mask-conic': [isNumber]\n }],\n 'mask-image-conic-from-pos': [{\n 'mask-conic-from': scaleMaskImagePosition()\n }],\n 'mask-image-conic-to-pos': [{\n 'mask-conic-to': scaleMaskImagePosition()\n }],\n 'mask-image-conic-from-color': [{\n 'mask-conic-from': scaleColor()\n }],\n 'mask-image-conic-to-color': [{\n 'mask-conic-to': scaleColor()\n }],\n /**\n * Mask Mode\n * @see https://tailwindcss.com/docs/mask-mode\n */\n 'mask-mode': [{\n mask: ['alpha', 'luminance', 'match']\n }],\n /**\n * Mask Origin\n * @see https://tailwindcss.com/docs/mask-origin\n */\n 'mask-origin': [{\n 'mask-origin': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }],\n /**\n * Mask Position\n * @see https://tailwindcss.com/docs/mask-position\n */\n 'mask-position': [{\n mask: scaleBgPosition()\n }],\n /**\n * Mask Repeat\n * @see https://tailwindcss.com/docs/mask-repeat\n */\n 'mask-repeat': [{\n mask: scaleBgRepeat()\n }],\n /**\n * Mask Size\n * @see https://tailwindcss.com/docs/mask-size\n */\n 'mask-size': [{\n mask: scaleBgSize()\n }],\n /**\n * Mask Type\n * @see https://tailwindcss.com/docs/mask-type\n */\n 'mask-type': [{\n 'mask-type': ['alpha', 'luminance']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image': [{\n mask: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // ---------------\n // --- Filters ---\n // ---------------\n /**\n * Filter\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [{\n filter: [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{\n blur: scaleBlur()\n }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{\n brightness: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{\n contrast: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [{\n 'drop-shadow': [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeDropShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Drop Shadow Color\n * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color\n */\n 'drop-shadow-color': [{\n 'drop-shadow': scaleColor()\n }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{\n grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{\n 'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{\n invert: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{\n saturate: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{\n sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Filter\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [{\n 'backdrop-filter': [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{\n 'backdrop-blur': scaleBlur()\n }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [{\n 'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [{\n 'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [{\n 'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [{\n 'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [{\n 'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [{\n 'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [{\n 'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [{\n 'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n // --------------\n // --- Tables ---\n // --------------\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{\n border: ['collapse', 'separate']\n }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{\n 'border-spacing': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{\n 'border-spacing-x': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{\n 'border-spacing-y': scaleUnambiguousSpacing()\n }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{\n table: ['auto', 'fixed']\n }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{\n caption: ['top', 'bottom']\n }],\n // ---------------------------------\n // --- Transitions and Animation ---\n // ---------------------------------\n /**\n * Transition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [{\n transition: ['', 'all', 'colors', 'opacity', 'shadow', 'transform', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Behavior\n * @see https://tailwindcss.com/docs/transition-behavior\n */\n 'transition-behavior': [{\n transition: ['normal', 'discrete']\n }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{\n duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [{\n ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{\n delay: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{\n animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------\n // --- Transforms ---\n // ------------------\n /**\n * Backface Visibility\n * @see https://tailwindcss.com/docs/backface-visibility\n */\n backface: [{\n backface: ['hidden', 'visible']\n }],\n /**\n * Perspective\n * @see https://tailwindcss.com/docs/perspective\n */\n perspective: [{\n perspective: [themePerspective, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Perspective Origin\n * @see https://tailwindcss.com/docs/perspective-origin\n */\n 'perspective-origin': [{\n 'perspective-origin': scalePositionWithArbitrary()\n }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{\n rotate: scaleRotate()\n }],\n /**\n * Rotate X\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-x': [{\n 'rotate-x': scaleRotate()\n }],\n /**\n * Rotate Y\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-y': [{\n 'rotate-y': scaleRotate()\n }],\n /**\n * Rotate Z\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-z': [{\n 'rotate-z': scaleRotate()\n }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{\n scale: scaleScale()\n }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{\n 'scale-x': scaleScale()\n }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{\n 'scale-y': scaleScale()\n }],\n /**\n * Scale Z\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-z': [{\n 'scale-z': scaleScale()\n }],\n /**\n * Scale 3D\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-3d': ['scale-3d'],\n /**\n * Skew\n * @see https://tailwindcss.com/docs/skew\n */\n skew: [{\n skew: scaleSkew()\n }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{\n 'skew-x': scaleSkew()\n }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{\n 'skew-y': scaleSkew()\n }],\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [{\n transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu']\n }],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [{\n origin: scalePositionWithArbitrary()\n }],\n /**\n * Transform Style\n * @see https://tailwindcss.com/docs/transform-style\n */\n 'transform-style': [{\n transform: ['3d', 'flat']\n }],\n /**\n * Translate\n * @see https://tailwindcss.com/docs/translate\n */\n translate: [{\n translate: scaleTranslate()\n }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{\n 'translate-x': scaleTranslate()\n }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{\n 'translate-y': scaleTranslate()\n }],\n /**\n * Translate Z\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-z': [{\n 'translate-z': scaleTranslate()\n }],\n /**\n * Translate None\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-none': ['translate-none'],\n /**\n * Zoom\n * @see https://tailwindcss.com/docs/zoom\n */\n zoom: [{\n zoom: [isInteger, isArbitraryVariable, isArbitraryValue]\n }],\n // ---------------------\n // --- Interactivity ---\n // ---------------------\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{\n accent: scaleColor()\n }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{\n appearance: ['none', 'auto']\n }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{\n caret: scaleColor()\n }],\n /**\n * Color Scheme\n * @see https://tailwindcss.com/docs/color-scheme\n */\n 'color-scheme': [{\n scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light']\n }],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [{\n cursor: ['auto', 'default', 'pointer', 'wait', 'text', 'move', 'help', 'not-allowed', 'none', 'context-menu', 'progress', 'cell', 'crosshair', 'vertical-text', 'alias', 'copy', 'no-drop', 'grab', 'grabbing', 'all-scroll', 'col-resize', 'row-resize', 'n-resize', 'e-resize', 's-resize', 'w-resize', 'ne-resize', 'nw-resize', 'se-resize', 'sw-resize', 'ew-resize', 'ns-resize', 'nesw-resize', 'nwse-resize', 'zoom-in', 'zoom-out', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Field Sizing\n * @see https://tailwindcss.com/docs/field-sizing\n */\n 'field-sizing': [{\n 'field-sizing': ['fixed', 'content']\n }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{\n 'pointer-events': ['auto', 'none']\n }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{\n resize: ['none', '', 'y', 'x']\n }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{\n scroll: ['auto', 'smooth']\n }],\n /**\n * Scrollbar Thumb Color\n * @see https://tailwindcss.com/docs/scrollbar-color\n */\n 'scrollbar-thumb-color': [{\n 'scrollbar-thumb': scaleColor()\n }],\n /**\n * Scrollbar Track Color\n * @see https://tailwindcss.com/docs/scrollbar-color\n */\n 'scrollbar-track-color': [{\n 'scrollbar-track': scaleColor()\n }],\n /**\n * Scrollbar Gutter\n * @see https://tailwindcss.com/docs/scrollbar-gutter\n */\n 'scrollbar-gutter': [{\n 'scrollbar-gutter': ['auto', 'stable', 'both']\n }],\n /**\n * Scrollbar Width\n * @see https://tailwindcss.com/docs/scrollbar-width\n */\n 'scrollbar-w': [{\n scrollbar: ['auto', 'thin', 'none']\n }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{\n 'scroll-m': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Inline\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{\n 'scroll-mx': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Block\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{\n 'scroll-my': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Inline Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{\n 'scroll-ms': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Inline End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{\n 'scroll-me': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Block Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mbs': [{\n 'scroll-mbs': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Block End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mbe': [{\n 'scroll-mbe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{\n 'scroll-mt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{\n 'scroll-mr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{\n 'scroll-mb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{\n 'scroll-ml': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{\n 'scroll-p': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Inline\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{\n 'scroll-px': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Block\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{\n 'scroll-py': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Inline Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{\n 'scroll-ps': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Inline End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{\n 'scroll-pe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Block Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pbs': [{\n 'scroll-pbs': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Block End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pbe': [{\n 'scroll-pbe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{\n 'scroll-pt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{\n 'scroll-pr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{\n 'scroll-pb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{\n 'scroll-pl': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{\n snap: ['start', 'end', 'center', 'align-none']\n }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{\n snap: ['normal', 'always']\n }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{\n snap: ['none', 'x', 'y', 'both']\n }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{\n snap: ['mandatory', 'proximity']\n }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [{\n touch: ['auto', 'none', 'manipulation']\n }],\n /**\n * Touch Action X\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-x': [{\n 'touch-pan': ['x', 'left', 'right']\n }],\n /**\n * Touch Action Y\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-y': [{\n 'touch-pan': ['y', 'up', 'down']\n }],\n /**\n * Touch Action Pinch Zoom\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-pz': ['touch-pinch-zoom'],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{\n select: ['none', 'text', 'all', 'auto']\n }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [{\n 'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryVariable, isArbitraryValue]\n }],\n // -----------\n // --- SVG ---\n // -----------\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{\n fill: ['none', ...scaleColor()]\n }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [{\n stroke: [isNumber, isArbitraryVariableLength, isArbitraryLength, isArbitraryNumber]\n }],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{\n stroke: ['none', ...scaleColor()]\n }],\n // ---------------------\n // --- Accessibility ---\n // ---------------------\n /**\n * Forced Color Adjust\n * @see https://tailwindcss.com/docs/forced-color-adjust\n */\n 'forced-color-adjust': [{\n 'forced-color-adjust': ['auto', 'none']\n }]\n },\n conflictingClassGroups: {\n 'container-named': ['container-type'],\n overflow: ['overflow-x', 'overflow-y'],\n overscroll: ['overscroll-x', 'overscroll-y'],\n inset: ['inset-x', 'inset-y', 'inset-bs', 'inset-be', 'start', 'end', 'top', 'right', 'bottom', 'left'],\n 'inset-x': ['right', 'left'],\n 'inset-y': ['top', 'bottom'],\n flex: ['basis', 'grow', 'shrink'],\n gap: ['gap-x', 'gap-y'],\n p: ['px', 'py', 'ps', 'pe', 'pbs', 'pbe', 'pt', 'pr', 'pb', 'pl'],\n px: ['pr', 'pl'],\n py: ['pt', 'pb'],\n m: ['mx', 'my', 'ms', 'me', 'mbs', 'mbe', 'mt', 'mr', 'mb', 'ml'],\n mx: ['mr', 'ml'],\n my: ['mt', 'mb'],\n size: ['w', 'h'],\n 'font-size': ['leading'],\n 'fvn-normal': ['fvn-ordinal', 'fvn-slashed-zero', 'fvn-figure', 'fvn-spacing', 'fvn-fraction'],\n 'fvn-ordinal': ['fvn-normal'],\n 'fvn-slashed-zero': ['fvn-normal'],\n 'fvn-figure': ['fvn-normal'],\n 'fvn-spacing': ['fvn-normal'],\n 'fvn-fraction': ['fvn-normal'],\n 'line-clamp': ['display', 'overflow'],\n rounded: ['rounded-s', 'rounded-e', 'rounded-t', 'rounded-r', 'rounded-b', 'rounded-l', 'rounded-ss', 'rounded-se', 'rounded-ee', 'rounded-es', 'rounded-tl', 'rounded-tr', 'rounded-br', 'rounded-bl'],\n 'rounded-s': ['rounded-ss', 'rounded-es'],\n 'rounded-e': ['rounded-se', 'rounded-ee'],\n 'rounded-t': ['rounded-tl', 'rounded-tr'],\n 'rounded-r': ['rounded-tr', 'rounded-br'],\n 'rounded-b': ['rounded-br', 'rounded-bl'],\n 'rounded-l': ['rounded-tl', 'rounded-bl'],\n 'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n 'border-w': ['border-w-x', 'border-w-y', 'border-w-s', 'border-w-e', 'border-w-bs', 'border-w-be', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],\n 'border-w-x': ['border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-t', 'border-w-b'],\n 'border-color': ['border-color-x', 'border-color-y', 'border-color-s', 'border-color-e', 'border-color-bs', 'border-color-be', 'border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],\n 'border-color-x': ['border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-t', 'border-color-b'],\n translate: ['translate-x', 'translate-y', 'translate-none'],\n 'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],\n 'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mbs', 'scroll-mbe', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],\n 'scroll-mx': ['scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mt', 'scroll-mb'],\n 'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pbs', 'scroll-pbe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],\n 'scroll-px': ['scroll-pr', 'scroll-pl'],\n 'scroll-py': ['scroll-pt', 'scroll-pb'],\n touch: ['touch-x', 'touch-y', 'touch-pz'],\n 'touch-x': ['touch'],\n 'touch-y': ['touch'],\n 'touch-pz': ['touch']\n },\n conflictingClassGroupModifiers: {\n 'font-size': ['leading']\n },\n postfixLookupClassGroups: ['container-type'],\n orderSensitiveModifiers: ['*', '**', 'after', 'backdrop', 'before', 'details-content', 'file', 'first-letter', 'first-line', 'marker', 'placeholder', 'selection']\n };\n};\n\n/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nconst mergeConfigs = (baseConfig, {\n cacheSize,\n prefix,\n experimentalParseClassName,\n extend = {},\n override = {}\n}) => {\n overrideProperty(baseConfig, 'cacheSize', cacheSize);\n overrideProperty(baseConfig, 'prefix', prefix);\n overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName);\n overrideConfigProperties(baseConfig.theme, override.theme);\n overrideConfigProperties(baseConfig.classGroups, override.classGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroupModifiers, override.conflictingClassGroupModifiers);\n overrideProperty(baseConfig, 'postfixLookupClassGroups', override.postfixLookupClassGroups);\n overrideProperty(baseConfig, 'orderSensitiveModifiers', override.orderSensitiveModifiers);\n mergeConfigProperties(baseConfig.theme, extend.theme);\n mergeConfigProperties(baseConfig.classGroups, extend.classGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroupModifiers, extend.conflictingClassGroupModifiers);\n mergeArrayProperties(baseConfig, extend, 'postfixLookupClassGroups');\n mergeArrayProperties(baseConfig, extend, 'orderSensitiveModifiers');\n return baseConfig;\n};\nconst overrideProperty = (baseObject, overrideKey, overrideValue) => {\n if (overrideValue !== undefined) {\n baseObject[overrideKey] = overrideValue;\n }\n};\nconst overrideConfigProperties = (baseObject, overrideObject) => {\n if (overrideObject) {\n for (const key in overrideObject) {\n overrideProperty(baseObject, key, overrideObject[key]);\n }\n }\n};\nconst mergeConfigProperties = (baseObject, mergeObject) => {\n if (mergeObject) {\n for (const key in mergeObject) {\n mergeArrayProperties(baseObject, mergeObject, key);\n }\n }\n};\nconst mergeArrayProperties = (baseObject, mergeObject, key) => {\n const mergeValue = mergeObject[key];\n if (mergeValue !== undefined) {\n baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue;\n }\n};\nconst extendTailwindMerge = (configExtension, ...createConfig) => typeof configExtension === 'function' ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig) : createTailwindMerge(() => mergeConfigs(getDefaultConfig(), configExtension), ...createConfig);\nconst twMerge = /*#__PURE__*/createTailwindMerge(getDefaultConfig);\nexport { createTailwindMerge, extendTailwindMerge, fromTheme, getDefaultConfig, mergeConfigs, twJoin, twMerge, validators };\n//# sourceMappingURL=bundle-mjs.mjs.map\n","import { ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport const cn = (...inputs: ClassValue[]) => {\n return twMerge(clsx(inputs));\n};\n","/**\n * @license React\n * react.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n MAYBE_ITERATOR_SYMBOL = Symbol.iterator;\nfunction getIteratorFn(maybeIterable) {\n if (null === maybeIterable || \"object\" !== typeof maybeIterable) return null;\n maybeIterable =\n (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n maybeIterable[\"@@iterator\"];\n return \"function\" === typeof maybeIterable ? maybeIterable : null;\n}\nvar ReactNoopUpdateQueue = {\n isMounted: function () {\n return !1;\n },\n enqueueForceUpdate: function () {},\n enqueueReplaceState: function () {},\n enqueueSetState: function () {}\n },\n assign = Object.assign,\n emptyObject = {};\nfunction Component(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n}\nComponent.prototype.isReactComponent = {};\nComponent.prototype.setState = function (partialState, callback) {\n if (\n \"object\" !== typeof partialState &&\n \"function\" !== typeof partialState &&\n null != partialState\n )\n throw Error(\n \"takes an object of state variables to update or a function which returns an object of state variables.\"\n );\n this.updater.enqueueSetState(this, partialState, callback, \"setState\");\n};\nComponent.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this, callback, \"forceUpdate\");\n};\nfunction ComponentDummy() {}\nComponentDummy.prototype = Component.prototype;\nfunction PureComponent(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n}\nvar pureComponentPrototype = (PureComponent.prototype = new ComponentDummy());\npureComponentPrototype.constructor = PureComponent;\nassign(pureComponentPrototype, Component.prototype);\npureComponentPrototype.isPureReactComponent = !0;\nvar isArrayImpl = Array.isArray;\nfunction noop() {}\nvar ReactSharedInternals = { H: null, A: null, T: null, S: null },\n hasOwnProperty = Object.prototype.hasOwnProperty;\nfunction ReactElement(type, key, props) {\n var refProp = props.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== refProp ? refProp : null,\n props: props\n };\n}\nfunction cloneAndReplaceKey(oldElement, newKey) {\n return ReactElement(oldElement.type, newKey, oldElement.props);\n}\nfunction isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n}\nfunction escape(key) {\n var escaperLookup = { \"=\": \"=0\", \":\": \"=2\" };\n return (\n \"$\" +\n key.replace(/[=:]/g, function (match) {\n return escaperLookup[match];\n })\n );\n}\nvar userProvidedKeyEscapeRegex = /\\/+/g;\nfunction getElementKey(element, index) {\n return \"object\" === typeof element && null !== element && null != element.key\n ? escape(\"\" + element.key)\n : index.toString(36);\n}\nfunction resolveThenable(thenable) {\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n default:\n switch (\n (\"string\" === typeof thenable.status\n ? thenable.then(noop, noop)\n : ((thenable.status = \"pending\"),\n thenable.then(\n function (fulfilledValue) {\n \"pending\" === thenable.status &&\n ((thenable.status = \"fulfilled\"),\n (thenable.value = fulfilledValue));\n },\n function (error) {\n \"pending\" === thenable.status &&\n ((thenable.status = \"rejected\"), (thenable.reason = error));\n }\n )),\n thenable.status)\n ) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n }\n }\n throw thenable;\n}\nfunction mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n var type = typeof children;\n if (\"undefined\" === type || \"boolean\" === type) children = null;\n var invokeCallback = !1;\n if (null === children) invokeCallback = !0;\n else\n switch (type) {\n case \"bigint\":\n case \"string\":\n case \"number\":\n invokeCallback = !0;\n break;\n case \"object\":\n switch (children.$$typeof) {\n case REACT_ELEMENT_TYPE:\n case REACT_PORTAL_TYPE:\n invokeCallback = !0;\n break;\n case REACT_LAZY_TYPE:\n return (\n (invokeCallback = children._init),\n mapIntoArray(\n invokeCallback(children._payload),\n array,\n escapedPrefix,\n nameSoFar,\n callback\n )\n );\n }\n }\n if (invokeCallback)\n return (\n (callback = callback(children)),\n (invokeCallback =\n \"\" === nameSoFar ? \".\" + getElementKey(children, 0) : nameSoFar),\n isArrayImpl(callback)\n ? ((escapedPrefix = \"\"),\n null != invokeCallback &&\n (escapedPrefix =\n invokeCallback.replace(userProvidedKeyEscapeRegex, \"$&/\") + \"/\"),\n mapIntoArray(callback, array, escapedPrefix, \"\", function (c) {\n return c;\n }))\n : null != callback &&\n (isValidElement(callback) &&\n (callback = cloneAndReplaceKey(\n callback,\n escapedPrefix +\n (null == callback.key ||\n (children && children.key === callback.key)\n ? \"\"\n : (\"\" + callback.key).replace(\n userProvidedKeyEscapeRegex,\n \"$&/\"\n ) + \"/\") +\n invokeCallback\n )),\n array.push(callback)),\n 1\n );\n invokeCallback = 0;\n var nextNamePrefix = \"\" === nameSoFar ? \".\" : nameSoFar + \":\";\n if (isArrayImpl(children))\n for (var i = 0; i < children.length; i++)\n (nameSoFar = children[i]),\n (type = nextNamePrefix + getElementKey(nameSoFar, i)),\n (invokeCallback += mapIntoArray(\n nameSoFar,\n array,\n escapedPrefix,\n type,\n callback\n ));\n else if (((i = getIteratorFn(children)), \"function\" === typeof i))\n for (\n children = i.call(children), i = 0;\n !(nameSoFar = children.next()).done;\n\n )\n (nameSoFar = nameSoFar.value),\n (type = nextNamePrefix + getElementKey(nameSoFar, i++)),\n (invokeCallback += mapIntoArray(\n nameSoFar,\n array,\n escapedPrefix,\n type,\n callback\n ));\n else if (\"object\" === type) {\n if (\"function\" === typeof children.then)\n return mapIntoArray(\n resolveThenable(children),\n array,\n escapedPrefix,\n nameSoFar,\n callback\n );\n array = String(children);\n throw Error(\n \"Objects are not valid as a React child (found: \" +\n (\"[object Object]\" === array\n ? \"object with keys {\" + Object.keys(children).join(\", \") + \"}\"\n : array) +\n \"). If you meant to render a collection of children, use an array instead.\"\n );\n }\n return invokeCallback;\n}\nfunction mapChildren(children, func, context) {\n if (null == children) return children;\n var result = [],\n count = 0;\n mapIntoArray(children, result, \"\", \"\", function (child) {\n return func.call(context, child, count++);\n });\n return result;\n}\nfunction lazyInitializer(payload) {\n if (-1 === payload._status) {\n var ctor = payload._result;\n ctor = ctor();\n ctor.then(\n function (moduleObject) {\n if (0 === payload._status || -1 === payload._status)\n (payload._status = 1), (payload._result = moduleObject);\n },\n function (error) {\n if (0 === payload._status || -1 === payload._status)\n (payload._status = 2), (payload._result = error);\n }\n );\n -1 === payload._status && ((payload._status = 0), (payload._result = ctor));\n }\n if (1 === payload._status) return payload._result.default;\n throw payload._result;\n}\nvar reportGlobalError =\n \"function\" === typeof reportError\n ? reportError\n : function (error) {\n if (\n \"object\" === typeof window &&\n \"function\" === typeof window.ErrorEvent\n ) {\n var event = new window.ErrorEvent(\"error\", {\n bubbles: !0,\n cancelable: !0,\n message:\n \"object\" === typeof error &&\n null !== error &&\n \"string\" === typeof error.message\n ? String(error.message)\n : String(error),\n error: error\n });\n if (!window.dispatchEvent(event)) return;\n } else if (\n \"object\" === typeof process &&\n \"function\" === typeof process.emit\n ) {\n process.emit(\"uncaughtException\", error);\n return;\n }\n console.error(error);\n },\n Children = {\n map: mapChildren,\n forEach: function (children, forEachFunc, forEachContext) {\n mapChildren(\n children,\n function () {\n forEachFunc.apply(this, arguments);\n },\n forEachContext\n );\n },\n count: function (children) {\n var n = 0;\n mapChildren(children, function () {\n n++;\n });\n return n;\n },\n toArray: function (children) {\n return (\n mapChildren(children, function (child) {\n return child;\n }) || []\n );\n },\n only: function (children) {\n if (!isValidElement(children))\n throw Error(\n \"React.Children.only expected to receive a single React element child.\"\n );\n return children;\n }\n };\nexports.Activity = REACT_ACTIVITY_TYPE;\nexports.Children = Children;\nexports.Component = Component;\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.Profiler = REACT_PROFILER_TYPE;\nexports.PureComponent = PureComponent;\nexports.StrictMode = REACT_STRICT_MODE_TYPE;\nexports.Suspense = REACT_SUSPENSE_TYPE;\nexports.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n ReactSharedInternals;\nexports.__COMPILER_RUNTIME = {\n __proto__: null,\n c: function (size) {\n return ReactSharedInternals.H.useMemoCache(size);\n }\n};\nexports.cache = function (fn) {\n return function () {\n return fn.apply(null, arguments);\n };\n};\nexports.cacheSignal = function () {\n return null;\n};\nexports.cloneElement = function (element, config, children) {\n if (null === element || void 0 === element)\n throw Error(\n \"The argument must be a React element, but you passed \" + element + \".\"\n );\n var props = assign({}, element.props),\n key = element.key;\n if (null != config)\n for (propName in (void 0 !== config.key && (key = \"\" + config.key), config))\n !hasOwnProperty.call(config, propName) ||\n \"key\" === propName ||\n \"__self\" === propName ||\n \"__source\" === propName ||\n (\"ref\" === propName && void 0 === config.ref) ||\n (props[propName] = config[propName]);\n var propName = arguments.length - 2;\n if (1 === propName) props.children = children;\n else if (1 < propName) {\n for (var childArray = Array(propName), i = 0; i < propName; i++)\n childArray[i] = arguments[i + 2];\n props.children = childArray;\n }\n return ReactElement(element.type, key, props);\n};\nexports.createContext = function (defaultValue) {\n defaultValue = {\n $$typeof: REACT_CONTEXT_TYPE,\n _currentValue: defaultValue,\n _currentValue2: defaultValue,\n _threadCount: 0,\n Provider: null,\n Consumer: null\n };\n defaultValue.Provider = defaultValue;\n defaultValue.Consumer = {\n $$typeof: REACT_CONSUMER_TYPE,\n _context: defaultValue\n };\n return defaultValue;\n};\nexports.createElement = function (type, config, children) {\n var propName,\n props = {},\n key = null;\n if (null != config)\n for (propName in (void 0 !== config.key && (key = \"\" + config.key), config))\n hasOwnProperty.call(config, propName) &&\n \"key\" !== propName &&\n \"__self\" !== propName &&\n \"__source\" !== propName &&\n (props[propName] = config[propName]);\n var childrenLength = arguments.length - 2;\n if (1 === childrenLength) props.children = children;\n else if (1 < childrenLength) {\n for (var childArray = Array(childrenLength), i = 0; i < childrenLength; i++)\n childArray[i] = arguments[i + 2];\n props.children = childArray;\n }\n if (type && type.defaultProps)\n for (propName in ((childrenLength = type.defaultProps), childrenLength))\n void 0 === props[propName] &&\n (props[propName] = childrenLength[propName]);\n return ReactElement(type, key, props);\n};\nexports.createRef = function () {\n return { current: null };\n};\nexports.forwardRef = function (render) {\n return { $$typeof: REACT_FORWARD_REF_TYPE, render: render };\n};\nexports.isValidElement = isValidElement;\nexports.lazy = function (ctor) {\n return {\n $$typeof: REACT_LAZY_TYPE,\n _payload: { _status: -1, _result: ctor },\n _init: lazyInitializer\n };\n};\nexports.memo = function (type, compare) {\n return {\n $$typeof: REACT_MEMO_TYPE,\n type: type,\n compare: void 0 === compare ? null : compare\n };\n};\nexports.startTransition = function (scope) {\n var prevTransition = ReactSharedInternals.T,\n currentTransition = {};\n ReactSharedInternals.T = currentTransition;\n try {\n var returnValue = scope(),\n onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish &&\n onStartTransitionFinish(currentTransition, returnValue);\n \"object\" === typeof returnValue &&\n null !== returnValue &&\n \"function\" === typeof returnValue.then &&\n returnValue.then(noop, reportGlobalError);\n } catch (error) {\n reportGlobalError(error);\n } finally {\n null !== prevTransition &&\n null !== currentTransition.types &&\n (prevTransition.types = currentTransition.types),\n (ReactSharedInternals.T = prevTransition);\n }\n};\nexports.unstable_useCacheRefresh = function () {\n return ReactSharedInternals.H.useCacheRefresh();\n};\nexports.use = function (usable) {\n return ReactSharedInternals.H.use(usable);\n};\nexports.useActionState = function (action, initialState, permalink) {\n return ReactSharedInternals.H.useActionState(action, initialState, permalink);\n};\nexports.useCallback = function (callback, deps) {\n return ReactSharedInternals.H.useCallback(callback, deps);\n};\nexports.useContext = function (Context) {\n return ReactSharedInternals.H.useContext(Context);\n};\nexports.useDebugValue = function () {};\nexports.useDeferredValue = function (value, initialValue) {\n return ReactSharedInternals.H.useDeferredValue(value, initialValue);\n};\nexports.useEffect = function (create, deps) {\n return ReactSharedInternals.H.useEffect(create, deps);\n};\nexports.useEffectEvent = function (callback) {\n return ReactSharedInternals.H.useEffectEvent(callback);\n};\nexports.useId = function () {\n return ReactSharedInternals.H.useId();\n};\nexports.useImperativeHandle = function (ref, create, deps) {\n return ReactSharedInternals.H.useImperativeHandle(ref, create, deps);\n};\nexports.useInsertionEffect = function (create, deps) {\n return ReactSharedInternals.H.useInsertionEffect(create, deps);\n};\nexports.useLayoutEffect = function (create, deps) {\n return ReactSharedInternals.H.useLayoutEffect(create, deps);\n};\nexports.useMemo = function (create, deps) {\n return ReactSharedInternals.H.useMemo(create, deps);\n};\nexports.useOptimistic = function (passthrough, reducer) {\n return ReactSharedInternals.H.useOptimistic(passthrough, reducer);\n};\nexports.useReducer = function (reducer, initialArg, init) {\n return ReactSharedInternals.H.useReducer(reducer, initialArg, init);\n};\nexports.useRef = function (initialValue) {\n return ReactSharedInternals.H.useRef(initialValue);\n};\nexports.useState = function (initialState) {\n return ReactSharedInternals.H.useState(initialState);\n};\nexports.useSyncExternalStore = function (\n subscribe,\n getSnapshot,\n getServerSnapshot\n) {\n return ReactSharedInternals.H.useSyncExternalStore(\n subscribe,\n getSnapshot,\n getServerSnapshot\n );\n};\nexports.useTransition = function () {\n return ReactSharedInternals.H.useTransition();\n};\nexports.version = \"19.2.7\";\n","/**\n * @license React\n * react.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function defineDeprecationWarning(methodName, info) {\n Object.defineProperty(Component.prototype, methodName, {\n get: function () {\n console.warn(\n \"%s(...) is deprecated in plain JavaScript React classes. %s\",\n info[0],\n info[1]\n );\n }\n });\n }\n function getIteratorFn(maybeIterable) {\n if (null === maybeIterable || \"object\" !== typeof maybeIterable)\n return null;\n maybeIterable =\n (MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL]) ||\n maybeIterable[\"@@iterator\"];\n return \"function\" === typeof maybeIterable ? maybeIterable : null;\n }\n function warnNoop(publicInstance, callerName) {\n publicInstance =\n ((publicInstance = publicInstance.constructor) &&\n (publicInstance.displayName || publicInstance.name)) ||\n \"ReactClass\";\n var warningKey = publicInstance + \".\" + callerName;\n didWarnStateUpdateForUnmountedComponent[warningKey] ||\n (console.error(\n \"Can't call %s on a component that is not yet mounted. This is a no-op, but it might indicate a bug in your application. Instead, assign to `this.state` directly or define a `state = {};` class property with the desired state in the %s component.\",\n callerName,\n publicInstance\n ),\n (didWarnStateUpdateForUnmountedComponent[warningKey] = !0));\n }\n function Component(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n }\n function ComponentDummy() {}\n function PureComponent(props, context, updater) {\n this.props = props;\n this.context = context;\n this.refs = emptyObject;\n this.updater = updater || ReactNoopUpdateQueue;\n }\n function noop() {}\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkKeyStringCoercion(value) {\n try {\n testStringCoercion(value);\n var JSCompiler_inline_result = !1;\n } catch (e) {\n JSCompiler_inline_result = !0;\n }\n if (JSCompiler_inline_result) {\n JSCompiler_inline_result = console;\n var JSCompiler_temp_const = JSCompiler_inline_result.error;\n var JSCompiler_inline_result$jscomp$0 =\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n value[Symbol.toStringTag]) ||\n value.constructor.name ||\n \"Object\";\n JSCompiler_temp_const.call(\n JSCompiler_inline_result,\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n JSCompiler_inline_result$jscomp$0\n );\n return testStringCoercion(value);\n }\n }\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (\n (\"number\" === typeof type.tag &&\n console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ),\n type.$$typeof)\n ) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return type.displayName || \"Context\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function getTaskName(type) {\n if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n if (\n \"object\" === typeof type &&\n null !== type &&\n type.$$typeof === REACT_LAZY_TYPE\n )\n return \"<...>\";\n try {\n var name = getComponentNameFromType(type);\n return name ? \"<\" + name + \">\" : \"<...>\";\n } catch (x) {\n return \"<...>\";\n }\n }\n function getOwner() {\n var dispatcher = ReactSharedInternals.A;\n return null === dispatcher ? null : dispatcher.getOwner();\n }\n function UnknownOwner() {\n return Error(\"react-stack-top-frame\");\n }\n function hasValidKey(config) {\n if (hasOwnProperty.call(config, \"key\")) {\n var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n if (getter && getter.isReactWarning) return !1;\n }\n return void 0 !== config.key;\n }\n function defineKeyPropWarningGetter(props, displayName) {\n function warnAboutAccessingKey() {\n specialPropKeyWarningShown ||\n ((specialPropKeyWarningShown = !0),\n console.error(\n \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n displayName\n ));\n }\n warnAboutAccessingKey.isReactWarning = !0;\n Object.defineProperty(props, \"key\", {\n get: warnAboutAccessingKey,\n configurable: !0\n });\n }\n function elementRefGetterWithDeprecationWarning() {\n var componentName = getComponentNameFromType(this.type);\n didWarnAboutElementRef[componentName] ||\n ((didWarnAboutElementRef[componentName] = !0),\n console.error(\n \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n ));\n componentName = this.props.ref;\n return void 0 !== componentName ? componentName : null;\n }\n function ReactElement(type, key, props, owner, debugStack, debugTask) {\n var refProp = props.ref;\n type = {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n props: props,\n _owner: owner\n };\n null !== (void 0 !== refProp ? refProp : null)\n ? Object.defineProperty(type, \"ref\", {\n enumerable: !1,\n get: elementRefGetterWithDeprecationWarning\n })\n : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n type._store = {};\n Object.defineProperty(type._store, \"validated\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: 0\n });\n Object.defineProperty(type, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n });\n Object.defineProperty(type, \"_debugStack\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugStack\n });\n Object.defineProperty(type, \"_debugTask\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugTask\n });\n Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n return type;\n }\n function cloneAndReplaceKey(oldElement, newKey) {\n newKey = ReactElement(\n oldElement.type,\n newKey,\n oldElement.props,\n oldElement._owner,\n oldElement._debugStack,\n oldElement._debugTask\n );\n oldElement._store &&\n (newKey._store.validated = oldElement._store.validated);\n return newKey;\n }\n function validateChildKeys(node) {\n isValidElement(node)\n ? node._store && (node._store.validated = 1)\n : \"object\" === typeof node &&\n null !== node &&\n node.$$typeof === REACT_LAZY_TYPE &&\n (\"fulfilled\" === node._payload.status\n ? isValidElement(node._payload.value) &&\n node._payload.value._store &&\n (node._payload.value._store.validated = 1)\n : node._store && (node._store.validated = 1));\n }\n function isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n }\n function escape(key) {\n var escaperLookup = { \"=\": \"=0\", \":\": \"=2\" };\n return (\n \"$\" +\n key.replace(/[=:]/g, function (match) {\n return escaperLookup[match];\n })\n );\n }\n function getElementKey(element, index) {\n return \"object\" === typeof element &&\n null !== element &&\n null != element.key\n ? (checkKeyStringCoercion(element.key), escape(\"\" + element.key))\n : index.toString(36);\n }\n function resolveThenable(thenable) {\n switch (thenable.status) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n default:\n switch (\n (\"string\" === typeof thenable.status\n ? thenable.then(noop, noop)\n : ((thenable.status = \"pending\"),\n thenable.then(\n function (fulfilledValue) {\n \"pending\" === thenable.status &&\n ((thenable.status = \"fulfilled\"),\n (thenable.value = fulfilledValue));\n },\n function (error) {\n \"pending\" === thenable.status &&\n ((thenable.status = \"rejected\"),\n (thenable.reason = error));\n }\n )),\n thenable.status)\n ) {\n case \"fulfilled\":\n return thenable.value;\n case \"rejected\":\n throw thenable.reason;\n }\n }\n throw thenable;\n }\n function mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {\n var type = typeof children;\n if (\"undefined\" === type || \"boolean\" === type) children = null;\n var invokeCallback = !1;\n if (null === children) invokeCallback = !0;\n else\n switch (type) {\n case \"bigint\":\n case \"string\":\n case \"number\":\n invokeCallback = !0;\n break;\n case \"object\":\n switch (children.$$typeof) {\n case REACT_ELEMENT_TYPE:\n case REACT_PORTAL_TYPE:\n invokeCallback = !0;\n break;\n case REACT_LAZY_TYPE:\n return (\n (invokeCallback = children._init),\n mapIntoArray(\n invokeCallback(children._payload),\n array,\n escapedPrefix,\n nameSoFar,\n callback\n )\n );\n }\n }\n if (invokeCallback) {\n invokeCallback = children;\n callback = callback(invokeCallback);\n var childKey =\n \"\" === nameSoFar ? \".\" + getElementKey(invokeCallback, 0) : nameSoFar;\n isArrayImpl(callback)\n ? ((escapedPrefix = \"\"),\n null != childKey &&\n (escapedPrefix =\n childKey.replace(userProvidedKeyEscapeRegex, \"$&/\") + \"/\"),\n mapIntoArray(callback, array, escapedPrefix, \"\", function (c) {\n return c;\n }))\n : null != callback &&\n (isValidElement(callback) &&\n (null != callback.key &&\n ((invokeCallback && invokeCallback.key === callback.key) ||\n checkKeyStringCoercion(callback.key)),\n (escapedPrefix = cloneAndReplaceKey(\n callback,\n escapedPrefix +\n (null == callback.key ||\n (invokeCallback && invokeCallback.key === callback.key)\n ? \"\"\n : (\"\" + callback.key).replace(\n userProvidedKeyEscapeRegex,\n \"$&/\"\n ) + \"/\") +\n childKey\n )),\n \"\" !== nameSoFar &&\n null != invokeCallback &&\n isValidElement(invokeCallback) &&\n null == invokeCallback.key &&\n invokeCallback._store &&\n !invokeCallback._store.validated &&\n (escapedPrefix._store.validated = 2),\n (callback = escapedPrefix)),\n array.push(callback));\n return 1;\n }\n invokeCallback = 0;\n childKey = \"\" === nameSoFar ? \".\" : nameSoFar + \":\";\n if (isArrayImpl(children))\n for (var i = 0; i < children.length; i++)\n (nameSoFar = children[i]),\n (type = childKey + getElementKey(nameSoFar, i)),\n (invokeCallback += mapIntoArray(\n nameSoFar,\n array,\n escapedPrefix,\n type,\n callback\n ));\n else if (((i = getIteratorFn(children)), \"function\" === typeof i))\n for (\n i === children.entries &&\n (didWarnAboutMaps ||\n console.warn(\n \"Using Maps as children is not supported. Use an array of keyed ReactElements instead.\"\n ),\n (didWarnAboutMaps = !0)),\n children = i.call(children),\n i = 0;\n !(nameSoFar = children.next()).done;\n\n )\n (nameSoFar = nameSoFar.value),\n (type = childKey + getElementKey(nameSoFar, i++)),\n (invokeCallback += mapIntoArray(\n nameSoFar,\n array,\n escapedPrefix,\n type,\n callback\n ));\n else if (\"object\" === type) {\n if (\"function\" === typeof children.then)\n return mapIntoArray(\n resolveThenable(children),\n array,\n escapedPrefix,\n nameSoFar,\n callback\n );\n array = String(children);\n throw Error(\n \"Objects are not valid as a React child (found: \" +\n (\"[object Object]\" === array\n ? \"object with keys {\" + Object.keys(children).join(\", \") + \"}\"\n : array) +\n \"). If you meant to render a collection of children, use an array instead.\"\n );\n }\n return invokeCallback;\n }\n function mapChildren(children, func, context) {\n if (null == children) return children;\n var result = [],\n count = 0;\n mapIntoArray(children, result, \"\", \"\", function (child) {\n return func.call(context, child, count++);\n });\n return result;\n }\n function lazyInitializer(payload) {\n if (-1 === payload._status) {\n var ioInfo = payload._ioInfo;\n null != ioInfo && (ioInfo.start = ioInfo.end = performance.now());\n ioInfo = payload._result;\n var thenable = ioInfo();\n thenable.then(\n function (moduleObject) {\n if (0 === payload._status || -1 === payload._status) {\n payload._status = 1;\n payload._result = moduleObject;\n var _ioInfo = payload._ioInfo;\n null != _ioInfo && (_ioInfo.end = performance.now());\n void 0 === thenable.status &&\n ((thenable.status = \"fulfilled\"),\n (thenable.value = moduleObject));\n }\n },\n function (error) {\n if (0 === payload._status || -1 === payload._status) {\n payload._status = 2;\n payload._result = error;\n var _ioInfo2 = payload._ioInfo;\n null != _ioInfo2 && (_ioInfo2.end = performance.now());\n void 0 === thenable.status &&\n ((thenable.status = \"rejected\"), (thenable.reason = error));\n }\n }\n );\n ioInfo = payload._ioInfo;\n if (null != ioInfo) {\n ioInfo.value = thenable;\n var displayName = thenable.displayName;\n \"string\" === typeof displayName && (ioInfo.name = displayName);\n }\n -1 === payload._status &&\n ((payload._status = 0), (payload._result = thenable));\n }\n if (1 === payload._status)\n return (\n (ioInfo = payload._result),\n void 0 === ioInfo &&\n console.error(\n \"lazy: Expected the result of a dynamic import() call. Instead received: %s\\n\\nYour code should look like: \\n const MyComponent = lazy(() => import('./MyComponent'))\\n\\nDid you accidentally put curly braces around the import?\",\n ioInfo\n ),\n \"default\" in ioInfo ||\n console.error(\n \"lazy: Expected the result of a dynamic import() call. Instead received: %s\\n\\nYour code should look like: \\n const MyComponent = lazy(() => import('./MyComponent'))\",\n ioInfo\n ),\n ioInfo.default\n );\n throw payload._result;\n }\n function resolveDispatcher() {\n var dispatcher = ReactSharedInternals.H;\n null === dispatcher &&\n console.error(\n \"Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\\n1. You might have mismatching versions of React and the renderer (such as React DOM)\\n2. You might be breaking the Rules of Hooks\\n3. You might have more than one copy of React in the same app\\nSee https://react.dev/link/invalid-hook-call for tips about how to debug and fix this problem.\"\n );\n return dispatcher;\n }\n function releaseAsyncTransition() {\n ReactSharedInternals.asyncTransitions--;\n }\n function enqueueTask(task) {\n if (null === enqueueTaskImpl)\n try {\n var requireString = (\"require\" + Math.random()).slice(0, 7);\n enqueueTaskImpl = (module && module[requireString]).call(\n module,\n \"timers\"\n ).setImmediate;\n } catch (_err) {\n enqueueTaskImpl = function (callback) {\n !1 === didWarnAboutMessageChannel &&\n ((didWarnAboutMessageChannel = !0),\n \"undefined\" === typeof MessageChannel &&\n console.error(\n \"This browser does not have a MessageChannel implementation, so enqueuing tasks via await act(async () => ...) will fail. Please file an issue at https://github.com/facebook/react/issues if you encounter this warning.\"\n ));\n var channel = new MessageChannel();\n channel.port1.onmessage = callback;\n channel.port2.postMessage(void 0);\n };\n }\n return enqueueTaskImpl(task);\n }\n function aggregateErrors(errors) {\n return 1 < errors.length && \"function\" === typeof AggregateError\n ? new AggregateError(errors)\n : errors[0];\n }\n function popActScope(prevActQueue, prevActScopeDepth) {\n prevActScopeDepth !== actScopeDepth - 1 &&\n console.error(\n \"You seem to have overlapping act() calls, this is not supported. Be sure to await previous act() calls before making a new one. \"\n );\n actScopeDepth = prevActScopeDepth;\n }\n function recursivelyFlushAsyncActWork(returnValue, resolve, reject) {\n var queue = ReactSharedInternals.actQueue;\n if (null !== queue)\n if (0 !== queue.length)\n try {\n flushActQueue(queue);\n enqueueTask(function () {\n return recursivelyFlushAsyncActWork(returnValue, resolve, reject);\n });\n return;\n } catch (error) {\n ReactSharedInternals.thrownErrors.push(error);\n }\n else ReactSharedInternals.actQueue = null;\n 0 < ReactSharedInternals.thrownErrors.length\n ? ((queue = aggregateErrors(ReactSharedInternals.thrownErrors)),\n (ReactSharedInternals.thrownErrors.length = 0),\n reject(queue))\n : resolve(returnValue);\n }\n function flushActQueue(queue) {\n if (!isFlushing) {\n isFlushing = !0;\n var i = 0;\n try {\n for (; i < queue.length; i++) {\n var callback = queue[i];\n do {\n ReactSharedInternals.didUsePromise = !1;\n var continuation = callback(!1);\n if (null !== continuation) {\n if (ReactSharedInternals.didUsePromise) {\n queue[i] = callback;\n queue.splice(0, i);\n return;\n }\n callback = continuation;\n } else break;\n } while (1);\n }\n queue.length = 0;\n } catch (error) {\n queue.splice(0, i + 1), ReactSharedInternals.thrownErrors.push(error);\n } finally {\n isFlushing = !1;\n }\n }\n }\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());\n var REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n MAYBE_ITERATOR_SYMBOL = Symbol.iterator,\n didWarnStateUpdateForUnmountedComponent = {},\n ReactNoopUpdateQueue = {\n isMounted: function () {\n return !1;\n },\n enqueueForceUpdate: function (publicInstance) {\n warnNoop(publicInstance, \"forceUpdate\");\n },\n enqueueReplaceState: function (publicInstance) {\n warnNoop(publicInstance, \"replaceState\");\n },\n enqueueSetState: function (publicInstance) {\n warnNoop(publicInstance, \"setState\");\n }\n },\n assign = Object.assign,\n emptyObject = {};\n Object.freeze(emptyObject);\n Component.prototype.isReactComponent = {};\n Component.prototype.setState = function (partialState, callback) {\n if (\n \"object\" !== typeof partialState &&\n \"function\" !== typeof partialState &&\n null != partialState\n )\n throw Error(\n \"takes an object of state variables to update or a function which returns an object of state variables.\"\n );\n this.updater.enqueueSetState(this, partialState, callback, \"setState\");\n };\n Component.prototype.forceUpdate = function (callback) {\n this.updater.enqueueForceUpdate(this, callback, \"forceUpdate\");\n };\n var deprecatedAPIs = {\n isMounted: [\n \"isMounted\",\n \"Instead, make sure to clean up subscriptions and pending requests in componentWillUnmount to prevent memory leaks.\"\n ],\n replaceState: [\n \"replaceState\",\n \"Refactor your code to use setState instead (see https://github.com/facebook/react/issues/3236).\"\n ]\n };\n for (fnName in deprecatedAPIs)\n deprecatedAPIs.hasOwnProperty(fnName) &&\n defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);\n ComponentDummy.prototype = Component.prototype;\n deprecatedAPIs = PureComponent.prototype = new ComponentDummy();\n deprecatedAPIs.constructor = PureComponent;\n assign(deprecatedAPIs, Component.prototype);\n deprecatedAPIs.isPureReactComponent = !0;\n var isArrayImpl = Array.isArray,\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n ReactSharedInternals = {\n H: null,\n A: null,\n T: null,\n S: null,\n actQueue: null,\n asyncTransitions: 0,\n isBatchingLegacy: !1,\n didScheduleLegacyUpdate: !1,\n didUsePromise: !1,\n thrownErrors: [],\n getCurrentStack: null,\n recentlyCreatedOwnerStacks: 0\n },\n hasOwnProperty = Object.prototype.hasOwnProperty,\n createTask = console.createTask\n ? console.createTask\n : function () {\n return null;\n };\n deprecatedAPIs = {\n react_stack_bottom_frame: function (callStackForError) {\n return callStackForError();\n }\n };\n var specialPropKeyWarningShown, didWarnAboutOldJSXRuntime;\n var didWarnAboutElementRef = {};\n var unknownOwnerDebugStack = deprecatedAPIs.react_stack_bottom_frame.bind(\n deprecatedAPIs,\n UnknownOwner\n )();\n var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));\n var didWarnAboutMaps = !1,\n userProvidedKeyEscapeRegex = /\\/+/g,\n reportGlobalError =\n \"function\" === typeof reportError\n ? reportError\n : function (error) {\n if (\n \"object\" === typeof window &&\n \"function\" === typeof window.ErrorEvent\n ) {\n var event = new window.ErrorEvent(\"error\", {\n bubbles: !0,\n cancelable: !0,\n message:\n \"object\" === typeof error &&\n null !== error &&\n \"string\" === typeof error.message\n ? String(error.message)\n : String(error),\n error: error\n });\n if (!window.dispatchEvent(event)) return;\n } else if (\n \"object\" === typeof process &&\n \"function\" === typeof process.emit\n ) {\n process.emit(\"uncaughtException\", error);\n return;\n }\n console.error(error);\n },\n didWarnAboutMessageChannel = !1,\n enqueueTaskImpl = null,\n actScopeDepth = 0,\n didWarnNoAwaitAct = !1,\n isFlushing = !1,\n queueSeveralMicrotasks =\n \"function\" === typeof queueMicrotask\n ? function (callback) {\n queueMicrotask(function () {\n return queueMicrotask(callback);\n });\n }\n : enqueueTask;\n deprecatedAPIs = Object.freeze({\n __proto__: null,\n c: function (size) {\n return resolveDispatcher().useMemoCache(size);\n }\n });\n var fnName = {\n map: mapChildren,\n forEach: function (children, forEachFunc, forEachContext) {\n mapChildren(\n children,\n function () {\n forEachFunc.apply(this, arguments);\n },\n forEachContext\n );\n },\n count: function (children) {\n var n = 0;\n mapChildren(children, function () {\n n++;\n });\n return n;\n },\n toArray: function (children) {\n return (\n mapChildren(children, function (child) {\n return child;\n }) || []\n );\n },\n only: function (children) {\n if (!isValidElement(children))\n throw Error(\n \"React.Children.only expected to receive a single React element child.\"\n );\n return children;\n }\n };\n exports.Activity = REACT_ACTIVITY_TYPE;\n exports.Children = fnName;\n exports.Component = Component;\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.Profiler = REACT_PROFILER_TYPE;\n exports.PureComponent = PureComponent;\n exports.StrictMode = REACT_STRICT_MODE_TYPE;\n exports.Suspense = REACT_SUSPENSE_TYPE;\n exports.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE =\n ReactSharedInternals;\n exports.__COMPILER_RUNTIME = deprecatedAPIs;\n exports.act = function (callback) {\n var prevActQueue = ReactSharedInternals.actQueue,\n prevActScopeDepth = actScopeDepth;\n actScopeDepth++;\n var queue = (ReactSharedInternals.actQueue =\n null !== prevActQueue ? prevActQueue : []),\n didAwaitActCall = !1;\n try {\n var result = callback();\n } catch (error) {\n ReactSharedInternals.thrownErrors.push(error);\n }\n if (0 < ReactSharedInternals.thrownErrors.length)\n throw (\n (popActScope(prevActQueue, prevActScopeDepth),\n (callback = aggregateErrors(ReactSharedInternals.thrownErrors)),\n (ReactSharedInternals.thrownErrors.length = 0),\n callback)\n );\n if (\n null !== result &&\n \"object\" === typeof result &&\n \"function\" === typeof result.then\n ) {\n var thenable = result;\n queueSeveralMicrotasks(function () {\n didAwaitActCall ||\n didWarnNoAwaitAct ||\n ((didWarnNoAwaitAct = !0),\n console.error(\n \"You called act(async () => ...) without await. This could lead to unexpected testing behaviour, interleaving multiple act calls and mixing their scopes. You should - await act(async () => ...);\"\n ));\n });\n return {\n then: function (resolve, reject) {\n didAwaitActCall = !0;\n thenable.then(\n function (returnValue) {\n popActScope(prevActQueue, prevActScopeDepth);\n if (0 === prevActScopeDepth) {\n try {\n flushActQueue(queue),\n enqueueTask(function () {\n return recursivelyFlushAsyncActWork(\n returnValue,\n resolve,\n reject\n );\n });\n } catch (error$0) {\n ReactSharedInternals.thrownErrors.push(error$0);\n }\n if (0 < ReactSharedInternals.thrownErrors.length) {\n var _thrownError = aggregateErrors(\n ReactSharedInternals.thrownErrors\n );\n ReactSharedInternals.thrownErrors.length = 0;\n reject(_thrownError);\n }\n } else resolve(returnValue);\n },\n function (error) {\n popActScope(prevActQueue, prevActScopeDepth);\n 0 < ReactSharedInternals.thrownErrors.length\n ? ((error = aggregateErrors(\n ReactSharedInternals.thrownErrors\n )),\n (ReactSharedInternals.thrownErrors.length = 0),\n reject(error))\n : reject(error);\n }\n );\n }\n };\n }\n var returnValue$jscomp$0 = result;\n popActScope(prevActQueue, prevActScopeDepth);\n 0 === prevActScopeDepth &&\n (flushActQueue(queue),\n 0 !== queue.length &&\n queueSeveralMicrotasks(function () {\n didAwaitActCall ||\n didWarnNoAwaitAct ||\n ((didWarnNoAwaitAct = !0),\n console.error(\n \"A component suspended inside an `act` scope, but the `act` call was not awaited. When testing React components that depend on asynchronous data, you must await the result:\\n\\nawait act(() => ...)\"\n ));\n }),\n (ReactSharedInternals.actQueue = null));\n if (0 < ReactSharedInternals.thrownErrors.length)\n throw (\n ((callback = aggregateErrors(ReactSharedInternals.thrownErrors)),\n (ReactSharedInternals.thrownErrors.length = 0),\n callback)\n );\n return {\n then: function (resolve, reject) {\n didAwaitActCall = !0;\n 0 === prevActScopeDepth\n ? ((ReactSharedInternals.actQueue = queue),\n enqueueTask(function () {\n return recursivelyFlushAsyncActWork(\n returnValue$jscomp$0,\n resolve,\n reject\n );\n }))\n : resolve(returnValue$jscomp$0);\n }\n };\n };\n exports.cache = function (fn) {\n return function () {\n return fn.apply(null, arguments);\n };\n };\n exports.cacheSignal = function () {\n return null;\n };\n exports.captureOwnerStack = function () {\n var getCurrentStack = ReactSharedInternals.getCurrentStack;\n return null === getCurrentStack ? null : getCurrentStack();\n };\n exports.cloneElement = function (element, config, children) {\n if (null === element || void 0 === element)\n throw Error(\n \"The argument must be a React element, but you passed \" +\n element +\n \".\"\n );\n var props = assign({}, element.props),\n key = element.key,\n owner = element._owner;\n if (null != config) {\n var JSCompiler_inline_result;\n a: {\n if (\n hasOwnProperty.call(config, \"ref\") &&\n (JSCompiler_inline_result = Object.getOwnPropertyDescriptor(\n config,\n \"ref\"\n ).get) &&\n JSCompiler_inline_result.isReactWarning\n ) {\n JSCompiler_inline_result = !1;\n break a;\n }\n JSCompiler_inline_result = void 0 !== config.ref;\n }\n JSCompiler_inline_result && (owner = getOwner());\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (key = \"\" + config.key));\n for (propName in config)\n !hasOwnProperty.call(config, propName) ||\n \"key\" === propName ||\n \"__self\" === propName ||\n \"__source\" === propName ||\n (\"ref\" === propName && void 0 === config.ref) ||\n (props[propName] = config[propName]);\n }\n var propName = arguments.length - 2;\n if (1 === propName) props.children = children;\n else if (1 < propName) {\n JSCompiler_inline_result = Array(propName);\n for (var i = 0; i < propName; i++)\n JSCompiler_inline_result[i] = arguments[i + 2];\n props.children = JSCompiler_inline_result;\n }\n props = ReactElement(\n element.type,\n key,\n props,\n owner,\n element._debugStack,\n element._debugTask\n );\n for (key = 2; key < arguments.length; key++)\n validateChildKeys(arguments[key]);\n return props;\n };\n exports.createContext = function (defaultValue) {\n defaultValue = {\n $$typeof: REACT_CONTEXT_TYPE,\n _currentValue: defaultValue,\n _currentValue2: defaultValue,\n _threadCount: 0,\n Provider: null,\n Consumer: null\n };\n defaultValue.Provider = defaultValue;\n defaultValue.Consumer = {\n $$typeof: REACT_CONSUMER_TYPE,\n _context: defaultValue\n };\n defaultValue._currentRenderer = null;\n defaultValue._currentRenderer2 = null;\n return defaultValue;\n };\n exports.createElement = function (type, config, children) {\n for (var i = 2; i < arguments.length; i++)\n validateChildKeys(arguments[i]);\n i = {};\n var key = null;\n if (null != config)\n for (propName in (didWarnAboutOldJSXRuntime ||\n !(\"__self\" in config) ||\n \"key\" in config ||\n ((didWarnAboutOldJSXRuntime = !0),\n console.warn(\n \"Your app (or one of its dependencies) is using an outdated JSX transform. Update to the modern JSX transform for faster performance: https://react.dev/link/new-jsx-transform\"\n )),\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (key = \"\" + config.key)),\n config))\n hasOwnProperty.call(config, propName) &&\n \"key\" !== propName &&\n \"__self\" !== propName &&\n \"__source\" !== propName &&\n (i[propName] = config[propName]);\n var childrenLength = arguments.length - 2;\n if (1 === childrenLength) i.children = children;\n else if (1 < childrenLength) {\n for (\n var childArray = Array(childrenLength), _i = 0;\n _i < childrenLength;\n _i++\n )\n childArray[_i] = arguments[_i + 2];\n Object.freeze && Object.freeze(childArray);\n i.children = childArray;\n }\n if (type && type.defaultProps)\n for (propName in ((childrenLength = type.defaultProps), childrenLength))\n void 0 === i[propName] && (i[propName] = childrenLength[propName]);\n key &&\n defineKeyPropWarningGetter(\n i,\n \"function\" === typeof type\n ? type.displayName || type.name || \"Unknown\"\n : type\n );\n var propName = 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return ReactElement(\n type,\n key,\n i,\n getOwner(),\n propName ? Error(\"react-stack-top-frame\") : unknownOwnerDebugStack,\n propName ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n exports.createRef = function () {\n var refObject = { current: null };\n Object.seal(refObject);\n return refObject;\n };\n exports.forwardRef = function (render) {\n null != render && render.$$typeof === REACT_MEMO_TYPE\n ? console.error(\n \"forwardRef requires a render function but received a `memo` component. Instead of forwardRef(memo(...)), use memo(forwardRef(...)).\"\n )\n : \"function\" !== typeof render\n ? console.error(\n \"forwardRef requires a render function but was given %s.\",\n null === render ? \"null\" : typeof render\n )\n : 0 !== render.length &&\n 2 !== render.length &&\n console.error(\n \"forwardRef render functions accept exactly two parameters: props and ref. %s\",\n 1 === render.length\n ? \"Did you forget to use the ref parameter?\"\n : \"Any additional parameter will be undefined.\"\n );\n null != render &&\n null != render.defaultProps &&\n console.error(\n \"forwardRef render functions do not support defaultProps. Did you accidentally pass a React component?\"\n );\n var elementType = { $$typeof: REACT_FORWARD_REF_TYPE, render: render },\n ownName;\n Object.defineProperty(elementType, \"displayName\", {\n enumerable: !1,\n configurable: !0,\n get: function () {\n return ownName;\n },\n set: function (name) {\n ownName = name;\n render.name ||\n render.displayName ||\n (Object.defineProperty(render, \"name\", { value: name }),\n (render.displayName = name));\n }\n });\n return elementType;\n };\n exports.isValidElement = isValidElement;\n exports.lazy = function (ctor) {\n ctor = { _status: -1, _result: ctor };\n var lazyType = {\n $$typeof: REACT_LAZY_TYPE,\n _payload: ctor,\n _init: lazyInitializer\n },\n ioInfo = {\n name: \"lazy\",\n start: -1,\n end: -1,\n value: null,\n owner: null,\n debugStack: Error(\"react-stack-top-frame\"),\n debugTask: console.createTask ? console.createTask(\"lazy()\") : null\n };\n ctor._ioInfo = ioInfo;\n lazyType._debugInfo = [{ awaited: ioInfo }];\n return lazyType;\n };\n exports.memo = function (type, compare) {\n null == type &&\n console.error(\n \"memo: The first argument must be a component. Instead received: %s\",\n null === type ? \"null\" : typeof type\n );\n compare = {\n $$typeof: REACT_MEMO_TYPE,\n type: type,\n compare: void 0 === compare ? null : compare\n };\n var ownName;\n Object.defineProperty(compare, \"displayName\", {\n enumerable: !1,\n configurable: !0,\n get: function () {\n return ownName;\n },\n set: function (name) {\n ownName = name;\n type.name ||\n type.displayName ||\n (Object.defineProperty(type, \"name\", { value: name }),\n (type.displayName = name));\n }\n });\n return compare;\n };\n exports.startTransition = function (scope) {\n var prevTransition = ReactSharedInternals.T,\n currentTransition = {};\n currentTransition._updatedFibers = new Set();\n ReactSharedInternals.T = currentTransition;\n try {\n var returnValue = scope(),\n onStartTransitionFinish = ReactSharedInternals.S;\n null !== onStartTransitionFinish &&\n onStartTransitionFinish(currentTransition, returnValue);\n \"object\" === typeof returnValue &&\n null !== returnValue &&\n \"function\" === typeof returnValue.then &&\n (ReactSharedInternals.asyncTransitions++,\n returnValue.then(releaseAsyncTransition, releaseAsyncTransition),\n returnValue.then(noop, reportGlobalError));\n } catch (error) {\n reportGlobalError(error);\n } finally {\n null === prevTransition &&\n currentTransition._updatedFibers &&\n ((scope = currentTransition._updatedFibers.size),\n currentTransition._updatedFibers.clear(),\n 10 < scope &&\n console.warn(\n \"Detected a large number of updates inside startTransition. If this is due to a subscription please re-write it to use React provided hooks. Otherwise concurrent mode guarantees are off the table.\"\n )),\n null !== prevTransition &&\n null !== currentTransition.types &&\n (null !== prevTransition.types &&\n prevTransition.types !== currentTransition.types &&\n console.error(\n \"We expected inner Transitions to have transferred the outer types set and that you cannot add to the outer Transition while inside the inner.This is a bug in React.\"\n ),\n (prevTransition.types = currentTransition.types)),\n (ReactSharedInternals.T = prevTransition);\n }\n };\n exports.unstable_useCacheRefresh = function () {\n return resolveDispatcher().useCacheRefresh();\n };\n exports.use = function (usable) {\n return resolveDispatcher().use(usable);\n };\n exports.useActionState = function (action, initialState, permalink) {\n return resolveDispatcher().useActionState(\n action,\n initialState,\n permalink\n );\n };\n exports.useCallback = function (callback, deps) {\n return resolveDispatcher().useCallback(callback, deps);\n };\n exports.useContext = function (Context) {\n var dispatcher = resolveDispatcher();\n Context.$$typeof === REACT_CONSUMER_TYPE &&\n console.error(\n \"Calling useContext(Context.Consumer) is not supported and will cause bugs. Did you mean to call useContext(Context) instead?\"\n );\n return dispatcher.useContext(Context);\n };\n exports.useDebugValue = function (value, formatterFn) {\n return resolveDispatcher().useDebugValue(value, formatterFn);\n };\n exports.useDeferredValue = function (value, initialValue) {\n return resolveDispatcher().useDeferredValue(value, initialValue);\n };\n exports.useEffect = function (create, deps) {\n null == create &&\n console.warn(\n \"React Hook useEffect requires an effect callback. Did you forget to pass a callback to the hook?\"\n );\n return resolveDispatcher().useEffect(create, deps);\n };\n exports.useEffectEvent = function (callback) {\n return resolveDispatcher().useEffectEvent(callback);\n };\n exports.useId = function () {\n return resolveDispatcher().useId();\n };\n exports.useImperativeHandle = function (ref, create, deps) {\n return resolveDispatcher().useImperativeHandle(ref, create, deps);\n };\n exports.useInsertionEffect = function (create, deps) {\n null == create &&\n console.warn(\n \"React Hook useInsertionEffect requires an effect callback. Did you forget to pass a callback to the hook?\"\n );\n return resolveDispatcher().useInsertionEffect(create, deps);\n };\n exports.useLayoutEffect = function (create, deps) {\n null == create &&\n console.warn(\n \"React Hook useLayoutEffect requires an effect callback. Did you forget to pass a callback to the hook?\"\n );\n return resolveDispatcher().useLayoutEffect(create, deps);\n };\n exports.useMemo = function (create, deps) {\n return resolveDispatcher().useMemo(create, deps);\n };\n exports.useOptimistic = function (passthrough, reducer) {\n return resolveDispatcher().useOptimistic(passthrough, reducer);\n };\n exports.useReducer = function (reducer, initialArg, init) {\n return resolveDispatcher().useReducer(reducer, initialArg, init);\n };\n exports.useRef = function (initialValue) {\n return resolveDispatcher().useRef(initialValue);\n };\n exports.useState = function (initialState) {\n return resolveDispatcher().useState(initialState);\n };\n exports.useSyncExternalStore = function (\n subscribe,\n getSnapshot,\n getServerSnapshot\n ) {\n return resolveDispatcher().useSyncExternalStore(\n subscribe,\n getSnapshot,\n getServerSnapshot\n );\n };\n exports.useTransition = function () {\n return resolveDispatcher().useTransition();\n };\n exports.version = \"19.2.7\";\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","/**\n * @license lucide-react v1.17.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst mergeClasses = (...classes) => classes.filter((className, index, array) => {\n return Boolean(className) && className.trim() !== \"\" && array.indexOf(className) === index;\n}).join(\" \").trim();\n\nexport { mergeClasses };\n//# sourceMappingURL=mergeClasses.mjs.map\n","/**\n * @license lucide-react v1.17.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\n\nexport { toKebabCase };\n//# sourceMappingURL=toKebabCase.mjs.map\n","/**\n * @license lucide-react v1.17.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst toCamelCase = (string) => string.replace(\n /^([A-Z])|[\\s-_]+(\\w)/g,\n (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()\n);\n\nexport { toCamelCase };\n//# sourceMappingURL=toCamelCase.mjs.map\n","/**\n * @license lucide-react v1.17.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { toCamelCase } from './toCamelCase.mjs';\n\nconst toPascalCase = (string) => {\n const camelCase = toCamelCase(string);\n return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);\n};\n\nexport { toPascalCase };\n//# sourceMappingURL=toPascalCase.mjs.map\n","/**\n * @license lucide-react v1.17.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nvar defaultAttributes = {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n};\n\nexport { defaultAttributes as default };\n//# sourceMappingURL=defaultAttributes.mjs.map\n","/**\n * @license lucide-react v1.17.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst hasA11yProp = (props) => {\n for (const prop in props) {\n if (prop.startsWith(\"aria-\") || prop === \"role\" || prop === \"title\") {\n return true;\n }\n }\n return false;\n};\n\nexport { hasA11yProp };\n//# sourceMappingURL=hasA11yProp.mjs.map\n","\"use strict\";\n\"use client\";\n/**\n * @license lucide-react v1.17.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { createContext, useContext, useMemo, createElement } from 'react';\n\nconst LucideContext = createContext({});\nfunction LucideProvider({\n children,\n size,\n color,\n strokeWidth,\n absoluteStrokeWidth,\n className\n}) {\n const value = useMemo(\n () => ({\n size,\n color,\n strokeWidth,\n absoluteStrokeWidth,\n className\n }),\n [size, color, strokeWidth, absoluteStrokeWidth, className]\n );\n return createElement(LucideContext.Provider, { value }, children);\n}\nconst useLucideContext = () => useContext(LucideContext);\n\nexport { LucideProvider, useLucideContext };\n//# sourceMappingURL=context.mjs.map\n","\"use strict\";\n\"use client\";\n/**\n * @license lucide-react v1.17.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport defaultAttributes from './defaultAttributes.mjs';\nimport { hasA11yProp } from './shared/src/utils/hasA11yProp.mjs';\nimport { mergeClasses } from './shared/src/utils/mergeClasses.mjs';\nimport { useLucideContext } from './context.mjs';\n\nconst Icon = forwardRef(\n ({ color, size, strokeWidth, absoluteStrokeWidth, className = \"\", children, iconNode, ...rest }, ref) => {\n const {\n size: contextSize = 24,\n strokeWidth: contextStrokeWidth = 2,\n absoluteStrokeWidth: contextAbsoluteStrokeWidth = false,\n color: contextColor = \"currentColor\",\n className: contextClass = \"\"\n } = useLucideContext() ?? {};\n const calculatedStrokeWidth = absoluteStrokeWidth ?? contextAbsoluteStrokeWidth ? Number(strokeWidth ?? contextStrokeWidth) * 24 / Number(size ?? contextSize) : strokeWidth ?? contextStrokeWidth;\n return createElement(\n \"svg\",\n {\n ref,\n ...defaultAttributes,\n width: size ?? contextSize ?? defaultAttributes.width,\n height: size ?? contextSize ?? defaultAttributes.height,\n stroke: color ?? contextColor,\n strokeWidth: calculatedStrokeWidth,\n className: mergeClasses(\"lucide\", contextClass, className),\n ...!children && !hasA11yProp(rest) && { \"aria-hidden\": \"true\" },\n ...rest\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...Array.isArray(children) ? children : [children]\n ]\n );\n }\n);\n\nexport { Icon as default };\n//# sourceMappingURL=Icon.mjs.map\n","/**\n * @license lucide-react v1.17.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport { mergeClasses } from './shared/src/utils/mergeClasses.mjs';\nimport { toKebabCase } from './shared/src/utils/toKebabCase.mjs';\nimport { toPascalCase } from './shared/src/utils/toPascalCase.mjs';\nimport Icon from './Icon.mjs';\n\nconst createLucideIcon = (iconName, iconNode) => {\n const Component = forwardRef(\n ({ className, ...props }, ref) => createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className\n ),\n ...props\n })\n );\n Component.displayName = toPascalCase(iconName);\n return Component;\n};\n\nexport { createLucideIcon as default };\n//# sourceMappingURL=createLucideIcon.mjs.map\n","/**\n * @license lucide-react v1.17.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"path\", { d: \"M18 6 6 18\", key: \"1bl5f8\" }],\n [\"path\", { d: \"m6 6 12 12\", key: \"d8bk6v\" }]\n];\nconst X = createLucideIcon(\"x\", __iconNode);\n\nexport { __iconNode, X as default };\n//# sourceMappingURL=x.mjs.map\n","/**\n * Copyright 2022 Joe Bell. All rights reserved.\n *\n * This file is licensed to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with the\n * License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT\n * WARRANTIES OR REPRESENTATIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations under\n * the License.\n */ import { clsx } from \"clsx\";\nconst falsyToString = (value)=>typeof value === \"boolean\" ? `${value}` : value === 0 ? \"0\" : value;\nexport const cx = clsx;\nexport const cva = (base, config)=>(props)=>{\n var _config_compoundVariants;\n if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n const { variants, defaultVariants } = config;\n const getVariantClassNames = Object.keys(variants).map((variant)=>{\n const variantProp = props === null || props === void 0 ? void 0 : props[variant];\n const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];\n if (variantProp === null) return null;\n const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);\n return variants[variant][variantKey];\n });\n const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param)=>{\n let [key, value] = param;\n if (value === undefined) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (_config_compoundVariants = config.compoundVariants) === null || _config_compoundVariants === void 0 ? void 0 : _config_compoundVariants.reduce((acc, param)=>{\n let { class: cvClass, className: cvClassName, ...compoundVariantOptions } = param;\n return Object.entries(compoundVariantOptions).every((param)=>{\n let [key, value] = param;\n return Array.isArray(value) ? value.includes({\n ...defaultVariants,\n ...propsWithoutUndefined\n }[key]) : ({\n ...defaultVariants,\n ...propsWithoutUndefined\n })[key] === value;\n }) ? [\n ...acc,\n cvClass,\n cvClassName\n ] : acc;\n }, []);\n return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n };\n\n","import { cva } from 'class-variance-authority';\n\nexport const alertWrapperStyles = cva(\n 'flex flex-row bg-default text-default p-3 gap-2.5 rounded-md border border-transparent',\n {\n variants: {\n appearance: {\n filled: 'bg-default',\n outline: 'border-default',\n dashed: 'border-dashed border-default',\n },\n variant: {\n default: 'bg-default text-default',\n primary: 'bg-primary text-white',\n info: ' bg-info text-white',\n success: 'bg-success text-white',\n warning: 'bg-warning text-white',\n danger: 'bg-danger text-white',\n },\n size: { sm: 'p-3 gap-2.5', md: 'p-3.5 gap-3', lg: 'p-4 gap-3.5' },\n inverted: {\n true: 'bg-default-inverted text-default-inverted',\n },\n },\n compoundVariants: [\n {\n appearance: ['dashed', 'outline'],\n variant: ['default'],\n className: 'border-default bg-base',\n },\n {\n appearance: ['dashed', 'outline'],\n variant: ['primary'],\n className: 'border-primary bg-base',\n },\n {\n appearance: ['dashed', 'outline'],\n variant: ['info'],\n className: 'border-info bg-base',\n },\n {\n appearance: ['dashed', 'outline'],\n variant: ['success'],\n className: 'border-success bg-base',\n },\n {\n appearance: ['dashed', 'outline'],\n variant: ['warning'],\n className: 'border-warning bg-base',\n },\n {\n appearance: ['dashed', 'outline'],\n variant: ['danger'],\n className: 'border-danger bg-base',\n },\n\n /* FILLED INVERTED */\n {\n appearance: ['filled'],\n variant: ['default'],\n inverted: true,\n className: 'bg-default-inverted text-default-inverted',\n },\n {\n appearance: ['filled'],\n variant: ['primary'],\n inverted: true,\n className: 'bg-primary-inverted text-default',\n },\n {\n appearance: ['filled'],\n variant: ['info'],\n inverted: true,\n className: 'bg-info-inverted text-default',\n },\n {\n appearance: ['filled'],\n variant: ['success'],\n inverted: true,\n className: 'bg-success-inverted text-default',\n },\n {\n appearance: ['filled'],\n variant: ['warning'],\n inverted: true,\n className: 'bg-warning-inverted text-default',\n },\n {\n appearance: ['filled'],\n variant: ['danger'],\n inverted: true,\n className: 'bg-danger-inverted text-default',\n },\n ],\n defaultVariants: {\n variant: 'default',\n appearance: 'filled',\n size: 'md',\n },\n },\n);\n\nexport const alertContentWrapperStyles = cva('flex flex-col flex-1 gap-2', {\n variants: {\n variant: {\n default: '',\n primary: '',\n info: '',\n success: '',\n warning: '',\n danger: '',\n },\n appearance: {\n filled: '',\n outline: '',\n dashed: '',\n },\n size: { sm: 'gap-2', md: 'gap2.5', lg: 'gap-3' },\n },\n compoundVariants: [{}],\n defaultVariants: {\n size: 'md',\n },\n});\n\nexport const alertTitleStyles = cva('font-semibold', {\n variants: {\n appearance: {\n filled: '',\n outline: '',\n dashed: '',\n },\n variant: {\n default: '',\n primary: '',\n info: '',\n success: '',\n warning: '',\n danger: '',\n },\n size: { sm: 'text-sm', md: 'text-base', lg: 'text-lg' },\n inverted: {\n true: '',\n },\n },\n compoundVariants: [\n {\n appearance: ['outline', 'dashed'],\n variant: 'default',\n className: 'text-default',\n },\n {\n appearance: ['outline', 'dashed'],\n variant: 'primary',\n className: 'text-primary',\n },\n {\n appearance: ['outline', 'dashed'],\n variant: 'info',\n className: 'text-info',\n },\n {\n appearance: ['outline', 'dashed'],\n variant: 'success',\n className: 'text-success',\n },\n {\n appearance: ['outline', 'dashed'],\n variant: 'warning',\n className: 'text-warning',\n },\n {\n appearance: ['outline', 'dashed'],\n variant: 'danger',\n className: 'text-danger',\n },\n ],\n defaultVariants: {\n size: 'md',\n },\n});\n\nexport const alertDescriptionStyles = cva('', {\n variants: {\n appearance: {\n filled: 'text-white',\n outline: '',\n dashed: '',\n },\n variant: {\n default: 'text-default',\n primary: '',\n info: '',\n success: '',\n warning: '',\n danger: '',\n },\n size: { sm: 'text-xs', md: 'text-sm', lg: 'text-base' },\n inverted: {\n true: 'text-default-inverted',\n },\n },\n compoundVariants: [\n {\n appearance: ['outline', 'dashed'],\n variant: ['default', 'primary', 'info', 'success', 'warning', 'danger'],\n className: 'text-default',\n },\n {\n appearance: ['filled', 'outline', 'dashed'],\n variant: ['primary', 'info', 'success', 'warning', 'danger'],\n inverted: true,\n className: 'text-default',\n },\n ],\n defaultVariants: {\n size: 'md',\n },\n});\n\nexport const alertIconStyles = cva('stroke-2', {\n variants: {\n appearance: {\n filled: '',\n outline: '',\n dashed: '',\n },\n variant: {\n default: '',\n primary: '',\n info: '',\n success: '',\n warning: '',\n danger: '',\n },\n size: { sm: 'size-5 pt-0.12', md: 'size-6 pt-0.25', lg: 'size-7 pt-0.5' },\n inverted: {\n true: '',\n },\n },\n compoundVariants: [\n {\n appearance: ['outline', 'dashed'],\n variant: 'default',\n className: 'text-default',\n },\n {\n appearance: ['outline', 'dashed'],\n variant: 'primary',\n className: 'text-primary',\n },\n {\n appearance: ['outline', 'dashed'],\n variant: 'info',\n className: 'text-info',\n },\n {\n appearance: ['outline', 'dashed'],\n variant: 'success',\n className: 'text-success',\n },\n {\n appearance: ['outline', 'dashed'],\n variant: 'warning',\n className: 'text-warning',\n },\n {\n appearance: ['outline', 'dashed'],\n variant: 'danger',\n className: 'text-danger',\n },\n\n /* FILLED INVERTED */\n {\n appearance: ['filled'],\n variant: ['default'],\n inverted: true,\n className: 'text-default-inverted',\n },\n {\n appearance: ['filled'],\n variant: ['primary'],\n inverted: true,\n className: 'text-primary',\n },\n {\n appearance: ['filled'],\n variant: ['info'],\n inverted: true,\n className: 'text-info',\n },\n {\n appearance: ['filled'],\n variant: ['success'],\n inverted: true,\n className: 'text-success',\n },\n {\n appearance: ['filled'],\n variant: ['warning'],\n inverted: true,\n className: 'text-warning',\n },\n {\n appearance: ['filled'],\n variant: ['danger'],\n inverted: true,\n className: 'text-danger',\n },\n ],\n defaultVariants: {\n size: 'md',\n },\n});\n\nexport const alertCloseButtonStyles = cva(\n 'shrink-0 cursor-pointer text-default',\n {\n variants: {\n appearance: {\n filled: 'text-white',\n outline: '',\n dashed: '',\n },\n variant: {\n default: 'text-default',\n primary: '',\n info: '',\n success: '',\n warning: '',\n danger: '',\n },\n size: { sm: 'size-5', md: 'size-6', lg: 'size-7' },\n inverted: {\n true: 'text-default',\n },\n },\n compoundVariants: [\n /* FILLED INVERTED */\n {\n appearance: ['filled'],\n variant: ['default'],\n inverted: true,\n className: 'text-default-inverted',\n },\n {\n appearance: ['outline', 'dashed'],\n variant: ['primary', 'info', 'success', 'warning', 'danger'],\n inverted: true,\n className: 'text-default',\n },\n ],\n defaultVariants: {\n size: 'md',\n },\n },\n);\n","/**\n * @license React\n * react-jsx-runtime.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\");\nfunction jsxProd(type, config, maybeKey) {\n var key = null;\n void 0 !== maybeKey && (key = \"\" + maybeKey);\n void 0 !== config.key && (key = \"\" + config.key);\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n config = maybeKey.ref;\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n ref: void 0 !== config ? config : null,\n props: maybeKey\n };\n}\nexports.Fragment = REACT_FRAGMENT_TYPE;\nexports.jsx = jsxProd;\nexports.jsxs = jsxProd;\n","/**\n * @license React\n * react-jsx-runtime.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function getComponentNameFromType(type) {\n if (null == type) return null;\n if (\"function\" === typeof type)\n return type.$$typeof === REACT_CLIENT_REFERENCE\n ? null\n : type.displayName || type.name || null;\n if (\"string\" === typeof type) return type;\n switch (type) {\n case REACT_FRAGMENT_TYPE:\n return \"Fragment\";\n case REACT_PROFILER_TYPE:\n return \"Profiler\";\n case REACT_STRICT_MODE_TYPE:\n return \"StrictMode\";\n case REACT_SUSPENSE_TYPE:\n return \"Suspense\";\n case REACT_SUSPENSE_LIST_TYPE:\n return \"SuspenseList\";\n case REACT_ACTIVITY_TYPE:\n return \"Activity\";\n }\n if (\"object\" === typeof type)\n switch (\n (\"number\" === typeof type.tag &&\n console.error(\n \"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue.\"\n ),\n type.$$typeof)\n ) {\n case REACT_PORTAL_TYPE:\n return \"Portal\";\n case REACT_CONTEXT_TYPE:\n return type.displayName || \"Context\";\n case REACT_CONSUMER_TYPE:\n return (type._context.displayName || \"Context\") + \".Consumer\";\n case REACT_FORWARD_REF_TYPE:\n var innerType = type.render;\n type = type.displayName;\n type ||\n ((type = innerType.displayName || innerType.name || \"\"),\n (type = \"\" !== type ? \"ForwardRef(\" + type + \")\" : \"ForwardRef\"));\n return type;\n case REACT_MEMO_TYPE:\n return (\n (innerType = type.displayName || null),\n null !== innerType\n ? innerType\n : getComponentNameFromType(type.type) || \"Memo\"\n );\n case REACT_LAZY_TYPE:\n innerType = type._payload;\n type = type._init;\n try {\n return getComponentNameFromType(type(innerType));\n } catch (x) {}\n }\n return null;\n }\n function testStringCoercion(value) {\n return \"\" + value;\n }\n function checkKeyStringCoercion(value) {\n try {\n testStringCoercion(value);\n var JSCompiler_inline_result = !1;\n } catch (e) {\n JSCompiler_inline_result = !0;\n }\n if (JSCompiler_inline_result) {\n JSCompiler_inline_result = console;\n var JSCompiler_temp_const = JSCompiler_inline_result.error;\n var JSCompiler_inline_result$jscomp$0 =\n (\"function\" === typeof Symbol &&\n Symbol.toStringTag &&\n value[Symbol.toStringTag]) ||\n value.constructor.name ||\n \"Object\";\n JSCompiler_temp_const.call(\n JSCompiler_inline_result,\n \"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.\",\n JSCompiler_inline_result$jscomp$0\n );\n return testStringCoercion(value);\n }\n }\n function getTaskName(type) {\n if (type === REACT_FRAGMENT_TYPE) return \"<>\";\n if (\n \"object\" === typeof type &&\n null !== type &&\n type.$$typeof === REACT_LAZY_TYPE\n )\n return \"<...>\";\n try {\n var name = getComponentNameFromType(type);\n return name ? \"<\" + name + \">\" : \"<...>\";\n } catch (x) {\n return \"<...>\";\n }\n }\n function getOwner() {\n var dispatcher = ReactSharedInternals.A;\n return null === dispatcher ? null : dispatcher.getOwner();\n }\n function UnknownOwner() {\n return Error(\"react-stack-top-frame\");\n }\n function hasValidKey(config) {\n if (hasOwnProperty.call(config, \"key\")) {\n var getter = Object.getOwnPropertyDescriptor(config, \"key\").get;\n if (getter && getter.isReactWarning) return !1;\n }\n return void 0 !== config.key;\n }\n function defineKeyPropWarningGetter(props, displayName) {\n function warnAboutAccessingKey() {\n specialPropKeyWarningShown ||\n ((specialPropKeyWarningShown = !0),\n console.error(\n \"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",\n displayName\n ));\n }\n warnAboutAccessingKey.isReactWarning = !0;\n Object.defineProperty(props, \"key\", {\n get: warnAboutAccessingKey,\n configurable: !0\n });\n }\n function elementRefGetterWithDeprecationWarning() {\n var componentName = getComponentNameFromType(this.type);\n didWarnAboutElementRef[componentName] ||\n ((didWarnAboutElementRef[componentName] = !0),\n console.error(\n \"Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.\"\n ));\n componentName = this.props.ref;\n return void 0 !== componentName ? componentName : null;\n }\n function ReactElement(type, key, props, owner, debugStack, debugTask) {\n var refProp = props.ref;\n type = {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: key,\n props: props,\n _owner: owner\n };\n null !== (void 0 !== refProp ? refProp : null)\n ? Object.defineProperty(type, \"ref\", {\n enumerable: !1,\n get: elementRefGetterWithDeprecationWarning\n })\n : Object.defineProperty(type, \"ref\", { enumerable: !1, value: null });\n type._store = {};\n Object.defineProperty(type._store, \"validated\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: 0\n });\n Object.defineProperty(type, \"_debugInfo\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: null\n });\n Object.defineProperty(type, \"_debugStack\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugStack\n });\n Object.defineProperty(type, \"_debugTask\", {\n configurable: !1,\n enumerable: !1,\n writable: !0,\n value: debugTask\n });\n Object.freeze && (Object.freeze(type.props), Object.freeze(type));\n return type;\n }\n function jsxDEVImpl(\n type,\n config,\n maybeKey,\n isStaticChildren,\n debugStack,\n debugTask\n ) {\n var children = config.children;\n if (void 0 !== children)\n if (isStaticChildren)\n if (isArrayImpl(children)) {\n for (\n isStaticChildren = 0;\n isStaticChildren < children.length;\n isStaticChildren++\n )\n validateChildKeys(children[isStaticChildren]);\n Object.freeze && Object.freeze(children);\n } else\n console.error(\n \"React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.\"\n );\n else validateChildKeys(children);\n if (hasOwnProperty.call(config, \"key\")) {\n children = getComponentNameFromType(type);\n var keys = Object.keys(config).filter(function (k) {\n return \"key\" !== k;\n });\n isStaticChildren =\n 0 < keys.length\n ? \"{key: someKey, \" + keys.join(\": ..., \") + \": ...}\"\n : \"{key: someKey}\";\n didWarnAboutKeySpread[children + isStaticChildren] ||\n ((keys =\n 0 < keys.length ? \"{\" + keys.join(\": ..., \") + \": ...}\" : \"{}\"),\n console.error(\n 'A props object containing a \"key\" prop is being spread into JSX:\\n let props = %s;\\n <%s {...props} />\\nReact keys must be passed directly to JSX without using spread:\\n let props = %s;\\n <%s key={someKey} {...props} />',\n isStaticChildren,\n children,\n keys,\n children\n ),\n (didWarnAboutKeySpread[children + isStaticChildren] = !0));\n }\n children = null;\n void 0 !== maybeKey &&\n (checkKeyStringCoercion(maybeKey), (children = \"\" + maybeKey));\n hasValidKey(config) &&\n (checkKeyStringCoercion(config.key), (children = \"\" + config.key));\n if (\"key\" in config) {\n maybeKey = {};\n for (var propName in config)\n \"key\" !== propName && (maybeKey[propName] = config[propName]);\n } else maybeKey = config;\n children &&\n defineKeyPropWarningGetter(\n maybeKey,\n \"function\" === typeof type\n ? type.displayName || type.name || \"Unknown\"\n : type\n );\n return ReactElement(\n type,\n children,\n maybeKey,\n getOwner(),\n debugStack,\n debugTask\n );\n }\n function validateChildKeys(node) {\n isValidElement(node)\n ? node._store && (node._store.validated = 1)\n : \"object\" === typeof node &&\n null !== node &&\n node.$$typeof === REACT_LAZY_TYPE &&\n (\"fulfilled\" === node._payload.status\n ? isValidElement(node._payload.value) &&\n node._payload.value._store &&\n (node._payload.value._store.validated = 1)\n : node._store && (node._store.validated = 1));\n }\n function isValidElement(object) {\n return (\n \"object\" === typeof object &&\n null !== object &&\n object.$$typeof === REACT_ELEMENT_TYPE\n );\n }\n var React = require(\"react\"),\n REACT_ELEMENT_TYPE = Symbol.for(\"react.transitional.element\"),\n REACT_PORTAL_TYPE = Symbol.for(\"react.portal\"),\n REACT_FRAGMENT_TYPE = Symbol.for(\"react.fragment\"),\n REACT_STRICT_MODE_TYPE = Symbol.for(\"react.strict_mode\"),\n REACT_PROFILER_TYPE = Symbol.for(\"react.profiler\"),\n REACT_CONSUMER_TYPE = Symbol.for(\"react.consumer\"),\n REACT_CONTEXT_TYPE = Symbol.for(\"react.context\"),\n REACT_FORWARD_REF_TYPE = Symbol.for(\"react.forward_ref\"),\n REACT_SUSPENSE_TYPE = Symbol.for(\"react.suspense\"),\n REACT_SUSPENSE_LIST_TYPE = Symbol.for(\"react.suspense_list\"),\n REACT_MEMO_TYPE = Symbol.for(\"react.memo\"),\n REACT_LAZY_TYPE = Symbol.for(\"react.lazy\"),\n REACT_ACTIVITY_TYPE = Symbol.for(\"react.activity\"),\n REACT_CLIENT_REFERENCE = Symbol.for(\"react.client.reference\"),\n ReactSharedInternals =\n React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,\n hasOwnProperty = Object.prototype.hasOwnProperty,\n isArrayImpl = Array.isArray,\n createTask = console.createTask\n ? console.createTask\n : function () {\n return null;\n };\n React = {\n react_stack_bottom_frame: function (callStackForError) {\n return callStackForError();\n }\n };\n var specialPropKeyWarningShown;\n var didWarnAboutElementRef = {};\n var unknownOwnerDebugStack = React.react_stack_bottom_frame.bind(\n React,\n UnknownOwner\n )();\n var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));\n var didWarnAboutKeySpread = {};\n exports.Fragment = REACT_FRAGMENT_TYPE;\n exports.jsx = function (type, config, maybeKey) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !1,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n exports.jsxs = function (type, config, maybeKey) {\n var trackActualOwner =\n 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;\n return jsxDEVImpl(\n type,\n config,\n maybeKey,\n !0,\n trackActualOwner\n ? Error(\"react-stack-top-frame\")\n : unknownOwnerDebugStack,\n trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask\n );\n };\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","import { X } from 'lucide-react';\nimport { FC, ReactNode, SVGProps } from 'react';\nimport { type VariantProps } from 'class-variance-authority';\n\nimport { cn, RemoveNull } from '@/utils';\n\nimport {\n alertCloseButtonStyles,\n alertContentWrapperStyles,\n alertDescriptionStyles,\n alertIconStyles,\n alertTitleStyles,\n alertWrapperStyles,\n} from './Alert.styles';\n\nexport interface AlertProps extends RemoveNull<\n VariantProps<typeof alertWrapperStyles>\n> {\n title?: string;\n icon?: FC<SVGProps<SVGSVGElement>>;\n children?: ReactNode;\n onClose?: () => void;\n}\n\nexport const Alert: FC<AlertProps> = ({\n variant,\n appearance,\n size,\n inverted = false,\n title,\n icon: Icon,\n children,\n onClose,\n ...restProps\n}) => {\n const alertWrapperClassName = cn(\n alertWrapperStyles({\n variant,\n appearance,\n size,\n inverted,\n }),\n );\n const alertContentWrapperClassName = cn(\n alertContentWrapperStyles({\n variant,\n appearance,\n size,\n }),\n );\n const alertTitleClassName = cn(\n alertTitleStyles({\n variant,\n appearance,\n size,\n }),\n );\n const alertDescriptionClassName = cn(\n alertDescriptionStyles({\n appearance,\n variant,\n size,\n inverted,\n }),\n );\n const alertIconClassName = cn(\n alertIconStyles({ variant, appearance, size, inverted }),\n );\n const alertCloseButtonClassName = cn(\n alertCloseButtonStyles({\n appearance,\n variant,\n size,\n inverted,\n }),\n );\n return (\n <div {...restProps} className={alertWrapperClassName}>\n <div>\n {Icon && <Icon className={alertIconClassName} strokeWidth={1} />}\n </div>\n <div className={alertContentWrapperClassName}>\n <div className={alertTitleClassName}>{title}</div>\n <div className={alertDescriptionClassName}>{children}</div>\n </div>\n {onClose && <X className={alertCloseButtonClassName} onClick={onClose} />}\n </div>\n );\n};\n","import { cva } from 'class-variance-authority';\n\nexport const badgeVariants = cva(\n 'inline-flex items-center justify-center border border-1 border-base overflow-hidden relative font-medium whitespace-nowrap',\n {\n variants: {\n variant: {\n primary: 'bg-primary text-white',\n default: 'bg-default text-default',\n info: 'bg-info text-white',\n success: 'bg-success text-white',\n warning: 'bg-warning text-white',\n danger: 'bg-danger text-white',\n },\n appearance: {\n dots: '',\n icon: '',\n text: '',\n },\n size: {\n sm: 'text-xs',\n md: 'text-sm',\n lg: 'text-lg',\n },\n shape: {\n circle: 'rounded-full',\n square: 'rounded',\n },\n inverted: {\n true: '',\n false: '',\n },\n hasIcon: {\n true: '',\n false: '',\n },\n },\n defaultVariants: {\n variant: 'default',\n appearance: 'text',\n size: 'md',\n shape: 'circle',\n inverted: false,\n hasIcon: false,\n },\n compoundVariants: [\n { appearance: 'dots', size: 'sm', className: 'size-2' },\n { appearance: 'dots', size: 'md', className: 'size-3' },\n { appearance: 'dots', size: 'lg', className: 'size-4' },\n { appearance: 'icon', size: 'sm', className: 'size-5.5 p-0' },\n {\n appearance: 'icon',\n size: 'md',\n className: 'size-8 p-0',\n },\n {\n appearance: 'icon',\n size: 'lg',\n className: 'size-10 p-0',\n },\n\n {\n appearance: 'text',\n size: 'sm',\n className: 'h-6 min-h-6 min-w-6 px-1',\n },\n {\n appearance: 'text',\n size: 'md',\n className: 'h-7 min-h-7 min-w-7 px-1.5',\n },\n {\n appearance: 'text',\n size: 'lg',\n className: 'h-8 min-h-8 min-w-8 px-2.5',\n },\n\n { appearance: 'text', hasIcon: true, size: 'sm', className: 'gap-1' },\n { appearance: 'text', hasIcon: true, size: 'md', className: 'gap-2' },\n { appearance: 'text', hasIcon: true, size: 'lg', className: 'gap-3' },\n\n {\n inverted: true,\n variant: 'default',\n className: 'bg-default-inverted text-white',\n },\n {\n inverted: true,\n variant: 'info',\n className: 'bg-info-inverted text-default',\n },\n {\n inverted: true,\n variant: 'success',\n className: 'bg-success-inverted text-default',\n },\n {\n inverted: true,\n variant: 'warning',\n className: 'bg-warning-inverted text-default',\n },\n {\n inverted: true,\n variant: 'danger',\n className: 'bg-danger-inverted text-default',\n },\n {\n inverted: true,\n variant: 'primary',\n className: 'bg-primary-inverted text-white',\n },\n ],\n },\n);\n\nexport const badgeIconStyles = cva('shrink-0', {\n variants: {\n size: {\n sm: 'size-3.5',\n md: 'size-5',\n lg: 'size-7',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n});\n\nexport const badgeTextStyles = cva('leading-none font-medium', {\n variants: {\n size: {\n sm: 'text-xs',\n md: 'text-sm',\n lg: 'text-lg',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n});\n","import { FC, HTMLAttributes, SVGProps } from 'react';\nimport { type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/utils';\n\nimport {\n badgeIconStyles,\n badgeTextStyles,\n badgeVariants,\n} from './Badge.styles';\nexport interface BadgeProps\n extends\n HTMLAttributes<HTMLSpanElement>,\n Omit<VariantProps<typeof badgeVariants>, 'appearance'> {\n icon?: FC<SVGProps<SVGSVGElement>>;\n}\n\nexport const Badge: FC<BadgeProps> = ({\n variant = 'default',\n size = 'md',\n shape = 'circle',\n inverted = false,\n icon: Icon,\n children,\n role,\n className,\n ...restProps\n}) => {\n const hasText = !!children || children === 0;\n const appearance = hasText ? 'text' : Icon ? 'icon' : 'dots';\n const hasIcon = Icon && appearance !== 'dots';\n const resolvedRole = hasText ? role : (role ?? 'img');\n const defaultAriaLabel =\n resolvedRole === 'img' ? `Badge, ${variant}` : undefined;\n const ariaLabel = restProps['aria-label'] ?? defaultAriaLabel;\n const hasTextIcon = hasText && Icon && appearance === 'text';\n\n const badgeClassName = cn(\n badgeVariants({\n variant,\n size,\n shape,\n appearance,\n inverted,\n hasIcon: hasTextIcon,\n }),\n );\n const badgeIconClassName = cn(badgeIconStyles({ size }));\n const badgeTextClassName = cn(badgeTextStyles({ size }));\n\n return (\n <span\n {...restProps}\n role={resolvedRole}\n aria-label={ariaLabel}\n className={cn(badgeClassName, className)}\n >\n {hasIcon && (\n <Icon\n aria-hidden='true'\n focusable='false'\n className={badgeIconClassName}\n />\n )}\n {hasText && <span className={badgeTextClassName}>{children}</span>}\n </span>\n );\n};\n","import { cva } from 'class-variance-authority';\n\nexport const buttonStyles = cva(\n 'inline-flex w-fit items-center justify-center gap-2.5 cursor-pointer text-sm p-2 rounded border outline-none border-transparent hover:bg-default-hovered active:bg-default-pressed',\n {\n variants: {\n size: {\n sm: 'p-2 text-sm gap-2',\n md: 'px-3 py-2 text-base gap-2.5',\n lg: 'px-3.5 py-2 text-lg gap-3',\n },\n variant: {\n default: 'text-default',\n primary: 'text-primary',\n info: 'text-info',\n success: 'text-success',\n warning: 'text-warning',\n danger: 'text-danger',\n },\n appearance: {\n filled: 'bg-default',\n outline: 'bg-transparent',\n dashed: 'bg-transparent border-dashed',\n ghost: 'bg-transparent',\n },\n disabled: {\n true: 'opacity-40 disabled:cursor-not-allowed disabled:pointer-events-none',\n },\n loading: {\n true: '',\n },\n fullWidth: {\n true: 'w-full',\n },\n inverted: {\n true: '',\n },\n },\n compoundVariants: [\n /* FILLED */\n {\n appearance: 'filled',\n variant: 'default',\n className: 'bg-default text-default',\n },\n {\n appearance: 'filled',\n variant: 'primary',\n className:\n 'bg-primary text-white hover:bg-primary-hovered active:bg-primary-pressed',\n },\n {\n appearance: 'filled',\n variant: 'info',\n className:\n 'bg-info text-white hover:bg-info-hovered active:bg-info-pressed',\n },\n {\n appearance: 'filled',\n variant: 'success',\n className:\n 'bg-success text-white hover:bg-success-hovered active:bg-success-pressed',\n },\n {\n appearance: 'filled',\n variant: 'warning',\n className:\n 'bg-warning text-white hover:bg-warning-hovered active:bg-warning-pressed',\n },\n {\n appearance: 'filled',\n variant: 'danger',\n className:\n 'bg-danger text-white hover:bg-danger-hovered active:bg-danger-pressed',\n },\n {\n appearance: 'filled',\n variant: 'default',\n inverted: true,\n className:\n 'bg-default-inverted text-default-inverted hover:bg-default-hovered-inverted active:bg-default-pressed-inverted',\n },\n {\n appearance: 'filled',\n variant: 'primary',\n inverted: true,\n className:\n 'bg-primary-inverted text-white-inverted hover:bg-primary-hovered-inverted active:bg-primary-pressed-inverted',\n },\n {\n appearance: 'filled',\n variant: 'info',\n inverted: true,\n className:\n 'bg-info-inverted text-white-inverted hover:bg-info-hovered-inverted active:bg-info-pressed-inverted',\n },\n {\n appearance: 'filled',\n variant: 'success',\n inverted: true,\n className:\n 'bg-success-inverted text-white-inverted hover:bg-success-hovered-inverted active:bg-success-pressed-inverted',\n },\n {\n appearance: 'filled',\n variant: 'warning',\n inverted: true,\n className:\n 'bg-warning-inverted text-white-inverted hover:bg-warning-hovered-inverted active:bg-warning-pressed-inverted',\n },\n {\n appearance: 'filled',\n variant: 'danger',\n inverted: true,\n className:\n 'bg-danger-inverted text-white-inverted hover:bg-danger-hovered-inverted active:bg-danger-pressed-inverted',\n },\n\n /* OUTLINE & DASHED */\n {\n appearance: ['outline', 'dashed'],\n variant: 'default',\n className: 'border-default',\n },\n {\n appearance: ['outline', 'dashed'],\n variant: 'primary',\n className: 'border-primary',\n },\n {\n appearance: ['outline', 'dashed'],\n variant: 'info',\n className: 'border-info',\n },\n {\n appearance: ['outline', 'dashed'],\n variant: 'success',\n className: 'border-success',\n },\n {\n appearance: ['outline', 'dashed'],\n variant: 'warning',\n className: 'border-warning',\n },\n {\n appearance: ['outline', 'dashed'],\n variant: 'danger',\n className: 'border-danger',\n },\n {\n appearance: ['outline', 'dashed'],\n variant: 'default',\n inverted: true,\n className:\n 'text-default-inverted hover:bg-default-hovered-inverted active:bg-default-pressed-inverted',\n },\n {\n appearance: ['outline', 'dashed'],\n variant: 'primary',\n inverted: true,\n className:\n 'text-primary-inverted hover:bg-primary-hovered-inverted active:bg-primary-pressed-inverted hover:text-primary active:text-primary',\n },\n {\n appearance: ['outline', 'dashed'],\n variant: 'info',\n inverted: true,\n className:\n 'text-info-inverted hover:bg-info-hovered-inverted active:bg-info-pressed-inverted hover:text-info active:text-info',\n },\n {\n appearance: ['outline', 'dashed'],\n variant: 'success',\n inverted: true,\n className:\n 'text-success-inverted hover:bg-success-hovered-inverted active:bg-success-pressed-inverted hover:text-success active:text-success',\n },\n {\n appearance: ['outline', 'dashed'],\n variant: 'warning',\n inverted: true,\n className:\n 'text-warning-inverted hover:bg-warning-hovered-inverted active:bg-warning-pressed-inverted hover:text-warning active:text-warning',\n },\n {\n appearance: ['outline', 'dashed'],\n variant: 'danger',\n inverted: true,\n className:\n 'text-danger-inverted hover:bg-danger-hovered-inverted active:bg-danger-pressed-inverted hover:text-danger active:text-danger',\n },\n\n /* GHOST BUTTON */\n {\n appearance: 'ghost',\n variant: 'default',\n className: 'text-default',\n },\n {\n appearance: 'ghost',\n variant: 'primary',\n className: 'text-primary',\n },\n {\n appearance: 'ghost',\n variant: 'info',\n className: 'text-info',\n },\n {\n appearance: 'ghost',\n variant: 'success',\n className: 'text-success',\n },\n {\n appearance: 'ghost',\n variant: 'warning',\n className: 'text-warning',\n },\n {\n appearance: 'ghost',\n variant: 'danger',\n className: 'text-danger',\n },\n {\n appearance: 'ghost',\n variant: 'default',\n inverted: true,\n className:\n 'text-default-inverted hover:bg-default-hovered-inverted active:bg-default-pressed-inverted',\n },\n {\n appearance: 'ghost',\n variant: 'primary',\n inverted: true,\n className:\n 'text-primary-inverted hover:bg-primary-hovered-inverted active:bg-primary-pressed-inverted hover:text-primary active:text-primary',\n },\n {\n appearance: 'ghost',\n variant: 'info',\n inverted: true,\n className:\n 'text-info-inverted hover:bg-info-hovered-inverted active:bg-info-pressed-inverted hover:text-info active:text-info',\n },\n {\n appearance: 'ghost',\n variant: 'success',\n inverted: true,\n className:\n 'text-success-inverted hover:bg-success-hovered-inverted active:bg-success-pressed-inverted hover:text-success active:text-success',\n },\n {\n appearance: 'ghost',\n variant: 'warning',\n inverted: true,\n className:\n 'text-warning-inverted hover:bg-warning-hovered-inverted active:bg-warning-pressed-inverted hover:text-warning active:text-warning',\n },\n {\n appearance: 'ghost',\n variant: 'danger',\n inverted: true,\n className:\n 'text-danger-inverted hover:bg-danger-hovered-inverted active:bg-danger-pressed-inverted hover:text-danger active:text-danger',\n },\n\n /* VARIANT LOADING */\n {\n appearance: ['filled', 'dashed', 'outline', 'ghost'],\n variant: 'default',\n loading: true,\n className:\n 'bg-default-loading text-loading hover:bg-default-loading active:bg-default-loading',\n },\n {\n appearance: 'filled',\n variant: 'primary',\n loading: true,\n className:\n 'bg-primary-loading text-white hover:bg-primary-loading active:bg-primary-loading',\n },\n {\n appearance: 'filled',\n variant: 'info',\n loading: true,\n className:\n 'bg-info-loading text-white hover:bg-info-loading active:bg-info-loading',\n },\n {\n appearance: 'filled',\n variant: 'success',\n loading: true,\n className:\n 'bg-success-loading text-white hover:bg-success-loading active:bg-success-loading',\n },\n {\n appearance: 'filled',\n variant: 'warning',\n loading: true,\n className:\n 'bg-warning-loading text-white hover:bg-warning-loading active:bg-warning-loading',\n },\n {\n appearance: 'filled',\n variant: 'danger',\n loading: true,\n className:\n 'bg-danger-loading text-white hover:bg-danger-loading active:bg-danger-loading',\n },\n {\n appearance: ['dashed', 'outline', 'ghost'],\n variant: ['default', 'primary', 'info', 'success', 'warning', 'danger'],\n loading: true,\n className:\n 'bg-default-loading hover:bg-default-loading active:bg-default-loading',\n },\n {\n appearance: ['filled', 'dashed', 'outline', 'ghost'],\n variant: 'default',\n loading: true,\n inverted: true,\n className:\n 'bg-default-loading-inverted text-loading-inverted hover:bg-default-loading-inverted active:bg-default-loading-inverted',\n },\n {\n appearance: 'filled',\n variant: 'primary',\n loading: true,\n inverted: true,\n className:\n 'bg-primary-loading-inverted text-white-inverted hover:bg-primary-loading-inverted active:bg-primary-loading-inverted',\n },\n {\n appearance: 'filled',\n variant: 'info',\n loading: true,\n inverted: true,\n className:\n 'bg-info-loading-inverted text-white-inverted hover:bg-info-loading-inverted active:bg-info-loading-inverted',\n },\n {\n appearance: 'filled',\n variant: 'success',\n loading: true,\n inverted: true,\n className:\n 'bg-success-loading-inverted text-white-inverted hover:bg-success-loading-inverted active:bg-success-loading-inverted',\n },\n {\n appearance: 'filled',\n variant: 'warning',\n loading: true,\n inverted: true,\n className:\n 'bg-warning-loading-inverted text-white-inverted hover:bg-warning-loading-inverted active:bg-warning-loading-inverted',\n },\n {\n appearance: 'filled',\n variant: 'danger',\n loading: true,\n inverted: true,\n className:\n 'bg-danger-loading-inverted text-white-inverted hover:bg-danger-loading-inverted active:bg-danger-loading-inverted',\n },\n {\n appearance: ['dashed', 'outline', 'ghost'],\n variant: ['default', 'primary', 'info', 'success', 'warning', 'danger'],\n loading: true,\n inverted: true,\n className:\n 'bg-default-loading-inverted text-loading-inverted hover:bg-default-loading-inverted active:bg-default-loading-inverted',\n },\n ],\n defaultVariants: {},\n },\n);\n\nexport const buttonSpinnerStyles = cva(\n 'inline-block animate-spin rounded-full border-2 border-current border-t-transparent',\n {\n variants: {\n size: {\n sm: 'size-4',\n md: 'size-5',\n lg: 'size-6',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n\nexport const buttonIconStyle = cva('shrink-0', {\n variants: {\n size: {\n sm: 'size-4',\n md: 'size-5',\n lg: 'size-6',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n});\n","import { ComponentPropsWithRef, FC, ReactNode, SVGProps } from 'react';\nimport { type VariantProps } from 'class-variance-authority';\n\nimport { cn, RemoveNull } from '../../utils';\nimport {\n buttonIconStyle,\n buttonSpinnerStyles,\n buttonStyles,\n} from './Button.styles';\n\nexport interface ButtonProps\n extends\n ComponentPropsWithRef<'button'>,\n RemoveNull<Omit<VariantProps<typeof buttonStyles>, 'disabled'>> {\n children: ReactNode;\n leadingIcon?: FC<SVGProps<SVGSVGElement>>;\n trailingIcon?: FC<SVGProps<SVGSVGElement>>;\n}\n\nexport const Button: FC<ButtonProps> = ({\n ref,\n size,\n variant,\n appearance,\n disabled,\n loading,\n fullWidth,\n inverted,\n children,\n leadingIcon: LeadingIcon,\n trailingIcon: TrailingIcon,\n className,\n ...restProps\n}) => {\n const isDisabled = loading || disabled;\n\n return (\n <button\n {...restProps}\n ref={ref}\n className={cn(\n buttonStyles({\n variant,\n size,\n appearance,\n disabled: isDisabled,\n loading,\n fullWidth,\n inverted,\n }),\n className,\n )}\n disabled={isDisabled}\n >\n {loading ? (\n <span aria-hidden='true' className={buttonSpinnerStyles({ size })} />\n ) : (\n <>\n {LeadingIcon && <LeadingIcon className={buttonIconStyle({ size })} />}\n {children && <span>{children}</span>}\n {TrailingIcon && (\n <TrailingIcon className={buttonIconStyle({ size })} />\n )}\n </>\n )}\n </button>\n );\n};\n","import { cva } from 'class-variance-authority';\n\nexport const buttonGroupStyles = cva(\n 'inline-flex isolate overflow-hidden rounded-md border border-default',\n {\n variants: {\n orientation: {\n horizontal: 'flex-row items-center',\n vertical: 'flex-col items-stretch',\n },\n },\n defaultVariants: {\n orientation: 'horizontal',\n },\n },\n);\n\nexport const buttonGroupItemStyles = cva('inline-flex', {\n variants: {\n orientation: {\n horizontal: '',\n vertical: '',\n },\n position: {\n single: '',\n first: '',\n middle: '',\n last: '',\n },\n fullWidth: {\n true: 'flex-1',\n false: '',\n },\n },\n compoundVariants: [\n {\n orientation: 'horizontal',\n position: 'first',\n className: 'border-r border-default',\n },\n {\n orientation: 'horizontal',\n position: 'middle',\n className: 'border-r border-default',\n },\n {\n orientation: 'horizontal',\n position: 'last',\n className: 'border-r-0',\n },\n {\n orientation: 'horizontal',\n position: 'single',\n className: 'border-r-0',\n },\n {\n orientation: 'vertical',\n position: 'first',\n className: 'border-b border-default',\n },\n {\n orientation: 'vertical',\n position: 'middle',\n className: 'border-b border-default',\n },\n {\n orientation: 'vertical',\n position: 'last',\n className: 'border-b-0',\n },\n {\n orientation: 'vertical',\n position: 'single',\n className: 'border-b-0',\n },\n ],\n});\n\nexport const buttonGroupItemInnerStyles = cva(\n 'rounded-none border-0 !rounded-none shadow-none',\n {\n variants: {\n fullWidth: {\n true: 'w-full',\n false: 'w-fit',\n },\n },\n defaultVariants: {\n fullWidth: false,\n },\n },\n);\n","import { type FC } from 'react';\n\nimport { cn } from '@/utils';\n\nimport { Button, type ButtonProps } from '../Button';\nimport {\n buttonGroupItemInnerStyles,\n buttonGroupItemStyles,\n buttonGroupStyles,\n} from './ButtonGroup.styles';\nimport type {\n ButtonGroupItem,\n ButtonGroupProps,\n ButtonGroupOrientation,\n} from './types';\n\ntype ButtonGroupItemPosition = 'single' | 'first' | 'middle' | 'last';\n\nconst getItemPosition = (\n index: number,\n total: number,\n): ButtonGroupItemPosition => {\n if (total === 1) {\n return 'single';\n }\n\n if (index === 0) {\n return 'first';\n }\n\n if (index === total - 1) {\n return 'last';\n }\n\n return 'middle';\n};\n\nconst resolveInheritedValue = <T,>(\n itemValue: T | undefined,\n groupValue: T,\n): T => itemValue ?? groupValue;\n\nexport const ButtonGroup: FC<ButtonGroupProps> = ({\n buttons = [],\n orientation = 'horizontal',\n size,\n inverted,\n role = 'group',\n ...restProps\n}) => {\n const total = buttons.length;\n\n return (\n <div\n role={role}\n aria-label={restProps['aria-label'] ?? 'Button group'}\n className={cn(\n buttonGroupStyles({\n orientation: orientation as ButtonGroupOrientation,\n }),\n )}\n {...restProps}\n >\n {buttons.map((item, index) => {\n const {\n id,\n children,\n size: itemSize,\n variant: itemVariant,\n appearance: itemAppearance,\n loading: itemLoading,\n inverted: itemInverted,\n fullWidth: itemFullWidth,\n ...buttonProps\n } = item as ButtonGroupItem;\n\n const itemPosition = getItemPosition(index, total);\n const resolvedSize = resolveInheritedValue(itemSize, size);\n const resolvedVariant = itemVariant ?? 'default';\n const resolvedAppearance = itemAppearance ?? 'filled';\n const resolvedInverted = resolveInheritedValue(itemInverted, inverted);\n\n return (\n <div\n key={id ?? index}\n className={cn(\n buttonGroupItemStyles({\n orientation,\n position: itemPosition,\n fullWidth: Boolean(itemFullWidth),\n }),\n )}\n >\n <Button\n {...(buttonProps as ButtonProps)}\n size={resolvedSize}\n variant={resolvedVariant}\n appearance={resolvedAppearance}\n loading={itemLoading}\n inverted={resolvedInverted}\n fullWidth={Boolean(itemFullWidth)}\n className={cn(\n buttonGroupItemInnerStyles({\n fullWidth: Boolean(itemFullWidth),\n }),\n )}\n >\n {children}\n </Button>\n </div>\n );\n })}\n </div>\n );\n};\n","import { cva } from 'class-variance-authority';\n\nexport const avatarContainerStyles = cva(\n 'relative inline-flex shrink-0 items-center justify-center font-medium',\n {\n variants: {\n size: {\n xs: 'size-4',\n sm: 'size-6',\n md: 'size-9',\n lg: 'size-10',\n },\n variant: {\n default: '',\n primary: '',\n info: '',\n success: '',\n warning: '',\n danger: '',\n },\n shape: {\n circle: 'rounded-full',\n square: 'rounded',\n },\n inverted: {\n true: '',\n false: '',\n },\n stroke: {\n true: 'border border-base',\n false: '',\n },\n },\n defaultVariants: {\n size: 'md',\n shape: 'circle',\n variant: 'default',\n inverted: false,\n stroke: false,\n },\n compoundVariants: [\n {\n variant: 'default',\n inverted: false,\n className: 'bg-default text-default',\n },\n {\n variant: 'primary',\n inverted: false,\n className: 'bg-primary text-white',\n },\n {\n variant: 'info',\n inverted: false,\n className: 'bg-info text-white',\n },\n {\n variant: 'success',\n inverted: false,\n className: 'bg-success text-white',\n },\n {\n variant: 'warning',\n inverted: false,\n className: 'bg-warning text-white',\n },\n {\n variant: 'danger',\n inverted: false,\n className: 'bg-danger text-white',\n },\n {\n variant: 'default',\n inverted: true,\n className: 'bg-default-inverted text-white',\n },\n {\n variant: 'primary',\n inverted: true,\n className: 'bg-primary-inverted text-default',\n },\n {\n variant: 'info',\n inverted: true,\n className: 'bg-info-inverted text-default',\n },\n {\n variant: 'success',\n inverted: true,\n className: 'bg-success-inverted text-default',\n },\n {\n variant: 'warning',\n inverted: true,\n className: 'bg-warning-inverted text-default',\n },\n {\n variant: 'danger',\n inverted: true,\n className: 'bg-danger-inverted text-default',\n },\n ],\n },\n);\n\nexport const avatarImageStyles = cva(\n 'absolute inset-0 size-full object-cover',\n {\n variants: {\n shape: {\n circle: 'rounded-full',\n square: 'rounded',\n },\n size: {\n xs: '',\n sm: '',\n md: '',\n lg: '',\n },\n },\n defaultVariants: {\n shape: 'circle',\n size: 'md',\n },\n },\n);\n\nexport const avatarTextStyles = cva('relative leading-none font-semibold', {\n variants: {\n size: {\n xs: 'text-xs',\n sm: 'text-xs',\n md: 'text-sm',\n lg: 'text-base',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n});\n\nexport const avatarIconStyles = cva('relative shrink-0', {\n variants: {\n size: {\n xs: 'size-2',\n sm: 'size-3',\n md: 'size-4',\n lg: 'size-5',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n});\n\nexport const avatarStatusStyles = cva(\n 'absolute z-10 rounded-full border border-white',\n {\n variants: {\n status: {\n info: 'bg-info',\n success: 'bg-success',\n warning: 'bg-warning',\n danger: 'bg-danger',\n primary: 'bg-primary',\n },\n shape: {\n circle: '',\n square: '',\n },\n position: {\n 'top-right': '',\n 'top-left': '',\n 'bottom-right': '',\n 'bottom-left': '',\n },\n size: {\n xs: 'size-1.5',\n sm: 'size-1.5',\n md: 'size-2',\n lg: 'size-2.5',\n },\n },\n compoundVariants: [\n {\n shape: 'square',\n position: 'top-right',\n className: 'right-0 top-0 translate-x-[2px] -translate-y-[2px]',\n },\n {\n shape: 'square',\n position: 'top-left',\n className: 'left-0 top-0 -translate-x-[2px] -translate-y-[2px]',\n },\n {\n shape: 'square',\n position: 'bottom-right',\n className: 'right-0 bottom-0 translate-x-[2px] translate-y-[2px]',\n },\n {\n shape: 'square',\n position: 'bottom-left',\n className: 'left-0 bottom-0 -translate-x-[2px] translate-y-[2px]',\n },\n {\n shape: 'circle',\n position: 'top-right',\n className: 'right-0.5 top-0.5',\n },\n {\n shape: 'circle',\n position: 'top-left',\n className: 'left-0.5 top-0.5',\n },\n {\n shape: 'circle',\n position: 'bottom-right',\n className: 'right-0.5 bottom-0.5',\n },\n {\n shape: 'circle',\n position: 'bottom-left',\n className: 'left-0.5 bottom-0.5',\n },\n ],\n defaultVariants: {\n status: 'primary',\n position: 'top-right',\n shape: 'circle',\n size: 'md',\n },\n },\n);\n","import type { FC, HTMLAttributes } from 'react';\nimport { type VariantProps } from 'class-variance-authority';\n\nimport { cn } from '@/utils';\n\nimport {\n avatarContainerStyles,\n avatarIconStyles,\n avatarImageStyles,\n avatarStatusStyles,\n avatarTextStyles,\n} from './Avatar.styles';\nimport type {\n AvatarIcon,\n AvatarImage,\n AvatarSizes,\n AvatarShapes,\n AvatarVariants,\n AvatarStatus,\n AvatarStatusPosition,\n} from './types';\n\nexport interface AvatarProps\n extends\n HTMLAttributes<HTMLSpanElement>,\n Omit<VariantProps<typeof avatarContainerStyles>, 'stroke'> {\n icon?: AvatarIcon;\n img?: AvatarImage;\n initials?: string;\n status?: AvatarStatus;\n statusPosition?: AvatarStatusPosition;\n size?: AvatarSizes;\n shape?: AvatarShapes;\n variant?: AvatarVariants;\n inverted?: boolean;\n stroke?: boolean;\n}\n\nexport const Avatar: FC<AvatarProps> = ({\n icon: Icon,\n img,\n initials,\n status,\n statusPosition = 'top-right',\n size = 'md',\n shape = 'circle',\n variant = 'default',\n inverted = false,\n stroke = false,\n className,\n role = 'img',\n ...restProps\n}) => {\n const hasImage = typeof img?.src === 'string' && img.src.length > 0;\n const hasIcon = typeof Icon !== 'undefined';\n const normalizedInitials = initials?.trim();\n const resolvedInitials =\n size === 'xs' ? normalizedInitials?.slice(0, 1) : normalizedInitials;\n const showInitials = Boolean(resolvedInitials);\n const resolvedAriaLabel =\n restProps['aria-label'] ??\n (hasImage\n ? img?.alt || 'User avatar'\n : hasIcon\n ? 'User avatar'\n : showInitials\n ? `${resolvedInitials} avatar`\n : 'User avatar');\n\n return (\n <span\n {...restProps}\n role={role}\n aria-label={resolvedAriaLabel}\n className={cn(\n avatarContainerStyles({\n size,\n shape,\n variant,\n inverted,\n stroke,\n }),\n className,\n )}\n >\n {hasImage ? (\n <img\n src={img.src}\n alt={img.alt}\n className={avatarImageStyles({ shape })}\n />\n ) : hasIcon ? (\n <Icon\n className={avatarIconStyles({ size })}\n aria-hidden='true'\n focusable='false'\n />\n ) : showInitials ? (\n <span className={avatarTextStyles({ size })}>{resolvedInitials}</span>\n ) : null}\n\n {status && (\n <span\n data-avatar-status\n className={avatarStatusStyles({\n status,\n shape,\n position: statusPosition,\n size,\n })}\n />\n )}\n </span>\n );\n};\n","import { cva } from 'class-variance-authority';\n\nexport const avatarGroupStyles = cva(\n 'inline-flex items-center -space-x-[8px]',\n {\n variants: {\n size: {\n xs: '',\n sm: '',\n md: '',\n lg: '',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n\nexport const avatarGroupCounterStyles = cva(\n 'inline-flex shrink-0 items-center justify-center border border-base text-white font-medium leading-none z-10',\n {\n variants: {\n variant: {\n default: 'bg-default-pressed',\n primary: 'bg-primary-pressed',\n info: 'bg-info-pressed',\n success: 'bg-success-pressed',\n warning: 'bg-warning-pressed',\n danger: 'bg-danger-pressed',\n },\n size: {\n xs: 'size-4 text-xs',\n sm: 'size-6 text-xs',\n md: 'size-9 text-sm',\n lg: 'size-10 text-base',\n },\n shape: {\n circle: 'rounded-full',\n square: 'rounded',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'md',\n shape: 'circle',\n },\n compoundVariants: [],\n },\n);\n","import type { FC } from 'react';\n\nimport { cn } from '@/utils';\n\nimport { Avatar } from '../Avatar';\nimport {\n avatarGroupCounterStyles,\n avatarGroupStyles,\n} from './AvatarGroup.styles';\nimport type { AvatarGroupProps } from './types';\n\nexport const AvatarGroup: FC<AvatarGroupProps> = ({\n items,\n size = 'md',\n variant = 'default',\n shape = 'circle',\n max = 4,\n inverted = false,\n stroke = true,\n className,\n role = 'group',\n ...restProps\n}) => {\n const { ['aria-label']: ariaLabel, ...rest } = restProps;\n const normalizedItems = items ?? [];\n const normalizedMax = Math.max(1, max);\n const visibleItems = normalizedItems.slice(0, normalizedMax);\n const remaining = Math.max(0, normalizedItems.length - visibleItems.length);\n const resolvedAriaLabel = ariaLabel ?? 'Avatar group';\n\n return (\n <div\n {...rest}\n role={role}\n aria-label={resolvedAriaLabel}\n className={cn(avatarGroupStyles({ size }), className)}\n >\n {visibleItems.map((item, index) => (\n <Avatar\n key={item.id ?? index}\n {...item}\n variant={variant}\n size={size}\n shape={shape}\n inverted={inverted}\n stroke={stroke}\n />\n ))}\n {remaining > 0 && (\n <span\n aria-hidden='true'\n className={avatarGroupCounterStyles({ size, shape, variant })}\n >\n +{remaining}\n </span>\n )}\n </div>\n );\n};\n","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml: xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n","import namespaces from \"./namespaces.js\";\n\nexport default function(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name; // eslint-disable-line no-prototype-builtins\n}\n","import namespace from \"./namespace.js\";\nimport {xhtml} from \"./namespaces.js\";\n\nfunction creatorInherit(name) {\n return function() {\n var document = this.ownerDocument,\n uri = this.namespaceURI;\n return uri === xhtml && document.documentElement.namespaceURI === xhtml\n ? document.createElement(name)\n : document.createElementNS(uri, name);\n };\n}\n\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\n\nexport default function(name) {\n var fullname = namespace(name);\n return (fullname.local\n ? creatorFixed\n : creatorInherit)(fullname);\n}\n","function none() {}\n\nexport default function(selector) {\n return selector == null ? none : function() {\n return this.querySelector(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport selector from \"../selector.js\";\n\nexport default function(select) {\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","// Given something array like (or null), returns something that is strictly an\n// array. This is used to ensure that array-like objects passed to d3.selectAll\n// or selection.selectAll are converted into proper arrays when creating a\n// selection; we don’t ever want to create a selection backed by a live\n// HTMLCollection or NodeList. However, note that selection.selectAll will use a\n// static NodeList as a group, since it safely derived from querySelectorAll.\nexport default function array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\n","function empty() {\n return [];\n}\n\nexport default function(selector) {\n return selector == null ? empty : function() {\n return this.querySelectorAll(selector);\n };\n}\n","import {Selection} from \"./index.js\";\nimport array from \"../array.js\";\nimport selectorAll from \"../selectorAll.js\";\n\nfunction arrayAll(select) {\n return function() {\n return array(select.apply(this, arguments));\n };\n}\n\nexport default function(select) {\n if (typeof select === \"function\") select = arrayAll(select);\n else select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n\n return new Selection(subgroups, parents);\n}\n","export default function(selector) {\n return function() {\n return this.matches(selector);\n };\n}\n\nexport function childMatcher(selector) {\n return function(node) {\n return node.matches(selector);\n };\n}\n\n","import {childMatcher} from \"../matcher.js\";\n\nvar find = Array.prototype.find;\n\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\n\nfunction childFirst() {\n return this.firstElementChild;\n}\n\nexport default function(match) {\n return this.select(match == null ? childFirst\n : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {childMatcher} from \"../matcher.js\";\n\nvar filter = Array.prototype.filter;\n\nfunction children() {\n return Array.from(this.children);\n}\n\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\n\nexport default function(match) {\n return this.selectAll(match == null ? children\n : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\n","import {Selection} from \"./index.js\";\nimport matcher from \"../matcher.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Selection(subgroups, this._parents);\n}\n","export default function(update) {\n return new Array(update.length);\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n querySelector: function(selector) { return this._parent.querySelector(selector); },\n querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n","export default function(x) {\n return function() {\n return x;\n };\n}\n","import {Selection} from \"./index.js\";\nimport {EnterNode} from \"./enter.js\";\nimport constant from \"../constant.js\";\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0,\n node,\n groupLength = group.length,\n dataLength = data.length;\n\n // Put any non-null nodes that fit into update.\n // Put any null nodes into enter.\n // Put any remaining data into enter.\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Put any non-null nodes that don’t fit into exit.\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i,\n node,\n nodeByKeyValue = new Map,\n groupLength = group.length,\n dataLength = data.length,\n keyValues = new Array(groupLength),\n keyValue;\n\n // Compute the key for each node.\n // If multiple nodes have the same key, the duplicates are added to exit.\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n\n // Compute the key for each datum.\n // If there a node associated with this key, join and add it to update.\n // If there is not (or the key is a duplicate), add it to enter.\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n\n // Add any remaining nodes that were not bound to data to exit.\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && (nodeByKeyValue.get(keyValues[i]) === node)) {\n exit[i] = node;\n }\n }\n}\n\nfunction datum(node) {\n return node.__data__;\n}\n\nexport default function(value, key) {\n if (!arguments.length) return Array.from(this, datum);\n\n var bind = key ? bindKey : bindIndex,\n parents = this._parents,\n groups = this._groups;\n\n if (typeof value !== \"function\") value = constant(value);\n\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j],\n group = groups[j],\n groupLength = group.length,\n data = arraylike(value.call(parent, parent && parent.__data__, j, parents)),\n dataLength = data.length,\n enterGroup = enter[j] = new Array(dataLength),\n updateGroup = update[j] = new Array(dataLength),\n exitGroup = exit[j] = new Array(groupLength);\n\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n // Now connect the enter nodes to their following update node, such that\n // appendChild can insert the materialized enter node before this node,\n // rather than at the end of the parent node.\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1) i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n previous._next = next || null;\n }\n }\n }\n\n update = new Selection(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\n\n// Given some data, this returns an array-like view of it: an object that\n// exposes a length property and allows numeric indexing. Note that unlike\n// selectAll, this isn’t worried about “live” collections because the resulting\n// array will only be used briefly while data is being bound. (It is possible to\n// cause the data to change while iterating by using a key function, but please\n// don’t; we’d rather avoid a gratuitous copy.)\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data\n ? data // Array, TypedArray, NodeList, array-like\n : Array.from(data); // Map, Set, iterable, string, or anything else\n}\n","import sparse from \"./sparse.js\";\nimport {Selection} from \"./index.js\";\n\nexport default function() {\n return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n","export default function(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter) enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update) update = update.selection();\n }\n if (onexit == null) exit.remove(); else onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(context) {\n var selection = context.selection ? context.selection() : context;\n\n for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Selection(merges, this._parents);\n}\n","export default function() {\n\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n\n return this;\n}\n","import {Selection} from \"./index.js\";\n\nexport default function(compare) {\n if (!compare) compare = ascending;\n\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n\n return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n","export default function() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node) return node;\n }\n }\n\n return null;\n}\n","export default function() {\n let size = 0;\n for (const node of this) ++size; // eslint-disable-line no-unused-vars\n return size;\n}\n","export default function() {\n return !this.node();\n}\n","export default function(callback) {\n\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) callback.call(node, node.__data__, i, group);\n }\n }\n\n return this;\n}\n","import namespace from \"../namespace.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\n\nfunction attrConstantNS(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\n\nfunction attrFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttribute(name);\n else this.setAttribute(name, v);\n };\n}\n\nfunction attrFunctionNS(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n else this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name);\n\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local\n ? node.getAttributeNS(fullname.space, fullname.local)\n : node.getAttribute(fullname);\n }\n\n return this.each((value == null\n ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)\n : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n","export default function(node) {\n return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n || (node.document && node) // node is a Window\n || node.defaultView; // node is a Document\n}\n","import defaultView from \"../window.js\";\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\n\nfunction styleFunction(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) this.style.removeProperty(name);\n else this.style.setProperty(name, v, priority);\n };\n}\n\nexport default function(name, value, priority) {\n return arguments.length > 1\n ? this.each((value == null\n ? styleRemove : typeof value === \"function\"\n ? styleFunction\n : styleConstant)(name, value, priority == null ? \"\" : priority))\n : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n return node.style.getPropertyValue(name)\n || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n","function propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\n\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\n\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null) delete this[name];\n else this[name] = v;\n };\n}\n\nexport default function(name, value) {\n return arguments.length > 1\n ? this.each((value == null\n ? propertyRemove : typeof value === \"function\"\n ? propertyFunction\n : propertyConstant)(name, value))\n : this.node()[name];\n}\n","function classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\n\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\n\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\n\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\n\nexport default function(name, value) {\n var names = classArray(name + \"\");\n\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n) if (!list.contains(names[i])) return false;\n return true;\n }\n\n return this.each((typeof value === \"function\"\n ? classedFunction : value\n ? classedTrue\n : classedFalse)(names, value));\n}\n","function textRemove() {\n this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? textRemove : (typeof value === \"function\"\n ? textFunction\n : textConstant)(value))\n : this.node().textContent;\n}\n","function htmlRemove() {\n this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\n\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\n\nexport default function(value) {\n return arguments.length\n ? this.each(value == null\n ? htmlRemove : (typeof value === \"function\"\n ? htmlFunction\n : htmlConstant)(value))\n : this.node().innerHTML;\n}\n","function raise() {\n if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n return this.each(raise);\n}\n","function lower() {\n if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n return this.each(lower);\n}\n","import creator from \"../creator.js\";\n\nexport default function(name) {\n var create = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create.apply(this, arguments));\n });\n}\n","import creator from \"../creator.js\";\nimport selector from \"../selector.js\";\n\nfunction constantNull() {\n return null;\n}\n\nexport default function(name, before) {\n var create = typeof name === \"function\" ? name : creator(name),\n select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n });\n}\n","function remove() {\n var parent = this.parentNode;\n if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n return this.each(remove);\n}\n","function selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n","export default function(value) {\n return arguments.length\n ? this.property(\"__data__\", value)\n : this.node().__data__;\n}\n","function contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\n\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n return {type: t, name: name};\n });\n}\n\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on) return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i) on.length = i;\n else delete this.__on;\n };\n}\n\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on) for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = {type: typename.type, name: typename.name, value: value, listener: listener, options: options};\n if (!on) this.__on = [o];\n else on.push(o);\n };\n}\n\nexport default function(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i) this.each(on(typenames[i], value, options));\n return this;\n}\n","import defaultView from \"../window.js\";\n\nfunction dispatchEvent(node, type, params) {\n var window = defaultView(node),\n event = window.CustomEvent;\n\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window.document.createEvent(\"Event\");\n if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else event.initEvent(type, false, false);\n }\n\n node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\n\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\n\nexport default function(type, params) {\n return this.each((typeof params === \"function\"\n ? dispatchFunction\n : dispatchConstant)(type, params));\n}\n","export default function*() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i]) yield node;\n }\n }\n}\n","import selection_select from \"./select.js\";\nimport selection_selectAll from \"./selectAll.js\";\nimport selection_selectChild from \"./selectChild.js\";\nimport selection_selectChildren from \"./selectChildren.js\";\nimport selection_filter from \"./filter.js\";\nimport selection_data from \"./data.js\";\nimport selection_enter from \"./enter.js\";\nimport selection_exit from \"./exit.js\";\nimport selection_join from \"./join.js\";\nimport selection_merge from \"./merge.js\";\nimport selection_order from \"./order.js\";\nimport selection_sort from \"./sort.js\";\nimport selection_call from \"./call.js\";\nimport selection_nodes from \"./nodes.js\";\nimport selection_node from \"./node.js\";\nimport selection_size from \"./size.js\";\nimport selection_empty from \"./empty.js\";\nimport selection_each from \"./each.js\";\nimport selection_attr from \"./attr.js\";\nimport selection_style from \"./style.js\";\nimport selection_property from \"./property.js\";\nimport selection_classed from \"./classed.js\";\nimport selection_text from \"./text.js\";\nimport selection_html from \"./html.js\";\nimport selection_raise from \"./raise.js\";\nimport selection_lower from \"./lower.js\";\nimport selection_append from \"./append.js\";\nimport selection_insert from \"./insert.js\";\nimport selection_remove from \"./remove.js\";\nimport selection_clone from \"./clone.js\";\nimport selection_datum from \"./datum.js\";\nimport selection_on from \"./on.js\";\nimport selection_dispatch from \"./dispatch.js\";\nimport selection_iterator from \"./iterator.js\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\n\nfunction selection() {\n return new Selection([[document.documentElement]], root);\n}\n\nfunction selection_selection() {\n return this;\n}\n\nSelection.prototype = selection.prototype = {\n constructor: Selection,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\n\nexport default selection;\n","import {Selection, root} from \"./selection/index.js\";\n\nexport default function(selector) {\n return typeof selector === \"string\"\n ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n : new Selection([[selector]], root);\n}\n","export default function(event) {\n let sourceEvent;\n while (sourceEvent = event.sourceEvent) event = sourceEvent;\n return event;\n}\n","import sourceEvent from \"./sourceEvent.js\";\n\nexport default function(event, node) {\n event = sourceEvent(event);\n if (node === undefined) node = event.currentTarget;\n if (node) {\n var svg = node.ownerSVGElement || node;\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n if (node.getBoundingClientRect) {\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n }\n }\n return [event.pageX, event.pageY];\n}\n","export default function cumsum(values, valueof) {\n var sum = 0, index = 0;\n return Float64Array.from(values, valueof === undefined\n ? v => (sum += +v || 0)\n : v => (sum += +valueof(v, index++, values) || 0));\n}","export default function max(values, valueof) {\n let max;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (max < value || (max === undefined && value >= value))) {\n max = value;\n }\n }\n }\n return max;\n}\n","export default function min(values, valueof) {\n let min;\n if (valueof === undefined) {\n for (const value of values) {\n if (value != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if ((value = valueof(value, ++index, values)) != null\n && (min > value || (min === undefined && value >= value))) {\n min = value;\n }\n }\n }\n return min;\n}\n","export default function sum(values, valueof) {\n let sum = 0;\n if (valueof === undefined) {\n for (let value of values) {\n if (value = +value) {\n sum += value;\n }\n }\n } else {\n let index = -1;\n for (let value of values) {\n if (value = +valueof(value, ++index, values)) {\n sum += value;\n }\n }\n }\n return sum;\n}\n","function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;\n else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\n\nexport default function() {\n return this.eachAfter(count);\n}\n","export default function(callback, that) {\n let index = -1;\n for (const node of this) {\n callback.call(that, node, ++index, this);\n }\n return this;\n}\n","export default function(callback, that) {\n var node = this, nodes = [node], children, i, index = -1;\n while (node = nodes.pop()) {\n callback.call(that, node, ++index, this);\n if (children = node.children) {\n for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n }\n return this;\n}\n","export default function(callback, that) {\n var node = this, nodes = [node], next = [], children, i, n, index = -1;\n while (node = nodes.pop()) {\n next.push(node);\n if (children = node.children) {\n for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n }\n while (node = next.pop()) {\n callback.call(that, node, ++index, this);\n }\n return this;\n}\n","export default function(callback, that) {\n let index = -1;\n for (const node of this) {\n if (callback.call(that, node, ++index, this)) {\n return node;\n }\n }\n}\n","export default function(value) {\n return this.eachAfter(function(node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}\n","export default function(compare) {\n return this.eachBefore(function(node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\n","export default function(end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\n","export default function() {\n var node = this, nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\n","export default function() {\n return Array.from(this);\n}\n","export default function() {\n var leaves = [];\n this.eachBefore(function(node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}\n","export default function() {\n var root = this, links = [];\n root.each(function(node) {\n if (node !== root) { // Don’t include the root’s parent, if any.\n links.push({source: node.parent, target: node});\n }\n });\n return links;\n}\n","export default function*() {\n var node = this, current, next = [node], children, i, n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n yield node;\n if (children = node.children) {\n for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n }\n } while (next.length);\n}\n","import node_count from \"./count.js\";\nimport node_each from \"./each.js\";\nimport node_eachBefore from \"./eachBefore.js\";\nimport node_eachAfter from \"./eachAfter.js\";\nimport node_find from \"./find.js\";\nimport node_sum from \"./sum.js\";\nimport node_sort from \"./sort.js\";\nimport node_path from \"./path.js\";\nimport node_ancestors from \"./ancestors.js\";\nimport node_descendants from \"./descendants.js\";\nimport node_leaves from \"./leaves.js\";\nimport node_links from \"./links.js\";\nimport node_iterator from \"./iterator.js\";\n\nexport default function hierarchy(data, children) {\n if (data instanceof Map) {\n data = [undefined, data];\n if (children === undefined) children = mapChildren;\n } else if (children === undefined) {\n children = objectChildren;\n }\n\n var root = new Node(data),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n\n while (node = nodes.pop()) {\n if ((childs = children(node.data)) && (n = (childs = Array.from(childs)).length)) {\n node.children = childs;\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = childs[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n\n return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\n\nfunction objectChildren(d) {\n return d.children;\n}\n\nfunction mapChildren(d) {\n return Array.isArray(d) ? d[1] : null;\n}\n\nfunction copyData(node) {\n if (node.data.value !== undefined) node.value = node.data.value;\n node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height;\n while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n this.data = data;\n this.depth =\n this.height = 0;\n this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n constructor: Node,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n find: node_find,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy,\n [Symbol.iterator]: node_iterator\n};\n","export function optional(f) {\n return f == null ? null : required(f);\n}\n\nexport function required(f) {\n if (typeof f !== \"function\") throw new Error;\n return f;\n}\n","import {optional} from \"./accessors.js\";\nimport {Node, computeHeight} from \"./hierarchy/index.js\";\n\nvar preroot = {depth: -1},\n ambiguous = {},\n imputed = {};\n\nfunction defaultId(d) {\n return d.id;\n}\n\nfunction defaultParentId(d) {\n return d.parentId;\n}\n\nexport default function() {\n var id = defaultId,\n parentId = defaultParentId,\n path;\n\n function stratify(data) {\n var nodes = Array.from(data),\n currentId = id,\n currentParentId = parentId,\n n,\n d,\n i,\n root,\n parent,\n node,\n nodeId,\n nodeKey,\n nodeByKey = new Map;\n\n if (path != null) {\n const I = nodes.map((d, i) => normalize(path(d, i, data)));\n const P = I.map(parentof);\n const S = new Set(I).add(\"\");\n for (const i of P) {\n if (!S.has(i)) {\n S.add(i);\n I.push(i);\n P.push(parentof(i));\n nodes.push(imputed);\n }\n }\n currentId = (_, i) => I[i];\n currentParentId = (_, i) => P[i];\n }\n\n for (i = 0, n = nodes.length; i < n; ++i) {\n d = nodes[i], node = nodes[i] = new Node(d);\n if ((nodeId = currentId(d, i, data)) != null && (nodeId += \"\")) {\n nodeKey = node.id = nodeId;\n nodeByKey.set(nodeKey, nodeByKey.has(nodeKey) ? ambiguous : node);\n }\n if ((nodeId = currentParentId(d, i, data)) != null && (nodeId += \"\")) {\n node.parent = nodeId;\n }\n }\n\n for (i = 0; i < n; ++i) {\n node = nodes[i];\n if (nodeId = node.parent) {\n parent = nodeByKey.get(nodeId);\n if (!parent) throw new Error(\"missing: \" + nodeId);\n if (parent === ambiguous) throw new Error(\"ambiguous: \" + nodeId);\n if (parent.children) parent.children.push(node);\n else parent.children = [node];\n node.parent = parent;\n } else {\n if (root) throw new Error(\"multiple roots\");\n root = node;\n }\n }\n\n if (!root) throw new Error(\"no root\");\n\n // When imputing internal nodes, only introduce roots if needed.\n // Then replace the imputed marker data with null.\n if (path != null) {\n while (root.data === imputed && root.children.length === 1) {\n root = root.children[0], --n;\n }\n for (let i = nodes.length - 1; i >= 0; --i) {\n node = nodes[i];\n if (node.data !== imputed) break;\n node.data = null;\n }\n }\n\n root.parent = preroot;\n root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(computeHeight);\n root.parent = null;\n if (n > 0) throw new Error(\"cycle\");\n\n return root;\n }\n\n stratify.id = function(x) {\n return arguments.length ? (id = optional(x), stratify) : id;\n };\n\n stratify.parentId = function(x) {\n return arguments.length ? (parentId = optional(x), stratify) : parentId;\n };\n\n stratify.path = function(x) {\n return arguments.length ? (path = optional(x), stratify) : path;\n };\n\n return stratify;\n}\n\n// To normalize a path, we coerce to a string, strip the trailing slash if any\n// (as long as the trailing slash is not immediately preceded by another slash),\n// and add leading slash if missing.\nfunction normalize(path) {\n path = `${path}`;\n let i = path.length;\n if (slash(path, i - 1) && !slash(path, i - 2)) path = path.slice(0, -1);\n return path[0] === \"/\" ? path : `/${path}`;\n}\n\n// Walk backwards to find the first slash that is not the leading slash, e.g.:\n// \"/foo/bar\" ⇥ \"/foo\", \"/foo\" ⇥ \"/\", \"/\" ↦ \"\". (The root is special-cased\n// because the id of the root must be a truthy value.)\nfunction parentof(path) {\n let i = path.length;\n if (i < 2) return \"\";\n while (--i > 1) if (slash(path, i)) break;\n return path.slice(0, i);\n}\n\n// Slashes can be escaped; to determine whether a slash is a path delimiter, we\n// count the number of preceding backslashes escaping the forward slash: an odd\n// number indicates an escaped forward slash.\nfunction slash(path, i) {\n if (path[i] === \"/\") {\n let k = 0;\n while (i > 0 && path[--i] === \"\\\\\") ++k;\n if ((k & 1) === 0) return true;\n }\n return false;\n}\n","import {Node} from \"./hierarchy/index.js\";\n\nfunction defaultSeparation(a, b) {\n return a.parent === b.parent ? 1 : 2;\n}\n\n// function radialSeparation(a, b) {\n// return (a.parent === b.parent ? 1 : 2) / a.depth;\n// }\n\n// This function is used to traverse the left contour of a subtree (or\n// subforest). It returns the successor of v on this contour. This successor is\n// either given by the leftmost child of v or by the thread of v. The function\n// returns null if and only if v is on the highest level of its subtree.\nfunction nextLeft(v) {\n var children = v.children;\n return children ? children[0] : v.t;\n}\n\n// This function works analogously to nextLeft.\nfunction nextRight(v) {\n var children = v.children;\n return children ? children[children.length - 1] : v.t;\n}\n\n// Shifts the current subtree rooted at w+. This is done by increasing\n// prelim(w+) and mod(w+) by shift.\nfunction moveSubtree(wm, wp, shift) {\n var change = shift / (wp.i - wm.i);\n wp.c -= change;\n wp.s += shift;\n wm.c += change;\n wp.z += shift;\n wp.m += shift;\n}\n\n// All other shifts, applied to the smaller subtrees between w- and w+, are\n// performed by this function. To prepare the shifts, we have to adjust\n// change(w+), shift(w+), and change(w-).\nfunction executeShifts(v) {\n var shift = 0,\n change = 0,\n children = v.children,\n i = children.length,\n w;\n while (--i >= 0) {\n w = children[i];\n w.z += shift;\n w.m += shift;\n shift += w.s + (change += w.c);\n }\n}\n\n// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise,\n// returns the specified (default) ancestor.\nfunction nextAncestor(vim, v, ancestor) {\n return vim.a.parent === v.parent ? vim.a : ancestor;\n}\n\nfunction TreeNode(node, i) {\n this._ = node;\n this.parent = null;\n this.children = null;\n this.A = null; // default ancestor\n this.a = this; // ancestor\n this.z = 0; // prelim\n this.m = 0; // mod\n this.c = 0; // change\n this.s = 0; // shift\n this.t = null; // thread\n this.i = i; // number\n}\n\nTreeNode.prototype = Object.create(Node.prototype);\n\nfunction treeRoot(root) {\n var tree = new TreeNode(root, 0),\n node,\n nodes = [tree],\n child,\n children,\n i,\n n;\n\n while (node = nodes.pop()) {\n if (children = node._.children) {\n node.children = new Array(n = children.length);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new TreeNode(children[i], i));\n child.parent = node;\n }\n }\n }\n\n (tree.parent = new TreeNode(null, 0)).children = [tree];\n return tree;\n}\n\n// Node-link tree diagram using the Reingold-Tilford \"tidy\" algorithm\nexport default function() {\n var separation = defaultSeparation,\n dx = 1,\n dy = 1,\n nodeSize = null;\n\n function tree(root) {\n var t = treeRoot(root);\n\n // Compute the layout using Buchheim et al.’s algorithm.\n t.eachAfter(firstWalk), t.parent.m = -t.z;\n t.eachBefore(secondWalk);\n\n // If a fixed node size is specified, scale x and y.\n if (nodeSize) root.eachBefore(sizeNode);\n\n // If a fixed tree size is specified, scale x and y based on the extent.\n // Compute the left-most, right-most, and depth-most nodes for extents.\n else {\n var left = root,\n right = root,\n bottom = root;\n root.eachBefore(function(node) {\n if (node.x < left.x) left = node;\n if (node.x > right.x) right = node;\n if (node.depth > bottom.depth) bottom = node;\n });\n var s = left === right ? 1 : separation(left, right) / 2,\n tx = s - left.x,\n kx = dx / (right.x + s + tx),\n ky = dy / (bottom.depth || 1);\n root.eachBefore(function(node) {\n node.x = (node.x + tx) * kx;\n node.y = node.depth * ky;\n });\n }\n\n return root;\n }\n\n // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is\n // applied recursively to the children of v, as well as the function\n // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the\n // node v is placed to the midpoint of its outermost children.\n function firstWalk(v) {\n var children = v.children,\n siblings = v.parent.children,\n w = v.i ? siblings[v.i - 1] : null;\n if (children) {\n executeShifts(v);\n var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n if (w) {\n v.z = w.z + separation(v._, w._);\n v.m = v.z - midpoint;\n } else {\n v.z = midpoint;\n }\n } else if (w) {\n v.z = w.z + separation(v._, w._);\n }\n v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n }\n\n // Computes all real x-coordinates by summing up the modifiers recursively.\n function secondWalk(v) {\n v._.x = v.z + v.parent.m;\n v.m += v.parent.m;\n }\n\n // The core of the algorithm. Here, a new subtree is combined with the\n // previous subtrees. Threads are used to traverse the inside and outside\n // contours of the left and right subtree up to the highest common level. The\n // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the\n // superscript o means outside and i means inside, the subscript - means left\n // subtree and + means right subtree. For summing up the modifiers along the\n // contour, we use respective variables si+, si-, so-, and so+. Whenever two\n // nodes of the inside contours conflict, we compute the left one of the\n // greatest uncommon ancestors using the function ANCESTOR and call MOVE\n // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.\n // Finally, we add a new thread (if necessary).\n function apportion(v, w, ancestor) {\n if (w) {\n var vip = v,\n vop = v,\n vim = w,\n vom = vip.parent.children[0],\n sip = vip.m,\n sop = vop.m,\n sim = vim.m,\n som = vom.m,\n shift;\n while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {\n vom = nextLeft(vom);\n vop = nextRight(vop);\n vop.a = v;\n shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n if (shift > 0) {\n moveSubtree(nextAncestor(vim, v, ancestor), v, shift);\n sip += shift;\n sop += shift;\n }\n sim += vim.m;\n sip += vip.m;\n som += vom.m;\n sop += vop.m;\n }\n if (vim && !nextRight(vop)) {\n vop.t = vim;\n vop.m += sim - sop;\n }\n if (vip && !nextLeft(vom)) {\n vom.t = vip;\n vom.m += sip - som;\n ancestor = v;\n }\n }\n return ancestor;\n }\n\n function sizeNode(node) {\n node.x *= dx;\n node.y = node.depth * dy;\n }\n\n tree.separation = function(x) {\n return arguments.length ? (separation = x, tree) : separation;\n };\n\n tree.size = function(x) {\n return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]);\n };\n\n tree.nodeSize = function(x) {\n return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null);\n };\n\n return tree;\n}\n","var noop = {value: () => {}};\n\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n return {type: t, name: name};\n });\n}\n\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._,\n T = parseTypenames(typename + \"\", _),\n t,\n i = -1,\n n = T.length;\n\n // If no callback was specified, return the callback of the given type and name.\n if (arguments.length < 2) {\n while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n return;\n }\n\n // If a type was specified, set the callback for the given type and name.\n // Otherwise, if a null callback was specified, remove callbacks of the given name.\n if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n }\n\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _) copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n }\n};\n\nfunction get(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\n\nfunction set(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null) type.push({name: name, value: callback});\n return type;\n}\n\nexport default dispatch;\n","// These are typically used in conjunction with noevent to ensure that we can\n// preventDefault on the event.\nexport const nonpassive = {passive: false};\nexport const nonpassivecapture = {capture: true, passive: false};\n\nexport function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {select} from \"d3-selection\";\nimport noevent, {nonpassivecapture} from \"./noevent.js\";\n\nexport default function(view) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", noevent, nonpassivecapture);\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", noevent, nonpassivecapture);\n } else {\n root.__noselect = root.style.MozUserSelect;\n root.style.MozUserSelect = \"none\";\n }\n}\n\nexport function yesdrag(view, noclick) {\n var root = view.document.documentElement,\n selection = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection.on(\"click.drag\", noevent, nonpassivecapture);\n setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n }\n if (\"onselectstart\" in root) {\n selection.on(\"selectstart.drag\", null);\n } else {\n root.style.MozUserSelect = root.__noselect;\n delete root.__noselect;\n }\n}\n","export default function(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition) prototype[key] = definition[key];\n return prototype;\n}\n","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n reHex = /^#([0-9a-f]{3,8})$/,\n reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`),\n reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`),\n reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`),\n reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`),\n reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`),\n reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\n\nvar named = {\n aliceblue: 0xf0f8ff,\n antiquewhite: 0xfaebd7,\n aqua: 0x00ffff,\n aquamarine: 0x7fffd4,\n azure: 0xf0ffff,\n beige: 0xf5f5dc,\n bisque: 0xffe4c4,\n black: 0x000000,\n blanchedalmond: 0xffebcd,\n blue: 0x0000ff,\n blueviolet: 0x8a2be2,\n brown: 0xa52a2a,\n burlywood: 0xdeb887,\n cadetblue: 0x5f9ea0,\n chartreuse: 0x7fff00,\n chocolate: 0xd2691e,\n coral: 0xff7f50,\n cornflowerblue: 0x6495ed,\n cornsilk: 0xfff8dc,\n crimson: 0xdc143c,\n cyan: 0x00ffff,\n darkblue: 0x00008b,\n darkcyan: 0x008b8b,\n darkgoldenrod: 0xb8860b,\n darkgray: 0xa9a9a9,\n darkgreen: 0x006400,\n darkgrey: 0xa9a9a9,\n darkkhaki: 0xbdb76b,\n darkmagenta: 0x8b008b,\n darkolivegreen: 0x556b2f,\n darkorange: 0xff8c00,\n darkorchid: 0x9932cc,\n darkred: 0x8b0000,\n darksalmon: 0xe9967a,\n darkseagreen: 0x8fbc8f,\n darkslateblue: 0x483d8b,\n darkslategray: 0x2f4f4f,\n darkslategrey: 0x2f4f4f,\n darkturquoise: 0x00ced1,\n darkviolet: 0x9400d3,\n deeppink: 0xff1493,\n deepskyblue: 0x00bfff,\n dimgray: 0x696969,\n dimgrey: 0x696969,\n dodgerblue: 0x1e90ff,\n firebrick: 0xb22222,\n floralwhite: 0xfffaf0,\n forestgreen: 0x228b22,\n fuchsia: 0xff00ff,\n gainsboro: 0xdcdcdc,\n ghostwhite: 0xf8f8ff,\n gold: 0xffd700,\n goldenrod: 0xdaa520,\n gray: 0x808080,\n green: 0x008000,\n greenyellow: 0xadff2f,\n grey: 0x808080,\n honeydew: 0xf0fff0,\n hotpink: 0xff69b4,\n indianred: 0xcd5c5c,\n indigo: 0x4b0082,\n ivory: 0xfffff0,\n khaki: 0xf0e68c,\n lavender: 0xe6e6fa,\n lavenderblush: 0xfff0f5,\n lawngreen: 0x7cfc00,\n lemonchiffon: 0xfffacd,\n lightblue: 0xadd8e6,\n lightcoral: 0xf08080,\n lightcyan: 0xe0ffff,\n lightgoldenrodyellow: 0xfafad2,\n lightgray: 0xd3d3d3,\n lightgreen: 0x90ee90,\n lightgrey: 0xd3d3d3,\n lightpink: 0xffb6c1,\n lightsalmon: 0xffa07a,\n lightseagreen: 0x20b2aa,\n lightskyblue: 0x87cefa,\n lightslategray: 0x778899,\n lightslategrey: 0x778899,\n lightsteelblue: 0xb0c4de,\n lightyellow: 0xffffe0,\n lime: 0x00ff00,\n limegreen: 0x32cd32,\n linen: 0xfaf0e6,\n magenta: 0xff00ff,\n maroon: 0x800000,\n mediumaquamarine: 0x66cdaa,\n mediumblue: 0x0000cd,\n mediumorchid: 0xba55d3,\n mediumpurple: 0x9370db,\n mediumseagreen: 0x3cb371,\n mediumslateblue: 0x7b68ee,\n mediumspringgreen: 0x00fa9a,\n mediumturquoise: 0x48d1cc,\n mediumvioletred: 0xc71585,\n midnightblue: 0x191970,\n mintcream: 0xf5fffa,\n mistyrose: 0xffe4e1,\n moccasin: 0xffe4b5,\n navajowhite: 0xffdead,\n navy: 0x000080,\n oldlace: 0xfdf5e6,\n olive: 0x808000,\n olivedrab: 0x6b8e23,\n orange: 0xffa500,\n orangered: 0xff4500,\n orchid: 0xda70d6,\n palegoldenrod: 0xeee8aa,\n palegreen: 0x98fb98,\n paleturquoise: 0xafeeee,\n palevioletred: 0xdb7093,\n papayawhip: 0xffefd5,\n peachpuff: 0xffdab9,\n peru: 0xcd853f,\n pink: 0xffc0cb,\n plum: 0xdda0dd,\n powderblue: 0xb0e0e6,\n purple: 0x800080,\n rebeccapurple: 0x663399,\n red: 0xff0000,\n rosybrown: 0xbc8f8f,\n royalblue: 0x4169e1,\n saddlebrown: 0x8b4513,\n salmon: 0xfa8072,\n sandybrown: 0xf4a460,\n seagreen: 0x2e8b57,\n seashell: 0xfff5ee,\n sienna: 0xa0522d,\n silver: 0xc0c0c0,\n skyblue: 0x87ceeb,\n slateblue: 0x6a5acd,\n slategray: 0x708090,\n slategrey: 0x708090,\n snow: 0xfffafa,\n springgreen: 0x00ff7f,\n steelblue: 0x4682b4,\n tan: 0xd2b48c,\n teal: 0x008080,\n thistle: 0xd8bfd8,\n tomato: 0xff6347,\n turquoise: 0x40e0d0,\n violet: 0xee82ee,\n wheat: 0xf5deb3,\n white: 0xffffff,\n whitesmoke: 0xf5f5f5,\n yellow: 0xffff00,\n yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor, this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex, // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\n\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\n\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n : null) // invalid hex\n : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n : null;\n}\n\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n if (a <= 0) r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Rgb;\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return (-0.5 <= this.r && this.r < 255.5)\n && (-0.5 <= this.g && this.g < 255.5)\n && (-0.5 <= this.b && this.b < 255.5)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\n\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\n\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\n\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\n\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\n\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n if (a <= 0) h = s = l = NaN;\n else if (l <= 0 || l >= 1) h = s = NaN;\n else if (s <= 0) h = NaN;\n return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color)) o = color(o);\n if (!o) return new Hsl;\n if (o instanceof Hsl) return o;\n o = o.rgb();\n var r = o.r / 255,\n g = o.g / 255,\n b = o.b / 255,\n min = Math.min(r, g, b),\n max = Math.max(r, g, b),\n h = NaN,\n s = max - min,\n l = (max + min) / 2;\n if (s) {\n if (r === max) h = (g - b) / s + (g < b) * 6;\n else if (g === max) h = (b - r) / s + 2;\n else h = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h;\n }\n return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n this.h = +h;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h = this.h % 360 + (this.h < 0) * 360,\n s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n l = this.l,\n m2 = l + (l < 0.5 ? l : 1 - l) * s,\n m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n hsl2rgb(h, m1, m2),\n hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n && (0 <= this.l && this.l <= 1)\n && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\n\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\n\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n return (h < 60 ? m1 + (m2 - m1) * h / 60\n : h < 180 ? m2\n : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n : m1) * 255;\n}\n","export function basis(t1, v0, v1, v2, v3) {\n var t2 = t1 * t1, t3 = t2 * t1;\n return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n + (4 - 6 * t2 + 3 * t3) * v1\n + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n + t3 * v3) / 6;\n}\n\nexport default function(values) {\n var n = values.length - 1;\n return function(t) {\n var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n v1 = values[i],\n v2 = values[i + 1],\n v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n var n = values.length;\n return function(t) {\n var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n v0 = values[(i + n - 1) % n],\n v1 = values[i % n],\n v2 = values[(i + 1) % n],\n v3 = values[(i + 2) % n];\n return basis((t - i / n) * n, v0, v1, v2, v3);\n };\n}\n","export default x => () => x;\n","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\n\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\n\nexport function hue(a, b) {\n var d = b - a;\n return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n };\n}\n\nexport default function nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n var color = gamma(y);\n\n function rgb(start, end) {\n var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n g = color(start.g, end.g),\n b = color(start.b, end.b),\n opacity = nogamma(start.opacity, end.opacity);\n return function(t) {\n start.r = r(t);\n start.g = g(t);\n start.b = b(t);\n start.opacity = opacity(t);\n return start + \"\";\n };\n }\n\n rgb.gamma = rgbGamma;\n\n return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n return function(colors) {\n var n = colors.length,\n r = new Array(n),\n g = new Array(n),\n b = new Array(n),\n i, color;\n for (i = 0; i < n; ++i) {\n color = colorRgb(colors[i]);\n r[i] = color.r || 0;\n g[i] = color.g || 0;\n b[i] = color.b || 0;\n }\n r = spline(r);\n g = spline(g);\n b = spline(b);\n color.opacity = 1;\n return function(t) {\n color.r = r(t);\n color.g = g(t);\n color.b = b(t);\n return color + \"\";\n };\n };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n","export default function(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\n","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n return function() {\n return b;\n };\n}\n\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\n\nexport default function(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n am, // current match in a\n bm, // current match in b\n bs, // string preceding current number in b, if any\n i = -1, // index in s\n s = [], // string constants and placeholders\n q = []; // number interpolators\n\n // Coerce inputs to strings.\n a = a + \"\", b = b + \"\";\n\n // Interpolate pairs of numbers in a & b.\n while ((am = reA.exec(a))\n && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) { // a string precedes the next number in b\n bs = b.slice(bi, bs);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n if (s[i]) s[i] += bm; // coalesce with previous string\n else s[++i] = bm;\n } else { // interpolate non-matching numbers\n s[++i] = null;\n q.push({i: i, x: number(am, bm)});\n }\n bi = reB.lastIndex;\n }\n\n // Add remains of b.\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i]) s[i] += bs; // coalesce with previous string\n else s[++i] = bs;\n }\n\n // Special optimization for only a single match.\n // Otherwise, interpolate each of the numbers and rejoin the string.\n return s.length < 2 ? (q[0]\n ? one(q[0].x)\n : zero(b))\n : (b = q.length, function(t) {\n for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n });\n}\n","var degrees = 180 / Math.PI;\n\nexport var identity = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX: scaleX,\n scaleY: scaleY\n };\n}\n","import decompose, {identity} from \"./decompose.js\";\n\nvar svgNode;\n\n/* eslint-disable no-undef */\nexport function parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\n\nexport function parseSvg(value) {\n if (value == null) return identity;\n if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n\n return function(a, b) {\n var s = [], // string constants and placeholders\n q = []; // number interpolators\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null; // gc\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n) s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n","var epsilon2 = 1e-12;\n\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\nexport default (function zoomRho(rho, rho2, rho4) {\n\n // p0 = [ux0, uy0, w0]\n // p1 = [ux1, uy1, w1]\n function zoom(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n dx = ux1 - ux0,\n dy = uy1 - uy0,\n d2 = dx * dx + dy * dy,\n i,\n S;\n\n // Special case for u0 ≅ u1.\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n }\n }\n\n // General case.\n else {\n var d1 = Math.sqrt(d2),\n b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S,\n coshr0 = cosh(r0),\n u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n }\n }\n\n i.duration = S * 1000 * rho / Math.SQRT2;\n\n return i;\n }\n\n zoom.rho = function(_) {\n var _1 = Math.max(1e-3, +_), _2 = _1 * _1, _4 = _2 * _2;\n return zoomRho(_1, _2, _4);\n };\n\n return zoom;\n})(Math.SQRT2, 2, 4);\n","var frame = 0, // is an animation frame pending?\n timeout = 0, // is a timeout pending?\n interval = 0, // are any timers active?\n pokeDelay = 1000, // how frequently we check for clock skew\n taskHead,\n taskTail,\n clockLast = 0,\n clockNow = 0,\n clockSkew = 0,\n clock = typeof performance === \"object\" && performance.now ? performance : Date,\n setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n clockNow = 0;\n}\n\nexport function Timer() {\n this._call =\n this._time =\n this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail) taskTail._next = this;\n else taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\n\nexport function timer(callback, delay, time) {\n var t = new Timer;\n t.restart(callback, delay, time);\n return t;\n}\n\nexport function timerFlush() {\n now(); // Get the current time, if not already set.\n ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0) t._call.call(undefined, e);\n t = t._next;\n }\n --frame;\n}\n\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\n\nfunction poke() {\n var now = clock.now(), delay = now - clockLast;\n if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time) time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\n\nfunction sleep(time) {\n if (frame) return; // Soonest alarm already set, or will be.\n if (timeout) timeout = clearTimeout(timeout);\n var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n if (delay > 24) {\n if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval) interval = clearInterval(interval);\n } else {\n if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\n","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n var t = new Timer;\n delay = delay == null ? 0 : +delay;\n t.restart(elapsed => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules) node.__transition = {};\n else if (id in schedules) return;\n create(node, id, {\n name: name,\n index: index, // For context during callback.\n group: group, // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\n\nexport function init(node, id) {\n var schedule = get(node, id);\n if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n return schedule;\n}\n\nexport function set(node, id) {\n var schedule = get(node, id);\n if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n return schedule;\n}\n\nexport function get(node, id) {\n var schedule = node.__transition;\n if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n return schedule;\n}\n\nfunction create(node, id, self) {\n var schedules = node.__transition,\n tween;\n\n // Initialize the self timer when the transition is created.\n // Note the actual delay is not known until the first callback!\n schedules[id] = self;\n self.timer = timer(schedule, 0, self.time);\n\n function schedule(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start, self.delay, self.time);\n\n // If the elapsed delay is less than our first sleep, start immediately.\n if (self.delay <= elapsed) start(elapsed - self.delay);\n }\n\n function start(elapsed) {\n var i, j, n, o;\n\n // If the state is not SCHEDULED, then we previously errored on start.\n if (self.state !== SCHEDULED) return stop();\n\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name) continue;\n\n // While this element already has a starting transition during this frame,\n // defer starting an interrupting transition until that transition has a\n // chance to tick (and possibly end); see d3/d3-transition#54!\n if (o.state === STARTED) return timeout(start);\n\n // Interrupt the active transition, if any.\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n\n // Cancel any pre-empted transitions.\n else if (+i < id) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n\n // Defer the first tick to end of the current frame; see d3/d3#1576.\n // Note the transition may be canceled after start and before the first tick!\n // Note this must be scheduled before the start event; see d3/d3-transition#16!\n // Assuming this is successful, subsequent callbacks go straight to tick.\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n\n // Dispatch the start event.\n // Note this must be done before the tween are initialized.\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING) return; // interrupted\n self.state = STARTED;\n\n // Initialize the tween, deleting null tween.\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n i = -1,\n n = tween.length;\n\n while (++i < n) {\n tween[i].call(node, t);\n }\n\n // Dispatch the end event.\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id];\n for (var i in schedules) return; // eslint-disable-line no-unused-vars\n delete node.__transition;\n }\n}\n","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n var schedules = node.__transition,\n schedule,\n active,\n empty = true,\n i;\n\n if (!schedules) return;\n\n name = name == null ? null : name + \"\";\n\n for (i in schedules) {\n if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n active = schedule.state > STARTING && schedule.state < ENDING;\n schedule.state = ENDED;\n schedule.timer.stop();\n schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n delete schedules[i];\n }\n\n if (empty) delete node.__transition;\n}\n","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n var tween0, tween1;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n\n schedule.tween = tween1;\n };\n}\n\nfunction tweenFunction(id, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\") throw new Error;\n return function() {\n var schedule = set(this, id),\n tween = schedule.tween;\n\n // If this node shared tween with the previous node,\n // just assign the updated shared tween and we’re done!\n // Otherwise, copy-on-write.\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n) tween1.push(t);\n }\n\n schedule.tween = tween1;\n };\n}\n\nexport default function(name, value) {\n var id = this._id;\n\n name += \"\";\n\n if (arguments.length < 2) {\n var tween = get(this.node(), id).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n\n return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n var id = transition._id;\n\n transition.each(function() {\n var schedule = set(this, id);\n (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n });\n\n return function(node) {\n return get(node, id).value[name];\n };\n}\n","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber\n : b instanceof color ? interpolateRgb\n : (c = color(b)) ? (b = c, interpolateRgb)\n : interpolateString)(a, b);\n}\n","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\n\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction attrFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nexport default function(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n return this.attrTween(name, typeof value === \"function\"\n ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\n\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n return function() {\n init(this, id).delay = +value.apply(this, arguments);\n };\n}\n\nfunction delayConstant(id, value) {\n return value = +value, function() {\n init(this, id).delay = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? delayFunction\n : delayConstant)(id, value))\n : get(this.node(), id).delay;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n return function() {\n set(this, id).duration = +value.apply(this, arguments);\n };\n}\n\nfunction durationConstant(id, value) {\n return value = +value, function() {\n set(this, id).duration = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each((typeof value === \"function\"\n ? durationFunction\n : durationConstant)(id, value))\n : get(this.node(), id).duration;\n}\n","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n if (typeof value !== \"function\") throw new Error;\n return function() {\n set(this, id).ease = value;\n };\n}\n\nexport default function(value) {\n var id = this._id;\n\n return arguments.length\n ? this.each(easeConstant(id, value))\n : get(this.node(), id).ease;\n}\n","import {set} from \"./schedule.js\";\n\nfunction easeVarying(id, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\") throw new Error;\n set(this, id).ease = v;\n };\n}\n\nexport default function(value) {\n if (typeof value !== \"function\") throw new Error;\n return this.each(easeVarying(this._id, value));\n}\n","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n if (typeof match !== \"function\") match = matcher(match);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\n","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n if (transition._id !== this._id) throw new Error;\n\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n\n return new Transition(merges, this._parents, this._name, this._id);\n}\n","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0) t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\n\nfunction onFunction(id, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule = sit(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, listener) {\n var id = this._id;\n\n return arguments.length < 2\n ? get(this.node(), id).on.on(name)\n : this.each(onFunction(id, name, listener));\n}\n","function removeFunction(id) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition) if (+i !== id) return;\n if (parent) parent.removeChild(this);\n };\n}\n\nexport default function() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\n","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selector(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node) subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n }\n }\n }\n\n return new Transition(subgroups, this._parents, name, id);\n}\n","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n var name = this._name,\n id = this._id;\n\n if (typeof select !== \"function\") select = selectorAll(select);\n\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n if (child = children[k]) {\n schedule(child, name, id, k, children, inherit);\n }\n }\n subgroups.push(children);\n parents.push(node);\n }\n }\n }\n\n return new Transition(subgroups, parents, name, id);\n}\n","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n return new Selection(this._groups, this._parents);\n}\n","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n string1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, string10 = string1);\n };\n}\n\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n var string00,\n string1 = value1 + \"\",\n interpolate0;\n return function() {\n var string0 = style(this, name);\n return string0 === string1 ? null\n : string0 === string00 ? interpolate0\n : interpolate0 = interpolate(string00 = string0, value1);\n };\n}\n\nfunction styleFunction(name, interpolate, value) {\n var string00,\n string10,\n interpolate0;\n return function() {\n var string0 = style(this, name),\n value1 = value(this),\n string1 = value1 + \"\";\n if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n return string0 === string1 ? null\n : string0 === string00 && string1 === string10 ? interpolate0\n : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n };\n}\n\nfunction styleMaybeRemove(id, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n return function() {\n var schedule = set(this, id),\n on = schedule.on,\n listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n schedule.on = on1;\n };\n}\n\nexport default function(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n return value == null ? this\n .styleTween(name, styleNull(name, i))\n .on(\"end.style.\" + name, styleRemove(name))\n : typeof value === \"function\" ? this\n .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n .each(styleMaybeRemove(this._id, name))\n : this\n .styleTween(name, styleConstant(name, i, value), priority)\n .on(\"end.style.\" + name, null);\n}\n","function styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\n\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\n\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\n\nexport default function(value) {\n return this.tween(\"text\", typeof value === \"function\"\n ? textFunction(tweenValue(this, \"text\", value))\n : textConstant(value == null ? \"\" : value + \"\"));\n}\n","function textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\n\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\n\nexport default function(value) {\n var key = \"text\";\n if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n if (value == null) return this.tween(key, null);\n if (typeof value !== \"function\") throw new Error;\n return this.tween(key, textTween(value));\n}\n","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n var name = this._name,\n id0 = this._id,\n id1 = newId();\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit.time + inherit.delay + inherit.duration,\n delay: 0,\n duration: inherit.duration,\n ease: inherit.ease\n });\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id1);\n}\n","import {set} from \"./schedule.js\";\n\nexport default function() {\n var on0, on1, that = this, id = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = {value: reject},\n end = {value: function() { if (--size === 0) resolve(); }};\n\n that.each(function() {\n var schedule = set(this, id),\n on = schedule.on;\n\n // If this node shared a dispatch with the previous node,\n // just assign the updated shared dispatch and we’re done!\n // Otherwise, copy-on-write.\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n\n schedule.on = on1;\n });\n\n // The selection was empty, resolve end immediately\n if (size === 0) resolve();\n });\n}\n","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_easeVarying from \"./easeVarying.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id;\n}\n\nexport default function transition(name) {\n return selection().transition(name);\n}\n\nexport function newId() {\n return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\n","export function cubicIn(t) {\n return t * t * t;\n}\n\nexport function cubicOut(t) {\n return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n time: null, // Set on use.\n delay: 0,\n duration: 250,\n ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id} not found`);\n }\n }\n return timing;\n}\n\nexport default function(name) {\n var id,\n timing;\n\n if (name instanceof Transition) {\n id = name._id, name = name._name;\n } else {\n id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id, i, group, timing || inherit(node, id));\n }\n }\n }\n\n return new Transition(groups, this._parents, name, id);\n}\n","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n","export default x => () => x;\n","export default function ZoomEvent(type, {\n sourceEvent,\n target,\n transform,\n dispatch\n}) {\n Object.defineProperties(this, {\n type: {value: type, enumerable: true, configurable: true},\n sourceEvent: {value: sourceEvent, enumerable: true, configurable: true},\n target: {value: target, enumerable: true, configurable: true},\n transform: {value: transform, enumerable: true, configurable: true},\n _: {value: dispatch}\n });\n}\n","export function Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\n\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n return node.__zoom;\n}\n","export function nopropagation(event) {\n event.stopImmediatePropagation();\n}\n\nexport default function(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\n","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {select, pointer} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\n// except for pinch-to-zoom, which is sent as a wheel+ctrlKey event\nfunction defaultFilter(event) {\n return (!event.ctrlKey || event.type === 'wheel') && !event.button;\n}\n\nfunction defaultExtent() {\n var e = this;\n if (e instanceof SVGElement) {\n e = e.ownerSVGElement || e;\n if (e.hasAttribute(\"viewBox\")) {\n e = e.viewBox.baseVal;\n return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n }\n return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n }\n return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta(event) {\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002) * (event.ctrlKey ? 10 : 1);\n}\n\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n return transform.translate(\n dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n );\n}\n\nexport default function() {\n var filter = defaultFilter,\n extent = defaultExtent,\n constrain = defaultConstrain,\n wheelDelta = defaultWheelDelta,\n touchable = defaultTouchable,\n scaleExtent = [0, Infinity],\n translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n duration = 250,\n interpolate = interpolateZoom,\n listeners = dispatch(\"start\", \"zoom\", \"end\"),\n touchstarting,\n touchfirst,\n touchending,\n touchDelay = 500,\n wheelDelay = 150,\n clickDistance2 = 0,\n tapDistance = 10;\n\n function zoom(selection) {\n selection\n .property(\"__zoom\", defaultTransform)\n .on(\"wheel.zoom\", wheeled, {passive: false})\n .on(\"mousedown.zoom\", mousedowned)\n .on(\"dblclick.zoom\", dblclicked)\n .filter(touchable)\n .on(\"touchstart.zoom\", touchstarted)\n .on(\"touchmove.zoom\", touchmoved)\n .on(\"touchend.zoom touchcancel.zoom\", touchended)\n .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n\n zoom.transform = function(collection, transform, point, event) {\n var selection = collection.selection ? collection.selection() : collection;\n selection.property(\"__zoom\", defaultTransform);\n if (collection !== selection) {\n schedule(collection, transform, point, event);\n } else {\n selection.interrupt().each(function() {\n gesture(this, arguments)\n .event(event)\n .start()\n .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n .end();\n });\n }\n };\n\n zoom.scaleBy = function(selection, k, p, event) {\n zoom.scaleTo(selection, function() {\n var k0 = this.__zoom.k,\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return k0 * k1;\n }, p, event);\n };\n\n zoom.scaleTo = function(selection, k, p, event) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t0 = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n p1 = t0.invert(p0),\n k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n }, p, event);\n };\n\n zoom.translateBy = function(selection, x, y, event) {\n zoom.transform(selection, function() {\n return constrain(this.__zoom.translate(\n typeof x === \"function\" ? x.apply(this, arguments) : x,\n typeof y === \"function\" ? y.apply(this, arguments) : y\n ), extent.apply(this, arguments), translateExtent);\n }, null, event);\n };\n\n zoom.translateTo = function(selection, x, y, p, event) {\n zoom.transform(selection, function() {\n var e = extent.apply(this, arguments),\n t = this.__zoom,\n p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n typeof y === \"function\" ? -y.apply(this, arguments) : -y\n ), e, translateExtent);\n }, p, event);\n };\n\n function scale(transform, k) {\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n }\n\n function translate(transform, p0, p1) {\n var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n }\n\n function centroid(extent) {\n return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n }\n\n function schedule(transition, transform, point, event) {\n transition\n .on(\"start.zoom\", function() { gesture(this, arguments).event(event).start(); })\n .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).event(event).end(); })\n .tween(\"zoom\", function() {\n var that = this,\n args = arguments,\n g = gesture(that, args).event(event),\n e = extent.apply(that, args),\n p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n a = that.__zoom,\n b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n return function(t) {\n if (t === 1) t = b; // Avoid rounding error on end.\n else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n g.zoom(null, t);\n };\n });\n }\n\n function gesture(that, args, clean) {\n return (!clean && that.__zooming) || new Gesture(that, args);\n }\n\n function Gesture(that, args) {\n this.that = that;\n this.args = args;\n this.active = 0;\n this.sourceEvent = null;\n this.extent = extent.apply(that, args);\n this.taps = 0;\n }\n\n Gesture.prototype = {\n event: function(event) {\n if (event) this.sourceEvent = event;\n return this;\n },\n start: function() {\n if (++this.active === 1) {\n this.that.__zooming = this;\n this.emit(\"start\");\n }\n return this;\n },\n zoom: function(key, transform) {\n if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n this.that.__zoom = transform;\n this.emit(\"zoom\");\n return this;\n },\n end: function() {\n if (--this.active === 0) {\n delete this.that.__zooming;\n this.emit(\"end\");\n }\n return this;\n },\n emit: function(type) {\n var d = select(this.that).datum();\n listeners.call(\n type,\n this.that,\n new ZoomEvent(type, {\n sourceEvent: this.sourceEvent,\n target: zoom,\n type,\n transform: this.that.__zoom,\n dispatch: listeners\n }),\n d\n );\n }\n };\n\n function wheeled(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var g = gesture(this, args).event(event),\n t = this.__zoom,\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n p = pointer(event);\n\n // If the mouse is in the same location as before, reuse it.\n // If there were recent wheel events, reset the wheel idle timeout.\n if (g.wheel) {\n if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n g.mouse[1] = t.invert(g.mouse[0] = p);\n }\n clearTimeout(g.wheel);\n }\n\n // If this wheel event won’t trigger a transform change, ignore it.\n else if (t.k === k) return;\n\n // Otherwise, capture the mouse point and location at the start.\n else {\n g.mouse = [p, t.invert(p)];\n interrupt(this);\n g.start();\n }\n\n noevent(event);\n g.wheel = setTimeout(wheelidled, wheelDelay);\n g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n function wheelidled() {\n g.wheel = null;\n g.end();\n }\n }\n\n function mousedowned(event, ...args) {\n if (touchending || !filter.apply(this, arguments)) return;\n var currentTarget = event.currentTarget,\n g = gesture(this, args, true).event(event),\n v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n p = pointer(event, currentTarget),\n x0 = event.clientX,\n y0 = event.clientY;\n\n dragDisable(event.view);\n nopropagation(event);\n g.mouse = [p, this.__zoom.invert(p)];\n interrupt(this);\n g.start();\n\n function mousemoved(event) {\n noevent(event);\n if (!g.moved) {\n var dx = event.clientX - x0, dy = event.clientY - y0;\n g.moved = dx * dx + dy * dy > clickDistance2;\n }\n g.event(event)\n .zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = pointer(event, currentTarget), g.mouse[1]), g.extent, translateExtent));\n }\n\n function mouseupped(event) {\n v.on(\"mousemove.zoom mouseup.zoom\", null);\n dragEnable(event.view, g.moved);\n noevent(event);\n g.event(event).end();\n }\n }\n\n function dblclicked(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var t0 = this.__zoom,\n p0 = pointer(event.changedTouches ? event.changedTouches[0] : event, this),\n p1 = t0.invert(p0),\n k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, args), translateExtent);\n\n noevent(event);\n if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0, event);\n else select(this).call(zoom.transform, t1, p0, event);\n }\n\n function touchstarted(event, ...args) {\n if (!filter.apply(this, arguments)) return;\n var touches = event.touches,\n n = touches.length,\n g = gesture(this, args, event.changedTouches.length === n).event(event),\n started, i, t, p;\n\n nopropagation(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n p = [p, this.__zoom.invert(p), t.identifier];\n if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n }\n\n if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n if (started) {\n if (g.taps < 2) touchfirst = p[0], touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n interrupt(this);\n g.start();\n }\n }\n\n function touchmoved(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length, i, t, p, l;\n\n noevent(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n }\n t = g.that.__zoom;\n if (g.touch1) {\n var p0 = g.touch0[0], l0 = g.touch0[1],\n p1 = g.touch1[0], l1 = g.touch1[1],\n dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n t = scale(t, Math.sqrt(dp / dl));\n p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n }\n else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n else return;\n\n g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n }\n\n function touchended(event, ...args) {\n if (!this.__zooming) return;\n var g = gesture(this, args).event(event),\n touches = event.changedTouches,\n n = touches.length, i, t;\n\n nopropagation(event);\n if (touchending) clearTimeout(touchending);\n touchending = setTimeout(function() { touchending = null; }, touchDelay);\n for (i = 0; i < n; ++i) {\n t = touches[i];\n if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n }\n if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n else {\n g.end();\n // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n if (g.taps === 2) {\n t = pointer(t, this);\n if (Math.hypot(touchfirst[0] - t[0], touchfirst[1] - t[1]) < tapDistance) {\n var p = select(this).on(\"dblclick.zoom\");\n if (p) p.apply(this, arguments);\n }\n }\n }\n }\n\n zoom.wheelDelta = function(_) {\n return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n };\n\n zoom.filter = function(_) {\n return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n };\n\n zoom.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n };\n\n zoom.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n };\n\n zoom.scaleExtent = function(_) {\n return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n };\n\n zoom.translateExtent = function(_) {\n return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n };\n\n zoom.constrain = function(_) {\n return arguments.length ? (constrain = _, zoom) : constrain;\n };\n\n zoom.duration = function(_) {\n return arguments.length ? (duration = +_, zoom) : duration;\n };\n\n zoom.interpolate = function(_) {\n return arguments.length ? (interpolate = _, zoom) : interpolate;\n };\n\n zoom.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? zoom : value;\n };\n\n zoom.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n };\n\n zoom.tapDistance = function(_) {\n return arguments.length ? (tapDistance = +_, zoom) : tapDistance;\n };\n\n return zoom;\n}\n","function count(node) {\n var sum = 0,\n children = node.children,\n i = children && children.length;\n if (!i) sum = 1;\n else while (--i >= 0) sum += children[i].value;\n node.value = sum;\n}\n\nexport default function() {\n return this.eachAfter(count);\n}\n","export default function(callback) {\n var node = this, current, next = [node], children, i, n;\n do {\n current = next.reverse(), next = [];\n while (node = current.pop()) {\n callback(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n next.push(children[i]);\n }\n }\n } while (next.length);\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], children, i;\n while (node = nodes.pop()) {\n callback(node), children = node.children;\n if (children) for (i = children.length - 1; i >= 0; --i) {\n nodes.push(children[i]);\n }\n }\n return this;\n}\n","export default function(callback) {\n var node = this, nodes = [node], next = [], children, i, n;\n while (node = nodes.pop()) {\n next.push(node), children = node.children;\n if (children) for (i = 0, n = children.length; i < n; ++i) {\n nodes.push(children[i]);\n }\n }\n while (node = next.pop()) {\n callback(node);\n }\n return this;\n}\n","export default function(value) {\n return this.eachAfter(function(node) {\n var sum = +value(node.data) || 0,\n children = node.children,\n i = children && children.length;\n while (--i >= 0) sum += children[i].value;\n node.value = sum;\n });\n}\n","export default function(compare) {\n return this.eachBefore(function(node) {\n if (node.children) {\n node.children.sort(compare);\n }\n });\n}\n","export default function(end) {\n var start = this,\n ancestor = leastCommonAncestor(start, end),\n nodes = [start];\n while (start !== ancestor) {\n start = start.parent;\n nodes.push(start);\n }\n var k = nodes.length;\n while (end !== ancestor) {\n nodes.splice(k, 0, end);\n end = end.parent;\n }\n return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n if (a === b) return a;\n var aNodes = a.ancestors(),\n bNodes = b.ancestors(),\n c = null;\n a = aNodes.pop();\n b = bNodes.pop();\n while (a === b) {\n c = a;\n a = aNodes.pop();\n b = bNodes.pop();\n }\n return c;\n}\n","export default function() {\n var node = this, nodes = [node];\n while (node = node.parent) {\n nodes.push(node);\n }\n return nodes;\n}\n","export default function() {\n var nodes = [];\n this.each(function(node) {\n nodes.push(node);\n });\n return nodes;\n}\n","export default function() {\n var leaves = [];\n this.eachBefore(function(node) {\n if (!node.children) {\n leaves.push(node);\n }\n });\n return leaves;\n}\n","export default function() {\n var root = this, links = [];\n root.each(function(node) {\n if (node !== root) { // Don’t include the root’s parent, if any.\n links.push({source: node.parent, target: node});\n }\n });\n return links;\n}\n","import node_count from \"./count.js\";\nimport node_each from \"./each.js\";\nimport node_eachBefore from \"./eachBefore.js\";\nimport node_eachAfter from \"./eachAfter.js\";\nimport node_sum from \"./sum.js\";\nimport node_sort from \"./sort.js\";\nimport node_path from \"./path.js\";\nimport node_ancestors from \"./ancestors.js\";\nimport node_descendants from \"./descendants.js\";\nimport node_leaves from \"./leaves.js\";\nimport node_links from \"./links.js\";\n\nexport default function hierarchy(data, children) {\n var root = new Node(data),\n valued = +data.value && (root.value = data.value),\n node,\n nodes = [root],\n child,\n childs,\n i,\n n;\n\n if (children == null) children = defaultChildren;\n\n while (node = nodes.pop()) {\n if (valued) node.value = +node.data.value;\n if ((childs = children(node.data)) && (n = childs.length)) {\n node.children = new Array(n);\n for (i = n - 1; i >= 0; --i) {\n nodes.push(child = node.children[i] = new Node(childs[i]));\n child.parent = node;\n child.depth = node.depth + 1;\n }\n }\n }\n\n return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n return hierarchy(this).eachBefore(copyData);\n}\n\nfunction defaultChildren(d) {\n return d.children;\n}\n\nfunction copyData(node) {\n node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n var height = 0;\n do node.height = height;\n while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n this.data = data;\n this.depth =\n this.height = 0;\n this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n constructor: Node,\n count: node_count,\n each: node_each,\n eachAfter: node_eachAfter,\n eachBefore: node_eachBefore,\n sum: node_sum,\n sort: node_sort,\n path: node_path,\n ancestors: node_ancestors,\n descendants: node_descendants,\n leaves: node_leaves,\n links: node_links,\n copy: node_copy\n};\n","{\n \"name\": \"d3-flextree\",\n \"version\": \"2.1.2\",\n \"main\": \"build/d3-flextree.js\",\n \"module\": \"index\",\n \"jsnext:main\": \"index\",\n \"author\": {\n \"name\": \"Chris Maloney\",\n \"url\": \"http://chrismaloney.org\"\n },\n \"description\": \"Flexible tree layout algorithm that allows for variable node sizes.\",\n \"keywords\": [\n \"d3\",\n \"d3-module\",\n \"layout\",\n \"tree\",\n \"hierarchy\",\n \"d3-hierarchy\",\n \"plugin\",\n \"d3-plugin\",\n \"infovis\",\n \"visualization\",\n \"2d\"\n ],\n \"homepage\": \"https://github.com/klortho/d3-flextree\",\n \"license\": \"WTFPL\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/klortho/d3-flextree.git\"\n },\n \"scripts\": {\n \"clean\": \"rm -rf build demo test\",\n \"build:demo\": \"rollup -c --environment BUILD:demo\",\n \"build:dev\": \"rollup -c --environment BUILD:dev\",\n \"build:prod\": \"rollup -c --environment BUILD:prod\",\n \"build:test\": \"rollup -c --environment BUILD:test\",\n \"build\": \"rollup -c\",\n \"lint\": \"eslint index.js src\",\n \"test:main\": \"node test/bundle.js\",\n \"test:browser\": \"node test/browser-tests.js\",\n \"test\": \"npm-run-all test:*\",\n \"prepare\": \"npm-run-all clean build lint test\"\n },\n \"dependencies\": {\n \"d3-hierarchy\": \"^1.1.5\"\n },\n \"devDependencies\": {\n \"babel-plugin-external-helpers\": \"^6.22.0\",\n \"babel-preset-es2015-rollup\": \"^3.0.0\",\n \"d3\": \"^4.13.0\",\n \"d3-selection-multi\": \"^1.0.1\",\n \"eslint\": \"^4.19.1\",\n \"jsdom\": \"^11.6.2\",\n \"npm-run-all\": \"^4.1.2\",\n \"rollup\": \"^0.55.3\",\n \"rollup-plugin-babel\": \"^2.7.1\",\n \"rollup-plugin-commonjs\": \"^8.0.2\",\n \"rollup-plugin-copy\": \"^0.2.3\",\n \"rollup-plugin-json\": \"^2.3.0\",\n \"rollup-plugin-node-resolve\": \"^3.0.2\",\n \"rollup-plugin-uglify\": \"^3.0.0\",\n \"uglify-es\": \"^3.3.9\"\n }\n}\n","import {hierarchy} from 'd3-hierarchy';\nimport packageInfo from '../package.json';\n\nconst {version} = packageInfo;\nconst defaults = Object.freeze({\n children: data => data.children,\n nodeSize: node => node.data.size,\n spacing: 0,\n});\n\n// Create a layout function with customizable options. Per D3-style, the\n// options can be set at any time using setter methods. The layout function\n// will compute the tree node positions based on the options in effect at the\n// time it is called.\nexport default function flextree(options) {\n const opts = Object.assign({}, defaults, options);\n function accessor(name) {\n const opt = opts[name];\n return typeof opt === 'function' ? opt : () => opt;\n }\n\n function layout(tree) {\n const wtree = wrap(getWrapper(), tree, node=>node.children);\n wtree.update();\n return wtree.data;\n }\n\n function getFlexNode() {\n const nodeSize = accessor('nodeSize');\n const spacing = accessor('spacing');\n return class FlexNode extends hierarchy.prototype.constructor {\n constructor(data) {\n super(data);\n }\n copy() {\n const c = wrap(this.constructor, this, node=>node.children);\n c.each(node => node.data = node.data.data);\n return c;\n }\n get size() { return nodeSize(this); }\n spacing(oNode) { return spacing(this, oNode); }\n get nodes() { return this.descendants(); }\n get xSize() { return this.size[0]; }\n get ySize() { return this.size[1]; }\n get top() { return this.y; }\n get bottom() { return this.y + this.ySize; }\n get left() { return this.x - this.xSize / 2; }\n get right() { return this.x + this.xSize / 2; }\n get root() {\n const ancs = this.ancestors();\n return ancs[ancs.length - 1];\n }\n get numChildren() {\n return this.hasChildren ? this.children.length : 0;\n }\n get hasChildren() { return !this.noChildren; }\n get noChildren() { return this.children === null; }\n get firstChild() {\n return this.hasChildren ? this.children[0] : null;\n }\n get lastChild() {\n return this.hasChildren ? this.children[this.numChildren - 1] : null;\n }\n get extents() {\n return (this.children || []).reduce(\n (acc, kid) => FlexNode.maxExtents(acc, kid.extents),\n this.nodeExtents);\n }\n get nodeExtents() {\n return {\n top: this.top,\n bottom: this.bottom,\n left: this.left,\n right: this.right,\n };\n }\n static maxExtents(e0, e1) {\n return {\n top: Math.min(e0.top, e1.top),\n bottom: Math.max(e0.bottom, e1.bottom),\n left: Math.min(e0.left, e1.left),\n right: Math.max(e0.right, e1.right),\n };\n }\n };\n }\n\n function getWrapper() {\n const FlexNode = getFlexNode();\n const nodeSize = accessor('nodeSize');\n const spacing = accessor('spacing');\n return class extends FlexNode {\n constructor(data) {\n super(data);\n Object.assign(this, {\n x: 0, y: 0,\n relX: 0, prelim: 0, shift: 0, change: 0,\n lExt: this, lExtRelX: 0, lThr: null,\n rExt: this, rExtRelX: 0, rThr: null,\n });\n }\n get size() { return nodeSize(this.data); }\n spacing(oNode) { return spacing(this.data, oNode.data); }\n get x() { return this.data.x; }\n set x(v) { this.data.x = v; }\n get y() { return this.data.y; }\n set y(v) { this.data.y = v; }\n update() {\n layoutChildren(this);\n resolveX(this);\n return this;\n }\n };\n }\n\n function wrap(FlexClass, treeData, children) {\n const _wrap = (data, parent) => {\n const node = new FlexClass(data);\n Object.assign(node, {\n parent,\n depth: parent === null ? 0 : parent.depth + 1,\n height: 0,\n length: 1,\n });\n const kidsData = children(data) || [];\n node.children = kidsData.length === 0 ? null\n : kidsData.map(kd => _wrap(kd, node));\n if (node.children) {\n Object.assign(node, node.children.reduce(\n (hl, kid) => ({\n height: Math.max(hl.height, kid.height + 1),\n length: hl.length + kid.length,\n }), node\n ));\n }\n return node;\n };\n return _wrap(treeData, null);\n }\n\n\n Object.assign(layout, {\n nodeSize(arg) {\n return arguments.length ? (opts.nodeSize = arg, layout) : opts.nodeSize;\n },\n spacing(arg) {\n return arguments.length ? (opts.spacing = arg, layout) : opts.spacing;\n },\n children(arg) {\n return arguments.length ? (opts.children = arg, layout) : opts.children;\n },\n hierarchy(treeData, children) {\n const kids = typeof children === 'undefined' ? opts.children : children;\n return wrap(getFlexNode(), treeData, kids);\n },\n dump(tree) {\n const nodeSize = accessor('nodeSize');\n const _dump = i0 => node => {\n const i1 = i0 + ' ';\n const i2 = i0 + ' ';\n const {x, y} = node;\n const size = nodeSize(node);\n const kids = (node.children || []);\n const kdumps = (kids.length === 0) ? ' ' :\n `,${i1}children: [${i2}${kids.map(_dump(i2)).join(i2)}${i1}],${i0}`;\n return `{ size: [${size.join(', ')}],${i1}x: ${x}, y: ${y}${kdumps}},`;\n };\n return _dump('\\n')(tree);\n },\n });\n return layout;\n}\nflextree.version = version;\n\nconst layoutChildren = (w, y = 0) => {\n w.y = y;\n (w.children || []).reduce((acc, kid) => {\n const [i, lastLows] = acc;\n layoutChildren(kid, w.y + w.ySize);\n // The lowest vertical coordinate while extreme nodes still point\n // in current subtree.\n const lowY = (i === 0 ? kid.lExt : kid.rExt).bottom;\n if (i !== 0) separate(w, i, lastLows);\n const lows = updateLows(lowY, i, lastLows);\n return [i + 1, lows];\n }, [0, null]);\n shiftChange(w);\n positionRoot(w);\n return w;\n};\n\n// Resolves the relative coordinate properties - relX and prelim --\n// to set the final, absolute x coordinate for each node. This also sets\n// `prelim` to 0, so that `relX` for each node is its x-coordinate relative\n// to its parent.\nconst resolveX = (w, prevSum, parentX) => {\n // A call to resolveX without arguments is assumed to be for the root of\n // the tree. This will set the root's x-coord to zero.\n if (typeof prevSum === 'undefined') {\n prevSum = -w.relX - w.prelim;\n parentX = 0;\n }\n const sum = prevSum + w.relX;\n w.relX = sum + w.prelim - parentX;\n w.prelim = 0;\n w.x = parentX + w.relX;\n (w.children || []).forEach(k => resolveX(k, sum, w.x));\n return w;\n};\n\n// Process shift and change for all children, to add intermediate spacing to\n// each child's modifier.\nconst shiftChange = w => {\n (w.children || []).reduce((acc, child) => {\n const [lastShiftSum, lastChangeSum] = acc;\n const shiftSum = lastShiftSum + child.shift;\n const changeSum = lastChangeSum + shiftSum + child.change;\n child.relX += changeSum;\n return [shiftSum, changeSum];\n }, [0, 0]);\n};\n\n// Separates the latest child from its previous sibling\n/* eslint-disable complexity */\nconst separate = (w, i, lows) => {\n const lSib = w.children[i - 1];\n const curSubtree = w.children[i];\n let rContour = lSib;\n let rSumMods = lSib.relX;\n let lContour = curSubtree;\n let lSumMods = curSubtree.relX;\n let isFirst = true;\n while (rContour && lContour) {\n if (rContour.bottom > lows.lowY) lows = lows.next;\n // How far to the left of the right side of rContour is the left side\n // of lContour? First compute the center-to-center distance, then add\n // the \"spacing\"\n const dist =\n (rSumMods + rContour.prelim) - (lSumMods + lContour.prelim) +\n rContour.xSize / 2 + lContour.xSize / 2 +\n rContour.spacing(lContour);\n if (dist > 0 || (dist < 0 && isFirst)) {\n lSumMods += dist;\n // Move subtree by changing relX.\n moveSubtree(curSubtree, dist);\n distributeExtra(w, i, lows.index, dist);\n }\n isFirst = false;\n // Advance highest node(s) and sum(s) of modifiers\n const rightBottom = rContour.bottom;\n const leftBottom = lContour.bottom;\n if (rightBottom <= leftBottom) {\n rContour = nextRContour(rContour);\n if (rContour) rSumMods += rContour.relX;\n }\n if (rightBottom >= leftBottom) {\n lContour = nextLContour(lContour);\n if (lContour) lSumMods += lContour.relX;\n }\n }\n // Set threads and update extreme nodes. In the first case, the\n // current subtree is taller than the left siblings.\n if (!rContour && lContour) setLThr(w, i, lContour, lSumMods);\n // In the next case, the left siblings are taller than the current subtree\n else if (rContour && !lContour) setRThr(w, i, rContour, rSumMods);\n};\n/* eslint-enable complexity */\n\n// Move subtree by changing relX.\nconst moveSubtree = (subtree, distance) => {\n subtree.relX += distance;\n subtree.lExtRelX += distance;\n subtree.rExtRelX += distance;\n};\n\nconst distributeExtra = (w, curSubtreeI, leftSibI, dist) => {\n const curSubtree = w.children[curSubtreeI];\n const n = curSubtreeI - leftSibI;\n // Are there intermediate children?\n if (n > 1) {\n const delta = dist / n;\n w.children[leftSibI + 1].shift += delta;\n curSubtree.shift -= delta;\n curSubtree.change -= dist - delta;\n }\n};\n\nconst nextLContour = w => {\n return w.hasChildren ? w.firstChild : w.lThr;\n};\n\nconst nextRContour = w => {\n return w.hasChildren ? w.lastChild : w.rThr;\n};\n\nconst setLThr = (w, i, lContour, lSumMods) => {\n const firstChild = w.firstChild;\n const lExt = firstChild.lExt;\n const curSubtree = w.children[i];\n lExt.lThr = lContour;\n // Change relX so that the sum of modifier after following thread is correct.\n const diff = lSumMods - lContour.relX - firstChild.lExtRelX;\n lExt.relX += diff;\n // Change preliminary x coordinate so that the node does not move.\n lExt.prelim -= diff;\n // Update extreme node and its sum of modifiers.\n firstChild.lExt = curSubtree.lExt;\n firstChild.lExtRelX = curSubtree.lExtRelX;\n};\n\n// Mirror image of setLThr.\nconst setRThr = (w, i, rContour, rSumMods) => {\n const curSubtree = w.children[i];\n const rExt = curSubtree.rExt;\n const lSib = w.children[i - 1];\n rExt.rThr = rContour;\n const diff = rSumMods - rContour.relX - curSubtree.rExtRelX;\n rExt.relX += diff;\n rExt.prelim -= diff;\n curSubtree.rExt = lSib.rExt;\n curSubtree.rExtRelX = lSib.rExtRelX;\n};\n\n// Position root between children, taking into account their modifiers\nconst positionRoot = w => {\n if (w.hasChildren) {\n const k0 = w.firstChild;\n const kf = w.lastChild;\n const prelim = (k0.prelim + k0.relX - k0.xSize / 2 +\n kf.relX + kf.prelim + kf.xSize / 2 ) / 2;\n Object.assign(w, {\n prelim,\n lExt: k0.lExt, lExtRelX: k0.lExtRelX,\n rExt: kf.rExt, rExtRelX: kf.rExtRelX,\n });\n }\n};\n\n// Make/maintain a linked list of the indexes of left siblings and their\n// lowest vertical coordinate.\nconst updateLows = (lowY, index, lastLows) => {\n // Remove siblings that are hidden by the new subtree.\n while (lastLows !== null && lowY >= lastLows.lowY)\n lastLows = lastLows.next;\n // Prepend the new subtree.\n return {\n lowY,\n index,\n next: lastLows,\n };\n};\n","export default function(x) {\n return function constant() {\n return x;\n };\n}\n","const pi = Math.PI,\n tau = 2 * pi,\n epsilon = 1e-6,\n tauEpsilon = tau - epsilon;\n\nfunction append(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += arguments[i] + strings[i];\n }\n}\n\nfunction appendRound(digits) {\n let d = Math.floor(digits);\n if (!(d >= 0)) throw new Error(`invalid digits: ${digits}`);\n if (d > 15) return append;\n const k = 10 ** d;\n return function(strings) {\n this._ += strings[0];\n for (let i = 1, n = strings.length; i < n; ++i) {\n this._ += Math.round(arguments[i] * k) / k + strings[i];\n }\n };\n}\n\nexport class Path {\n constructor(digits) {\n this._x0 = this._y0 = // start of current subpath\n this._x1 = this._y1 = null; // end of current subpath\n this._ = \"\";\n this._append = digits == null ? append : appendRound(digits);\n }\n moveTo(x, y) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}`;\n }\n closePath() {\n if (this._x1 !== null) {\n this._x1 = this._x0, this._y1 = this._y0;\n this._append`Z`;\n }\n }\n lineTo(x, y) {\n this._append`L${this._x1 = +x},${this._y1 = +y}`;\n }\n quadraticCurveTo(x1, y1, x, y) {\n this._append`Q${+x1},${+y1},${this._x1 = +x},${this._y1 = +y}`;\n }\n bezierCurveTo(x1, y1, x2, y2, x, y) {\n this._append`C${+x1},${+y1},${+x2},${+y2},${this._x1 = +x},${this._y1 = +y}`;\n }\n arcTo(x1, y1, x2, y2, r) {\n x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let x0 = this._x1,\n y0 = this._y1,\n x21 = x2 - x1,\n y21 = y2 - y1,\n x01 = x0 - x1,\n y01 = y0 - y1,\n l01_2 = x01 * x01 + y01 * y01;\n\n // Is this path empty? Move to (x1,y1).\n if (this._x1 === null) {\n this._append`M${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n else if (!(l01_2 > epsilon));\n\n // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n // Equivalently, is (x1,y1) coincident with (x2,y2)?\n // Or, is the radius zero? Line to (x1,y1).\n else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n this._append`L${this._x1 = x1},${this._y1 = y1}`;\n }\n\n // Otherwise, draw an arc!\n else {\n let x20 = x2 - x0,\n y20 = y2 - y0,\n l21_2 = x21 * x21 + y21 * y21,\n l20_2 = x20 * x20 + y20 * y20,\n l21 = Math.sqrt(l21_2),\n l01 = Math.sqrt(l01_2),\n l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n t01 = l / l01,\n t21 = l / l21;\n\n // If the start tangent is not coincident with (x0,y0), line to.\n if (Math.abs(t01 - 1) > epsilon) {\n this._append`L${x1 + t01 * x01},${y1 + t01 * y01}`;\n }\n\n this._append`A${r},${r},0,0,${+(y01 * x20 > x01 * y20)},${this._x1 = x1 + t21 * x21},${this._y1 = y1 + t21 * y21}`;\n }\n }\n arc(x, y, r, a0, a1, ccw) {\n x = +x, y = +y, r = +r, ccw = !!ccw;\n\n // Is the radius negative? Error.\n if (r < 0) throw new Error(`negative radius: ${r}`);\n\n let dx = r * Math.cos(a0),\n dy = r * Math.sin(a0),\n x0 = x + dx,\n y0 = y + dy,\n cw = 1 ^ ccw,\n da = ccw ? a0 - a1 : a1 - a0;\n\n // Is this path empty? Move to (x0,y0).\n if (this._x1 === null) {\n this._append`M${x0},${y0}`;\n }\n\n // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n this._append`L${x0},${y0}`;\n }\n\n // Is this arc empty? We’re done.\n if (!r) return;\n\n // Does the angle go the wrong way? Flip the direction.\n if (da < 0) da = da % tau + tau;\n\n // Is this a complete circle? Draw two arcs to complete the circle.\n if (da > tauEpsilon) {\n this._append`A${r},${r},0,1,${cw},${x - dx},${y - dy}A${r},${r},0,1,${cw},${this._x1 = x0},${this._y1 = y0}`;\n }\n\n // Is this arc non-empty? Draw an arc!\n else if (da > epsilon) {\n this._append`A${r},${r},0,${+(da >= pi)},${cw},${this._x1 = x + r * Math.cos(a1)},${this._y1 = y + r * Math.sin(a1)}`;\n }\n }\n rect(x, y, w, h) {\n this._append`M${this._x0 = this._x1 = +x},${this._y0 = this._y1 = +y}h${w = +w}v${+h}h${-w}Z`;\n }\n toString() {\n return this._;\n }\n}\n\nexport function path() {\n return new Path;\n}\n\n// Allow instanceof d3.path\npath.prototype = Path.prototype;\n\nexport function pathRound(digits = 3) {\n return new Path(+digits);\n}\n","import {Path} from \"d3-path\";\n\nexport function withPath(shape) {\n let digits = 3;\n\n shape.digits = function(_) {\n if (!arguments.length) return digits;\n if (_ == null) {\n digits = null;\n } else {\n const d = Math.floor(_);\n if (!(d >= 0)) throw new RangeError(`invalid digits: ${_}`);\n digits = d;\n }\n return shape;\n };\n\n return () => new Path(digits);\n}\n","export var slice = Array.prototype.slice;\n\nexport default function(x) {\n return typeof x === \"object\" && \"length\" in x\n ? x // Array, TypedArray, NodeList, array-like\n : Array.from(x); // Map, Set, iterable, string, or anything else\n}\n","export function x(p) {\n return p[0];\n}\n\nexport function y(p) {\n return p[1];\n}\n","import pointRadial from \"../pointRadial.js\";\n\nclass Bump {\n constructor(context, x) {\n this._context = context;\n this._x = x;\n }\n areaStart() {\n this._line = 0;\n }\n areaEnd() {\n this._line = NaN;\n }\n lineStart() {\n this._point = 0;\n }\n lineEnd() {\n if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n this._line = 1 - this._line;\n }\n point(x, y) {\n x = +x, y = +y;\n switch (this._point) {\n case 0: {\n this._point = 1;\n if (this._line) this._context.lineTo(x, y);\n else this._context.moveTo(x, y);\n break;\n }\n case 1: this._point = 2; // falls through\n default: {\n if (this._x) this._context.bezierCurveTo(this._x0 = (this._x0 + x) / 2, this._y0, this._x0, y, x, y);\n else this._context.bezierCurveTo(this._x0, this._y0 = (this._y0 + y) / 2, x, this._y0, x, y);\n break;\n }\n }\n this._x0 = x, this._y0 = y;\n }\n}\n\nclass BumpRadial {\n constructor(context) {\n this._context = context;\n }\n lineStart() {\n this._point = 0;\n }\n lineEnd() {}\n point(x, y) {\n x = +x, y = +y;\n if (this._point === 0) {\n this._point = 1;\n } else {\n const p0 = pointRadial(this._x0, this._y0);\n const p1 = pointRadial(this._x0, this._y0 = (this._y0 + y) / 2);\n const p2 = pointRadial(x, this._y0);\n const p3 = pointRadial(x, y);\n this._context.moveTo(...p0);\n this._context.bezierCurveTo(...p1, ...p2, ...p3);\n }\n this._x0 = x, this._y0 = y;\n }\n}\n\nexport function bumpX(context) {\n return new Bump(context, true);\n}\n\nexport function bumpY(context) {\n return new Bump(context, false);\n}\n\nexport function bumpRadial(context) {\n return new BumpRadial(context);\n}\n","import {slice} from \"./array.js\";\nimport constant from \"./constant.js\";\nimport {bumpX, bumpY, bumpRadial} from \"./curve/bump.js\";\nimport {withPath} from \"./path.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nfunction linkSource(d) {\n return d.source;\n}\n\nfunction linkTarget(d) {\n return d.target;\n}\n\nexport function link(curve) {\n let source = linkSource,\n target = linkTarget,\n x = pointX,\n y = pointY,\n context = null,\n output = null,\n path = withPath(link);\n\n function link() {\n let buffer;\n const argv = slice.call(arguments);\n const s = source.apply(this, argv);\n const t = target.apply(this, argv);\n if (context == null) output = curve(buffer = path());\n output.lineStart();\n argv[0] = s, output.point(+x.apply(this, argv), +y.apply(this, argv));\n argv[0] = t, output.point(+x.apply(this, argv), +y.apply(this, argv));\n output.lineEnd();\n if (buffer) return output = null, buffer + \"\" || null;\n }\n\n link.source = function(_) {\n return arguments.length ? (source = _, link) : source;\n };\n\n link.target = function(_) {\n return arguments.length ? (target = _, link) : target;\n };\n\n link.x = function(_) {\n return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), link) : x;\n };\n\n link.y = function(_) {\n return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), link) : y;\n };\n\n link.context = function(_) {\n return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), link) : context;\n };\n\n return link;\n}\n\nexport function linkHorizontal() {\n return link(bumpX);\n}\n\nexport function linkVertical() {\n return link(bumpY);\n}\n\nexport function linkRadial() {\n const l = link(bumpRadial);\n l.angle = l.x, delete l.x;\n l.radius = l.y, delete l.y;\n return l;\n}\n","import { selection, select } from \"d3-selection\";\nimport { max, min, sum, cumsum } from \"d3-array\";\nimport { tree, stratify } from \"d3-hierarchy\";\nimport { zoom, zoomIdentity } from \"d3-zoom\";\nimport { flextree } from 'd3-flextree';\nimport { linkHorizontal } from 'd3-shape';\n\nconst d3 = {\n selection,\n select,\n max,\n min,\n sum,\n cumsum,\n tree,\n stratify,\n zoom,\n zoomIdentity,\n linkHorizontal,\n flextree\n}\n\nexport class OrgChart {\n constructor() {\n\n // Exposed variables test test\n const attrs = {\n\n /* NOT INTENDED FOR PUBLIC OVERRIDE */\n\n id: `ID${Math.floor(Math.random() * 1000000)}`, // Id for event handlings\n firstDraw: true, // Whether chart is drawn for the first time\n ctx: document.createElement('canvas').getContext('2d'),\n initialExpandLevel: 1,\n nodeDefaultBackground: 'none',\n lastTransform: { x: 0, y: 0, k: 1 }, // Panning and zooming values\n allowedNodesCount: {},\n zoomBehavior: null,\n generateRoot: null,\n\n /* INTENDED FOR PUBLIC OVERRIDE */\n\n svgWidth: 800, // Configure svg width\n svgHeight: window.innerHeight - 100, // Configure svg height\n container: \"body\", // Set parent container, either CSS style selector or DOM element\n data: null, // Set data, it must be an array of objects, where hierarchy is clearly defined via id and parent ID (property names are configurable)\n connections: [], // Sets connection data, array of objects, SAMPLE: [{from:\"145\",to:\"201\",label:\"Conflicts of interest\"}]\n defaultFont: \"Helvetica\", // Set default font\n nodeId: d => d.nodeId || d.id, // Configure accessor for node id, default is either odeId or id\n parentNodeId: d => d.parentNodeId || d.parentId, // Configure accessor for parent node id, default is either parentNodeId or parentId\n rootMargin: 40, // Configure how much root node is offset from top\n nodeWidth: d3Node => 250, // Configure each node width, use with caution, it is better to have the same value set for all nodes\n nodeHeight: d => 150, // Configure each node height, use with caution, it is better to have the same value set for all nodes\n neighbourMargin: (n1, n2) => 80, // Configure margin between two nodes, use with caution, it is better to have the same value set for all nodes\n siblingsMargin: d3Node => 20, // Configure margin between two siblings, use with caution, it is better to have the same value set for all nodes\n childrenMargin: d => 60, // Configure margin between parent and children, use with caution, it is better to have the same value set for all nodes\n compactMarginPair: d => 100, // Configure margin between two nodes in compact mode, use with caution, it is better to have the same value set for all nodes\n compactMarginBetween: (d3Node => 20), // Configure margin between two nodes in compact mode, use with caution, it is better to have the same value set for all nodes\n nodeButtonWidth: d => 40, // Configure expand & collapse button width\n nodeButtonHeight: d => 40, // Configure expand & collapse button height\n nodeButtonX: d => -20, // Configure expand & collapse button x position\n nodeButtonY: d => -20, // Configure expand & collapse button y position\n linkYOffset: 30, // When correcting links which is not working for safari\n pagingStep: d => 5, // Configure how many nodes to show when making new nodes appear\n minPagingVisibleNodes: d => 2000, // Configure minimum number of visible nodes , after which paging button appears\n scaleExtent: [0.001, 20], // Configure zoom scale extent , if you don't want any kind of zooming, set it to [1,1]\n duration: 400, // Configure duration of transitions\n imageName: 'Chart', // Configure exported PNG and SVG image name\n setActiveNodeCentered: true, // Configure if active node should be centered when expanded and collapsed\n layout: \"top\",// Configure layout direction , possible values are \"top\", \"left\", \"right\", \"bottom\"\n compact: true, // Configure if compact mode is enabled , when enabled, nodes are shown in compact positions, instead of horizontal spread\n createZoom: d => d3.zoom(),\n onZoomStart: e => { }, // Callback for zoom & panning start\n onZoom: e => { }, // Callback for zoom & panning \n onZoomEnd: e => { }, // Callback for zoom & panning end\n onNodeClick: (d) => d, // Callback for node click\n onExpandOrCollapse: (d) => d, // Callback for node expand or collapse\n\n /*\n * Node HTML content generation , remember that you can access some helper methods:\n\n * node=> node.data - to access node's original data\n * node=> node.leaves() - to access node's leaves\n * node=> node.descendants() - to access node's descendants\n * node=> node.children - to access node's children\n * node=> node.parent - to access node's parent\n * node=> node.depth - to access node's depth\n * node=> node.hierarchyHeight - to access node's hierarchy height ( Height, which d3 assigns to hierarchy nodes)\n * node=> node.height - to access node's height\n * node=> node.width - to access node's width\n * \n * You can also access additional properties to style your node:\n * \n * d=>d.data._centeredWithDescendants - when node is centered with descendants\n * d=>d.data._directSubordinatesPaging - subordinates count in paging mode\n * d=>d.data._directSubordinates - subordinates count\n * d=>d.data._totalSubordinates - total subordinates count\n * d=>d._highlighted - when node is highlighted\n * d=>d._upToTheRootHighlighted - when node is highlighted up to the root\n * d=>d._expanded - when node is expanded\n * d=>d.data._centered - when node is centered\n */\n nodeContent: d => `<div style=\"padding:5px;font-size:10px;\">Sample Node(id=${d.id}), override using <br/> \n <code>chart.nodeContent({data}=>{ <br/>\n &nbsp;&nbsp;&nbsp;&nbsp;return '' // Custom HTML <br/>\n })</code>\n <br/> \n Or check different <a href=\"https://github.com/bumbeishvili/org-chart#jump-to-examples\" target=\"_blank\">layout examples</a>\n </div>`,\n\n /* Node expand & collapse button content and styling. You can access same helper methods as above */\n buttonContent: ({ node, state }) => {\n const icons = {\n \"left\": d => d ?\n `<div style=\"display:flex;\"><span style=\"align-items:center;display:flex;\"><svg width=\"8\" height=\"8\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M14.283 3.50094L6.51 11.4749C6.37348 11.615 6.29707 11.8029 6.29707 11.9984C6.29707 12.194 6.37348 12.3819 6.51 12.5219L14.283 20.4989C14.3466 20.5643 14.4226 20.6162 14.5066 20.6516C14.5906 20.6871 14.6808 20.7053 14.772 20.7053C14.8632 20.7053 14.9534 20.6871 15.0374 20.6516C15.1214 20.6162 15.1974 20.5643 15.261 20.4989C15.3918 20.365 15.4651 20.1852 15.4651 19.9979C15.4651 19.8107 15.3918 19.6309 15.261 19.4969L7.9515 11.9984L15.261 4.50144C15.3914 4.36756 15.4643 4.18807 15.4643 4.00119C15.4643 3.81431 15.3914 3.63482 15.261 3.50094C15.1974 3.43563 15.1214 3.38371 15.0374 3.34827C14.9534 3.31282 14.8632 3.29456 14.772 3.29456C14.6808 3.29456 14.5906 3.31282 14.5066 3.34827C14.4226 3.38371 14.3466 3.43563 14.283 3.50094V3.50094Z\" fill=\"#716E7B\" stroke=\"#716E7B\"/>\n </svg></span><span style=\"color:#716E7B\">${node.data._directSubordinatesPaging} </span></div>` :\n `<div style=\"display:flex;\"><span style=\"align-items:center;display:flex;\"><svg width=\"8\" height=\"8\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7.989 3.49944C7.85817 3.63339 7.78492 3.8132 7.78492 4.00044C7.78492 4.18768 7.85817 4.36749 7.989 4.50144L15.2985 11.9999L7.989 19.4969C7.85817 19.6309 7.78492 19.8107 7.78492 19.9979C7.78492 20.1852 7.85817 20.365 7.989 20.4989C8.05259 20.5643 8.12863 20.6162 8.21261 20.6516C8.2966 20.6871 8.38684 20.7053 8.478 20.7053C8.56916 20.7053 8.6594 20.6871 8.74338 20.6516C8.82737 20.6162 8.90341 20.5643 8.967 20.4989L16.74 12.5234C16.8765 12.3834 16.9529 12.1955 16.9529 11.9999C16.9529 11.8044 16.8765 11.6165 16.74 11.4764L8.967 3.50094C8.90341 3.43563 8.82737 3.38371 8.74338 3.34827C8.6594 3.31282 8.56916 3.29456 8.478 3.29456C8.38684 3.29456 8.2966 3.31282 8.21261 3.34827C8.12863 3.38371 8.05259 3.43563 7.989 3.50094V3.49944Z\" fill=\"#716E7B\" stroke=\"#716E7B\"/>\n </svg></span><span style=\"color:#716E7B\">${node.data._directSubordinatesPaging} </span></div>`\n ,\n \"bottom\": d => d ? `<div style=\"display:flex;\"><span style=\"align-items:center;display:flex;\"><svg width=\"8\" height=\"8\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M19.497 7.98903L12 15.297L4.503 7.98903C4.36905 7.85819 4.18924 7.78495 4.002 7.78495C3.81476 7.78495 3.63495 7.85819 3.501 7.98903C3.43614 8.05257 3.38462 8.12842 3.34944 8.21213C3.31427 8.29584 3.29615 8.38573 3.29615 8.47653C3.29615 8.56733 3.31427 8.65721 3.34944 8.74092C3.38462 8.82463 3.43614 8.90048 3.501 8.96403L11.4765 16.74C11.6166 16.8765 11.8044 16.953 12 16.953C12.1956 16.953 12.3834 16.8765 12.5235 16.74L20.499 8.96553C20.5643 8.90193 20.6162 8.8259 20.6517 8.74191C20.6871 8.65792 20.7054 8.56769 20.7054 8.47653C20.7054 8.38537 20.6871 8.29513 20.6517 8.21114C20.6162 8.12715 20.5643 8.05112 20.499 7.98753C20.3651 7.85669 20.1852 7.78345 19.998 7.78345C19.8108 7.78345 19.6309 7.85669 19.497 7.98753V7.98903Z\" fill=\"#716E7B\" stroke=\"#716E7B\"/>\n </svg></span><span style=\"margin-left:1px;color:#716E7B\" >${node.data._directSubordinatesPaging} </span></div>\n ` : `<div style=\"display:flex;\"><span style=\"align-items:center;display:flex;\"><svg width=\"8\" height=\"8\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M11.457 8.07005L3.49199 16.4296C3.35903 16.569 3.28485 16.7543 3.28485 16.9471C3.28485 17.1398 3.35903 17.3251 3.49199 17.4646L3.50099 17.4736C3.56545 17.5414 3.64304 17.5954 3.72904 17.6324C3.81504 17.6693 3.90765 17.6883 4.00124 17.6883C4.09483 17.6883 4.18745 17.6693 4.27344 17.6324C4.35944 17.5954 4.43703 17.5414 4.50149 17.4736L12.0015 9.60155L19.4985 17.4736C19.563 17.5414 19.6405 17.5954 19.7265 17.6324C19.8125 17.6693 19.9052 17.6883 19.9987 17.6883C20.0923 17.6883 20.1849 17.6693 20.2709 17.6324C20.3569 17.5954 20.4345 17.5414 20.499 17.4736L20.508 17.4646C20.641 17.3251 20.7151 17.1398 20.7151 16.9471C20.7151 16.7543 20.641 16.569 20.508 16.4296L12.543 8.07005C12.4729 7.99653 12.3887 7.93801 12.2954 7.89801C12.202 7.85802 12.1015 7.8374 12 7.8374C11.8984 7.8374 11.798 7.85802 11.7046 7.89801C11.6113 7.93801 11.527 7.99653 11.457 8.07005Z\" fill=\"#716E7B\" stroke=\"#716E7B\"/>\n </svg></span><span style=\"margin-left:1px;color:#716E7B\" >${node.data._directSubordinatesPaging} </span></div>\n `,\n \"right\": d => d ? `<div style=\"display:flex;\"><span style=\"align-items:center;display:flex;\"><svg width=\"8\" height=\"8\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M7.989 3.49944C7.85817 3.63339 7.78492 3.8132 7.78492 4.00044C7.78492 4.18768 7.85817 4.36749 7.989 4.50144L15.2985 11.9999L7.989 19.4969C7.85817 19.6309 7.78492 19.8107 7.78492 19.9979C7.78492 20.1852 7.85817 20.365 7.989 20.4989C8.05259 20.5643 8.12863 20.6162 8.21261 20.6516C8.2966 20.6871 8.38684 20.7053 8.478 20.7053C8.56916 20.7053 8.6594 20.6871 8.74338 20.6516C8.82737 20.6162 8.90341 20.5643 8.967 20.4989L16.74 12.5234C16.8765 12.3834 16.9529 12.1955 16.9529 11.9999C16.9529 11.8044 16.8765 11.6165 16.74 11.4764L8.967 3.50094C8.90341 3.43563 8.82737 3.38371 8.74338 3.34827C8.6594 3.31282 8.56916 3.29456 8.478 3.29456C8.38684 3.29456 8.2966 3.31282 8.21261 3.34827C8.12863 3.38371 8.05259 3.43563 7.989 3.50094V3.49944Z\" fill=\"#716E7B\" stroke=\"#716E7B\"/>\n </svg></span><span style=\"color:#716E7B\">${node.data._directSubordinatesPaging} </span></div>` :\n `<div style=\"display:flex;\"><span style=\"align-items:center;display:flex;\"><svg width=\"8\" height=\"8\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M14.283 3.50094L6.51 11.4749C6.37348 11.615 6.29707 11.8029 6.29707 11.9984C6.29707 12.194 6.37348 12.3819 6.51 12.5219L14.283 20.4989C14.3466 20.5643 14.4226 20.6162 14.5066 20.6516C14.5906 20.6871 14.6808 20.7053 14.772 20.7053C14.8632 20.7053 14.9534 20.6871 15.0374 20.6516C15.1214 20.6162 15.1974 20.5643 15.261 20.4989C15.3918 20.365 15.4651 20.1852 15.4651 19.9979C15.4651 19.8107 15.3918 19.6309 15.261 19.4969L7.9515 11.9984L15.261 4.50144C15.3914 4.36756 15.4643 4.18807 15.4643 4.00119C15.4643 3.81431 15.3914 3.63482 15.261 3.50094C15.1974 3.43563 15.1214 3.38371 15.0374 3.34827C14.9534 3.31282 14.8632 3.29456 14.772 3.29456C14.6808 3.29456 14.5906 3.31282 14.5066 3.34827C14.4226 3.38371 14.3466 3.43563 14.283 3.50094V3.50094Z\" fill=\"#716E7B\" stroke=\"#716E7B\"/>\n </svg></span><span style=\"color:#716E7B\">${node.data._directSubordinatesPaging} </span></div>`,\n \"top\": d => d ? `<div style=\"display:flex;\"><span style=\"align-items:center;display:flex;\"><svg width=\"8\" height=\"8\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M11.457 8.07005L3.49199 16.4296C3.35903 16.569 3.28485 16.7543 3.28485 16.9471C3.28485 17.1398 3.35903 17.3251 3.49199 17.4646L3.50099 17.4736C3.56545 17.5414 3.64304 17.5954 3.72904 17.6324C3.81504 17.6693 3.90765 17.6883 4.00124 17.6883C4.09483 17.6883 4.18745 17.6693 4.27344 17.6324C4.35944 17.5954 4.43703 17.5414 4.50149 17.4736L12.0015 9.60155L19.4985 17.4736C19.563 17.5414 19.6405 17.5954 19.7265 17.6324C19.8125 17.6693 19.9052 17.6883 19.9987 17.6883C20.0923 17.6883 20.1849 17.6693 20.2709 17.6324C20.3569 17.5954 20.4345 17.5414 20.499 17.4736L20.508 17.4646C20.641 17.3251 20.7151 17.1398 20.7151 16.9471C20.7151 16.7543 20.641 16.569 20.508 16.4296L12.543 8.07005C12.4729 7.99653 12.3887 7.93801 12.2954 7.89801C12.202 7.85802 12.1015 7.8374 12 7.8374C11.8984 7.8374 11.798 7.85802 11.7046 7.89801C11.6113 7.93801 11.527 7.99653 11.457 8.07005Z\" fill=\"#716E7B\" stroke=\"#716E7B\"/>\n </svg></span><span style=\"margin-left:1px;color:#716E7B\">${node.data._directSubordinatesPaging} </span></div>\n ` : `<div style=\"display:flex;\"><span style=\"align-items:center;display:flex;\"><svg width=\"8\" height=\"8\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M19.497 7.98903L12 15.297L4.503 7.98903C4.36905 7.85819 4.18924 7.78495 4.002 7.78495C3.81476 7.78495 3.63495 7.85819 3.501 7.98903C3.43614 8.05257 3.38462 8.12842 3.34944 8.21213C3.31427 8.29584 3.29615 8.38573 3.29615 8.47653C3.29615 8.56733 3.31427 8.65721 3.34944 8.74092C3.38462 8.82463 3.43614 8.90048 3.501 8.96403L11.4765 16.74C11.6166 16.8765 11.8044 16.953 12 16.953C12.1956 16.953 12.3834 16.8765 12.5235 16.74L20.499 8.96553C20.5643 8.90193 20.6162 8.8259 20.6517 8.74191C20.6871 8.65792 20.7054 8.56769 20.7054 8.47653C20.7054 8.38537 20.6871 8.29513 20.6517 8.21114C20.6162 8.12715 20.5643 8.05112 20.499 7.98753C20.3651 7.85669 20.1852 7.78345 19.998 7.78345C19.8108 7.78345 19.6309 7.85669 19.497 7.98753V7.98903Z\" fill=\"#716E7B\" stroke=\"#716E7B\"/>\n </svg></span><span style=\"margin-left:1px;color:#716E7B\">${node.data._directSubordinatesPaging} </span></div>\n `,\n }\n return `<div style=\"border:1px solid #E4E2E9;border-radius:3px;padding:3px;font-size:9px;margin:auto auto;background-color:white\"> ${icons[state.layout](node.children)} </div>`\n },\n /* Node paging button content and styling. You can access same helper methods as above. */\n pagingButton: (d, i, arr, state) => {\n const step = state.pagingStep(d.parent);\n const currentIndex = d.parent.data._pagingStep;\n const diff = d.parent.data._directSubordinatesPaging - currentIndex;\n const min = Math.min(diff, step);\n return `\n <div style=\"margin-top:90px;\">\n <div style=\"display:flex;width:170px;border-radius:20px;padding:5px 15px; padding-bottom:4px;;background-color:#E5E9F2\">\n <div><svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M5.59 7.41L10.18 12L5.59 16.59L7 18L13 12L7 6L5.59 7.41ZM16 6H18V18H16V6Z\" fill=\"#716E7B\" stroke=\"#716E7B\"/>\n </svg>\n </div><div style=\"line-height:2\"> Show next ${min} nodes </div></div>\n </div>\n `\n },\n /* You can access and modify actual node DOM element in runtime using this method. */\n nodeUpdate: function (d, i, arr) {\n d3.select(this)\n .select('.node-rect')\n .attr(\"stroke\", d => d.data._highlighted || d.data._upToTheRootHighlighted ? '#E27396' : 'none')\n .attr(\"stroke-width\", d.data._highlighted || d.data._upToTheRootHighlighted ? 10 : 1)\n },\n nodeEnter: (d) => d, // Custom handling of node update\n nodeExit: (d) => d, // Custom handling of exit node\n /* You can access and modify actual link DOM element in runtime using this method. */\n linkUpdate: function (d, i, arr) {\n d3.select(this)\n .attr(\"stroke\", d => d.data._upToTheRootHighlighted ? '#E27396' : '#E4E2E9')\n .attr(\"stroke-width\", d => d.data._upToTheRootHighlighted ? 5 : 1)\n\n if (d.data._upToTheRootHighlighted) {\n d3.select(this).raise()\n }\n },\n /* Horizontal diagonal generation algorithm - https://observablehq.com/@bumbeishvili/curved-edges-compact-horizontal */\n hdiagonal: function (s, t, m) {\n // Define source and target x,y coordinates\n const x = s.x;\n const y = s.y;\n const ex = t.x;\n const ey = t.y;\n\n let mx = m && m.x != null ? m.x : x; // This is a changed line\n let my = m && m.y != null ? m.y : y; // This also is a changed line\n\n // Values in case of top reversed and left reversed diagonals\n let xrvs = ex - x < 0 ? -1 : 1;\n let yrvs = ey - y < 0 ? -1 : 1;\n\n // Define preferred curve radius\n let rdef = 35;\n\n // Reduce curve radius, if source-target x space is smaller\n let r = Math.abs(ex - x) / 2 < rdef ? Math.abs(ex - x) / 2 : rdef;\n\n // Further reduce curve radius, is y space is more small\n r = Math.abs(ey - y) / 2 < r ? Math.abs(ey - y) / 2 : r;\n\n // Defin width and height of link, excluding radius\n let h = Math.abs(ey - y) / 2 - r;\n let w = Math.abs(ex - x) / 2 - r;\n\n // Build and return custom arc command\n return `\n M ${mx} ${my}\n L ${mx} ${y}\n L ${x} ${y}\n L ${x + w * xrvs} ${y}\n C ${x + w * xrvs + r * xrvs} ${y} \n ${x + w * xrvs + r * xrvs} ${y} \n ${x + w * xrvs + r * xrvs} ${y + r * yrvs}\n L ${x + w * xrvs + r * xrvs} ${ey - r * yrvs} \n C ${x + w * xrvs + r * xrvs} ${ey} \n ${x + w * xrvs + r * xrvs} ${ey} \n ${ex - w * xrvs} ${ey}\n L ${ex} ${ey}\n `;\n },\n /* Vertical diagonal generation algorithm - https://observablehq.com/@bumbeishvili/curved-edges-compacty-vertical */\n diagonal: function (s, t, m, offsets = { sy: 0, }) {\n const x = s.x;\n let y = s.y;\n\n const ex = t.x;\n const ey = t.y;\n\n let mx = m && m.x != null ? m.x : x; // This is a changed line\n let my = m && m.y != null ? m.y : y; // This also is a changed line\n\n let xrvs = ex - x < 0 ? -1 : 1;\n let yrvs = ey - y < 0 ? -1 : 1;\n\n y += offsets.sy;\n\n\n let rdef = 35;\n let r = Math.abs(ex - x) / 2 < rdef ? Math.abs(ex - x) / 2 : rdef;\n\n r = Math.abs(ey - y) / 2 < r ? Math.abs(ey - y) / 2 : r;\n\n let h = Math.abs(ey - y) / 2 - r;\n let w = Math.abs(ex - x) - r * 2;\n //w=0;\n const path = `\n M ${mx} ${my}\n L ${x} ${my}\n L ${x} ${y}\n L ${x} ${y + h * yrvs}\n C ${x} ${y + h * yrvs + r * yrvs} ${x} ${y + h * yrvs + r * yrvs\n } ${x + r * xrvs} ${y + h * yrvs + r * yrvs}\n L ${x + w * xrvs + r * xrvs} ${y + h * yrvs + r * yrvs}\n C ${ex} ${y + h * yrvs + r * yrvs} ${ex} ${y + h * yrvs + r * yrvs\n } ${ex} ${ey - h * yrvs}\n L ${ex} ${ey}\n `;\n return path;\n },\n // Defining arrows with markers for connections\n defs: function (state, visibleConnections) {\n return `<defs>\n ${visibleConnections.map(conn => {\n const labelWidth = this.getTextWidth(conn.label, { ctx: state.ctx, fontSize: 2, defaultFont: state.defaultFont });\n return `\n <marker id=\"${conn.from + \"_\" + conn.to}\" refX=\"${conn._source.x < conn._target.x ? -7 : 7}\" refY=\"5\" markerWidth=\"500\" markerHeight=\"500\" orient=\"${conn._source.x < conn._target.x ? \"auto\" : \"auto-start-reverse\"}\" >\n <rect rx=0.5 width=${conn.label ? labelWidth + 3 : 0} height=3 y=1 fill=\"#E27396\"></rect>\n <text font-size=\"2px\" x=1 fill=\"white\" y=3>${conn.label || ''}</text>\n </marker>\n\n <marker id=\"arrow-${conn.from + \"_\" + conn.to}\" markerWidth=\"500\" markerHeight=\"500\" refY=\"2\" refX=\"1\" orient=\"${conn._source.x < conn._target.x ? \"auto\" : \"auto-start-reverse\"}\" >\n <path transform=\"translate(0)\" d='M0,0 V4 L2,2 Z' fill='#E27396' />\n </marker>\n `}).join(\"\")}\n </defs>\n `},\n /* You can update connections with custom styling using this function */\n connectionsUpdate: function (d, i, arr) {\n d3.select(this)\n .attr(\"stroke\", d => '#E27396')\n .attr('stroke-linecap', 'round')\n .attr(\"stroke-width\", d => '5')\n .attr('pointer-events', 'none')\n .attr(\"marker-start\", d => `url(#${d.from + \"_\" + d.to})`)\n .attr(\"marker-end\", d => `url(#arrow-${d.from + \"_\" + d.to})`)\n },\n // Link generator for connections\n linkGroupArc: d3.linkHorizontal().x(d => d.x).y(d => d.y),\n\n /*\n * You can customize/offset positions for each node and link by overriding these functions\n * For example, suppose you want to move link y position 30 px bellow in top layout. You can do it like this:\n * ```javascript\n * const layout = chart.layoutBindings();\n * layout.top.linkY = node => node.y + 30;\n * chart.layoutBindings(layout);\n * ```\n */\n layoutBindings: {\n \"left\": {\n \"nodeLeftX\": node => 0,\n \"nodeRightX\": node => node.width,\n \"nodeTopY\": node => - node.height / 2,\n \"nodeBottomY\": node => node.height / 2,\n \"nodeJoinX\": node => node.x + node.width,\n \"nodeJoinY\": node => node.y - node.height / 2,\n \"linkJoinX\": node => node.x + node.width,\n \"linkJoinY\": node => node.y,\n \"linkX\": node => node.x,\n \"linkY\": node => node.y,\n \"linkCompactXStart\": node => node.x + node.width / 2,//node.x + (node.compactEven ? node.width / 2 : -node.width / 2),\n \"linkCompactYStart\": node => node.y + (node.compactEven ? node.height / 2 : -node.height / 2),\n \"compactLinkMidX\": (node, state) => node.firstCompactNode.x,// node.firstCompactNode.x + node.firstCompactNode.flexCompactDim[0] / 4 + state.compactMarginPair(node) / 4,\n \"compactLinkMidY\": (node, state) => node.firstCompactNode.y + node.firstCompactNode.flexCompactDim[0] / 4 + state.compactMarginPair(node) / 4,\n \"linkParentX\": node => node.parent.x + node.parent.width,\n \"linkParentY\": node => node.parent.y,\n \"buttonX\": node => node.width,\n \"buttonY\": node => node.height / 2,\n \"centerTransform\": ({ root, rootMargin, centerY, scale, centerX }) => `translate(${rootMargin},${centerY}) scale(${scale})`,\n \"compactDimension\": {\n sizeColumn: node => node.height,\n sizeRow: node => node.width,\n reverse: arr => arr.slice().reverse()\n },\n \"nodeFlexSize\": ({ height, width, siblingsMargin, childrenMargin, state, node }) => {\n if (state.compact && node.flexCompactDim) {\n const result = [node.flexCompactDim[0], node.flexCompactDim[1]]\n return result;\n };\n return [height + siblingsMargin, width + childrenMargin]\n },\n \"zoomTransform\": ({ centerY, scale }) => `translate(${0},${centerY}) scale(${scale})`,\n \"diagonal\": this.hdiagonal.bind(this),\n \"swap\": d => { const x = d.x; d.x = d.y; d.y = x; },\n \"nodeUpdateTransform\": ({ x, y, width, height }) => `translate(${x},${y - height / 2})`,\n },\n \"top\": {\n \"nodeLeftX\": node => -node.width / 2,\n \"nodeRightX\": node => node.width / 2,\n \"nodeTopY\": node => 0,\n \"nodeBottomY\": node => node.height,\n \"nodeJoinX\": node => node.x - node.width / 2,\n \"nodeJoinY\": node => node.y + node.height,\n \"linkJoinX\": node => node.x,\n \"linkJoinY\": node => node.y + node.height,\n \"linkCompactXStart\": node => node.x + (node.compactEven ? node.width / 2 : -node.width / 2),\n \"linkCompactYStart\": node => node.y + node.height / 2,\n \"compactLinkMidX\": (node, state) => node.firstCompactNode.x + node.firstCompactNode.flexCompactDim[0] / 4 + state.compactMarginPair(node) / 4,\n \"compactLinkMidY\": node => node.firstCompactNode.y,\n \"compactDimension\": {\n sizeColumn: node => node.width,\n sizeRow: node => node.height,\n reverse: arr => arr,\n },\n \"linkX\": node => node.x,\n \"linkY\": node => node.y,\n \"linkParentX\": node => node.parent.x,\n \"linkParentY\": node => node.parent.y + node.parent.height,\n \"buttonX\": node => node.width / 2,\n \"buttonY\": node => node.height,\n \"centerTransform\": ({ root, rootMargin, centerY, scale, centerX }) => `translate(${centerX},${rootMargin}) scale(${scale})`,\n \"nodeFlexSize\": ({ height, width, siblingsMargin, childrenMargin, state, node, compactViewIndex }) => {\n if (state.compact && node.flexCompactDim) {\n const result = [node.flexCompactDim[0], node.flexCompactDim[1]]\n return result;\n };\n return [width + siblingsMargin, height + childrenMargin];\n },\n \"zoomTransform\": ({ centerX, scale }) => `translate(${centerX},0}) scale(${scale})`,\n \"diagonal\": this.diagonal.bind(this),\n \"swap\": d => { },\n \"nodeUpdateTransform\": ({ x, y, width, height }) => `translate(${x - width / 2},${y})`,\n\n },\n \"bottom\": {\n \"nodeLeftX\": node => -node.width / 2,\n \"nodeRightX\": node => node.width / 2,\n \"nodeTopY\": node => -node.height,\n \"nodeBottomY\": node => 0,\n \"nodeJoinX\": node => node.x - node.width / 2,\n \"nodeJoinY\": node => node.y - node.height - node.height,\n \"linkJoinX\": node => node.x,\n \"linkJoinY\": node => node.y - node.height,\n \"linkCompactXStart\": node => node.x + (node.compactEven ? node.width / 2 : -node.width / 2),\n \"linkCompactYStart\": node => node.y - node.height / 2,\n \"compactLinkMidX\": (node, state) => node.firstCompactNode.x + node.firstCompactNode.flexCompactDim[0] / 4 + state.compactMarginPair(node) / 4,\n \"compactLinkMidY\": node => node.firstCompactNode.y,\n \"linkX\": node => node.x,\n \"linkY\": node => node.y,\n \"compactDimension\": {\n sizeColumn: node => node.width,\n sizeRow: node => node.height,\n reverse: arr => arr,\n },\n \"linkParentX\": node => node.parent.x,\n \"linkParentY\": node => node.parent.y - node.parent.height,\n \"buttonX\": node => node.width / 2,\n \"buttonY\": node => 0,\n \"centerTransform\": ({ root, rootMargin, centerY, scale, centerX, chartHeight }) => `translate(${centerX},${chartHeight - rootMargin}) scale(${scale})`,\n \"nodeFlexSize\": ({ height, width, siblingsMargin, childrenMargin, state, node }) => {\n if (state.compact && node.flexCompactDim) {\n const result = [node.flexCompactDim[0], node.flexCompactDim[1]]\n return result;\n };\n return [width + siblingsMargin, height + childrenMargin]\n },\n \"zoomTransform\": ({ centerX, scale }) => `translate(${centerX},0}) scale(${scale})`,\n \"diagonal\": this.diagonal.bind(this),\n \"swap\": d => { d.y = -d.y; },\n \"nodeUpdateTransform\": ({ x, y, width, height }) => `translate(${x - width / 2},${y - height})`,\n },\n \"right\": {\n \"nodeLeftX\": node => -node.width,\n \"nodeRightX\": node => 0,\n \"nodeTopY\": node => - node.height / 2,\n \"nodeBottomY\": node => node.height / 2,\n \"nodeJoinX\": node => node.x - node.width - node.width,\n \"nodeJoinY\": node => node.y - node.height / 2,\n \"linkJoinX\": node => node.x - node.width,\n \"linkJoinY\": node => node.y,\n \"linkX\": node => node.x,\n \"linkY\": node => node.y,\n \"linkParentX\": node => node.parent.x - node.parent.width,\n \"linkParentY\": node => node.parent.y,\n \"buttonX\": node => 0,\n \"buttonY\": node => node.height / 2,\n \"linkCompactXStart\": node => node.x - node.width / 2,//node.x + (node.compactEven ? node.width / 2 : -node.width / 2),\n \"linkCompactYStart\": node => node.y + (node.compactEven ? node.height / 2 : -node.height / 2),\n \"compactLinkMidX\": (node, state) => node.firstCompactNode.x,// node.firstCompactNode.x + node.firstCompactNode.flexCompactDim[0] / 4 + state.compactMarginPair(node) / 4,\n \"compactLinkMidY\": (node, state) => node.firstCompactNode.y + node.firstCompactNode.flexCompactDim[0] / 4 + state.compactMarginPair(node) / 4,\n \"centerTransform\": ({ root, rootMargin, centerY, scale, centerX, chartWidth }) => `translate(${chartWidth - rootMargin},${centerY}) scale(${scale})`,\n \"nodeFlexSize\": ({ height, width, siblingsMargin, childrenMargin, state, node }) => {\n if (state.compact && node.flexCompactDim) {\n const result = [node.flexCompactDim[0], node.flexCompactDim[1]]\n return result;\n };\n return [height + siblingsMargin, width + childrenMargin]\n },\n \"compactDimension\": {\n sizeColumn: node => node.height,\n sizeRow: node => node.width,\n reverse: arr => arr.slice().reverse()\n },\n \"zoomTransform\": ({ centerY, scale }) => `translate(${0},${centerY}) scale(${scale})`,\n \"diagonal\": this.hdiagonal.bind(this),\n \"swap\": d => { const x = d.x; d.x = -d.y; d.y = x; },\n \"nodeUpdateTransform\": ({ x, y, width, height }) => `translate(${x - width},${y - height / 2})`,\n },\n }\n\n };\n\n this.getChartState = () => attrs;\n\n // Dynamically set getter and setter functions for Chart class\n Object.keys(attrs).forEach((key) => {\n //@ts-ignore\n this[key] = function (_) {\n if (!arguments.length) {\n return attrs[key];\n } else {\n attrs[key] = _;\n }\n return this;\n };\n });\n\n this.initializeEnterExitUpdatePattern();\n }\n\n initializeEnterExitUpdatePattern() {\n d3.selection.prototype.patternify = function (params) {\n var container = this;\n var selector = params.selector;\n var elementTag = params.tag;\n var data = params.data || [selector];\n\n // Pattern in action\n var selection = container.selectAll(\".\" + selector).data(data, (d, i) => {\n if (typeof d === \"object\") {\n if (d.id) { return d.id; }\n }\n return i;\n });\n selection.exit().remove();\n selection = selection.enter().append(elementTag).merge(selection);\n selection.attr(\"class\", selector);\n return selection;\n };\n }\n\n // This method retrieves passed node's children IDs (including node)\n getNodeChildren({ data, children, _children }, nodeStore) {\n // Store current node ID\n nodeStore.push(data);\n\n // Loop over children and recursively store descendants id (expanded nodes)\n if (children) {\n children.forEach((d) => {\n this.getNodeChildren(d, nodeStore);\n });\n }\n\n // Loop over _children and recursively store descendants id (collapsed nodes)\n if (_children) {\n _children.forEach((d) => {\n this.getNodeChildren(d, nodeStore);\n });\n }\n\n // Return result\n return nodeStore;\n }\n\n // This method can be invoked via chart.setZoomFactor API, it zooms to particulat scale\n initialZoom(zoomLevel) {\n const attrs = this.getChartState();\n attrs.lastTransform.k = zoomLevel;\n return this;\n }\n\n render() {\n //InnerFunctions which will update visuals\n const attrs = this.getChartState();\n if (!attrs.data || attrs.data.length == 0) {\n console.log('ORG CHART - Data is empty');\n if (attrs.container) {\n select(attrs.container).select('.nodes-wrapper').remove();\n select(attrs.container).select('.links-wrapper').remove();\n select(attrs.container).select('.connections-wrapper').remove();\n }\n return this;\n }\n\n //Drawing containers\n const container = d3.select(attrs.container);\n const containerRect = container.node().getBoundingClientRect();\n if (containerRect.width > 0) attrs.svgWidth = containerRect.width;\n\n //Calculated properties\n const calc = {\n id: `ID${Math.floor(Math.random() * 1000000)}`, // id for event handlings,\n chartWidth: attrs.svgWidth,\n chartHeight: attrs.svgHeight\n };\n attrs.calc = calc;\n\n // Calculate max node depth (it's needed for layout heights calculation)\n calc.centerX = calc.chartWidth / 2;\n calc.centerY = calc.chartHeight / 2;\n\n // ******************* BEHAVIORS **********************\n if (attrs.firstDraw) {\n const behaviors = {\n zoom: null\n };\n\n // Get zooming function\n behaviors.zoom = attrs.createZoom()\n .clickDistance(10)\n .on('start', (event, d) => attrs.onZoomStart(event))\n .on('end', (event, d) => attrs.onZoomEnd(event))\n .on(\"zoom\", (event, d) => {\n attrs.onZoom(event);\n this.zoomed(event, d);\n })\n .scaleExtent(attrs.scaleExtent)\n attrs.zoomBehavior = behaviors.zoom;\n }\n\n //****************** ROOT node work ************************\n\n attrs.flexTreeLayout = flextree({\n nodeSize: node => {\n const width = attrs.nodeWidth(node);;\n const height = attrs.nodeHeight(node);\n const siblingsMargin = attrs.siblingsMargin(node)\n const childrenMargin = attrs.childrenMargin(node);\n return attrs.layoutBindings[attrs.layout].nodeFlexSize({\n state: attrs,\n node: node,\n width,\n height,\n siblingsMargin,\n childrenMargin\n });\n }\n })\n .spacing((nodeA, nodeB) => nodeA.parent == nodeB.parent ? 0 : attrs.neighbourMargin(nodeA, nodeB));\n\n this.setLayouts({ expandNodesFirst: false });\n\n // ************************* DRAWING **************************\n //Add svg\n const svg = container\n .patternify({\n tag: \"svg\",\n selector: \"svg-chart-container\"\n })\n .attr(\"width\", attrs.svgWidth)\n .attr(\"height\", attrs.svgHeight)\n .attr(\"font-family\", attrs.defaultFont)\n\n if (attrs.firstDraw) {\n svg.call(attrs.zoomBehavior)\n .on(\"dblclick.zoom\", null)\n .attr(\"cursor\", \"move\")\n }\n\n attrs.svg = svg;\n\n //Add container g element\n const chart = svg\n .patternify({\n tag: \"g\",\n selector: \"chart\"\n })\n\n // Add one more container g element, for better positioning controls\n attrs.centerG = chart\n .patternify({\n tag: \"g\",\n selector: \"center-group\"\n })\n\n attrs.linksWrapper = attrs.centerG.patternify({\n tag: \"g\",\n selector: \"links-wrapper\"\n })\n\n attrs.nodesWrapper = attrs.centerG.patternify({\n tag: \"g\",\n selector: \"nodes-wrapper\"\n })\n\n attrs.connectionsWrapper = attrs.centerG.patternify({\n tag: \"g\",\n selector: \"connections-wrapper\"\n })\n\n attrs.defsWrapper = svg.patternify({\n tag: \"g\",\n selector: \"defs-wrapper\"\n })\n\n if (attrs.firstDraw) {\n attrs.centerG.attr(\"transform\", () => {\n return attrs.layoutBindings[attrs.layout].centerTransform({\n centerX: calc.centerX,\n centerY: calc.centerY,\n scale: attrs.lastTransform.k,\n rootMargin: attrs.rootMargin,\n root: attrs.root,\n chartHeight: calc.chartHeight,\n chartWidth: calc.chartWidth\n })\n });\n }\n\n attrs.chart = chart;\n\n // Display tree contenrs\n this.update(attrs.root);\n\n\n //######################################### UTIL FUNCS ##################################\n // This function restyles foreign object elements ()\n\n d3.select(window).on(`resize.${attrs.id}`, () => {\n const containerRect = d3.select(attrs.container).node().getBoundingClientRect();\n attrs.svg.attr('width', containerRect.width)\n });\n\n if (attrs.firstDraw) {\n attrs.firstDraw = false;\n }\n\n return this;\n }\n\n // This function can be invoked via chart.addNode API, and it adds node in tree at runtime\n addNode(obj) {\n const attrs = this.getChartState();\n if (obj && (attrs.parentNodeId(obj) == null || attrs.parentNodeId(obj) == attrs.nodeId(obj)) && attrs.data.length == 0) {\n attrs.data.push(obj);\n this.render()\n return this;\n }\n const root = attrs.generateRoot(attrs.data)\n const descendants = root.descendants();\n const nodeFound = descendants.filter(({ data }) => attrs.nodeId(data).toString() === attrs.nodeId(obj).toString())[0];\n const parentFound = descendants.filter(({ data }) => attrs.nodeId(data).toString() === attrs.parentNodeId(obj).toString())[0];\n if (nodeFound) {\n console.log(`ORG CHART - ADD - Node with id \"${attrs.nodeId(obj)}\" already exists in tree`)\n return this;\n }\n\n if (obj._centered && !obj._expanded) obj._expanded = true;\n attrs.data.push(obj);\n\n // Update state of nodes and redraw graph\n this.updateNodesState();\n\n return this;\n }\n\n // This function can be invoked via chart.removeNode API, and it removes node from tree at runtime\n removeNode(nodeId) {\n const attrs = this.getChartState();\n const root = attrs.generateRoot(attrs.data)\n const descendants = root.descendants();\n const node = descendants.filter(({ data }) => attrs.nodeId(data) == nodeId)[0];\n\n if (!node) {\n console.log(`ORG CHART - REMOVE - Node with id \"${nodeId}\" not found in the tree`);\n return this;\n }\n\n // Get all node descendants\n const nodeDescendants = node.descendants()\n\n // Mark all node children and node itself for removal\n nodeDescendants\n .forEach(d => d.data._filteredOut = true)\n\n // Filter out retrieved nodes and reassign data\n attrs.data = attrs.data.filter(d => !d._filteredOut);\n\n if (attrs.data.length == 0) {\n this.render();\n } else {\n const updateNodesState = this.updateNodesState.bind(this);\n // Update state of nodes and redraw graph\n updateNodesState();\n }\n return this;\n }\n\n groupBy(array, accessor, aggegator) {\n const grouped = {}\n array.forEach(item => {\n const key = accessor(item)\n if (!grouped[key]) {\n grouped[key] = []\n }\n grouped[key].push(item)\n })\n\n Object.keys(grouped).forEach(key => {\n grouped[key] = aggegator(grouped[key])\n })\n return Object.entries(grouped);\n }\n calculateCompactFlexDimensions(root) {\n const attrs = this.getChartState();\n root.eachBefore(node => {\n node.firstCompact = null;\n node.compactEven = null;\n node.flexCompactDim = null;\n node.firstCompactNode = null;\n })\n root.eachBefore(node => {\n if (node.children && node.children.length > 1) {\n const compactChildren = node.children\n .filter(d => !d.children)\n\n if (compactChildren.length < 2) return;\n compactChildren.forEach((child, i) => {\n if (!i) child.firstCompact = true;\n if (i % 2) child.compactEven = false;\n else child.compactEven = true;\n child.row = Math.floor(i / 2);\n })\n const evenMaxColumnDimension = d3.max(compactChildren.filter(d => d.compactEven), attrs.layoutBindings[attrs.layout].compactDimension.sizeColumn);\n const oddMaxColumnDimension = d3.max(compactChildren.filter(d => !d.compactEven), attrs.layoutBindings[attrs.layout].compactDimension.sizeColumn);\n const columnSize = Math.max(evenMaxColumnDimension, oddMaxColumnDimension) * 2;\n const rowsMapNew = this.groupBy(compactChildren, d => d.row, reducedGroup => d3.max(reducedGroup, d => attrs.layoutBindings[attrs.layout].compactDimension.sizeRow(d) + attrs.compactMarginBetween(d)));\n const rowSize = d3.sum(rowsMapNew.map(v => v[1]))\n compactChildren.forEach(node => {\n node.firstCompactNode = compactChildren[0];\n if (node.firstCompact) {\n node.flexCompactDim = [\n columnSize + attrs.compactMarginPair(node),\n rowSize - attrs.compactMarginBetween(node)\n ];\n } else {\n node.flexCompactDim = [0, 0];\n }\n })\n node.flexCompactDim = null;\n }\n })\n }\n\n calculateCompactFlexPositions(root) {\n const attrs = this.getChartState();\n root.eachBefore(node => {\n if (node.children) {\n const compactChildren = node.children.filter(d => d.flexCompactDim);\n const fch = compactChildren[0];\n if (!fch) return;\n compactChildren.forEach((child, i, arr) => {\n if (i == 0) fch.x -= fch.flexCompactDim[0] / 2;\n if (i & i % 2 - 1) child.x = fch.x + fch.flexCompactDim[0] * 0.25 - attrs.compactMarginPair(child) / 4;\n else if (i) child.x = fch.x + fch.flexCompactDim[0] * 0.75 + attrs.compactMarginPair(child) / 4;\n })\n const centerX = fch.x + fch.flexCompactDim[0] * 0.5;\n fch.x = fch.x + fch.flexCompactDim[0] * 0.25 - attrs.compactMarginPair(fch) / 4;\n const offsetX = node.x - centerX;\n if (Math.abs(offsetX) < 10) {\n compactChildren.forEach(d => d.x += offsetX);\n }\n\n const rowsMapNew = this.groupBy(compactChildren, d => d.row, reducedGroup => d3.max(reducedGroup, d => attrs.layoutBindings[attrs.layout].compactDimension.sizeRow(d)));\n const cumSum = d3.cumsum(rowsMapNew.map(d => d[1] + attrs.compactMarginBetween(d)));\n compactChildren\n .forEach((node, i) => {\n if (node.row) {\n node.y = fch.y + cumSum[node.row - 1]\n } else {\n node.y = fch.y;\n }\n })\n\n }\n })\n }\n\n // This function basically redraws visible graph, based on nodes state\n update({ x0, y0, x = 0, y = 0, width, height }) {\n const attrs = this.getChartState();\n const calc = attrs.calc;\n\n // Paging\n if (attrs.compact) {\n this.calculateCompactFlexDimensions(attrs.root);\n }\n\n // Assigns the x and y position for the nodes\n const treeData = attrs.flexTreeLayout(attrs.root);\n\n // Reassigns the x and y position for the based on the compact layout\n if (attrs.compact) {\n this.calculateCompactFlexPositions(attrs.root);\n }\n\n const nodes = treeData.descendants();\n\n // console.table(nodes.map(d => ({ x: d.x, y: d.y, width: d.width, height: d.height, flexCompactDim: d.flexCompactDim + \"\" })))\n\n // Get all links\n const links = treeData.descendants().slice(1);\n nodes.forEach(attrs.layoutBindings[attrs.layout].swap)\n\n // Connections\n const connections = attrs.connections;\n const allNodesMap = {};\n attrs.allNodes.forEach(d => allNodesMap[attrs.nodeId(d.data)] = d);\n\n const visibleNodesMap = {}\n nodes.forEach(d => visibleNodesMap[attrs.nodeId(d.data)] = d);\n\n connections.forEach(connection => {\n const source = allNodesMap[connection.from];\n const target = allNodesMap[connection.to];\n connection._source = source;\n connection._target = target;\n })\n const visibleConnections = connections.filter(d => visibleNodesMap[d.from] && visibleNodesMap[d.to]);\n const defsString = attrs.defs.bind(this)(attrs, visibleConnections);\n const existingString = attrs.defsWrapper.html();\n if (defsString !== existingString) {\n attrs.defsWrapper.html(defsString)\n }\n\n // -------------------------- LINKS ----------------------\n // Get links selection\n const linkSelection = attrs.linksWrapper\n .selectAll(\"path.link\")\n .data(links, (d) => attrs.nodeId(d.data));\n\n // Enter any new links at the parent's previous position.\n const linkEnter = linkSelection\n .enter()\n .insert(\"path\", \"g\")\n .attr(\"class\", \"link\")\n .attr(\"d\", (d) => {\n const xo = attrs.layoutBindings[attrs.layout].linkJoinX({ x: x0, y: y0, width, height });\n const yo = attrs.layoutBindings[attrs.layout].linkJoinY({ x: x0, y: y0, width, height });\n const o = { x: xo, y: yo };\n return attrs.layoutBindings[attrs.layout].diagonal(o, o, o);\n });\n\n // Get links update selection\n const linkUpdate = linkEnter.merge(linkSelection);\n\n // Styling links\n linkUpdate\n .attr(\"fill\", \"none\")\n\n\n if (this.isEdge()) {\n linkUpdate\n .style('display', d => {\n const display = d.data._pagingButton ? 'none' : 'auto'\n return display;\n })\n } else {\n linkUpdate\n .attr('display', d => {\n const display = d.data._pagingButton ? 'none' : 'auto'\n return display;\n })\n }\n\n // Allow external modifications\n linkUpdate.each(attrs.linkUpdate);\n\n // Transition back to the parent element position\n linkUpdate\n .transition()\n .duration(attrs.duration)\n .attr(\"d\", (d) => {\n const n = attrs.compact && d.flexCompactDim ?\n {\n x: attrs.layoutBindings[attrs.layout].compactLinkMidX(d, attrs),\n y: attrs.layoutBindings[attrs.layout].compactLinkMidY(d, attrs)\n } :\n {\n x: attrs.layoutBindings[attrs.layout].linkX(d),\n y: attrs.layoutBindings[attrs.layout].linkY(d)\n };\n\n const p = {\n x: attrs.layoutBindings[attrs.layout].linkParentX(d),\n y: attrs.layoutBindings[attrs.layout].linkParentY(d),\n };\n\n const m = attrs.compact && d.flexCompactDim ? {\n x: attrs.layoutBindings[attrs.layout].linkCompactXStart(d),\n y: attrs.layoutBindings[attrs.layout].linkCompactYStart(d),\n } : n;\n return attrs.layoutBindings[attrs.layout].diagonal(n, p, m, { sy: attrs.linkYOffset });\n });\n\n // Remove any links which is exiting after animation\n const linkExit = linkSelection\n .exit()\n .transition()\n .duration(attrs.duration)\n .attr(\"d\", (d) => {\n const xo = attrs.layoutBindings[attrs.layout].linkJoinX({ x, y, width, height });\n const yo = attrs.layoutBindings[attrs.layout].linkJoinY({ x, y, width, height });\n const o = { x: xo, y: yo };\n return attrs.layoutBindings[attrs.layout].diagonal(o, o, null, { sy: attrs.linkYOffset });\n })\n .remove();\n\n\n // -------------------------- CONNECTIONS ----------------------\n\n const connectionsSel = attrs.connectionsWrapper\n .selectAll(\"path.connection\")\n .data(visibleConnections)\n\n // Enter any new connections at the parent's previous position.\n const connEnter = connectionsSel\n .enter()\n .insert(\"path\", \"g\")\n .attr(\"class\", \"connection\")\n .attr(\"d\", (d) => {\n const xo = attrs.layoutBindings[attrs.layout].linkJoinX({ x: x0, y: y0, width, height });\n const yo = attrs.layoutBindings[attrs.layout].linkJoinY({ x: x0, y: y0, width, height });\n const o = { x: xo, y: yo };\n return attrs.layoutBindings[attrs.layout].diagonal(o, o, null, { sy: attrs.linkYOffset });\n });\n\n\n // Get connections update selection\n const connUpdate = connEnter.merge(connectionsSel);\n\n // Styling connections\n connUpdate.attr(\"fill\", \"none\")\n\n // Transition back to the parent element position\n connUpdate\n .transition()\n .duration(attrs.duration)\n .attr('d', (d) => {\n const xs = attrs.layoutBindings[attrs.layout].linkX({ x: d._source.x, y: d._source.y, width: d._source.width, height: d._source.height });\n const ys = attrs.layoutBindings[attrs.layout].linkY({ x: d._source.x, y: d._source.y, width: d._source.width, height: d._source.height });\n const xt = attrs.layoutBindings[attrs.layout].linkJoinX({ x: d._target.x, y: d._target.y, width: d._target.width, height: d._target.height });\n const yt = attrs.layoutBindings[attrs.layout].linkJoinY({ x: d._target.x, y: d._target.y, width: d._target.width, height: d._target.height });\n return attrs.linkGroupArc({ source: { x: xs, y: ys }, target: { x: xt, y: yt } })\n })\n\n // Allow external modifications\n connUpdate.each(attrs.connectionsUpdate);\n\n // Remove any links which is exiting after animation\n const connExit = connectionsSel\n .exit()\n .transition()\n .duration(attrs.duration)\n .attr('opacity', 0)\n .remove();\n\n // -------------------------- NODES ----------------------\n // Get nodes selection\n const nodesSelection = attrs.nodesWrapper\n .selectAll(\"g.node\")\n .data(nodes, ({ data }) => attrs.nodeId(data));\n\n // Enter any new nodes at the parent's previous position.\n const nodeEnter = nodesSelection\n .enter()\n .append(\"g\")\n .attr(\"class\", \"node\")\n .attr(\"transform\", (d) => {\n if (d == attrs.root) return `translate(${x0},${y0})`\n const xj = attrs.layoutBindings[attrs.layout].nodeJoinX({ x: x0, y: y0, width, height });\n const yj = attrs.layoutBindings[attrs.layout].nodeJoinY({ x: x0, y: y0, width, height });\n return `translate(${xj},${yj})`\n })\n .attr(\"cursor\", \"pointer\")\n .on(\"click.node\", (event, node) => {\n const { data } = node;\n if ([...event.srcElement.classList].includes(\"node-button-foreign-object\")) {\n return;\n }\n if ([...event.srcElement.classList].includes(\"paging-button-wrapper\")) {\n this.loadPagingNodes(node);\n return;\n }\n if (!data._pagingButton) {\n attrs.onNodeClick(node);\n return;\n }\n console.log('event fired, no handlers')\n })\n // Event handler to the expand button\n .on(\"keydown.node\", (event, node) => {\n const { data } = node;\n if (event.key === 'Enter' || event.key === ' ' || event.key === 'Spacebar') {\n if ([...event.srcElement.classList].includes(\"node-button-foreign-object\")) {\n return;\n }\n if ([...event.srcElement.classList].includes(\"paging-button-wrapper\")) {\n this.loadPagingNodes(node);\n return;\n }\n if (event.key === 'Enter' || event.key === ' ' || event.key === 'Spacebar') {\n this.onButtonClick(event, node)\n }\n }\n });\n nodeEnter.each(attrs.nodeEnter)\n\n // Add background rectangle for the nodes\n nodeEnter\n .patternify({\n tag: \"rect\",\n selector: \"node-rect\",\n data: (d) => [d]\n })\n\n // Node update styles\n const nodeUpdate = nodeEnter\n .merge(nodesSelection)\n .style(\"font\", \"12px sans-serif\");\n\n // Add foreignObject element inside rectangle\n const fo = nodeUpdate.patternify({\n tag: \"foreignObject\",\n selector: \"node-foreign-object\",\n data: (d) => [d]\n })\n .style('overflow', 'visible')\n\n // Add foreign object\n fo.patternify({\n tag: \"xhtml:div\",\n selector: \"node-foreign-object-div\",\n data: (d) => [d]\n })\n\n this.restyleForeignObjectElements();\n\n // Add Node button circle's group (expand-collapse button)\n const nodeButtonGroups = nodeEnter\n .patternify({\n tag: \"g\",\n selector: \"node-button-g\",\n data: (d) => [d]\n })\n .on(\"click\", (event, d) => this.onButtonClick(event, d))\n .on(\"keydown\", (event, d) => {\n if (event.key === 'Enter' || event.key === ' ' || event.key === 'Spacebar') {\n this.onButtonClick(event, d)\n }\n });\n\n nodeButtonGroups.patternify({\n tag: 'rect',\n selector: 'node-button-rect',\n data: (d) => [d]\n })\n .attr('opacity', 0)\n .attr('pointer-events', 'all')\n .attr('width', d => attrs.nodeButtonWidth(d))\n .attr('height', d => attrs.nodeButtonHeight(d))\n .attr('x', d => attrs.nodeButtonX(d))\n .attr('y', d => attrs.nodeButtonY(d))\n\n // Add expand collapse button content\n const nodeFo = nodeButtonGroups\n .patternify({\n tag: \"foreignObject\",\n selector: \"node-button-foreign-object\",\n data: (d) => [d]\n })\n .attr('width', d => attrs.nodeButtonWidth(d))\n .attr('height', d => attrs.nodeButtonHeight(d))\n .attr('x', d => attrs.nodeButtonX(d))\n .attr('y', d => attrs.nodeButtonY(d))\n .style('overflow', 'visible')\n .patternify({\n tag: \"xhtml:div\",\n selector: \"node-button-div\",\n data: (d) => [d]\n })\n .style('pointer-events', 'none')\n .style('display', 'flex')\n .style('width', '100%')\n .style('height', '100%')\n\n\n\n // Transition to the proper position for the node\n nodeUpdate\n .transition()\n .attr(\"opacity\", 0)\n .duration(attrs.duration)\n .attr(\"transform\", ({ x, y, width, height }) => {\n return attrs.layoutBindings[attrs.layout].nodeUpdateTransform({ x, y, width, height });\n\n })\n .attr(\"opacity\", 1);\n\n // Style node rectangles\n nodeUpdate\n .select(\".node-rect\")\n .attr(\"width\", ({ width }) => width)\n .attr(\"height\", ({ height }) => height)\n .attr(\"x\", ({ width }) => 0)\n .attr(\"y\", ({ height }) => 0)\n .attr(\"cursor\", \"pointer\")\n .attr('rx', 3)\n .attr(\"fill\", attrs.nodeDefaultBackground)\n\n\n nodeUpdate.select(\".node-button-g\").attr(\"transform\", ({ data, width, height }) => {\n const x = attrs.layoutBindings[attrs.layout].buttonX({ width, height });\n const y = attrs.layoutBindings[attrs.layout].buttonY({ width, height });\n return `translate(${x},${y})`\n })\n .attr(\"display\", ({ data }) => {\n return data._directSubordinates > 0 ? null : 'none';\n })\n .attr(\"opacity\", ({ data, children, _children }) => {\n if (data._pagingButton) {\n return 0;\n }\n if (children || _children) {\n return 1;\n }\n return 0;\n });\n\n // Restyle node button circle\n nodeUpdate\n .select(\".node-button-foreign-object .node-button-div\")\n .html((node) => {\n return attrs.buttonContent({ node, state: attrs })\n })\n\n // Restyle button texts\n nodeUpdate\n .select(\".node-button-text\")\n .attr(\"text-anchor\", \"middle\")\n .attr(\"alignment-baseline\", \"middle\")\n .attr(\"font-size\", ({ children }) => {\n if (children) return 40;\n return 26;\n })\n .text(({ children }) => {\n if (children) return \"-\";\n return \"+\";\n })\n .attr(\"y\", this.isEdge() ? 10 : 0);\n\n nodeUpdate.each(attrs.nodeUpdate)\n\n // Remove any exiting nodes after transition\n const nodeExitTransition = nodesSelection\n .exit()\n nodeExitTransition.each(attrs.nodeExit)\n\n const maxDepthNode = nodeExitTransition.data().reduce((a, b) => a.depth < b.depth ? a : b, { depth: Infinity });\n\n nodeExitTransition.attr(\"opacity\", 1)\n .transition()\n .duration(attrs.duration)\n .attr(\"transform\", (d) => {\n\n let { x, y, width, height } = maxDepthNode.parent || {};\n const ex = attrs.layoutBindings[attrs.layout].nodeJoinX({ x, y, width, height });\n const ey = attrs.layoutBindings[attrs.layout].nodeJoinY({ x, y, width, height });\n return `translate(${ex},${ey})`\n })\n .on(\"end\", function () {\n d3.select(this).remove();\n })\n .attr(\"opacity\", 0);\n\n // Store the old positions for transition.\n nodes.forEach((d) => {\n d.x0 = d.x;\n d.y0 = d.y;\n });\n\n // CHECK FOR CENTERING\n const centeredNode = attrs.allNodes.filter(d => d.data._centered)[0]\n if (centeredNode) {\n let centeredNodes = [centeredNode]\n if (centeredNode.data._centeredWithDescendants) {\n if (attrs.compact) {\n centeredNodes = centeredNode.descendants().filter((d, i) => i < 7);\n } else {\n centeredNodes = centeredNode.descendants().filter((d, i, arr) => {\n const h = Math.round(arr.length / 2);\n const spread = 2;\n if (arr.length % 2) {\n return i > h - spread && i < h + spread - 1;\n }\n\n return i > h - spread && i < h + spread;\n });\n }\n\n }\n centeredNode.data._centeredWithDescendants = null;\n centeredNode.data._centered = null;\n this.fit({\n animate: true,\n scale: false,\n nodes: centeredNodes\n })\n }\n\n }\n\n // This function detects whether current browser is edge\n isEdge() {\n return window.navigator.userAgent.includes(\"Edge\");\n }\n\n // Generate horizontal diagonal - play with it here - https://observablehq.com/@bumbeishvili/curved-edges-horizontal-d3-v3-v4-v5-v6\n hdiagonal(s, t, m, offsets) {\n const state = this.getChartState();\n return state.hdiagonal(s, t, m, offsets);\n }\n\n // Generate custom diagonal - play with it here - https://observablehq.com/@bumbeishvili/curved-edges\n diagonal(s, t, m, offsets) {\n const state = this.getChartState();\n return state.diagonal(s, t, m, offsets);\n }\n\n restyleForeignObjectElements() {\n const attrs = this.getChartState();\n\n attrs.svg\n .selectAll(\".node-foreign-object\")\n .attr(\"width\", ({ width }) => width)\n .attr(\"height\", ({ height }) => height)\n .attr(\"x\", ({ width }) => 0)\n .attr(\"y\", ({ height }) => 0);\n attrs.svg\n .selectAll(\".node-foreign-object-div\")\n .style(\"width\", ({ width }) => `${width}px`)\n .style(\"height\", ({ height }) => `${height}px`)\n .html(function (d, i, arr) {\n if (d.data._pagingButton) {\n return `<div class=\"paging-button-wrapper\"><div style=\"pointer-events:none\">${attrs.pagingButton(d, i, arr, attrs)}</div></div>`;\n }\n return attrs.nodeContent.bind(this)(d, i, arr, attrs)\n })\n }\n\n // Toggle children on click.\n onButtonClick(event, d) {\n const attrs = this.getChartState();\n if (d.data._pagingButton) {\n return;\n }\n if (attrs.setActiveNodeCentered) {\n d.data._centered = true;\n d.data._centeredWithDescendants = true;\n }\n\n // If childrens are expanded\n if (d.children) {\n //Collapse them\n d._children = d.children;\n d.children = null;\n\n // Set descendants expanded property to false\n this.setExpansionFlagToChildren(d, false);\n } else {\n // Expand children\n d.children = d._children;\n d._children = null;\n\n // Set each children as expanded\n if (d.children) {\n d.children.forEach(({ data }) => (data._expanded = true));\n }\n }\n\n // Redraw Graph\n this.update(d);\n event.stopPropagation();\n\n // Trigger callback\n attrs.onExpandOrCollapse(d);\n\n }\n\n // This function changes `expanded` property to descendants\n setExpansionFlagToChildren({ data, children, _children }, flag) {\n // Set flag to the current property\n data._expanded = flag;\n\n // Loop over and recursively update expanded children's descendants\n if (children) {\n children.forEach((d) => {\n this.setExpansionFlagToChildren(d, flag);\n });\n }\n\n // Loop over and recursively update collapsed children's descendants\n if (_children) {\n _children.forEach((d) => {\n this.setExpansionFlagToChildren(d, flag);\n });\n }\n }\n\n\n // Method which only expands nodes, which have property set \"expanded=true\"\n expandSomeNodes(d) {\n // If node has expanded property set\n if (d.data._expanded) {\n // Retrieve node's parent\n let parent = d.parent;\n\n // While we can go up\n while (parent && parent._children) {\n // Expand all current parent's children\n parent.children = parent._children;\n parent._children = null;\n // Replace current parent holding object\n parent = parent.parent;\n }\n }\n\n // Recursively do the same for collapsed nodes\n if (d._children) {\n d._children.forEach((ch) => this.expandSomeNodes(ch));\n }\n\n // Recursively do the same for expanded nodes\n if (d.children) {\n d.children.forEach((ch) => this.expandSomeNodes(ch));\n }\n }\n\n // This function updates nodes state and redraws graph, usually after data change\n updateNodesState() {\n const attrs = this.getChartState();\n\n\n this.setLayouts({ expandNodesFirst: true });\n\n // Redraw Graphs\n this.update(attrs.root);\n }\n\n setLayouts({ expandNodesFirst = true }) {\n const attrs = this.getChartState();\n // Store new root by converting flat data to hierarchy\n\n attrs.generateRoot = d3\n .stratify()\n .id((d) => attrs.nodeId(d))\n .parentId(d => attrs.parentNodeId(d))\n attrs.root = attrs.generateRoot(attrs.data);\n\n const descendantsBefore = attrs.root.descendants();\n if (attrs.initialExpandLevel > 1 && descendantsBefore.length > 0) {\n descendantsBefore.forEach((d) => {\n if (d.depth <= attrs.initialExpandLevel) {\n d.data._expanded = true;\n }\n })\n attrs.initialExpandLevel = 1;\n }\n\n\n const hiddenNodesMap = {};\n attrs.root.descendants()\n .filter(node => node.children)\n .filter(node => !node.data._pagingStep)\n .forEach(node => {\n node.data._pagingStep = attrs.minPagingVisibleNodes(node);\n })\n\n\n\n attrs.root.eachBefore((node, i) => {\n node.data._directSubordinatesPaging = node.children ? node.children.length : 0;\n if (node.children) {\n node.children.forEach((child, j) => {\n child.data._pagingButton = false;\n if (j > node.data._pagingStep) {\n hiddenNodesMap[child.id] = true;\n }\n if (j === node.data._pagingStep && (node.children.length - 1) > node.data._pagingStep) {\n child.data._pagingButton = true;\n }\n if (hiddenNodesMap[child.parent.id]) {\n hiddenNodesMap[child.id] = true;\n }\n if (child.data._expanded || child.data._centered || child.data._highlighted || child.data._upToTheRootHighlighted) {\n let localNode = child;\n while (localNode && (hiddenNodesMap[localNode.id] || localNode.data._pagingButton)) {\n hiddenNodesMap[localNode.id] = false;\n if (localNode.data._pagingButton) {\n localNode.data._pagingButton = false;\n localNode.parent.children.forEach(ch => {\n ch.data._expanded = true;\n hiddenNodesMap[ch.id] = false;\n })\n }\n localNode = localNode.parent;\n }\n }\n })\n }\n })\n\n\n attrs.root = d3\n .stratify()\n .id((d) => attrs.nodeId(d))\n .parentId(d => attrs.parentNodeId(d))(attrs.data.filter(d => hiddenNodesMap[d.id] !== true));\n\n attrs.root.each((node, i, arr) => {\n let _hierarchyHeight = node._hierarchyHeight || node.height\n let width = attrs.nodeWidth(node);\n let height = attrs.nodeHeight(node);\n Object.assign(node, { width, height, _hierarchyHeight })\n })\n\n // Store positions, where children appear during their enter animation\n attrs.root.x0 = 0;\n attrs.root.y0 = 0;\n attrs.allNodes = attrs.root.descendants();\n\n // Store direct and total descendants count\n attrs.allNodes.forEach((d) => {\n Object.assign(d.data, {\n _directSubordinates: d.children ? d.children.length : 0,\n _totalSubordinates: d.descendants().length - 1\n });\n });\n\n if (attrs.root.children) {\n if (expandNodesFirst) {\n // Expand all nodes first\n attrs.root.children.forEach(this.expand);\n }\n // Then collapse them all\n attrs.root.children.forEach((d) => this.collapse(d));\n\n // Collapse root if level is 0\n if (attrs.initialExpandLevel == 0) {\n attrs.root._children = attrs.root.children;\n attrs.root.children = null;\n }\n\n // Then only expand nodes, which have expanded property set to true\n [attrs.root].forEach((ch) => this.expandSomeNodes(ch));\n }\n }\n\n // Function which collapses passed node and it's descendants\n collapse(d) {\n if (d.children) {\n d._children = d.children;\n d._children.forEach((ch) => this.collapse(ch));\n d.children = null;\n }\n }\n\n // Function which expands passed node and it's descendants\n expand(d) {\n if (d._children) {\n d.children = d._children;\n d.children.forEach((ch) => this.expand(ch));\n d._children = null;\n }\n }\n\n // Zoom handler function\n zoomed(event, d) {\n const attrs = this.getChartState();\n const chart = attrs.chart;\n\n // Get d3 event's transform object\n const transform = event.transform;\n\n // Store it\n attrs.lastTransform = transform;\n\n // Reposition and rescale chart accordingly\n chart.attr(\"transform\", transform);\n\n // Apply new styles to the foreign object element\n if (this.isEdge()) {\n this.restyleForeignObjectElements();\n }\n }\n\n zoomTreeBounds({ x0, x1, y0, y1, params = { animate: true, scale: true, onCompleted: () => { } } }) {\n const { centerG, svgWidth: w, svgHeight: h, svg, zoomBehavior, duration, lastTransform } = this.getChartState()\n let scaleVal = Math.min(8, 0.9 / Math.max((x1 - x0) / w, (y1 - y0) / h));\n let identity = d3.zoomIdentity.translate(w / 2, h / 2)\n identity = identity.scale(params.scale ? scaleVal : lastTransform.k)\n\n identity = identity.translate(-(x0 + x1) / 2, -(y0 + y1) / 2);\n // Transition zoom wrapper component into specified bounds\n svg.transition().duration(params.animate ? duration : 0).call(zoomBehavior.transform, identity);\n centerG.transition().duration(params.animate ? duration : 0).attr('transform', 'translate(0,0)')\n .on('end', function () {\n if (params.onCompleted) {\n params.onCompleted()\n }\n })\n }\n\n fit({ animate = true, nodes, scale = true, onCompleted = () => { } } = {}) {\n const attrs = this.getChartState();\n const { root } = attrs;\n let descendants = nodes ? nodes : root.descendants();\n const minX = d3.min(descendants, d => d.x + attrs.layoutBindings[attrs.layout].nodeLeftX(d))\n const maxX = d3.max(descendants, d => d.x + attrs.layoutBindings[attrs.layout].nodeRightX(d))\n const minY = d3.min(descendants, d => d.y + attrs.layoutBindings[attrs.layout].nodeTopY(d))\n const maxY = d3.max(descendants, d => d.y + attrs.layoutBindings[attrs.layout].nodeBottomY(d))\n\n this.zoomTreeBounds({\n params: { animate: animate, scale, onCompleted },\n x0: minX - 50,\n x1: maxX + 50,\n y0: minY - 50,\n y1: maxY + 50,\n\n });\n return this;\n }\n\n // Load Paging Nodes\n loadPagingNodes(node) {\n const attrs = this.getChartState();\n node.data._pagingButton = false;\n const current = node.parent.data._pagingStep;\n const step = attrs.pagingStep(node.parent)\n const newPagingIndex = current + step;\n node.parent.data._pagingStep = newPagingIndex;\n this.updateNodesState();\n }\n\n // This function can be invoked via chart.setExpanded API, it expands or collapses particular node\n setExpanded(id, expandedFlag = true) {\n\n const attrs = this.getChartState();\n // Retrieve node by node Id\n const node = attrs.allNodes.filter(({ data }) => attrs.nodeId(data) == id)[0];\n\n if (!node) {\n console.log(`ORG CHART - ${expandedFlag ? \"EXPAND\" : \"COLLAPSE\"} - Node with id (${id}) not found in the tree`)\n return this;\n }\n node.data._expanded = expandedFlag;\n if (expandedFlag == false) {\n const parent = node.parent || { descendants: () => [] };\n const descendants = parent.descendants().filter(d => d != parent);\n descendants.forEach(d => d.data._expanded = false)\n }\n\n\n return this;\n }\n\n setCentered(nodeId) {\n const attrs = this.getChartState();\n // this.setExpanded(nodeId)\n const root = attrs.generateRoot(attrs.data)\n const descendants = root.descendants();\n const node = descendants.filter(({ data }) => attrs.nodeId(data).toString() == nodeId.toString())[0];\n if (!node) {\n console.log(`ORG CHART - CENTER - Node with id (${nodeId}) not found in the tree`)\n return this;\n }\n const ancestors = node.ancestors();\n ancestors.forEach(d => d.data._expanded = true)\n node.data._centered = true;\n node.data._expanded = true;\n return this;\n }\n\n setHighlighted(nodeId) {\n const attrs = this.getChartState();\n const root = attrs.generateRoot(attrs.data)\n const descendants = root.descendants();\n const node = descendants.filter(d => attrs.nodeId(d.data).toString() === nodeId.toString())[0];\n if (!node) {\n console.log(`ORG CHART - HIGHLIGHT - Node with id (${nodeId}) not found in the tree`);\n return this\n }\n const ancestors = node.ancestors();\n ancestors.forEach(d => d.data._expanded = true)\n node.data._highlighted = true;\n node.data._expanded = true;\n node.data._centered = true;\n return this;\n }\n\n setUpToTheRootHighlighted(nodeId) {\n const attrs = this.getChartState();\n const root = attrs.generateRoot(attrs.data)\n const descendants = root.descendants();\n const node = descendants.filter(d => attrs.nodeId(d.data).toString() === nodeId.toString())[0];\n if (!node) {\n console.log(`ORG CHART - HIGHLIGHTROOT - Node with id (${nodeId}) not found in the tree`)\n return this;\n }\n const ancestors = node.ancestors();\n ancestors.forEach(d => d.data._expanded = true)\n node.data._upToTheRootHighlighted = true;\n node.data._expanded = true;\n node.ancestors().forEach(d => d.data._upToTheRootHighlighted = true)\n return this;\n }\n\n clearHighlighting() {\n const attrs = this.getChartState();\n attrs.allNodes.forEach(d => {\n d.data._highlighted = false;\n d.data._upToTheRootHighlighted = false;\n })\n this.update(attrs.root);\n return this;\n }\n\n // It can take selector which would go fullscreen\n fullscreen(elem) {\n const attrs = this.getChartState();\n const el = d3.select(elem || attrs.container).node();\n\n d3.select(document).on('fullscreenchange.' + attrs.id, function (d) {\n const fsElement = document.fullscreenElement || document.mozFullscreenElement || document.webkitFullscreenElement;\n if (fsElement == el) {\n setTimeout(d => {\n attrs.svg.attr('height', window.innerHeight - 40);\n }, 500)\n } else {\n attrs.svg.attr('height', attrs.svgHeight)\n }\n })\n\n if (el.requestFullscreen) {\n el.requestFullscreen();\n } else if (el.mozRequestFullScreen) {\n el.mozRequestFullScreen();\n } else if (el.webkitRequestFullscreen) {\n el.webkitRequestFullscreen();\n } else if (el.msRequestFullscreen) {\n el.msRequestFullscreen();\n }\n }\n\n // Zoom in exposed method\n zoomIn() {\n const { svg, zoomBehavior } = this.getChartState();\n svg.transition().call(zoomBehavior.scaleBy, 1.3);\n }\n\n // Zoom out exposed method\n zoomOut() {\n const { svg, zoomBehavior } = this.getChartState();\n svg.transition().call(zoomBehavior.scaleBy, 0.78);\n }\n\n toDataURL(url, callback) {\n var xhr = new XMLHttpRequest();\n xhr.onload = function () {\n var reader = new FileReader();\n reader.onloadend = function () {\n callback(reader.result);\n }\n reader.readAsDataURL(xhr.response);\n };\n xhr.open('GET', url);\n xhr.responseType = 'blob';\n xhr.send();\n }\n\n exportImg({ full = false, scale = 3, onLoad = d => d, save = true, backgroundColor = \"#FAFAFA\" } = {}) {\n const that = this;\n const attrs = this.getChartState();\n const { svg: svgImg, root } = attrs\n let count = 0;\n const selection = svgImg.selectAll('img')\n let total = selection.size()\n\n const exportImage = () => {\n const transform = JSON.parse(JSON.stringify(that.lastTransform()));\n const duration = that.duration();\n if (full) {\n that.fit();\n }\n const { svg } = that.getChartState()\n\n setTimeout(d => {\n that.downloadImage({\n node: svg.node(), scale,\n isSvg: false,\n backgroundColor,\n onAlreadySerialized: d => {\n that.update(root)\n },\n imageName: attrs.imageName,\n onLoad: onLoad,\n save\n })\n }, full ? duration + 10 : 0)\n }\n\n if (total > 0) {\n selection\n .each(function () {\n that.toDataURL(this.src, (dataUrl) => {\n this.src = dataUrl;\n if (++count == total) {\n exportImage();\n }\n })\n })\n } else {\n exportImage();\n }\n\n\n }\n\n\n\n exportSvg() {\n const { svg, imageName } = this.getChartState();\n this.downloadImage({ imageName: imageName, node: svg.node(), scale: 3, isSvg: true })\n return this;\n }\n\n expandAll() {\n const { allNodes, root, data } = this.getChartState();\n data.forEach(d => d._expanded = true)\n // allNodes.forEach(d => d.data._expanded = true);\n this.render()\n return this;\n }\n\n collapseAll() {\n const { allNodes, root } = this.getChartState();\n allNodes.forEach(d => d.data._expanded = false);\n this.initialExpandLevel(0)\n this.render();\n return this;\n }\n\n downloadImage({ node, scale = 2, imageName = 'graph', isSvg = false, save = true, backgroundColor = \"#FAFAFA\", onAlreadySerialized = d => { }, onLoad = d => { } }) {\n // Retrieve svg node\n const svgNode = node;\n\n function saveAs(uri, filename) {\n // create link\n var link = document.createElement('a');\n if (typeof link.download === 'string') {\n document.body.appendChild(link); // Firefox requires the link to be in the body\n link.download = filename;\n link.href = uri;\n link.click();\n document.body.removeChild(link); // remove the link when done\n } else {\n location.replace(uri);\n }\n }\n // This function serializes SVG and sets all necessary attributes\n function serializeString(svg) {\n const xmlns = 'http://www.w3.org/2000/xmlns/';\n const xlinkns = 'http://www.w3.org/1999/xlink';\n const svgns = 'http://www.w3.org/2000/svg';\n svg = svg.cloneNode(true);\n const fragment = window.location.href + '#';\n const walker = document.createTreeWalker(svg, NodeFilter.SHOW_ELEMENT, null, false);\n while (walker.nextNode()) {\n for (const attr of walker.currentNode.attributes) {\n if (attr.value.includes(fragment)) {\n attr.value = attr.value.replace(fragment, '#');\n }\n }\n }\n svg.setAttributeNS(xmlns, 'xmlns', svgns);\n svg.setAttributeNS(xmlns, 'xmlns:xlink', xlinkns);\n const serializer = new XMLSerializer();\n const string = serializer.serializeToString(svg);\n return string;\n }\n\n if (isSvg) {\n let source = serializeString(svgNode);\n //add xml declaration\n source = '<?xml version=\"1.0\" standalone=\"no\"?>\\r\\n' + source;\n //convert svg source to URI data scheme.\n var url = \"data:image/svg+xml;charset=utf-8,\" + encodeURIComponent(source);\n saveAs(url, imageName + \".svg\");\n onAlreadySerialized()\n return;\n }\n // Get image quality index (basically, index you can zoom in)\n const quality = scale\n // Create image\n const image = document.createElement('img');\n image.onload = function () {\n // Create image canvas\n const canvas = document.createElement('canvas');\n // Set width and height based on SVG node\n const rect = svgNode.getBoundingClientRect();\n canvas.width = rect.width * quality;\n canvas.height = rect.height * quality;\n // Draw background\n const context = canvas.getContext('2d');\n context.fillStyle = backgroundColor;;\n context.fillRect(0, 0, rect.width * quality, rect.height * quality);\n context.drawImage(image, 0, 0, rect.width * quality, rect.height * quality);\n // Set some image metadata\n let dt = canvas.toDataURL('image/png');\n if (onLoad) {\n onLoad(dt)\n }\n if (save) {\n // Invoke saving function\n saveAs(dt, imageName + '.png');\n }\n\n };\n\n var url = 'data:image/svg+xml; charset=utf8, ' + encodeURIComponent(serializeString(svgNode));\n\n onAlreadySerialized()\n\n image.src = url// URL.createObjectURL(blob);\n // This function invokes save window\n\n }\n\n // Calculate what size text will take\n getTextWidth(text, {\n fontSize = 14,\n fontWeight = 400,\n defaultFont = \"Helvetice\",\n ctx\n } = {}) {\n ctx.font = `${fontWeight || ''} ${fontSize}px ${defaultFont} `\n const measurement = ctx.measureText(text);\n return measurement.width;\n }\n\n // Clear after moving off from the page\n clear() {\n const attrs = this.getChartState();\n d3.select(window).on(`resize.${attrs.id}`, null);\n attrs.svg && attrs.svg.selectAll(\"*\").remove();\n }\n}","export const ORGANIZATION_CHART_NODE_WIDTH = 445;\nexport const ORGANIZATION_CHART_NODE_HEIGHT = 215;\n\nexport const organizationChartWrapperClassName =\n 'relative h-full w-full min-h-0 min-w-0 overflow-hidden rounded-md bg-default';\n\nexport const organizationChartEmptyStateClassName =\n 'flex h-full min-h-60 w-full min-w-0 items-center justify-center rounded-md border border-default bg-default p-6 text-base text-caption';\n\nexport const organizationChartZoomIndicatorClassName =\n 'pointer-events-none absolute bottom-6 right-6 z-10 rounded-full bg-black/85 px-3.5 py-2 text-sm font-semibold tracking-[0.5px] text-white shadow-lg backdrop-blur-sm';\n","import type { OrgChartApiNodeData, OrgChartNodeData } from './types';\n\nconst COLORS = {\n secured: 'var(--border-color-primary)',\n unsecured: 'var(--border-color-danger)',\n surface:\n 'color-mix(in srgb, var(--background-color-default) 86%, var(--text-color-white) 14%)',\n border: 'var(--border-color-default)',\n textPrimary: 'var(--text-color-default)',\n textSecondary: 'var(--text-color-caption)',\n chipBackground: 'var(--background-color-primary-inverted)',\n chipBorder: 'var(--border-color-primary)',\n chipText: 'var(--text-color-primary)',\n};\n\nexport const formatEnumLabel = (value?: string | null): string => {\n if (!value) {\n return '—';\n }\n\n return value\n .replace(/_/g, ' ')\n .replace(/([a-z0-9])([A-Z])/g, '$1 $2')\n .replace(/\\s+/g, ' ')\n .trim();\n};\n\nexport const formatRoleLabel = (value?: string | null): string | null => {\n const label = formatEnumLabel(value);\n\n if (label === '—' || label.toLowerCase() === 'not applicable') {\n return null;\n }\n\n return label;\n};\n\nexport const formatRevenue = (value?: number | null): string => {\n if (value === undefined || value === null) {\n return '-';\n }\n\n if (value >= 1_000_000) {\n const millions = value / 1_000_000;\n const formatted = new Intl.NumberFormat('en-US', {\n maximumFractionDigits: 2,\n })\n .format(millions)\n .replace(/\\.0+$/, '')\n .replace(/(\\.\\d*[1-9])0+$/, '$1');\n\n return `$${formatted} M`;\n }\n\n return `$${new Intl.NumberFormat('en-US').format(value)}`;\n};\n\nexport const formatRevenueShare = (value?: number | null): string | null => {\n if (value === undefined || value === null) {\n return null;\n }\n\n return `${Math.round(value * 100)}% of group`;\n};\n\nconst getCountryFlagSrc = (countryCode?: string | null): string | null => {\n if (!countryCode || countryCode.length !== 2) {\n return null;\n }\n\n return `https://flagcdn.com/24x18/${countryCode.toLowerCase()}.png`;\n};\n\nconst getBottomTags = (node: OrgChartNodeData): string[] => {\n const tags: string[] = [];\n const entityTypeLabel = node.entityType\n ? formatEnumLabel(node.entityType)\n : node.position;\n const roleLabel = formatRoleLabel(node.role);\n\n if (entityTypeLabel && entityTypeLabel !== '—') {\n tags.push(entityTypeLabel);\n }\n\n if (roleLabel && roleLabel !== 'Borrower') {\n tags.push(roleLabel);\n }\n\n if (!tags.length && node.companyCode) {\n tags.push(node.companyCode);\n }\n\n return tags;\n};\n\nexport const escapeHtml = (value: string): string => {\n return value\n .replace(/&/g, '&amp;')\n .replace(/</g, '&lt;')\n .replace(/>/g, '&gt;')\n .replace(/\"/g, '&quot;')\n .replace(/'/g, '&#39;');\n};\n\nexport const isOrgChartApiNodeData = (\n node: OrgChartNodeData | OrgChartApiNodeData,\n): node is OrgChartApiNodeData => {\n return 'entityName' in node;\n};\n\nexport const normalizeOrgChartNode = (\n node: OrgChartNodeData | OrgChartApiNodeData,\n): OrgChartNodeData => {\n if (!isOrgChartApiNodeData(node)) {\n return {\n ...node,\n countryName: node.countryName ?? node.location ?? node.position,\n entityType: node.entityType ?? node.position,\n role: node.role ?? null,\n securityPosition: node.securityPosition ?? 'Secured',\n };\n }\n\n return {\n id: node.id,\n parentId: node.parent?.id ?? null,\n name: node.entityName,\n position: node.entityType ?? 'Entity',\n countryCode: node.country?.country_code ?? null,\n countryName: node.country?.name ?? null,\n entityType: node.entityType ?? null,\n role: node.role ?? null,\n revenue: node.revenue ?? null,\n revenueShare: node.revenueAllocPct ?? null,\n securityPosition: node.securityPosition ?? null,\n };\n};\n\nexport const buildNodeContent = (\n node: OrgChartNodeData,\n width: number,\n height: number,\n): string => {\n const isBorrower = formatRoleLabel(node.role) === 'Borrower';\n const isUnsecured = node.securityPosition === 'Unsecured';\n const flagSrc = getCountryFlagSrc(node.countryCode);\n const revenueLabel = node.revenue !== undefined ? 'Revenue' : 'Headcount';\n const revenue =\n node.revenue !== undefined\n ? formatRevenue(node.revenue)\n : node.headcount || '-';\n const revenueShare =\n node.revenue !== undefined ? formatRevenueShare(node.revenueShare) : null;\n const tags = getBottomTags(node);\n const locationLabel = node.countryName ?? node.location ?? node.position;\n\n return `\n <div style=\"\n box-sizing: border-box;\n position: absolute;\n width: ${width}px;\n height: ${height}px;\n border-radius: 16px;\n border: 2px ${isUnsecured ? 'dashed' : 'solid'} ${isUnsecured ? COLORS.unsecured : COLORS.secured};\n background: ${COLORS.surface};\n font-family: var(--font-body);\n color: ${COLORS.textPrimary};\n padding: 20px;\n overflow: visible;\n \">\n ${\n isBorrower\n ? `<div style=\"\n position: absolute;\n top: -20px;\n right: 24px;\n border: 2px solid ${COLORS.chipBorder};\n border-radius: 999px;\n background: ${COLORS.chipBackground};\n padding: 8px 16px;\n color: ${COLORS.chipText};\n font-size: 14px;\n font-weight: 700;\n line-height: 1;\n text-transform: uppercase;\n \">BORROWER</div>`\n : ''\n }\n <div style=\"font-size: 18px; font-weight: 700; line-height: 1.25; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;\" title=\"${escapeHtml(node.name)}\">${escapeHtml(node.name)}</div>\n <div style=\"display:flex; align-items:center; gap:10px; margin-top:16px; font-size:14px; line-height:20px; color:${COLORS.textPrimary}; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;\">\n ${flagSrc ? `<img src=\"${flagSrc}\" alt=\"\" width=\"24\" height=\"18\" style=\"display:block; border-radius:2px; flex:0 0 auto;\" />` : ''}\n <span style=\"overflow:hidden; text-overflow:ellipsis;\">${escapeHtml(locationLabel)}</span>\n </div>\n <div style=\"margin-top:20px; font-size:16px; line-height:24px; color:${COLORS.textSecondary}; white-space:nowrap; overflow:hidden; text-overflow:ellipsis;\">\n ${revenueLabel}: <span style=\"font-weight:700; color:${COLORS.textPrimary};\">${escapeHtml(revenue)}</span>\n ${revenueShare ? `<span> (${escapeHtml(revenueShare)})</span>` : ''}\n </div>\n <div style=\"height:1px; margin:18px 0 16px; background:${COLORS.border};\"></div>\n <div style=\"display:flex; flex-wrap:wrap; gap:8px;\">\n ${tags\n .map(\n tag => `<span style=\"\n display:inline-flex;\n align-items:center;\n width:fit-content;\n max-width:100%;\n padding:6px 12px;\n border:2px solid ${COLORS.chipBorder};\n border-radius:999px;\n background:${COLORS.chipBackground};\n color:${COLORS.chipText};\n font-size:13px;\n font-weight:700;\n line-height:1.2;\n white-space:normal;\n overflow-wrap:anywhere;\n text-align:center;\n \" title=\"${escapeHtml(tag)}\">${escapeHtml(tag)}</span>`,\n )\n .join('')}\n </div>\n </div>\n `;\n};\n\nexport const buildButtonContent = (childCount: number) => {\n return `\n <div style=\"\n display:flex;\n align-items:center;\n justify-content:center;\n min-width:32px;\n height:32px;\n margin:auto;\n border:2px solid ${COLORS.chipBorder};\n border-radius:999px;\n background:${COLORS.chipBackground};\n color:${COLORS.chipText};\n font-family:var(--font-body);\n font-size:13px;\n font-weight:700;\n line-height:1;\n box-sizing:border-box;\n padding:0 10px;\n \">${childCount}</div>\n `;\n};\n","import { OrgChart } from 'd3-org-chart';\nimport {\n forwardRef,\n useEffect,\n useImperativeHandle,\n useLayoutEffect,\n useMemo,\n useRef,\n} from 'react';\n\nimport { cn } from '../../utils';\nimport {\n organizationChartEmptyStateClassName,\n ORGANIZATION_CHART_NODE_HEIGHT,\n ORGANIZATION_CHART_NODE_WIDTH,\n organizationChartWrapperClassName,\n organizationChartZoomIndicatorClassName,\n} from './OrganizationChart.styles';\nimport type {\n OrgChartComponentProps,\n OrgChartNodeData,\n OrgChartRef,\n} from './types';\nimport {\n buildButtonContent,\n buildNodeContent,\n normalizeOrgChartNode,\n} from './utils';\n\nexport const OrganizationChart = forwardRef<\n OrgChartRef,\n OrgChartComponentProps\n>(function OrganizationChart(\n {\n data,\n orientation = 'top',\n initialDepth = 1,\n imageName = 'organization-chart',\n onNodeClick,\n onZoomChange,\n className,\n emptyMessage = 'No organization chart data available.',\n showZoomBadge = true,\n dataTestId,\n ...restProps\n },\n ref,\n) {\n const rootRef = useRef<HTMLDivElement | null>(null);\n const containerRef = useRef<HTMLDivElement | null>(null);\n const chartRef = useRef<OrgChart<OrgChartNodeData> | null>(null);\n const zoomTextRef = useRef<HTMLDivElement | null>(null);\n const resizeObserverRef = useRef<ResizeObserver | null>(null);\n const normalizedData = useMemo(() => data.map(normalizeOrgChartNode), [data]);\n\n useImperativeHandle(\n ref,\n (): OrgChartRef => ({\n zoomIn: () => chartRef.current?.zoomIn(),\n zoomOut: () => chartRef.current?.zoomOut(),\n resetZoom: () => {\n chartRef.current?.render().fit();\n },\n resetLevel: () => {\n chartRef.current\n ?.collapseAll()\n .initialExpandLevel(initialDepth)\n .render()\n .fit();\n },\n exportImg: () => chartRef.current?.exportImg({ full: true }),\n exportSvg: () => {\n if (!chartRef.current) {\n return;\n }\n\n chartRef.current.render().fit();\n\n window.setTimeout(() => {\n chartRef.current?.exportSvg();\n }, 1000);\n },\n expandAll: () => {\n chartRef.current?.expandAll().fit();\n },\n collapseAll: () => {\n chartRef.current?.collapseAll().fit();\n },\n }),\n [initialDepth],\n );\n\n useLayoutEffect(() => {\n const container = containerRef.current;\n const root = rootRef.current;\n\n if (!container || !root || normalizedData.length === 0) {\n return;\n }\n\n container.replaceChildren();\n\n const chart = new OrgChart<OrgChartNodeData>();\n chartRef.current = chart;\n\n const renderChart = () => {\n chart\n .container(container as unknown as string)\n .data(normalizedData)\n .layout(orientation)\n .imageName(imageName)\n .initialExpandLevel(initialDepth)\n .svgHeight(Math.max(root.clientHeight, 720))\n .nodeWidth(() => ORGANIZATION_CHART_NODE_WIDTH)\n .nodeHeight(() => ORGANIZATION_CHART_NODE_HEIGHT)\n .childrenMargin(() => 64)\n .siblingsMargin(() => 80)\n .neighbourMargin(() => 96)\n .compact(false)\n .buttonContent(\n ({\n node,\n }: {\n node: { data: OrgChartNodeData & { _directSubordinates?: number } };\n }) => {\n const childCount = node.data._directSubordinates ?? 0;\n\n return buildButtonContent(childCount);\n },\n )\n .nodeButtonWidth(() => 44)\n .nodeButtonHeight(() => 32)\n .nodeUpdate((_, index, elements) => {\n const element = elements[index] as unknown as SVGElement;\n const buttonGroup =\n element.querySelector<SVGGElement>('.node-button-g');\n const buttonCircle = element.querySelector<SVGCircleElement>(\n '.node-button-circle',\n );\n const buttonText =\n element.querySelector<SVGTextElement>('.node-button-text');\n\n buttonGroup?.setAttribute('display', '');\n\n if (buttonCircle) {\n buttonCircle.setAttribute('fill', 'transparent');\n buttonCircle.setAttribute('stroke', 'transparent');\n }\n\n if (buttonText) {\n buttonText.setAttribute('display', 'none');\n }\n })\n .linkUpdate((_, index, elements) => {\n const element = elements[index] as unknown as SVGPathElement;\n\n element.setAttribute('stroke', 'var(--border-color-default)');\n element.setAttribute('stroke-width', '2');\n element.setAttribute('fill', 'none');\n })\n .onZoom((event: { transform?: { k?: number } }) => {\n const zoomPercent = Math.round((event.transform?.k ?? 1) * 100);\n\n if (zoomTextRef.current) {\n zoomTextRef.current.textContent = `Zoom: ${zoomPercent}%`;\n }\n\n onZoomChange?.(zoomPercent);\n })\n .onNodeClick((node: { id?: string | number | undefined }) => {\n if (node?.id) {\n onNodeClick?.(String(node.id));\n }\n })\n .nodeContent((node: { data: OrgChartNodeData }) =>\n buildNodeContent(\n node.data,\n ORGANIZATION_CHART_NODE_WIDTH,\n ORGANIZATION_CHART_NODE_HEIGHT,\n ),\n )\n .render()\n .fit();\n };\n\n renderChart();\n\n resizeObserverRef.current?.disconnect();\n resizeObserverRef.current = new ResizeObserver(() => {\n if (!chartRef.current || normalizedData.length === 0) {\n return;\n }\n\n renderChart();\n });\n resizeObserverRef.current.observe(root);\n\n return () => {\n resizeObserverRef.current?.disconnect();\n resizeObserverRef.current = null;\n if (chartRef.current === chart) {\n chartRef.current = null;\n }\n container.replaceChildren();\n };\n }, [\n imageName,\n initialDepth,\n normalizedData,\n onNodeClick,\n onZoomChange,\n orientation,\n ]);\n\n useEffect(() => {\n return () => {\n resizeObserverRef.current?.disconnect();\n chartRef.current?.clear();\n chartRef.current = null;\n };\n }, []);\n\n if (normalizedData.length === 0) {\n return (\n <div\n {...restProps}\n data-test-id={dataTestId}\n ref={rootRef}\n className={cn(organizationChartEmptyStateClassName, className)}\n >\n {emptyMessage}\n </div>\n );\n }\n\n return (\n <div\n {...restProps}\n data-test-id={dataTestId}\n ref={rootRef}\n className={cn(organizationChartWrapperClassName, className)}\n >\n {showZoomBadge ? (\n <div\n ref={zoomTextRef}\n className={organizationChartZoomIndicatorClassName}\n >\n Zoom: 100%\n </div>\n ) : null}\n <div\n ref={containerRef}\n role='region'\n aria-label='Organization chart'\n className='h-full w-full'\n />\n </div>\n );\n});\n","import React from 'react';\n\nexport const useToggle = () => {\n const [state, setState] = React.useState<boolean>(false);\n\n const toggle = React.useCallback(() => {\n setState(!state);\n }, [state]);\n\n return [state, toggle] as const;\n};\n","export enum EThemeOptions {\n LIGHT = 'light',\n DARK = 'dark',\n}\n","import { createContext } from 'react';\n\nimport { EThemeOptions } from './types';\n\nexport const ThemeContext = createContext<{\n theme: EThemeOptions;\n setTheme: (theme: EThemeOptions) => void;\n isDark: boolean;\n}>({\n theme: EThemeOptions.LIGHT,\n setTheme: () => {},\n isDark: false,\n});\n","import { use } from 'react';\n\nimport { ThemeContext } from '../providers/theme';\n\nexport const useTheme = () => {\n const { theme, setTheme, isDark } = use(ThemeContext);\n\n return { theme, isDark, setTheme };\n};\n"],"x_google_ignoreList":[0,1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,18,19,20,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173],"mappings":"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"}