class RailsModalManager::Generators::InstallGenerator

def add_importmap_pins

def add_importmap_pins
  return unless importmap?
  say "Adding importmap pins..."
  append_to_file "config/importmap.rb" do
    <<~RUBY
      # Rails Modal Manager
      pin "rails_modal_manager", to: "rails_modal_manager/index.js"
      pin "rails_modal_manager/modal_store", to: "rails_modal_manager/modal_store.js"
      pin "rails_modal_manager/history_stack_manager", to: "rails_modal_manager/history_stack_manager.js"
      pin "rails_modal_manager/controllers/rmm_modal_controller", to: "rails_modal_manager/controllers/rmm_modal_controller.js"
      pin "rails_modal_manager/controllers/rmm_overlay_controller", to: "rails_modal_manager/controllers/rmm_overlay_controller.js"
      pin "rails_modal_manager/controllers/rmm_header_controller", to: "rails_modal_manager/controllers/rmm_header_controller.js"
      pin "rails_modal_manager/controllers/rmm_sidebar_controller", to: "rails_modal_manager/controllers/rmm_sidebar_controller.js"
      pin "rails_modal_manager/controllers/rmm_submenu_controller", to: "rails_modal_manager/controllers/rmm_submenu_controller.js"
      pin "rails_modal_manager/controllers/rmm_taskbar_controller", to: "rails_modal_manager/controllers/rmm_taskbar_controller.js"
      pin "rails_modal_manager/controllers/rmm_resize_handle_controller", to: "rails_modal_manager/controllers/rmm_resize_handle_controller.js"
    RUBY
  end
end

def add_javascript

def add_javascript
  say "Adding JavaScript initialization..."
  append_to_file "app/javascript/application.js" do
    <<~JS
      // Rails Modal Manager
      import { registerRMMControllers, initHistoryStack } from "rails_modal_manager"
      registerRMMControllers(window.Stimulus)
      initHistoryStack()
    JS
  end
end

def add_stylesheet

def add_stylesheet
  say "Adding stylesheet import..."
  if File.exist?("app/assets/stylesheets/application.css")
    inject_into_file "app/assets/stylesheets/application.css", before: " */" do
      " *= require rails_modal_manager\n"
    end
  elsif File.exist?("app/assets/stylesheets/application.scss")
    append_to_file "app/assets/stylesheets/application.scss" do
      "\n@import \"rails_modal_manager\";\n"
    end
  end
end

def add_taskbar_partial

def add_taskbar_partial
  say "Creating taskbar partial..."
  create_file "app/views/layouts/_rmm_taskbar.html.erb", <<~ERB
    <%# Rails Modal Manager Taskbar %>
    <div class="rmm-taskbar"
         data-controller="rmm-taskbar"
         data-rmm-taskbar-target="container">
      <div class="rmm-taskbar-items" data-rmm-taskbar-target="items"></div>
    </div>
  ERB
end

def importmap?

def importmap?
  File.exist?("config/importmap.rb")
end

def show_post_install

def show_post_install
  say ""
  say "Rails Modal Manager installed successfully!", :green
  say ""
  say "Next steps:"
  say "  1. Add taskbar to your layout:"
  say "     <%= render 'layouts/rmm_taskbar' %>"
  say ""
  say "  2. Read the documentation:"
  say "     https://github.com/ordars/rails-modal-manager"
  say ""
end