{% macro includeJs(fieldId, fieldType = "Twigfield", wrapperClass = "", editorOptions = {}, twigfieldOptions = {}) %}
    {# @var \craft\web\AssetBundle bundle #}
    {% set bundle = view.registerAssetBundle("nystudio107\\twigfield\\assetbundles\\twigfield\\TwigfieldAsset") %}
    {% css %}
        @font-face {
        font-family: "codicon-override";
        src: url("{{ bundle.baseUrl }}/fonts/codicon.ttf") format("truetype");
        }
    {% endcss %}
    {% js at head %}
    window.twigfieldBaseAssetsUrl = "{{ bundle.baseUrl }}/";
    {% endjs %}
    {% js %}
    makeMonacoEditor("{{ (fieldId)|namespaceInputId }}", "{{ fieldType }}", "{{ wrapperClass }}", '{{ editorOptions | json_encode | raw }}', '{{ twigfieldOptions | json_encode | raw }}', "{{ alias('@twigfieldEndpointUrl') }}");
    {% endjs %}
{% endmacro %}

{% macro textareaField(config, fieldType = "Twigfield", wrapperClass = "", editorOptions = {}) %}
    {% import "_includes/forms" as forms %}
    {{ forms.textareaField(config) }}
    {{ _self.includeJs(config.id, fieldType, wrapperClass, editorOptions) }}
{% endmacro %}

{% macro textarea(config, fieldType = "Twigfield", wrapperClass = "", editorOptions = {}) %}
    {% import "_includes/forms" as forms %}
    {{ forms.textarea(config) }}
    {{ _self.includeJs(config.id, fieldType, wrapperClass, editorOptions) }}
{% endmacro %}

{% macro textField(config, fieldType = "Twigfield", wrapperClass = "", editorOptions = {}) %}
    {% import "_includes/forms" as forms %}
    {{ forms.textField(config) }}
    {% set twigfieldOptions = {
        singleLineEditor: true,
    } %}
    {{ _self.includeJs(config.id, fieldType, wrapperClass, editorOptions, twigfieldOptions) }}
{% endmacro %}

{% macro text(config, fieldType = "Twigfield", wrapperClass = "", editorOptions = {}) %}
    {% import "_includes/forms" as forms %}
    {{ forms.text(config) }}
    {% set twigfieldOptions = {
        singleLineEditor: true,
    } %}
    {{ _self.includeJs(config.id, fieldType, wrapperClass, editorOptions, twigfieldOptions) }}
{% endmacro %}
