This app provides monitoring and information features for the common freifunk user and the technical stuff of a freifunk community.
Code base is taken from a TUM Practical Course project and added here to see if Freifunk Altdorf can use it.
https://www.freifunk-altdorf.de
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
90 lines
2.5 KiB
90 lines
2.5 KiB
/** |
|
* Copyright (c) 2015-present, Facebook, Inc. |
|
* |
|
* This source code is licensed under the MIT license found in the |
|
* LICENSE file in the root directory of this source tree. |
|
* |
|
* @providesModule ImageBackground |
|
* @flow |
|
* @format |
|
*/ |
|
'use strict'; |
|
|
|
const Image = require('Image'); |
|
const React = require('React'); |
|
const StyleSheet = require('StyleSheet'); |
|
const View = require('View'); |
|
|
|
const ensureComponentIsNative = require('ensureComponentIsNative'); |
|
|
|
/** |
|
* Very simple drop-in replacement for <Image> which supports nesting views. |
|
* |
|
* ```ReactNativeWebPlayer |
|
* import React, { Component } from 'react'; |
|
* import { AppRegistry, View, ImageBackground, Text } from 'react-native'; |
|
* |
|
* class DisplayAnImageBackground extends Component { |
|
* render() { |
|
* return ( |
|
* <ImageBackground |
|
* style={{width: 50, height: 50}} |
|
* source={{uri: 'https://facebook.github.io/react-native/img/opengraph.png'}} |
|
* > |
|
* <Text>React</Text> |
|
* </ImageBackground> |
|
* ); |
|
* } |
|
* } |
|
* |
|
* // App registration and rendering |
|
* AppRegistry.registerComponent('DisplayAnImageBackground', () => DisplayAnImageBackground); |
|
* ``` |
|
*/ |
|
class ImageBackground extends React.Component<$FlowFixMeProps> { |
|
setNativeProps(props: Object) { |
|
// Work-around flow |
|
const viewRef = this._viewRef; |
|
if (viewRef) { |
|
ensureComponentIsNative(viewRef); |
|
viewRef.setNativeProps(props); |
|
} |
|
} |
|
|
|
_viewRef: ?React.ElementRef<typeof View> = null; |
|
|
|
_captureRef = ref => { |
|
this._viewRef = ref; |
|
}; |
|
|
|
render() { |
|
const {children, style, imageStyle, imageRef, ...props} = this.props; |
|
|
|
return ( |
|
<View style={style} ref={this._captureRef}> |
|
<Image |
|
{...props} |
|
style={[ |
|
StyleSheet.absoluteFill, |
|
{ |
|
// Temporary Workaround: |
|
// Current (imperfect yet) implementation of <Image> overwrites width and height styles |
|
// (which is not quite correct), and these styles conflict with explicitly set styles |
|
// of <ImageBackground> and with our internal layout model here. |
|
// So, we have to proxy/reapply these styles explicitly for actual <Image> component. |
|
// This workaround should be removed after implementing proper support of |
|
// intrinsic content size of the <Image>. |
|
width: style.width, |
|
height: style.height, |
|
}, |
|
imageStyle, |
|
]} |
|
ref={imageRef} |
|
/> |
|
{children} |
|
</View> |
|
); |
|
} |
|
} |
|
|
|
module.exports = ImageBackground;
|
|
|