Sha256: 6fe58e12979e358550790e283c10b7ec889293fdf3fa76c17bf0abfd90ec43c8
Contents?: true
Size: 1.61 KB
Versions: 12
Compression:
Stored size: 1.61 KB
Contents
require 'glimmer/dsl/parent_expression' require 'glimmer/web/component' module Glimmer module DSL module Web class ComponentExpression < Expression include ParentExpression def can_interpret?(parent, keyword, *args, &block) Glimmer::Web::Component.for(keyword) end def interpret(parent, keyword, *args, &block) component_class = Glimmer::Web::Component.for(keyword) component_class.new(parent, args, {}, &block) end def add_content(parent, keyword, *args, &block) options = args.last.is_a?(Hash) ? args.last : {} slot = options[:slot] || options['slot'] slot = slot.to_s unless slot.nil? # TODO consider avoiding source_location since it does not work in Opal if block.source_location && (block.source_location == parent.content&.__getobj__&.source_location) parent.content.call(parent) unless parent.content.called? else if slot if slot == 'markup_root_slot' super(parent, keyword, *args, &block) else slot_element = parent.slot_elements[slot] slot_element&.content(&block) end else if parent.default_slot slot = parent.default_slot slot_element = parent.slot_elements[slot] slot_element&.content(&block) else super(parent, keyword, *args, &block) end end end parent.post_add_content end end end end end
Version data entries
12 entries across 12 versions & 1 rubygems