Summary: Changelog: [Internal] Fabric-specific internal change. This diff introduces a new value for `YGPositionType`: `YGPositionTypeStatic`. No part of Yoga, RN, Litho or CK uses this value yet. `relative` and `static` values behave the same way for now. We also do not change any defaults. So, it should be fine. Reviewed By: SidharthGuglani Differential Revision: D22386732 fbshipit-source-id: 39cd9e818458ac2a91efb175f24a74c8c303ff08
255 lines
7.6 KiB
JavaScript
255 lines
7.6 KiB
JavaScript
/**
|
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*/
|
|
|
|
function toValueCs(value) {
|
|
var n = value.toString().replace('px','').replace('%','');
|
|
return n + (Number(n) == n && n % 1 !== 0 ? 'f' : '');
|
|
}
|
|
|
|
function toCsUnitValue(value) {
|
|
var methodName = '';
|
|
if (value.indexOf('%') >= 0){
|
|
methodName = '.Percent()';
|
|
}
|
|
if(value.indexOf('Auto') >= 0){
|
|
return 'YogaValue.Auto()';
|
|
}
|
|
return toValueCs(value) + methodName;
|
|
}
|
|
|
|
var CSEmitter = function() {
|
|
Emitter.call(this, 'cs', ' ');
|
|
};
|
|
|
|
CSEmitter.prototype = Object.create(Emitter.prototype, {
|
|
constructor:{value:CSEmitter},
|
|
|
|
emitPrologue:{value:function() {
|
|
this.push([
|
|
'using System;',
|
|
'using NUnit.Framework;',
|
|
'',
|
|
'namespace Facebook.Yoga',
|
|
'{',
|
|
]);
|
|
this.pushIndent();
|
|
this.push([
|
|
'[TestFixture]',
|
|
'public class YogaTest',
|
|
'{',
|
|
]);
|
|
this.pushIndent();
|
|
}},
|
|
|
|
emitTestPrologue:{value:function(name, experiments) {
|
|
this.push('[Test]');
|
|
this.push('public void Test_' + name + '()');
|
|
this.push('{');
|
|
this.pushIndent();
|
|
|
|
this.push('YogaConfig config = new YogaConfig();')
|
|
for (var i in experiments) {
|
|
this.push('config.SetExperimentalFeatureEnabled(YogaExperimentalFeature.' + experiments[i] +', true);');
|
|
}
|
|
this.push('');
|
|
}},
|
|
|
|
emitTestTreePrologue:{value:function(nodeName) {
|
|
this.push('YogaNode ' + nodeName + ' = new YogaNode(config);');
|
|
}},
|
|
|
|
emitTestEpilogue:{value:function(experiments) {
|
|
|
|
this.popIndent();
|
|
this.push([
|
|
'}',
|
|
'',
|
|
]);
|
|
}},
|
|
|
|
emitEpilogue:{value:function(lines) {
|
|
this.popIndent();
|
|
this.push('}');
|
|
this.popIndent();
|
|
this.push([
|
|
'}',
|
|
'',
|
|
]);
|
|
}},
|
|
|
|
AssertEQ:{value:function(v0, v1) {
|
|
this.push('Assert.AreEqual(' + v0 + 'f, ' + v1 + ');');
|
|
}},
|
|
|
|
YGAlignAuto:{value:'YogaAlign.Auto'},
|
|
YGAlignCenter:{value:'YogaAlign.Center'},
|
|
YGAlignFlexEnd:{value:'YogaAlign.FlexEnd'},
|
|
YGAlignFlexStart:{value:'YogaAlign.FlexStart'},
|
|
YGAlignStretch:{value:'YogaAlign.Stretch'},
|
|
YGAlignSpaceBetween:{value:'YogaAlign.SpaceBetween'},
|
|
YGAlignSpaceAround:{value:'YogaAlign.SpaceAround'},
|
|
YGAlignBaseline:{value:'YogaAlign.Baseline'},
|
|
|
|
YGDirectionInherit:{value:'YogaDirection.Inherit'},
|
|
YGDirectionLTR:{value:'YogaDirection.LTR'},
|
|
YGDirectionRTL:{value:'YogaDirection.RTL'},
|
|
|
|
YGEdgeBottom:{value:'Bottom'},
|
|
YGEdgeEnd:{value:'End'},
|
|
YGEdgeLeft:{value:'Left'},
|
|
YGEdgeRight:{value:'Right'},
|
|
YGEdgeStart:{value:'Start'},
|
|
YGEdgeTop:{value:'Top'},
|
|
|
|
YGFlexDirectionColumn:{value:'YogaFlexDirection.Column'},
|
|
YGFlexDirectionColumnReverse:{value:'YogaFlexDirection.ColumnReverse'},
|
|
YGFlexDirectionRow:{value:'YogaFlexDirection.Row'},
|
|
YGFlexDirectionRowReverse:{value:'YogaFlexDirection.RowReverse'},
|
|
|
|
YGJustifyCenter:{value:'YogaJustify.Center'},
|
|
YGJustifyFlexEnd:{value:'YogaJustify.FlexEnd'},
|
|
YGJustifyFlexStart:{value:'YogaJustify.FlexStart'},
|
|
YGJustifySpaceAround:{value:'YogaJustify.SpaceAround'},
|
|
YGJustifySpaceBetween:{value:'YogaJustify.SpaceBetween'},
|
|
YGJustifySpaceEvenly:{value:'YogaJustify.SpaceEvenly'},
|
|
|
|
YGOverflowHidden:{value:'YogaOverflow.Hidden'},
|
|
YGOverflowVisible:{value:'YogaOverflow.Visible'},
|
|
|
|
YGPositionTypeAbsolute:{value:'YogaPositionType.Static'},
|
|
YGPositionTypeRelative:{value:'YogaPositionType.Relative'},
|
|
YGPositionTypeAbsolute:{value:'YogaPositionType.Absolute'},
|
|
|
|
YGUndefined:{value:'YogaConstants.Undefined'},
|
|
|
|
YGAuto:{value:'YogaConstants.Auto'},
|
|
|
|
YGDisplayFlex:{value:'YogaDisplay.Flex'},
|
|
YGDisplayNone:{value:'YogaDisplay.None'},
|
|
|
|
YGWrapNoWrap:{value:'YogaWrap.NoWrap'},
|
|
YGWrapWrap:{value:'YogaWrap.Wrap'},
|
|
YGWrapWrapReverse:{value: 'YogaWrap.WrapReverse'},
|
|
|
|
YGNodeCalculateLayout:{value:function(node, dir, experiments) {
|
|
this.push(node + '.StyleDirection = ' + dir + ';');
|
|
this.push(node + '.CalculateLayout();');
|
|
}},
|
|
|
|
YGNodeInsertChild:{value:function(parentName, nodeName, index) {
|
|
this.push(parentName + '.Insert(' + index + ', ' + nodeName + ');');
|
|
}},
|
|
|
|
YGNodeLayoutGetLeft:{value:function(nodeName) {
|
|
return nodeName + '.LayoutX';
|
|
}},
|
|
|
|
YGNodeLayoutGetTop:{value:function(nodeName) {
|
|
return nodeName + '.LayoutY';
|
|
}},
|
|
|
|
YGNodeLayoutGetWidth:{value:function(nodeName) {
|
|
return nodeName + '.LayoutWidth';
|
|
}},
|
|
|
|
YGNodeLayoutGetHeight:{value:function(nodeName) {
|
|
return nodeName + '.LayoutHeight';
|
|
}},
|
|
|
|
YGNodeStyleSetAlignContent:{value:function(nodeName, value) {
|
|
this.push(nodeName + '.AlignContent = ' + toValueCs(value) + ';');
|
|
}},
|
|
|
|
YGNodeStyleSetAlignItems:{value:function(nodeName, value) {
|
|
this.push(nodeName + '.AlignItems = ' + toValueCs(value) + ';');
|
|
}},
|
|
|
|
YGNodeStyleSetAlignSelf:{value:function(nodeName, value) {
|
|
this.push(nodeName + '.AlignSelf = ' + toValueCs(value) + ';');
|
|
}},
|
|
|
|
YGNodeStyleSetBorder:{value:function(nodeName, edge, value) {
|
|
this.push(nodeName + '.Border' + edge + 'Width = ' + toValueCs(value) + ';');
|
|
}},
|
|
|
|
YGNodeStyleSetDirection:{value:function(nodeName, value) {
|
|
this.push(nodeName + '.StyleDirection = ' + toValueCs(value) + ';');
|
|
}},
|
|
|
|
YGNodeStyleSetDisplay:{value:function(nodeName, value) {
|
|
this.push(nodeName + '.Display = ' + toValueCs(value) + ';');
|
|
}},
|
|
|
|
YGNodeStyleSetFlexBasis:{value:function(nodeName, value) {
|
|
this.push(nodeName + '.FlexBasis = ' + toCsUnitValue(value) + ';');
|
|
}},
|
|
|
|
YGNodeStyleSetFlexDirection:{value:function(nodeName, value) {
|
|
this.push(nodeName + '.FlexDirection = ' + toValueCs(value) + ';');
|
|
}},
|
|
|
|
YGNodeStyleSetFlexGrow:{value:function(nodeName, value) {
|
|
this.push(nodeName + '.FlexGrow = ' + toValueCs(value) + ';');
|
|
}},
|
|
|
|
YGNodeStyleSetFlexShrink:{value:function(nodeName, value) {
|
|
this.push(nodeName + '.FlexShrink = ' + toValueCs(value) + ';');
|
|
}},
|
|
|
|
YGNodeStyleSetFlexWrap:{value:function(nodeName, value) {
|
|
this.push(nodeName + '.Wrap = ' + toValueCs(value) + ';');
|
|
}},
|
|
|
|
YGNodeStyleSetHeight:{value:function(nodeName, value) {
|
|
this.push(nodeName + '.Height = ' + toCsUnitValue(value) + ';');
|
|
}},
|
|
|
|
YGNodeStyleSetJustifyContent:{value:function(nodeName, value) {
|
|
this.push(nodeName + '.JustifyContent = ' + toValueCs(value) + ';');
|
|
}},
|
|
|
|
YGNodeStyleSetMargin:{value:function(nodeName, edge, value) {
|
|
this.push(nodeName + '.Margin' + edge + ' = ' + toCsUnitValue(value) + ';');
|
|
}},
|
|
|
|
YGNodeStyleSetMaxHeight:{value:function(nodeName, value) {
|
|
this.push(nodeName + '.MaxHeight = ' + toCsUnitValue(value) + ';');
|
|
}},
|
|
|
|
YGNodeStyleSetMaxWidth:{value:function(nodeName, value) {
|
|
this.push(nodeName + '.MaxWidth = ' + toCsUnitValue(value) + ';');
|
|
}},
|
|
|
|
YGNodeStyleSetMinHeight:{value:function(nodeName, value) {
|
|
this.push(nodeName + '.MinHeight = ' + toCsUnitValue(value) + ';');
|
|
}},
|
|
|
|
YGNodeStyleSetMinWidth:{value:function(nodeName, value) {
|
|
this.push(nodeName + '.MinWidth = ' + toCsUnitValue(value) + ';');
|
|
}},
|
|
|
|
YGNodeStyleSetOverflow:{value:function(nodeName, value) {
|
|
this.push(nodeName + '.Overflow = ' + toValueCs(value) + ';');
|
|
}},
|
|
|
|
YGNodeStyleSetPadding:{value:function(nodeName, edge, value) {
|
|
this.push(nodeName + '.Padding' + edge + ' = ' + toCsUnitValue(value) + ';');
|
|
}},
|
|
|
|
YGNodeStyleSetPosition:{value:function(nodeName, edge, value) {
|
|
this.push(nodeName + '.' + edge + ' = ' + toCsUnitValue(value) + ';');
|
|
}},
|
|
|
|
YGNodeStyleSetPositionType:{value:function(nodeName, value) {
|
|
this.push(nodeName + '.PositionType = ' + toValueCs(value) + ';');
|
|
}},
|
|
|
|
YGNodeStyleSetWidth:{value:function(nodeName, value) {
|
|
this.push(nodeName + '.Width = ' + toCsUnitValue(value) + ';');
|
|
}},
|
|
});
|