services:
    '@enhavo/vue-form/form/FormFactory':
        chunk: 'app'
        from: '@enhavo/vue-form/form/FormFactory'
        import: FormFactory
        arguments:
            - '@enhavo/vue-form/form/FormEventDispatcher'
        tags:
            - { name: vue.service, service: 'formFactory' }

    '@enhavo/vue-form/form/FormEventDispatcher':
        chunk: 'app'
        from: '@enhavo/vue-form/form/FormEventDispatcher'
        import: FormEventDispatcher
        tags:
            - { name: vue.service, service: 'formEventDispatcher' }

    '@enhavo/vue-form/model/CheckboxForm':
        chunk: 'app'
        from: '@enhavo/vue-form/model/CheckboxForm'
        import: CheckboxForm
        tags:
            - { name: form.model }

    '@enhavo/vue-form/model/RadioForm':
        chunk: 'app'
        from: '@enhavo/vue-form/model/RadioForm'
        import: RadioForm
        tags:
            - { name: form.model }

    '@enhavo/vue-form/model/ChoiceForm':
        from: '@enhavo/vue-form/model/ChoiceForm'
        import: ChoiceForm
        chunk: 'app'
        tags:
            - { name: form.model }

    '@enhavo/vue-form/components/FormChoiceComponent.vue':
        static: true
        chunk: 'app'
        tags:
            - { name: vue.component, component: 'form-choice' }

    '@enhavo/vue-form/components/FormChoiceExpandedComponent.vue':
        static: true
        chunk: 'app'
        tags:
            - { name: vue.component, component: 'form-choice-expanded' }

    '@enhavo/vue-form/components/FormChoiceCollapsedComponent.vue':
        static: true
        chunk: 'app'
        tags:
            - { name: vue.component, component: 'form-choice-collapsed' }

    '@enhavo/vue-form/components/FormChoiceOptionComponent.vue':
        static: true
        chunk: 'app'
        tags:
            - { name: vue.component, component: 'form-choice-option' }

    '@enhavo/vue-form/components/FormChoiceOptgroupComponent.vue':
        static: true
        chunk: 'app'
        tags:
            - { name: vue.component, component: 'form-choice-optgroup' }

    '@enhavo/vue-form/components/FormCompoundWidgetComponent.vue':
        static: true
        chunk: 'app'
        tags:
            - { name: vue.component, component: 'form-compound-widget' }

    '@enhavo/vue-form/components/FormErrorsComponent.vue':
        static: true
        chunk: 'app'
        tags:
            - { name: vue.component, component: 'form-errors' }

    '@enhavo/vue-form/components/FormRowComponent.vue':
        static: true
        chunk: 'app'
        tags:
            - { name: vue.component, component: 'form-row' }

    '@enhavo/vue-form/components/FormRowsComponent.vue':
        static: true
        chunk: 'app'
        tags:
            - { name: vue.component, component: 'form-rows' }

    '@enhavo/vue-form/components/FormFormComponent.vue':
        static: true
        chunk: 'app'
        tags:
            - { name: vue.component, component: 'form-form' }

    '@enhavo/vue-form/components/FormHelpComponent.vue':
        static: true
        chunk: 'app'
        tags:
            - { name: vue.component, component: 'form-help' }

    '@enhavo/vue-form/components/FormSimpleComponent.vue':
        static: true
        chunk: 'app'
        tags:
            - { name: vue.component, component: 'form-simple' }

    '@enhavo/vue-form/components/FormLabelComponent.vue':
        static: true
        chunk: 'app'
        tags:
            - { name: vue.component, component: 'form-label' }

    '@enhavo/vue-form/components/FormTextareaComponent.vue':
        static: true
        chunk: 'app'
        tags:
            - { name: vue.component, component: 'form-textarea' }

    '@enhavo/vue-form/components/FormWidgetComponent.vue':
        static: true
        chunk: 'app'
        tags:
            - { name: vue.component, component: 'form-widget' }

    '@enhavo/vue-form/components/FormRadioComponent.vue':
        static: true
        chunk: 'app'
        tags:
            - { name: vue.component, component: 'form-radio' }

    '@enhavo/vue-form/components/FormCheckboxComponent.vue':
        static: true
        chunk: 'app'
        tags:
            - { name: vue.component, component: 'form-checkbox' }

    '@enhavo/vue-form/components/FormButtonComponent.vue':
        static: true
        chunk: 'app'
        tags:
            - { name: vue.component, component: 'form-button' }

    '@enhavo/vue-form/components/FormSubmitComponent.vue':
        static: true
        chunk: 'app'
        tags:
            - { name: vue.component, component: 'form-submit' }

    '@enhavo/vue-form/components/FormButtonRowComponent.vue':
        static: true
        chunk: 'app'
        tags:
            - { name: vue.component, component: 'form-button-row' }

    '@enhavo/vue-form/components/FormHiddenRowComponent.vue':
        static: true
        chunk: 'app'
        tags:
            - { name: vue.component, component: 'form-hidden-row' }

    '@enhavo/app/controllers/FormController':
        static: true
        chunk: 'app'
        tags:
            - { name: stimulus.controller, key: 'form' }

compiler_pass:
    vue-form-visitor:
        path: '@enhavo/app/compiler-pass/registry.js'
        service: '@enhavo/vue-form/form/FormFactory'
        method: addVisitor
        tag: 'form.visitor'

    vue-form-theme:
        path: '@enhavo/app/compiler-pass/registry.js'
        service: '@enhavo/vue-form/form/FormFactory'
        method: addTheme
        tag: 'form.theme'

    vue-form-model:
        path: '@enhavo/app/compiler-pass/form-model-register.js'
