{"version":3,"sources":["../src/plugins/autoAnimatePlugin.ts","../src/plugins/multiStep/sections/wrapper.ts","../src/plugins/multiStep/sections/badge.ts","../src/plugins/multiStep/sections/stepActions.ts","../src/plugins/multiStep/sections/stepInner.ts","../src/plugins/multiStep/sections/stepNext.ts","../src/plugins/multiStep/sections/stepOuter.ts","../src/plugins/multiStep/sections/stepPrevious.ts","../src/plugins/multiStep/sections/steps.ts","../src/plugins/multiStep/sections/stepIcon.ts","../src/plugins/multiStep/sections/tab.ts","../src/plugins/multiStep/sections/tabLabel.ts","../src/plugins/multiStep/sections/tabs.ts","../src/plugins/multiStep/sections/multiStepOuter.ts","../src/plugins/multiStep/schema.ts","../src/plugins/multiStep/multiStepPlugin.ts","../src/plugins/floatingLabels/floatingLabelsPlugin.ts","../src/plugins/localStoragePlugin.ts","../src/plugins/autoHeightTextarea.ts","../src/plugins/maxlengthCountdown.ts"],"names":["createSection","steps","step","tabs","tab","node","updateTotalErrorCount","calculateLabelOffset","nodeEl","observer","whenAvailable","controlNode","loadValue","undefine","updateCountValue","clone"],"mappings":"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","file":"index.dev.mjs","sourcesContent":["import {\n  FormKitNode,\n  FormKitSchemaComponent,\n  FormKitPlugin,\n  isDOM,\n} from '@formkit/core'\nimport autoAnimate, { AutoAnimateOptions } from '@formkit/auto-animate'\nimport { eachSection } from '@formkit/inputs'\nimport { FormKitSchemaDOMNode } from 'packages/core/src'\n\nconst pendingIds: Map<string, AutoAnimateOptions | undefined> = new Map()\nconst optionOverrides = new Map<string, AutoAnimateOptions | undefined>()\n\nlet autoAnimateOptionsId = 0\n\nlet observer: MutationObserver | null = null\nlet observerTimeout: ReturnType<typeof setTimeout> | number = 0\n\n/**\n * Create a new mutation observer that checks for the document for ids. We do\n * this instead of iterating over the mutations because getElementById is by far\n * the fastest way check for an element in the DOM, much faster that iterating\n * over the mutations themselves.\n */\nfunction createObserver() {\n  observeIds()\n  observer = new MutationObserver(() => {\n    observeIds()\n    if (!pendingIds.size && observer) {\n      observer.disconnect()\n      observer = null\n    }\n  })\n  observer.observe(document, { childList: true, subtree: true })\n}\n\nfunction observeIds() {\n  pendingIds.forEach((options, id) => {\n    const outer = document.getElementById(id)\n    if (outer) {\n      clearTimeout(observerTimeout)\n      pendingIds.delete(id)\n      observerTimeout = setTimeout(() => {\n        const targets = document.querySelectorAll('[data-auto-animate]')\n        targets.forEach((target) => {\n          // get the value of data-auto-animate\n          let overrideOptions: AutoAnimateOptions | undefined\n          const optionsId = target.getAttribute('data-auto-animate')\n          if (optionsId) {\n            overrideOptions = optionOverrides.get(optionsId)\n          }\n          autoAnimate(target as HTMLElement, overrideOptions || options || {})\n        })\n      }, 250)\n    }\n  })\n}\n\n/**\n * Adds auto-animate to each input automatically:\n *\n * @example\n *\n * ```javascript\n * import { createApp } from 'vue'\n * import App from 'App.vue'\n * import { createAutoAnimatePlugin } from '@formkit/addons'\n * import { plugin, defaultConfig } from '@formkit/vue'\n *\n * createApp(app).use(plugin, defaultPlugin({\n *   plugins: [\n *     createAutoAnimatePlugin({\n *       // optional config\n *       duration: 250,\n *       easing: 'ease-in-out',\n *       delay: 0,\n *     },\n *     {\n *       // optional animation targets object\n *       global: ['outer', 'inner'],\n *       form: ['form'],\n *       repeater: ['items'],\n *     })\n *   ]\n * }))\n * ```\n *\n * @param options - {@link https://github.com/formkit/auto-animate/blob/master/src/index.ts#L596 | AutoAnimateOptions }\n * @param animationTargets - A map of input types and an array of their sections that should be animated.\n *\n * @returns\n * {@link @formkit/core#FormKitPlugin | FormKitPlugin}\n *\n * @public\n */\nexport function createAutoAnimatePlugin(\n  options?: AutoAnimateOptions,\n  animationTargets: Record<string, string[]> = {}\n): FormKitPlugin {\n  return (node: FormKitNode) => {\n    node.on('created', () => {\n      if (typeof node.props.definition?.schema === 'function') {\n        if (typeof window === undefined) return\n\n        // make a copy of the original schema\n        const originalSchema = node.props.definition.schema\n\n        // add an outer wrapper id or get the current one\n        node.props.definition.schema = (extensions) => {\n          const schema = originalSchema(extensions)\n          const finalSchema = Array.isArray(schema) ? schema[0] : schema\n\n          eachSection(\n            finalSchema,\n            (section: FormKitSchemaComponent | FormKitSchemaDOMNode) => {\n              if (isDOM(section)) {\n                let isAnimationTarget = false\n                const sectionName = section?.meta?.section\n                let instanceId: boolean | string = true\n\n                // If we have explicit autoAnimate meta set, use that\n                if (section?.meta?.autoAnimate) {\n                  isAnimationTarget = true\n\n                  if (typeof section.meta.autoAnimate === 'object') {\n                    const newOptions = Object.assign(\n                      {},\n                      options,\n                      section.meta.autoAnimate\n                    )\n                    instanceId = `${node.props.id}-${autoAnimateOptionsId++}`\n                    optionOverrides.set(instanceId, newOptions)\n                  }\n                }\n\n                // if didn't have meta but we have a section name, check if it's a known animation target\n                if (\n                  !isAnimationTarget &&\n                  sectionName &&\n                  typeof sectionName === 'string'\n                ) {\n                  if (\n                    animationTargets.global?.includes(sectionName) ||\n                    animationTargets[node.props.type]?.includes(sectionName)\n                  ) {\n                    isAnimationTarget = true\n                  }\n                }\n\n                // bail if we we're not a match\n                if (!isAnimationTarget) return\n\n                // add the auto-animate attribute which our observer will pick up\n                if (!section?.attrs) {\n                  section.attrs = { 'data-auto-animate': instanceId }\n                } else {\n                  Object.assign(section.attrs, {\n                    'data-auto-animate': instanceId,\n                  })\n                }\n\n                // add the node id to the pending list\n                if (node.props.id) {\n                  pendingIds.set(node.props.id, options)\n                }\n              }\n            }\n          )\n          return finalSchema\n        }\n      }\n      if (!observer && typeof window !== 'undefined') createObserver()\n    })\n  }\n}\n","import { createSection } from '@formkit/inputs'\n\n/**\n * Wrapper section, wraps the entire multi-step form\n *\n * @public\n */\nexport const wrapper = createSection('wrapper', () => ({\n  $el: 'div',\n  attrs: {\n    'data-tab-style': '$tabStyle',\n    'data-hide-labels': '$hideProgressLabels',\n  },\n}))\n","import { createSection } from '@formkit/inputs'\n\n/**\n * Contains the \"next\" action element for a multi-step step.\n *\n * @public\n */\nexport const badge = createSection('badge', () => ({\n  $el: 'span',\n  attrs: {\n    role: 'presentation',\n  },\n}))\n","import { createSection } from '@formkit/inputs'\n\n/**\n * Contains the action buttons for a multi-step step.\n *\n * @public\n */\nexport const stepActions = createSection('stepActions', () => ({\n  $el: 'div',\n}))\n","import { createSection } from '@formkit/inputs'\n\n/**\n * Inner section of a multi-step step.\n *\n * @public\n */\nexport const stepInner = createSection('stepInner', 'div')\n","import { createSection } from '@formkit/inputs'\n\n/**\n * Contains the \"next\" action element for a multi-step step.\n *\n * @public\n */\nexport const stepNext = createSection('stepNext', () => ({\n  $el: 'div',\n  if: '$isLastStep === false || $stepIndex === 0',\n  children: [\n    {\n      $cmp: 'FormKit',\n      bind: '$nextAttrs',\n      props: {\n        type: 'button',\n        label: {\n          if: '$nextLabel',\n          then: '$nextLabel',\n          else: '$ui.next.value',\n        },\n        'data-next': '$isLastStep === false',\n        onClick: '$handlers.next',\n      },\n    },\n  ],\n}))\n","import { createSection } from '@formkit/inputs'\n\n/**\n * Outer section of a multi-step step. Has conditinal styling\n * depending on if it's the $activeStep.\n *\n * @public\n */\nexport const stepOuter = createSection('stepOuter', () => ({\n  $el: 'div',\n  attrs: {\n    key: '$id',\n    'data-type': 'step',\n    'data-disabled': '$disabled || undefined',\n    'data-invalid':\n      '$state.valid === false && $state.validationVisible || undefined',\n    'data-errors': '$state.errors || undefined',\n    'data-submitted': '$state.submitted || undefined',\n    id: '$id',\n    role: 'tabpanel',\n    'aria-labelledby': '$node.parent.props.id + \"_tab_\" + $stepIndex',\n    class: '$classes.step',\n    hidden: '$isActiveStep === false || undefined',\n  },\n}))\n","import { createSection } from '@formkit/inputs'\n\n/**\n * Contains the \"previous\" action element for a multi-step step.\n *\n * @public\n */\nexport const stepPrevious = createSection('stepPrevious', () => ({\n  $el: 'div',\n  if: '$isFirstStep === false',\n  children: [\n    {\n      $cmp: 'FormKit',\n      bind: '$previousAttrs',\n      props: {\n        type: 'button',\n        label: {\n          if: '$previousLabel',\n          then: '$previousLabel',\n          else: '$ui.prev.value',\n        },\n        'data-prev': '$isFirstStep === false',\n        onClick: '$handlers.previous',\n      },\n    },\n  ],\n}))\n","import { createSection } from '@formkit/inputs'\n\n/**\n * Steps section, wraps all the steps of a multi-step form\n *\n * @public\n */\nexport const steps = createSection('steps', () => ({\n  $el: 'div',\n}))\n","import { createSection, FormKitSchemaExtendableSection } from '@formkit/inputs'\n\n/**\n * Icon section used by multi-step steps\n *\n * @public\n */\nexport const stepIcon = (\n  sectionKey: string,\n  el?: string\n): FormKitSchemaExtendableSection => {\n  return createSection(`${sectionKey}Icon`, () => {\n    const rawIconProp = `_raw${sectionKey\n      .charAt(0)\n      .toUpperCase()}${sectionKey.slice(1)}Icon`\n    return {\n      if: `$step.${sectionKey}Icon && $step.${rawIconProp}`,\n      then: {\n        $el: `${el ? el : 'span'}`,\n        attrs: {\n          class: `$classes.${sectionKey}Icon + \" formkit-icon\"`,\n          innerHTML: `$step.${rawIconProp}`,\n          role: 'presentation',\n          onClick: `$handlers.iconClick(${sectionKey})`,\n        },\n      },\n      else: {\n        if: `$${sectionKey}Icon && $${rawIconProp}`,\n        then: {\n          $el: `${el ? el : 'span'}`,\n          attrs: {\n            class: `$classes.${sectionKey}Icon + \" formkit-icon\"`,\n            innerHTML: `$${rawIconProp}`,\n            role: 'presentation',\n            onClick: `$handlers.iconClick(${sectionKey})`,\n          },\n        },\n      },\n    }\n  })()\n}\n","import { createSection } from '@formkit/inputs'\n\n/**\n * Tab section, holds a group of tabs\n *\n * @public\n */\nexport const tab = createSection('tab', () => ({\n  $el: 'button',\n  for: ['step', 'index', '$fns.getSteps()'],\n  attrs: {\n    key: '$step.id',\n    type: 'button',\n    onClick: '$step.makeActive',\n    'data-active': '$step.isActiveStep',\n    'data-valid': '$step.isValid',\n    'data-visited': '$step.hasBeenVisited',\n    role: 'tab',\n    id: '$id + \"_tab_\" + $index',\n    'aria-selected': '$step.isActiveStep || false',\n    'aria-controls': '$step.id',\n    tabindex: {\n      if: '$step.isActiveStep',\n      then: '0',\n      else: '-1',\n    },\n  },\n}))\n","import { createSection } from '@formkit/inputs'\n\n/**\n * the label for a tab in a multi-step input\n *\n * @public\n */\nexport const tabLabel = createSection('tabLabel', () => ({\n  $el: 'span',\n}))\n","import { createSection } from '@formkit/inputs'\n\n/**\n * Tab section, holds a group of tabs\n *\n * @public\n */\nexport const tabs = createSection('tabs', () => ({\n  $el: 'div',\n  attrs: {\n    role: 'tablist',\n  },\n}))\n","import { createSection } from '@formkit/inputs'\n\n/**\n * Outer section of the multi-step where most data attributes are assigned.\n *\n * @public\n */\nexport const multiStepOuter = createSection('multiStepOuter', () => ({\n  $el: 'div',\n  attrs: {\n    key: '$id',\n    id: '$id',\n    class: '$classes.outer',\n    'data-prerender': '$fns.preRenderSteps()',\n    'data-family': '$family || undefined',\n    'data-type': '$type',\n    'data-multiple':\n      '$attrs.multiple || ($type != \"select\" && $options != undefined) || undefined',\n    'data-disabled': '$disabled || undefined',\n    'data-invalid':\n      '$state.valid === false && $state.validationVisible || undefined',\n    'data-errors': '$state.errors || undefined',\n    'data-submitted': '$state.submitted || undefined',\n  },\n}))\n","import { FormKitTypeDefinition } from '@formkit/core'\nimport { $if, defaultIcon, localize, disablesChildren } from '@formkit/inputs'\nimport {\n  wrapper,\n  badge,\n  stepPrevious,\n  stepNext,\n  stepOuter,\n  tab,\n  tabLabel,\n  tabs,\n  steps,\n  stepActions,\n  stepInner,\n  stepIcon,\n  multiStepOuter,\n} from './sections'\n\nexport const multiStep: FormKitTypeDefinition = {\n  /**\n   * The actual schema of the input, or a function that returns the schema.\n   */\n  schema: multiStepOuter(\n    wrapper(\n      tabs(\n        tab(\n          $if(\n            '$tabStyle === \"tab\" || ($tabStyle === \"progress\" && $hideProgressLabels === false)',\n            tabLabel('$step.stepName')\n          ),\n          $if(\n            '($step.totalErrorCount > 0) && $step.showStepErrors',\n            badge('$step.totalErrorCount')\n          ),\n          $if(\n            '$step.isValid && $step.hasBeenVisited',\n            badge(stepIcon('validStep'))\n          )\n        )\n      ),\n      steps('$slots.default')\n    )\n  ),\n  /**\n   * The type of node, can be a list, group, or input.\n   */\n  type: 'group',\n  /**\n   * The family of inputs this one belongs too. For example \"text\" and \"email\"\n   * are both part of the \"text\" family. This is primary used for styling.\n   */\n  family: 'multi-step',\n  /**\n   * An array of extra props to accept for this input.\n   */\n  props: [\n    'allowIncomplete',\n    'hideProgressLabels',\n    'tabStyle',\n    'beforeStepChange',\n    'validStepIcon',\n  ],\n  /**\n   * Additional features that should be added to your input\n   */\n  features: [defaultIcon('validStep', 'check'), disablesChildren],\n}\n\nexport const step: FormKitTypeDefinition = {\n  /**\n   * The actual schema of the input, or a function that returns the schema.\n   */\n  schema: stepOuter(\n    stepInner('$slots.default'),\n    stepActions(stepPrevious(), stepNext())\n  ),\n  /**\n   * The type of node, can be a list, group, or input.\n   */\n  type: 'group',\n  /**\n   * The family of inputs this one belongs too. For example \"text\" and \"email\"\n   * are both part of the \"text\" family. This is primary used for styling.\n   */\n  family: '',\n  /**\n   * An array of extra props to accept for this input.\n   */\n  props: [\n    'previousLabel',\n    'nextLabel',\n    'beforeStepChange',\n    'previousAttrs',\n    'nextAttrs',\n    'validStepIcon',\n  ],\n  /**\n   * Additional features that should be added to your input\n   */\n  features: [localize('next'), localize('prev'), disablesChildren],\n}\n","import {\n  FormKitNode,\n  FormKitPlugin,\n  createMessage,\n  FormKitFrameworkContext,\n  isPlaceholder,\n} from '@formkit/core'\nimport { whenAvailable } from '@formkit/utils'\nimport type { FormKitSlotData, FormKitInputs } from '@formkit/inputs'\nimport { multiStep, step } from './schema'\n\n/* <declare> */\n\n/**\n * Extend FormKitNode with Multi-step helper functions.\n */\ndeclare module '@formkit/core' {\n  interface FormKitNodeExtensions {\n    next(): void\n    previous(): void\n    goTo(step: number | string): void\n  }\n}\n/* </declare> */\n\n/* <declare> */\ndeclare module '@formkit/inputs' {\n  interface FormKitInputProps<Props extends FormKitInputs<Props>> {\n    'multi-step': {\n      type: 'multi-step'\n      value?: Record<string, any>\n      allowIncomplete?: boolean\n      tabStyle?: 'tab' | 'progress'\n      hideProgressLabels?: boolean\n      validStepIcon?: string\n      beforeStepChange?: BeforeStepChange\n    }\n    step: {\n      beforeStepChange?: BeforeStepChange\n      nextAttrs?: Record<string, any>\n      nextLabel?: string\n      previousAttrs?: Record<string, any>\n      previousLabel?: string\n      type: 'step'\n      validStepIcon?: string\n      value?: Record<string, any>\n    }\n  }\n\n  interface FormKitInputSlots<Props extends FormKitInputs<Props>> {\n    'multi-step': FormKitMultiStepSlots<Props>\n    step: FormKitStepSlots<Props>\n  }\n}\n\n/**\n * The node type that is augmented with next and previous and goTo functions.\n *\n * @public\n */\nexport type FormKitMultiStepNode = FormKitNode & MultiStepNodeAdditions\n\n/**\n * Additional arguments that are added to the FormKitNode of a multistep input.\n *\n * @public\n */\nexport interface MultiStepNodeAdditions {\n  next: () => void\n  previous: () => void\n  goTo: (target: number | string) => void\n}\n\n/**\n * @public\n */\nexport interface MultiStepSlotData {\n  steps: Array<FormKitMultiStepSlotData>\n  allowIncomplete?: boolean\n  tabStyle: 'tab' | 'progress'\n  hideProgressLabels: boolean\n  validStepIcon: string | undefined\n  activeStep: string\n  beforeStepChange?: BeforeStepChange\n  node: FormKitMultiStepNode\n  handlers: FormKitFrameworkContext['handlers'] & MultiStepHandlers\n}\n\nexport interface MultiStepHandlers {\n  incrementStep: (\n    delta: number,\n    currentStep: FormKitFrameworkContext | undefined\n  ) => () => void\n  triggerStepValidations: (step: FormKitFrameworkContext) => void\n  showStepErrors: (step: FormKitFrameworkContext) => boolean | undefined\n  setActiveStep: (step: FormKitFrameworkContext) => (e?: Event) => void\n}\n/**\n * Slot data unique to the step input.\n *\n * @public\n */\nexport interface StepSlotData {\n  beforeStepChange?: BeforeStepChange\n  makeActive: () => void\n  blockingCount: number\n  errorCount: number\n  hasBeenVisited: true | undefined\n  isActiveStep: boolean\n  isFirstStep: boolean\n  isLastStep: boolean\n  isValid: boolean\n  nextAttrs?: Record<string, any>\n  nextLabel?: string\n  ordered: boolean\n  previousAttrs?: Record<string, any>\n  previousLabel?: string\n  showStepErrors: boolean\n  stepName: string\n  steps: Array<FormKitMultiStepSlotData>\n  stepIndex: number\n  totalErrorCount: number\n  validStepIcon?: string\n  handlers: FormKitFrameworkContext['handlers'] & StepHandlers\n}\n\nexport interface StepHandlers {\n  incrementStep: (delta: number) => () => void\n  next: () => void\n  previous: () => void\n}\n\n/**\n * @public\n */\nexport interface FormKitMultiStepSlots<Props extends FormKitInputs<Props>> {\n  multiStepOuter: FormKitSlotData<Props, MultiStepSlotData>\n  wrapper: FormKitSlotData<Props, MultiStepSlotData>\n  tabs: FormKitSlotData<Props, MultiStepSlotData>\n  tab: FormKitSlotData<Props, MultiStepSlotData>\n  tabLabel: FormKitSlotData<\n    Props,\n    MultiStepSlotData & {\n      step: FormKitFrameworkContext\n      index: number\n    }\n  >\n  badge: FormKitSlotData<\n    Props,\n    MultiStepSlotData & {\n      step: FormKitFrameworkContext\n      index: number\n    }\n  >\n  validStepIcon: FormKitSlotData<\n    Props,\n    MultiStepSlotData & {\n      step: FormKitFrameworkContext\n      index: number\n    }\n  >\n  steps: FormKitSlotData<Props, MultiStepSlotData>\n  default: FormKitSlotData<Props, MultiStepSlotData>\n}\n\n/**\n * @public\n */\nexport interface FormKitStepSlots<Props extends FormKitInputs<Props>> {\n  stepInner: FormKitSlotData<Props, StepSlotData>\n  stepActions: FormKitSlotData<Props, StepSlotData>\n  stepNext: FormKitSlotData<Props, StepSlotData>\n  stepPrevious: FormKitSlotData<Props, StepSlotData>\n  default: FormKitSlotData<Props, StepSlotData>\n}\n\n/* </declare> */\n\nconst isBrowser = typeof window !== 'undefined'\n\n/**\n * The typing for the beforeStepChange function.\n *\n * @public\n */\nexport interface BeforeStepChange {\n  (data: StepChangeData): any\n}\n\nexport interface StepChangeData<T = unknown> {\n  currentStep: FormKitFrameworkContext<T>\n  targetStep: FormKitFrameworkContext<T>\n  delta: number\n}\n\n/**\n * The typing for the slot data for a FormKit multi-step input.\n * @public\n */\nexport type FormKitMultiStepSlotData = FormKitFrameworkContext<\n  Record<string, any>\n> &\n  StepSlotData\n\n/**\n * The options to be passed to {@link createMultiStepPlugin | createMultiStepPlugin}\n *\n * @public\n */\nexport interface MultiStepOptions {\n  allowIncomplete?: boolean\n  hideProgressLabels?: boolean\n  tabStyle?: 'tab' | 'progress'\n}\n\n/**\n * Coverts a camelCase string to a title case string\n *\n * @param str - The string to convert\n * @returns string\n */\nconst camel2title = (str: string) => {\n  if (!str) return str\n  return str\n    .replace(/([A-Z])/g, (match: string) => ` ${match}`)\n    .replace(/^./, (match: string) => match.toUpperCase())\n    .trim()\n}\n\n/**\n * Compares steps to DOM order and reorders steps if needed\n */\nfunction orderSteps(node: FormKitNode, steps: FormKitFrameworkContext[]) {\n  if (!isBrowser || !steps) return steps\n  const orderedSteps = [...steps]\n  orderedSteps.sort((a, b) => {\n    const aEl = node.props.__root?.getElementById(a.id)\n    const bEl = node.props.__root?.getElementById(b.id)\n    if (!aEl || !bEl) return 0\n    return aEl.compareDocumentPosition(bEl) === 2 ? 1 : -1\n  })\n  orderedSteps.map((step) => {\n    step.ordered = true\n  })\n  return orderedSteps\n}\n\n/**\n * Iterates through each step and sets props to help\n * determine step positioning within the multi-step.\n *\n * @param steps - The steps to iterate through\n */\nfunction setNodePositionProps(steps: FormKitFrameworkContext[]) {\n  if (!steps) return\n  steps.forEach((step: FormKitFrameworkContext, index: number) => {\n    step.isFirstStep = index === 0\n    step.isLastStep = index === steps.length - 1\n    step.stepIndex = index\n    step.steps = steps\n  })\n}\n\nfunction showStepErrors(step: FormKitFrameworkContext) {\n  if (!step.showStepErrors) return\n  return (\n    parseInt(step.blockingCount as string) +\n      parseInt(step.errorCount as string) >\n    0\n  )\n}\n\n/**\n * Determines if the target step can be navigated to based on current\n * configuration options and the state of the current step.\n *\n * @param currentStep - The current step\n * @param targetStep - The target step\n */\nasync function isTargetStepAllowed(\n  currentStep: FormKitFrameworkContext,\n  targetStep: FormKitFrameworkContext\n): Promise<boolean> {\n  if (currentStep === targetStep) return true\n  const { allowIncomplete } = currentStep.node.parent?.props || {}\n  const parentNode = currentStep.node.parent\n  const currentStepIndex = parentNode?.props.steps.indexOf(currentStep)\n  const targetStepIndex = parentNode?.props.steps.indexOf(targetStep)\n\n  // show the current step errors because this step has\n  // been visited.\n  const currentStepIsValid = triggerStepValidations(currentStep)\n  currentStep.showStepErrors = true\n\n  // if we are navigating forward, check our current step is complete\n  if (targetStepIndex >= currentStepIndex) {\n    // if the current step is invalid and we do not allow incomplete\n    // then prevent navigation\n    if (!currentStepIsValid && !allowIncomplete) {\n      return false\n    }\n  }\n\n  // check how many steps we need to step forward\n  // and then check that each intermediate step is valid\n  const delta = targetStepIndex - currentStepIndex\n  for (let i = 0; i < delta; i++) {\n    const intermediateStep = parentNode?.props.steps[currentStepIndex + i]\n    const stepIsAllowed = allowIncomplete || intermediateStep.state?.valid\n    if (!stepIsAllowed) {\n      return false\n    }\n  }\n\n  // check if there is a function for the stepChange guard\n  const beforeStepChange =\n    currentStep.node.props.beforeStepChange ||\n    currentStep.node.parent?.props.beforeStepChange\n\n  if (beforeStepChange && typeof beforeStepChange === 'function') {\n    if (parentNode) {\n      parentNode?.store.set(\n        /* #__PURE__ */ createMessage({\n          key: 'loading',\n          value: true,\n          visible: false,\n        })\n      )\n      parentNode.props.disabled = true\n      currentStep.disabled = true\n    }\n    const result = await beforeStepChange({\n      currentStep,\n      targetStep,\n      delta: targetStepIndex - currentStepIndex,\n    })\n    if (parentNode) {\n      parentNode?.store.remove('loading')\n      parentNode.props.disabled = false\n      currentStep.disabled = false\n    }\n    if (typeof result === 'boolean' && !result) return false\n  }\n\n  return true\n}\n\n/**\n * Changes the active step to the target step if the target step is allowed.\n *\n * @param targetStep - The target step\n */\nasync function setActiveStep(targetStep: FormKitFrameworkContext, e?: Event) {\n  if (e) {\n    e.preventDefault()\n  }\n  if (targetStep && targetStep.node.name && targetStep.node.parent) {\n    const currentStep = targetStep.node.parent.props.steps.find(\n      (step: FormKitFrameworkContext) =>\n        step.node.name === targetStep.node.parent?.props.activeStep\n    )\n    const stepIsAllowed = await isTargetStepAllowed(currentStep, targetStep)\n    if (stepIsAllowed && targetStep.node.parent.context) {\n      targetStep.node.parent.props.activeStep = targetStep.node.name\n    }\n  }\n}\n\n/**\n * Changes the current step by the delta value if the target step is allowed.\n *\n * @param delta - The number of steps to increment or decrement\n * @param step - The current step\n */\nasync function incrementStep(\n  delta: number,\n  currentStep: FormKitFrameworkContext\n) {\n  if (currentStep && currentStep.node.name && currentStep.node.parent) {\n    const steps = currentStep.node.parent.props.steps\n    const stepIndex = currentStep.stepIndex\n    const targetStep = steps[(stepIndex as number) + delta]\n    if (!targetStep) return\n    const stepIsAllowed = await isTargetStepAllowed(currentStep, targetStep)\n\n    if (targetStep && stepIsAllowed) {\n      currentStep.node.parent.props.activeStep = targetStep.node.name\n    }\n  }\n}\n\n/**\n * Causes the display of any validation errors on the target step.\n *\n * @param step - The current step\n * @returns Boolean\n */\nfunction triggerStepValidations(step: FormKitFrameworkContext) {\n  step.node.walk((n) => {\n    n.store.set(\n      /* #__PURE__ */ createMessage({\n        key: 'submitted',\n        value: true,\n        visible: false,\n      })\n    )\n  })\n  return (\n    step.node.context?.state.valid || step.node.parent?.props.allowIncomplete\n  )\n}\n\nfunction initEvents(node: FormKitNode, el: Element) {\n  if (!(el instanceof HTMLElement)) return\n  el.addEventListener('keydown', (event: KeyboardEvent) => {\n    if (event.target instanceof HTMLButtonElement) {\n      if (\n        event.key === 'Tab' &&\n        'data-next' in event.target?.attributes &&\n        !event.shiftKey\n      ) {\n        event.preventDefault()\n        const activeStepContext = node.children.find(\n          (step) => !isPlaceholder(step) && step.name === node.props.activeStep\n        ) as FormKitNode | undefined\n        if (activeStepContext && activeStepContext.context) {\n          incrementStep(1, activeStepContext.context)\n        }\n      }\n    }\n  })\n}\n\nfunction createSSRStepsFromTabs(tabs: Record<string, any>[]) {\n  if (!tabs || !tabs.length) return []\n  // if our tabs object is a fragment, then loop over the children\n  // otherwise loop directly\n  const tabsToRender =\n    tabs[0].type == Symbol.for('v-fgt') && tabs[0].children\n      ? tabs[0].children\n      : tabs\n\n  const placeholderTabs = tabsToRender.map(\n    (tab: Record<string, any>, index: number) => {\n      return {\n        __isPlaceholder: true,\n        stepName: tab.props?.label || camel2title(tab.props?.name),\n        isFirstStep: index === 0,\n        isLastStep: index === tabs.length - 1,\n        isActiveStep: index === 0,\n        node: {\n          name: tab.props?.name,\n        },\n      }\n    }\n  )\n  return placeholderTabs\n}\n\nfunction createPreRenderStepsFunction(node: FormKitNode) {\n  return () => {\n    if (!node.context || node.props.steps) return\n    // call the default slot to pre-render child steps\n    // for SSR support\n    let tabs = []\n    if (\n      node.context.slots &&\n      (node.context.slots as Record<string, () => any>).default\n    ) {\n      tabs = (node.context.slots as Record<string, () => any>).default()\n    }\n    node.props.steps = node.props.steps || createSSRStepsFromTabs(tabs)\n    node.context.stepCount = node.props.steps.length\n  }\n}\n\n/**\n * Creates a new multi-step plugin.\n *\n * @param options - The options of {@link MultiStepOptions | MultiStepOptions} to pass to the plugin\n *\n * @returns A {@link @formkit/core#FormKitPlugin | FormKitPlugin}\n *\n * @public\n */\nexport function createMultiStepPlugin(\n  options?: MultiStepOptions\n): FormKitPlugin {\n  let isFirstStep = true\n\n  const multiStepPlugin = (node: FormKitNode) => {\n    if (node.props.type === 'multi-step') {\n      if (!node.context) return\n\n      isFirstStep = true // reset variable, next step will be first step in multistep\n      node.addProps(['steps', 'tabs', 'activeStep'])\n\n      node.context.fns.preRenderSteps = createPreRenderStepsFunction(node)\n      node.context.fns.getStepCount = () => {\n        if (!node.context) return\n        return node.context.stepCount\n      }\n      node.context.fns.getSteps = () => {\n        if (!node.context) return\n        return node.context.steps\n      }\n\n      node.props.allowIncomplete =\n        typeof node.props.allowIncomplete === 'boolean'\n          ? node.props.allowIncomplete\n          : typeof options?.allowIncomplete === 'boolean'\n          ? options?.allowIncomplete\n          : true\n      node.props.hideProgressLabels =\n        typeof node.props.hideProgressLabels === 'boolean'\n          ? node.props.hideProgressLabels\n          : options?.hideProgressLabels || false\n      node.props.tabStyle = node.props.tabStyle || options?.tabStyle || 'tab'\n\n      node.context.handlers.triggerStepValidations = triggerStepValidations\n      node.context.handlers.showStepErrors = showStepErrors\n\n      node.on('created', () => {\n        if (!node.context) return\n\n        node.extend('next', {\n          get: (node) => () => {\n            incrementStep(\n              1,\n              node?.props?.steps.find(\n                (step: Record<string, any>) => step.isActiveStep\n              )\n            )\n          },\n          set: false,\n        })\n        node.extend('previous', {\n          get: (node) => () => {\n            incrementStep(\n              -1,\n              node?.props?.steps.find(\n                (step: Record<string, any>) => step.isActiveStep\n              )\n            )\n          },\n          set: false,\n        })\n        node.extend('goTo', {\n          get: (node) => (target: number | string) => {\n            if (typeof target === 'number') {\n              const targetStep = node.props.steps[target]\n              setActiveStep(targetStep)\n            } else if (typeof target === 'string') {\n              const targetStep = node.props.steps.find(\n                (step: Record<string, any>) => step.node.name === target\n              )\n              setActiveStep(targetStep)\n            }\n          },\n          set: false,\n        })\n\n        whenAvailable(\n          `${node.props.id}`,\n          (el) => {\n            initEvents(node, el)\n          },\n          node.props.__root\n        )\n      })\n\n      node.on('child', ({ payload: childNode }) => {\n        // remove placeholder steps\n        if (node.props.steps && node.props.steps.length) {\n          node.props.steps = node.props.steps.filter(\n            (step: Record<string, any>) => !step.__isPlaceholder\n          )\n        }\n        node.props.steps =\n          Array.isArray(node.props.steps) && node.props.steps.length > 0\n            ? [...node.props.steps, childNode.context]\n            : [childNode.context]\n        node.props.steps = orderSteps(node, node.props.steps)\n        setNodePositionProps(node.props.steps)\n\n        childNode.props.stepName =\n          childNode.props.label || camel2title(childNode.name)\n        childNode.props.errorCount = 0\n        childNode.props.blockingCount = 0\n        childNode.props.isActiveStep = isFirstStep\n        isFirstStep = false\n\n        node.props.activeStep = node.props.activeStep\n          ? node.props.activeStep\n          : node.props.steps[0]\n          ? node.props.steps[0].node.name\n          : ''\n      })\n\n      node.on('prop:activeStep', ({ payload }) => {\n        node.children.forEach((child) => {\n          if (isPlaceholder(child)) return\n          child.props.isActiveStep = child.name === payload\n          if (isBrowser && child.name === payload) {\n            const el = node.props.__root?.querySelector(\n              `[aria-controls=\"${child.props.id}\"]`\n            )\n            if (el instanceof HTMLButtonElement) {\n              el.focus()\n            }\n          }\n        })\n      })\n\n      node.on('childRemoved', ({ payload: childNode }) => {\n        let removedStepIndex = -1\n        childNode.props.ordered = false\n        node.props.steps = node.props.steps.filter(\n          (step: FormKitFrameworkContext, index: number) => {\n            if (step.node.name !== childNode.name) {\n              return true\n            }\n            removedStepIndex = index\n            return false\n          }\n        )\n        setNodePositionProps(node.props.steps)\n        // if the child that was removed was the active step\n        // then fallback to the next available step\n        if (node.props.activeStep === childNode.name) {\n          const targetIndex = removedStepIndex > 0 ? removedStepIndex - 1 : 0\n          node.props.activeStep = node.props.steps[targetIndex]\n            ? node.props.steps[targetIndex].node.name\n            : ''\n        }\n      })\n    } else if (\n      node.props.type === 'step' &&\n      node.parent?.props.type === 'multi-step'\n    ) {\n      if (!node.context || !node.parent || !node.parent.context) return\n\n      node.addProps([\n        'isActiveStep',\n        'isFirstStep',\n        'isLastStep',\n        'stepName',\n        'errorCount',\n        'blockingCount',\n        'totalErrorCount',\n        'showStepErrors',\n        'isValid',\n        'hasBeenVisited',\n        'ordered',\n      ])\n      const parentNode = node.parent\n\n      node.on('created', () => {\n        if (!node.context || !parentNode.context) return\n\n        whenAvailable(\n          `${node.props.id}`,\n          () => {\n            parentNode.props.steps = orderSteps(node, parentNode.props.steps)\n            setNodePositionProps(parentNode.props.steps)\n          },\n          node.props.__root\n        )\n      })\n\n      if (node.context && parentNode.context) {\n        parentNode.context.handlers.setActiveStep = (\n          stepNode: FormKitFrameworkContext\n        ) => setActiveStep.bind(null, stepNode)\n\n        node.context.handlers.incrementStep = (delta: number) => () =>\n          incrementStep(delta, node.context!)\n\n        node.context.makeActive = () => {\n          setActiveStep(node.context as FormKitFrameworkContext)\n        }\n\n        node.context.handlers.next = () =>\n          incrementStep(1, node.context as FormKitFrameworkContext)\n        node.context.handlers.previous = () =>\n          incrementStep(-1, node.context as FormKitFrameworkContext)\n      }\n\n      node.on('count:errors', ({ payload: count }) => {\n        node.props.errorCount = count\n      })\n      node.on('count:blocking', ({ payload: count }) => {\n        node.props.blockingCount = count\n      })\n\n      function updateTotalErrorCount(node: FormKitNode) {\n        node.props.totalErrorCount =\n          node.props.errorCount + node.props.blockingCount\n      }\n      node.on('prop:errorCount', () => updateTotalErrorCount(node))\n      node.on('prop:blockingCount', () => updateTotalErrorCount(node))\n      node.on('prop:totalErrorCount', () => {\n        node.props.isValid = node.props.totalErrorCount <= 0\n      })\n\n      node.on('message-added', ({ payload }) => {\n        if (payload.key === 'submitted') {\n          updateTotalErrorCount(node)\n          if (node.context) {\n            triggerStepValidations(node.context)\n            node.props.showStepErrors = true\n          }\n        }\n      })\n\n      node.on('prop:isActiveStep', () => {\n        if (!node.props.hasBeenVisited && node.props.isActiveStep) {\n          node.props.hasBeenVisited = true\n        }\n      })\n    } else if (node.parent?.props.type === 'multi-step') {\n      console.warn(\n        'Invalid FormKit input location. <FormKit type=\"multi-step\"> should only have <FormKit type=\"step\"> inputs as immediate children. Failure to wrap child inputs in <FormKit type=\"step\"> can lead to undesired behaviors.'\n      )\n    }\n  }\n\n  multiStepPlugin.library = (node: FormKitNode) => {\n    switch (node.props.type) {\n      case 'multi-step':\n        return node.define(multiStep)\n      case 'step':\n        const isInvalid =\n          !node.parent || node.parent.props.type !== 'multi-step'\n        if (isInvalid) {\n          console.warn(\n            'Invalid use of <FormKit type=\"step\">. <FormKit type=\"step\"> must be an immediate child of a <FormKit type=\"multi-step\"> component.'\n          )\n        }\n        return node.define(step)\n    }\n  }\n\n  return multiStepPlugin\n}\n","import {\n  FormKitNode,\n  FormKitPlugin,\n  FormKitSectionsSchema,\n} from '@formkit/core'\nimport { clone, extend, isPojo, whenAvailable } from '@formkit/utils'\nimport { findSection } from '@formkit/inputs'\n\n/**\n * The options to be passed to {@link createFloatingLabelsPlugin | createFloatingLabelsPlugin}\n *\n * @public\n */\nexport interface FloatingLabelsOptions {\n  useAsDefault?: boolean\n}\n\n/**\n * Traverses through parent elements to find the next closest non-transparent assigned background color\n * @param element - The element to start the search from\n */\nfunction findParentWithBackgroundColor(element: HTMLElement): string {\n  let backgroundColor = 'white'\n  while (backgroundColor === 'white' && element.parentElement) {\n    element = element.parentElement\n    const style = window.getComputedStyle(element)\n    const bgColor = style.backgroundColor\n\n    if (\n      bgColor &&\n      bgColor !== 'rgba(0, 0, 0, 0)' &&\n      bgColor !== 'transparent'\n    ) {\n      backgroundColor = bgColor\n    }\n    // Check if the color uses CSS variable for opacity\n    const opacityMatch = backgroundColor.match(/var\\(([^)]+)\\)/)\n    if (opacityMatch) {\n      const opacityVar = opacityMatch[1]\n      const opacity =\n        getComputedStyle(document.documentElement)\n          .getPropertyValue(opacityVar)\n          .trim() || '1'\n      backgroundColor = `rgba(${bgColor}, ${opacity})`\n    }\n  }\n  return backgroundColor\n}\n\n/**\n * Sets the background color of the label to the background color of the parent element\n * @param node - The node to set the background color for\n * @param nodeRoot - The root node to start the search from\n * @param timeout - The timeout to wait for the background color to be set\n */\nfunction setBackgroundColor(\n  node: FormKitNode,\n  nodeRoot: HTMLElement,\n  timeout: number\n) {\n  setTimeout(() => {\n    node.props._labelBackgroundColor = findParentWithBackgroundColor(nodeRoot)\n  }, timeout)\n}\n\n/**\n * Creates a new floating label plugin.\n *\n * @param FloatingLabelsOptions - The options of {@link FloatingLabelsOptions | FloatingLabelsOptions} to pass to the plugin\n *\n * @returns A {@link @formkit/core#FormKitPlugin | FormKitPlugin}\n *\n * @public\n */\nexport function createFloatingLabelsPlugin(\n  FloatingLabelsOptions?: FloatingLabelsOptions\n): FormKitPlugin {\n  const floatingLabelsPlugin = (node: FormKitNode) => {\n    let nodeEl: HTMLElement | null = null\n    node.addProps({\n      floatingLabel: {\n        boolean: true,\n        default: !!FloatingLabelsOptions?.useAsDefault,\n      },\n      _labelBackgroundColor: {},\n      _labelOffset: {},\n      _offsetCalculated: {},\n    })\n\n    const useFloatingLabels = node.props.floatingLabel\n\n    if (useFloatingLabels && node.context) {\n      node.on('created', () => {\n        if (!node.props || !node.props.definition || !node.context) return\n\n        // available for users who want to update the background color manually\n        node.context.handlers.updateLabelBackgroundColor = () => {\n          if (!node.context || !nodeEl) return\n          setBackgroundColor(node, nodeEl, 0)\n        }\n\n        const inputDefinition = clone(node.props.definition)\n        if (\n          ['text', 'dropdown'].includes(node.props.family) ||\n          ['datepicker', 'textarea'].includes(node.props.type)\n        ) {\n          const originalSchema = inputDefinition.schema\n          if (typeof originalSchema !== 'function') return\n          const higherOrderSchema = (extensions: FormKitSectionsSchema) => {\n            const outerAttrs = {\n              attrs: {\n                'data-floating-label': 'true',\n              },\n            }\n            extensions.outer = isPojo(extensions.outer)\n              ? (extend(extensions.outer, outerAttrs, false, true) as (typeof extensions)['outer'])\n              : outerAttrs\n\n            const labelAttrs = {\n              attrs: {\n                style: {\n                  if: '$_offsetCalculated',\n                  then:\n                    '$: ({ \"background-color\": $_labelBackgroundColor, left: $_labelOffset })',\n                  else:\n                    '$: ({ transition: \"none\", \"background-color\": $_labelBackgroundColor, left: $_labelOffset })',\n                },\n              },\n            }\n            extensions.label = isPojo(extensions.label)\n              ? (extend(extensions.label, labelAttrs, false, true) as (typeof extensions)['label'])\n              : labelAttrs\n\n            const inputSchema = originalSchema(extensions)\n            const finalSchema = Array.isArray(inputSchema)\n              ? inputSchema[0]\n              : inputSchema\n            const [labelParentChildren, labelSection] = findSection(\n              finalSchema,\n              'label'\n            )\n            const targetSection =\n              node.props.type === 'dropdown' ? 'selector' : 'input'\n            const [inputParentChildren] = findSection(\n              finalSchema,\n              targetSection\n            )\n\n            if (\n              Array.isArray(labelParentChildren) &&\n              labelSection &&\n              Array.isArray(inputParentChildren)\n            ) {\n              labelParentChildren.splice(\n                labelParentChildren.indexOf(labelSection),\n                1\n              )\n              inputParentChildren.push(labelSection)\n            }\n\n            return inputSchema\n          }\n\n          inputDefinition.schema = higherOrderSchema\n          if (inputDefinition.schemaMemoKey) {\n            inputDefinition.schemaMemoKey += '-floating-label'\n          }\n          node.props.definition = inputDefinition\n        }\n      })\n\n      node.on('mounted', () => {\n        if (!node.context) return\n\n        // set a mutation observer on the nodeEl parent to refire calculateLabelOffset\n        // whenever the children are changed\n        const observer = new MutationObserver(() => {\n          if (!nodeEl) return\n          calculateLabelOffset(node, nodeEl)\n\n          // delay the enabling of animations until after\n          // initial label positions are set\n          setTimeout(() => {\n            node.props._offsetCalculated = true\n          }, 100)\n        })\n\n        whenAvailable(node.context.id, () => {\n          if (!node.context) return\n          nodeEl = document.getElementById(node.context?.id)\n          if (!nodeEl) return\n          setBackgroundColor(node, nodeEl, 100)\n          observer.observe(nodeEl.parentNode as Node, {\n            childList: true,\n            subtree: true,\n            attributes: true,\n          })\n        })\n      })\n\n      function calculateLabelOffset(node: FormKitNode, nodeEl: HTMLElement) {\n        const labelEl = nodeEl.parentNode?.querySelector('.formkit-label')\n        const left = nodeEl.offsetLeft\n        const style = window.getComputedStyle(nodeEl)\n        const paddingLeft = parseInt(style.paddingLeft, 10)\n        const offset = left + paddingLeft\n\n        if (labelEl && offset) {\n          node.props._labelOffset = `calc(${offset}px - 0.25em)`\n        }\n      }\n    }\n  }\n  return floatingLabelsPlugin\n}\n","import { FormKitNode, FormKitPlugin } from '@formkit/core'\nimport { undefine } from '@formkit/utils'\n\n/**\n * The options to be passed to {@link createLocalStoragePlugin | createLocalStoragePlugin}\n *\n * @param prefix - The prefix to use for the local storage key\n * @param key - The key to use for the local storage entry, useful for scoping data per user\n * @param control - The form control to use enable or disable saving to localStorage. Must return a boolean value.\n * @param maxAge - The maximum age of the local storage entry in milliseconds\n * @param debounce - The debounce time in milliseconds to use when saving to localStorage\n * @param beforeSave - A function to call for modifying data before saving to localStorage\n * @param beforeLoad - A function to call for modifying data before loading from localStorage\n * @param clearOnSubmit - On submission of the form clear the local storage key. Defaults to true.\n *\n * @public\n */\nexport interface LocalStorageOptions {\n  prefix?: string\n  key?: string | number\n  control?: string\n  maxAge?: number\n  debounce?: number\n  beforeSave?: (payload: any) => any\n  beforeLoad?: (payload: any) => any\n  clearOnSubmit?: boolean\n}\n\n/**\n * Creates a new save-to-local-storage plugin.\n *\n * @param LocalStorageOptions - The options of {@link LocalStorageOptions | LocalStorageOptions} to pass to the plugin\n *\n * @returns A {@link @formkit/core#FormKitPlugin | FormKitPlugin}\n *\n * @public\n */\nexport function createLocalStoragePlugin(\n  localStorageOptions?: LocalStorageOptions\n): FormKitPlugin {\n  const localStoragePlugin = (node: FormKitNode) => {\n    // only apply if internal FormKit type is 'group'. This applies\n    // to 'form' and 'group' inputs — as well as any add-on inputs\n    // registered of FormKit type 'group' (eg. 'multi-step').\n    if (node.type !== 'group') return\n    \n    // enable SSR support\n    if (typeof window === \"undefined\") return\n\n    let cachedLocalStorageData: string | null = ''\n\n    const shouldUseLocalStorage = (controlNode: FormKitNode | undefined) => {\n      let controlFieldValue = true\n      if (controlNode) {\n        controlFieldValue = controlNode.value === true\n      }\n      return undefine(node.props.useLocalStorage) && controlFieldValue\n    }\n\n    node.on('created', async () => {\n      await node.settled\n\n      node.addProps(['useLocalStorage'])\n      node.extend('restoreCache', {\n        get: (node) => async () => {\n          if (!cachedLocalStorageData) return\n          await node.settled\n          loadValue(cachedLocalStorageData)\n        },\n        set: false,\n      })\n\n      // if the user provided a control field, then we need to listen for changes\n      // and use it to determine whether or not to use local storage\n      const controlField = localStorageOptions?.control ?? undefined\n      let controlNode: FormKitNode | undefined\n      if (typeof controlField === 'string') {\n        const controlNode = node.at(controlField)\n        if (controlNode) {\n          controlNode.on('commit', () => {\n            useLocalStorage = shouldUseLocalStorage(controlNode)\n            if (!useLocalStorage) {\n              localStorage.removeItem(storageKey)\n            }\n          })\n        }\n      }\n\n      let useLocalStorage = shouldUseLocalStorage(controlNode)\n      let saveTimeout: ReturnType<typeof setTimeout> | number = 0\n      const debounce =\n        typeof localStorageOptions?.debounce === 'number'\n          ? localStorageOptions.debounce\n          : 200\n      const prefix = localStorageOptions?.prefix ?? 'formkit'\n      const maxAge = localStorageOptions?.maxAge ?? 3600000 // 1 hour\n      const key = localStorageOptions?.key ? `-${localStorageOptions.key}` : '' // for scoping to a specific user\n      const storageKey = `${prefix}${key}-${node.name}`\n      const clearOnSubmit = localStorageOptions?.clearOnSubmit ?? true\n\n      const loadValue = async (forceValue?: string) => {\n        const value = forceValue || localStorage.getItem(storageKey)\n        if (!value) return\n        const loadValue = JSON.parse(value)\n        if (typeof localStorageOptions?.beforeLoad === 'function') {\n          node.props.disabled = true\n          try {\n            loadValue.data = await localStorageOptions.beforeLoad(\n              loadValue.data\n            )\n          } catch (error) {\n            console.error(error)\n          }\n          node.props.disabled = false\n        }\n        if (!loadValue || typeof loadValue.data !== 'object') return\n        if (loadValue.maxAge > Date.now()) {\n          node.input(loadValue.data, false)\n        } else {\n          localStorage.removeItem(storageKey)\n        }\n      }\n\n      const saveValue = async (payload: unknown) => {\n        let savePayload = payload\n        if (typeof localStorageOptions?.beforeSave === 'function') {\n          try {\n            savePayload = await localStorageOptions.beforeSave(payload)\n          } catch (error) {\n            console.error(error)\n          }\n        }\n\n        if (!savePayload) return\n\n        localStorage.setItem(\n          storageKey,\n          JSON.stringify({\n            maxAge: Date.now() + maxAge,\n            data: savePayload,\n          })\n        )\n      }\n\n      node.on('commit', ({ payload }) => {\n        if (!useLocalStorage) return\n        // debounce the save to local storage\n        clearTimeout(saveTimeout)\n        saveTimeout = setTimeout(async () => {\n          saveValue(payload)\n        }, debounce)\n      })\n\n      node.on('prop:useLocalStorage', () => {\n        useLocalStorage = shouldUseLocalStorage(controlNode)\n        if (!useLocalStorage) {\n          localStorage.removeItem(storageKey)\n        }\n      })\n\n      if (clearOnSubmit) {\n        node.hook.submit((payload, next) => {\n          // cache data in case the user wants to restore\n          cachedLocalStorageData = localStorage.getItem(storageKey)\n          // remove from the localStorage cache\n          localStorage.removeItem(storageKey)\n          return next(payload)\n        })\n      }\n\n      await loadValue()\n    })\n  }\n  return localStoragePlugin\n}\n","import { FormKitNode, FormKitPlugin } from '@formkit/core'\nimport { undefine, whenAvailable } from '@formkit/utils'\n\n/**\n * Creates a new auto-height textarea plugin.\n *\n * @returns A {@link @formkit/core#FormKitPlugin | FormKitPlugin}\n *\n * @public\n */\nexport function createAutoHeightTextareaPlugin(): FormKitPlugin {\n  const autoHeightTextareaPlugin = (node: FormKitNode) => {\n    if (node.props.type !== 'textarea') return\n    node.addProps(['autoHeight', 'minAutoHeight', 'maxAutoHeight'])\n\n    node.on('mounted', () => {\n      const autoHeight = undefine(node.props.autoHeight)\n      let inputElement: HTMLElement | undefined | null = null\n      let showScrollbars = false\n\n      const getMinAutoHeight = () => {\n        if (!inputElement) return 0\n\n        if (typeof node.props.minAutoHeight === 'number') {\n          return Math.max(0, node.props.minAutoHeight)\n        }\n\n        if (\n          node.props.minAutoHeight === true ||\n          node.props.minAutoHeight === ''\n        ) {\n          const computedStyle = getComputedStyle(inputElement as HTMLElement)\n          const minHeight = parseInt(computedStyle.minHeight) || 0\n\n          if (true && ['auto', '0px'].includes(computedStyle.minHeight)) {\n            console.warn(\n              'No minHeight CSS property set for textarea with min-auto-height'\n            )\n          }\n          return minHeight\n        }\n        return 0\n      }\n\n      const getMaxAutoHeight = () => {\n        if (!inputElement) return Infinity\n\n        if (typeof node.props.maxAutoHeight === 'number') {\n          showScrollbars = true\n          return Math.max(0, node.props.maxAutoHeight)\n        }\n\n        if (\n          node.props.maxAutoHeight === true ||\n          node.props.maxAutoHeight === ''\n        ) {\n          const computedStyle = getComputedStyle(inputElement as HTMLElement)\n          const maxHeight = parseInt(computedStyle.maxHeight) || 0\n\n          if (true && ['none', '0px'].includes(computedStyle.maxHeight)) {\n            console.warn(\n              'No maxHeight CSS property set for textarea with max-auto-height'\n            )\n          }\n\n          showScrollbars = maxHeight !== 0\n          return maxHeight || Infinity\n        }\n\n        return Infinity\n      }\n\n      if (!autoHeight || !node.context) return\n\n      whenAvailable(\n        node.context.id,\n        () => {\n          inputElement = node.props.__root?.getElementById(\n            node?.context?.id ? node.context.id : ''\n          )\n          if (!(inputElement instanceof HTMLTextAreaElement)) return\n\n          const minAutoHeight = getMinAutoHeight()\n          const maxAutoHeight = getMaxAutoHeight()\n\n          if (!document.getElementById('formkit-auto-height-textarea-style')) {\n            const scrollbarStyle = document.createElement('style')\n            scrollbarStyle.setAttribute(\n              'id',\n              'formkit-auto-height-textarea-style'\n            )\n            scrollbarStyle.textContent = `.formkit-auto-height-textarea { scrollbar-width: none; } .formkit-auto-height-textarea::-webkit-scrollbar { display: none; }`\n            document.body.appendChild(scrollbarStyle)\n          }\n\n          const hiddenTextarea = inputElement.cloneNode(\n            false\n          ) as HTMLTextAreaElement\n          hiddenTextarea.classList.add('formkit-auto-height-textarea')\n          if (!showScrollbars) {\n            inputElement.classList.add('formkit-auto-height-textarea')\n          }\n\n          hiddenTextarea.setAttribute(\n            'style',\n            'height: 0; min-height: 0; pointer-events: none; opacity: 0;  left: -9999px; padding-top: 0; padding-bottom: 0; position: absolute; display: block; top: 0; z-index: -1; scrollbar-width: none;'\n          )\n\n          hiddenTextarea.setAttribute('aria-hidden', 'true')\n          hiddenTextarea.setAttribute('tabindex', '-1')\n\n          hiddenTextarea.removeAttribute('name')\n          hiddenTextarea.removeAttribute('id')\n          hiddenTextarea.removeAttribute('aria-describedby')\n\n          const isBorderBox =\n            getComputedStyle(inputElement).boxSizing === 'border-box'\n          const paddingY =\n            parseInt(getComputedStyle(inputElement).paddingTop) +\n            parseInt(getComputedStyle(inputElement).paddingBottom)\n\n          const paddingX =\n            parseInt(getComputedStyle(inputElement).paddingTop) +\n            parseInt(getComputedStyle(inputElement).paddingBottom)\n          let lastValue = node._value\n\n          inputElement.after(hiddenTextarea)\n          calculateHeight({ payload: node._value as string })\n\n          node.on('input', calculateHeight)\n          async function calculateHeight({ payload }: { payload: string }) {\n            lastValue = payload\n            if (!inputElement) return\n            await new Promise((r) => setTimeout(r, 10))\n\n            // If the current value is not the one we enqueued, just ignore.\n            if (lastValue !== payload) return\n\n            hiddenTextarea.value = payload\n\n            const width = isBorderBox\n              ? inputElement.offsetWidth\n              : inputElement.offsetWidth - paddingX\n            hiddenTextarea.style.width = `${width}px`\n\n            const scrollHeight = hiddenTextarea.scrollHeight\n            const height = isBorderBox ? scrollHeight + paddingY : scrollHeight\n\n            const h = Math.min(\n              Math.max(height, minAutoHeight),\n              maxAutoHeight || Infinity\n            )\n\n            if (!inputElement.style.height) {\n              inputElement.style.height = `0px`\n            }\n            inputElement.style.minHeight = `${h}px`\n          }\n        },\n        node.props.__root\n      )\n    })\n  }\n\n  return autoHeightTextareaPlugin\n}\n","import { FormKitSectionsSchema } from '@formkit/core'\nimport { FormKitNode, FormKitPlugin } from '@formkit/core'\nimport { clone, undefine } from '@formkit/utils'\n\n/**\n * The options to be passed to {@link createMaxLengthCountdownPlugin | createMaxLengthCountdownPlugin}\n *\n * useAsDefault: boolean - If true, the plugin will be used as default for all designated fields with a maxlength attribute,\n *                       unless the field has the maxlengthCountdown prop set to false\n * remainingText: string - The text to be displayed after the remaining characters count in the tooltip.\n *                       Can be overriden by setting the maxlengthRemainingText prop on the field\n * fieldTypes: string[] - The field types to apply the plugin to, default is only textarea\n *\n * @public\n */\nexport interface MaxlengthCountdownOptions {\n  useAsDefault?: boolean\n  remainingText?: string\n  fieldTypes?: string[]\n}\n\n/**\n * Creates a textarea max length countdown in the suffix container\n *\n * @param MaxlengthCountdownOptions - The options of {@link MaxlengthCountdownOptions | MaxlengthCountdownOptions} to pass to the plugin\n *\n * @returns A {@link @formkit/core#FormKitPlugin | FormKitPlugin}\n *\n * @public\n */\nexport function createMaxLengthCountdownPlugin(\n  MaxlengthCountdownOptions?: MaxlengthCountdownOptions\n): FormKitPlugin {\n  return (node: FormKitNode) => {\n    node.addProps([\n      'maxlengthCountdown',\n      'maxlengthRemainingText',\n      'maxlengthStringCount',\n    ])\n\n    let usePlugin = MaxlengthCountdownOptions?.useAsDefault === true\n\n    let allowedTypes = MaxlengthCountdownOptions?.fieldTypes || ['textarea']\n    if (typeof allowedTypes === 'string') allowedTypes = [allowedTypes]\n    if (!allowedTypes.includes(node.props.type)) {\n      usePlugin = false\n    }\n\n    // ALLOW OVERRIDES FOR NON-DEFAULT FIELDS IF EXPLICITLY SET\n    if (\n      undefine(node.props.maxlengthCountdown) ||\n      node.props.maxlengthCountdown === 'true' ||\n      node.props.maxlengthCountdown === true\n    ) {\n      usePlugin = true\n    }\n\n    if (usePlugin) {\n      node.on('created', () => {\n        if (!node.props || !node.props.definition) return\n        if (node.props.attrs.maxlength === undefined) return\n\n        if (\n          node.props.attrs.maxlength &&\n          parseInt(node.props.attrs.maxlength) > 0\n        ) {\n          const inputDefinition = clone(node.props.definition)\n          const originalSchema = inputDefinition.schema\n          if (typeof originalSchema !== 'function') return\n\n          const higherOrderSchema = (extensions: FormKitSectionsSchema) => {\n            extensions.suffix = {\n              if: 'true',\n              children: [\n                {\n                  $el: 'span',\n                  attrs: {\n                    class: '$classes.inputMaxlengthRemaining',\n                  },\n                  children: [\n                    `$maxlengthStringCount`,\n                    {\n                      $el: 'span',\n                      children: `$maxlengthStringCount + ' ' + $maxlengthRemainingText`,\n                      class: '$classes.inputMaxlengthRemainingHover',\n                    },\n                  ],\n                },\n                \"$suffix || ''\",\n              ],\n            }\n\n            return originalSchema(extensions)\n          }\n\n          inputDefinition.schema = higherOrderSchema\n          if (inputDefinition.schemaMemoKey) {\n            inputDefinition.schemaMemoKey += '-maxlength-remaining'\n          }\n          node.props.definition = inputDefinition\n          node.props.maxlengthRemainingText =\n            node.props.maxlengthRemainingText ||\n            MaxlengthCountdownOptions?.remainingText ||\n            'remaining characters'\n\n          const maxlength = parseInt(node.props.attrs.maxlength)\n\n          updateCountValue({ payload: node._value as string })\n          node.on('input', updateCountValue)\n\n          function updateCountValue({ payload }: { payload: string }) {\n            node.props.maxlengthStringCount = Math.max(\n              0,\n              maxlength - (payload ? payload.length : 0)\n            )\n          }\n        }\n      })\n    }\n  }\n}\n"]}