/**
 * Copyright (c) 2019, WSO2 Inc. (http://www.wso2.org)  Apache License, Version 2.0  http://www.apache.org/licenses/LICENSE-2.0
 */
requirejs.config({
    baseUrl: 'editor',
    paths: {
        lib: "commons/lib",
        app: "js",
        commons_app: "commons",
        /////////////////////////
        // third party modules //
        ////////////////////////
        remarkable:"commons/lib/remarkable/remarkable.min",
        handlebar: "commons/lib/handlebar/handlebars-v4.0.11.min",
        jquery: "commons/lib/jquery_v1.9.1/jquery-1.9.1.min",
        yaml: "commons/lib/js-yaml/js-yaml",
        jquery_ui: "commons/lib/jquery-ui_v1.12.1/jquery-ui.min",
        bootstrap: "commons/lib/theme-wso2-2.0.0/js/bootstrap.min",
        dagre: "commons/lib/dagre-0.7.4/dagre.min",
        dragSelect: "commons/lib/dragSelect/ds.min",
        jquery_validate: "commons/lib/jquery_validate/jquery.validate.min",
        jquery_timepicker: "commons/lib/jquery_timepicker/jquery-ui-timepicker-addon.min",
        log4javascript: "commons/lib/log4javascript-1.4.13/log4javascript",
        lodash: "commons/lib/lodash_v4.13.1/lodash.min",
        backbone: "commons/lib/backbone_v1.3.3/backbone.min",
        file_saver: "commons/lib/file_saver/FileSaver",
        mousetrap: "commons/lib/mousetrap_v1.6.0/mousetrap.min",
        jquery_mousewheel: "commons/lib/jquery-mousewheel_v3.1.13/jquery.mousewheel.min",
        jquery_context_menu: "commons/lib/context-menu_v2.4.2/jquery.contextMenu.min",
        js_tree: "commons/lib/js-tree-v3.3.8/jstree.min",
        render_json: "commons/lib/renderjson/renderjson",
        nano_scroller: "commons/lib/nanoscroller_0.8.7/jquery.nanoscroller.min",
        perfect_scrollbar: "commons/lib/perfect-scrollbar-1.4.0/perfect-scrollbar.min",
        theme_wso2: "commons/lib/theme-wso2-2.0.0/js/theme-wso2.min",
        ace: "commons/lib/ace-editor",
        overlay_scroller: "commons/lib/overlay_scroll/js/jquery.overlayScrollbars.min",
        datatables: "commons/lib/data-table/jquery.dataTables.min",
        datatables_bootstrap: "commons/lib/data-table/dataTables.bootstrap.min",
        datatables_wso2: "commons/lib/theme-wso2-2.0.0/extensions/datatables/js/dataTables.wso2",
        enjoyhint: "commons/lib/enjoyhint/enjoyhint.min",
        smart_wizard: "commons/lib/smartWizard/js/jquery.smartWizard.min",
        pagination: "commons/lib/pagination/pagination.min",
        cronstrue: "commons/lib/cronstrue/cronstrue.min",
        //beautify: "commons/lib/beautify",
        ///////////////////////
        // custom modules ////
        //////////////////////
        log: "commons/js/log/log",
        version: "js/version/version",
        menu_bar: "commons/js/menu-bar/menu-bar",
        tool_bar: "commons/js/tool-bar/tool-bar",
        context_menu: "commons/js/context-menu/context-menu",
        tool_palette: "js/design-view/tool-palette",
        tab: "js/tab/",
        toolEditor: "js/tool-editor/module",
        command: "commons/js/command/command",
        alerts: "commons/js/utils/alerts",
        workspace: "commons/js/workspace/workspace",
        event_channel: "commons/js/event/channel",
        menu_group: "commons/js/menu-bar/menu-group",
        menu_definitions: "commons/js/menu-bar/menu-definitions",
        file_menu: "commons/js/menu-bar/file-menu",
        edit_menu: "commons/js/menu-bar/edit-menu",
        run_menu: "commons/js/menu-bar/run-menu",
        tools_menu: "commons/js/menu-bar/tools-menu",
        deploy_menu: "commons/js/menu-bar/deploy-menu",
        export_menu: "commons/js/menu-bar/export-menu",
        menu_item: "commons/js/menu-bar/menu-item",
        file_browser: "commons/js/file-browser/file-browser",
        undo_manager: "commons/js/undo-manager/undo-manager",
        launcher: "js/launcher/launcher",
        launch_manager: "js/launcher/launch-manager",
        undoable_operation_factory: "commons/js/undo-manager/undoable-operation-factory",
        source_modify_operation: "commons/js/undo-manager/source-modify-operation",
        undoable_operation: "commons/js/undo-manager/undoable-operation",
        sample_preview: "js/sample-preview/sample-preview-view",
        sample_view: "js/sample-view/sample-view",
        output_console_list: "js/output-console/console-list",
        console: "js/output-console/console",
        service_console: "js/output-console/service-console-manager",
        debugger_console: "js/debugger/debugger",
        design_view: "js/design-view/design-view",
        initialiseData: "js/design-view/initialise-data",
        jsonValidator: "js/design-view/JSON-validator",
        designViewGrid: "js/design-view/design-grid",
        designViewUtils: "js/design-view/util/design-view-utils",
        dropElements: "js/design-view/drop-elements",
        configurationData: "js/design-view/configuration-data/configuration-data",
        appData: "js/design-view/configuration-data/app-data",
        elementUtils: "js/design-view/elements/element-utils",
        formBuilder: "js/design-view/form-builder/form-builder",
        formUtils: "js/design-view/form-builder/form-utils",
        sourceForm: "js/design-view/form-builder/forms/source-form",
        sinkForm: "js/design-view/form-builder/forms/sink-form",
        streamForm: "js/design-view/form-builder/forms/stream-form",
        tableForm: "js/design-view/form-builder/forms/table-form",
        windowForm: "js/design-view/form-builder/forms/window-form",
        aggregationForm: "js/design-view/form-builder/forms/aggregation-form",
        triggerForm: "js/design-view/form-builder/forms/trigger-form",
        windowFilterProjectionQueryForm: "js/design-view/form-builder/forms/window-filter-projection-query-form",
        patternQueryForm: "js/design-view/form-builder/forms/pattern-query-form",
        sequenceQueryForm: "js/design-view/form-builder/forms/sequence-query-form",
        joinQueryForm: "js/design-view/form-builder/forms/join-query-form",
        partitionForm: "js/design-view/form-builder/forms/partition-form",
        functionForm: "js/design-view/form-builder/forms/function-form",
        appAnnotationForm: "js/design-view/form-builder/forms/app-annotation-form",
        guide: "js/guide/guide",
        utils: "commons/js/utils/utils",
        // element data holding objects starts here
        // annotations
        sourceOrSinkAnnotation: "js/design-view/elements/annotations/source-or-sink-annotation",
        mapAnnotation: "js/design-view/elements/annotations/map",
        storeAnnotation: "js/design-view/elements/annotations/store-annotation",
        payloadOrAttribute: "js/design-view/elements/annotations/source-or-sink-annotation-sub-elements/payload-or-attribute",
        annotationObject: "js/design-view/elements/annotation-object",
        annotationElement: "js/design-view/elements/annotation-element",
        // definitions
        stream: "js/design-view/elements/definitions/stream",
        table: "js/design-view/elements/definitions/table",
        window: "js/design-view/elements/definitions/window",
        trigger: "js/design-view/elements/definitions/trigger",
        aggregation: "js/design-view/elements/definitions/aggregation",
        functionDefinition: "js/design-view/elements/definitions/function",
        aggregateByTimePeriod: "js/design-view/elements/definitions/aggregation-definition-sub-elements/aggregate-by-time-period",
        // query sub elements
        querySelect: "js/design-view/elements/queries/query-sub-elements/query-select/query-select",
        queryOrderByValue: "js/design-view/elements/queries/query-sub-elements/query-orderBy/query-orderBy-value",
        queryOutput: "js/design-view/elements/queries/query-sub-elements/query-output/query-output",
        queryOutputInsert: "js/design-view/elements/queries/query-sub-elements/query-output/query-output-types/query-output-insert",
        queryOutputDelete: "js/design-view/elements/queries/query-sub-elements/query-output/query-output-types/query-output-delete",
        queryOutputUpdate: "js/design-view/elements/queries/query-sub-elements/query-output/query-output-types/query-output-update",
        queryOutputUpdateOrInsertInto: "js/design-view/elements/queries/query-sub-elements/query-output/query-output-types/query-output-update-or-insert-into",
        // queries
        joinQuerySource: "js/design-view/elements/queries/query-sub-elements/query-input/join-query-input/sub-elements/join-query-source",
        joinQueryInput: "js/design-view/elements/queries/query-sub-elements/query-input/join-query-input/join-query-input",
        partition: "js/design-view/elements/partitions/partition",
        partitionWith: "js/design-view/elements/partitions/partition-sub-elements/partition-with",
        patternOrSequenceQueryInput: "js/design-view/elements/queries/query-sub-elements/query-input/pattern-or-sequence-query-input/pattern-or-sequence-query-input",
        patternOrSequenceQueryCondition: "js/design-view/elements/queries/query-sub-elements/query-input/pattern-or-sequence-query-input/sub-elements/pattern-or-sequence-query-condition",
        windowFilterProjectionQueryInput: "js/design-view/elements/queries/query-sub-elements/query-input/window-filter-projection-query/window-filter-projection-query-input",
        queryWindowOrFunction: "js/design-view/elements/queries/query-sub-elements/query-input/query-window-or-function",
        streamHandler: "js/design-view/elements/queries/query-sub-elements/query-input/stream-handler",
        query: "js/design-view/elements/queries/query",
        edge: "js/design-view/configuration-data/edge",
        annotation: "js/design-view/elements/annotation",
        attribute: "js/design-view/elements/attribute",
        // element data holding objects ends here
        //constants
        constants: "js/design-view/constants",
        guideConstants: "js/guide/constants",
        templateAppDialog: "js/export-deployment-artifacts/template-app-dialog",
        jarsSelectorDialog: "js/export-deployment-artifacts/jars-selector-dialog",
        siddhiAppSelectorDialog: "js/export-deployment-artifacts/siddhiapp-selector-dialog",
        templateConfigDialog: "js/export-deployment-artifacts/template-config-dialog",
        templateConfigBlocks: "js/export-deployment-artifacts/template-config-blocks",
        dockerConfigDialog: "js/export-deployment-artifacts/docker-config-dialog",
        dockerImageTypeDialog: "js/export-deployment-artifacts/docker-image-type-dialog",
        fillTemplateValueDialog: "js/export-deployment-artifacts/fill-template-value-dialog",
        kubernetesConfigDialog: "js/export-deployment-artifacts/kubernetes-config-dialog",
        // ETL Wizard Components  <-- start
        etlWizard: "js/etl-wizard/etl-wizard",
        etlWizardUtil: "js/etl-wizard/etl-wizard-util",
        inputOptionConfigurator: "js/etl-wizard/input-option-configurator/input-option-configurator",
        filterInputOptionComponent: "js/etl-wizard/input-option-configurator/input-option-components/filter-input-option",
        windowInputOptionComponent: "js/etl-wizard/input-option-configurator/input-option-components/window-input-option",
        functionInputOptionComponent: "js/etl-wizard/input-option-configurator/input-option-components/function-input-option",
        csvMapper: "js/etl-wizard/source-sink-mappers/csv-mapper",
        xmlMapper: "js/etl-wizard/source-sink-mappers/xml-mapper",
        jsonMapper: "js/etl-wizard/source-sink-mappers/json-mapper",
        textMapper: "js/etl-wizard/source-sink-mappers/text-mapper",
        avroMapper: "js/etl-wizard/source-sink-mappers/avro-mapper",
        inputOutputMapper: "js/etl-wizard/source-sink-mappers/source-sink-mapper",
        // Datamapper components
        scopeModel: "js/etl-wizard/data-mapper-component/models/ScopeModel",
        operatorModel: "js/etl-wizard/data-mapper-component/models/OperatorModel",
        functionModel: "js/etl-wizard/data-mapper-component/models/FunctionModel",
        customValueModel: "js/etl-wizard/data-mapper-component/models/CustomValueModel",
        attributeModel: "js/etl-wizard/data-mapper-component/models/AttributeModel",
        dataMapper: "js/etl-wizard/data-mapper-component/data-mapper",
        dataMapperUtil: "js/etl-wizard/data-mapper-component/util/data-mapper-util",
        // output option configurator components for ETL Wizard
        outputConfigurator: "js/etl-wizard/output-option-configurator/output-configurator",
        groupByConfigurator:"js/etl-wizard/output-option-configurator/components/group-by-component",
        orderByConfigurator:"js/etl-wizard/output-option-configurator/components/order-by-component",
        advancedOutputConfiguration:"js/etl-wizard/output-option-configurator/components/advanced-output-options-component",
        // ETL Wizard Components  <-- end
        cronGenerator: "js/design-view/cron-generator/cron-generator",
        asyncAPI: "js/async-api/async-api",
        asyncAPIGenerator: "js/async-api/async-api-generator",
        asyncApiDefinition: "js/async-api/artifacts/async-api-definition-dialog",
        asyncApiSourceSinkSelect: "js/async-api/artifacts/async-api-source-sink-select-dialog",
        siddhiElementBrowser: "js/async-api/siddhi-element-browser",
    },
    map: {
        "*": {
            // use lodash instead of underscore
            underscore: "lodash",
            jQuery: "jquery",
            'datatables.net': "datatables"
        }
    },
    packages: [
        {
            name: 'welcome-page',
            location: 'commons/js/welcome-page',
            main: 'module'
        },
        {
            name: 'tab',
            location: 'js/tab',
            main: 'module'
        },
        {
            name: 'workspace',
            location: 'commons/js/workspace',
            main: 'module'
        },
        {
            name: 'dialogs',
            location: 'commons/js/dialog',
            main: 'module'
        },
        {
            name: 'event_simulator',
            location: 'js/event-simulator',
            main: 'module'
        },
        {
            name: 'operator_finder',
            location: 'js/operator-finder',
            main: 'module'
        },
        {
            name: 'template_deploy',
            location: 'js/template-deploy',
            main: 'module'
        }
    ]
});
