Sha256: 436a7e672df326df5244b8e12ebfe3d345ec43aa271a2cff314fe8e5a63f5f74
Contents?: true
Size: 1.91 KB
Versions: 1
Compression:
Stored size: 1.91 KB
Contents
module React module Component class Styles def initialize(native, props_prop = false) @native = native @props_prop = props_prop end def [](prop) method_missing(prop) end def []=(prop, val) method_missing(prop, val) end def deep_merge(a_hash) native_hash = a_hash.to_n React::Component::Styles.new(`Opal.React.merge_deep(#@native, native_hash)`) end def deep_merge!(a_hash) native_hash = a_hash.to_n `#@native = Opal.React.merge_deep(#@native, native_hash)` self end def method_missing(prop, *args, &block) %x{ let value; if (#@props_prop) { if (!#@native.props[#@props_prop] || typeof #@native.props[#@props_prop][prop] === 'undefined') { console.warn("Style/Theme key '" + prop + "' returning nil!"); return #{nil}; } value = #@native.props[#@props_prop][prop]; } else { if (!#@native || typeof #@native[prop] === 'undefined') { console.warn("Style/Theme key '" + prop + "' returning nil!"); return #{nil}; } value = #@native[prop]; } if (typeof value === 'string' || typeof value === 'number' || Array.isArray(value)) { return value; } if (typeof value === 'function') { return value.apply(#@native, args); } return Opal.React.Component.Styles.$new(value); } end def to_h %x{ if (#@props_prop) { return Opal.Hash.$new(#@native.props[#@props_prop]); } else { return Opal.Hash.$new(#@native); } } end def to_n %x{ if (#@props_prop) { return #@native.props[#@props_prop]; } else { return #@native; } } end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
isomorfeus-react-16.13.12 | lib/react/component/styles.rb |