class Maglev::Content::Link

def active?

def active?
  link[:link_type] == 'page' && link[:link_id] == page.id
end

def href

def href
  link[:href] || '#'
end

def link

def link
  @link ||= if content.is_a?(String)
              { href: content, link_type: 'url', open_new_window: false }
            elsif content
              content
            else
              {}
            end.symbolize_keys
end

def open_new_window?

def open_new_window?
  !!link[:open_new_window]
end

def tag(view_context, options = {}, &block)

def tag(view_context, options = {}, &block)
  captured_content = view_context.capture(&block) if block_given?
  view_context.link_to(
    captured_content || text_tag(view_context),
    href,
    {
      data: (options.delete(:data) || {}).merge(tag_data),
      target: target_blank
    }.merge(options)
  )
end

def target_blank

def target_blank
  open_new_window? ? '_blank' : nil
end

def text

def text
  link[:text]
end

def text_tag(view_context)

rubocop:disable Rails/OutputSafety
def text_tag(view_context)
  view_context.tag.span(text, **{ data: { maglev_id: "#{tag_id}.text" } }).html_safe
end

def to_s

def to_s
  href
end

def with_text?

def with_text?
  !!setting.options[:with_text]
end