171 lines
3.4 KiB
TypeScript
171 lines
3.4 KiB
TypeScript
/*
|
|
* Copyright [2019] [Doric.Pub]
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
import { Modeling } from "./types";
|
|
|
|
enum ValueType {
|
|
Undefined = 0,
|
|
Point = 1,
|
|
Percent = 2,
|
|
Auto = 3,
|
|
}
|
|
|
|
export class FlexTypedValue implements Modeling {
|
|
|
|
type: ValueType
|
|
value = 0
|
|
constructor(type: ValueType) {
|
|
this.type = type
|
|
}
|
|
|
|
static Auto = new FlexTypedValue(ValueType.Auto)
|
|
|
|
static percent(v: number) {
|
|
const ret = new FlexTypedValue(ValueType.Percent)
|
|
ret.value = v
|
|
return ret
|
|
}
|
|
|
|
static point(v: number) {
|
|
const ret = new FlexTypedValue(ValueType.Point)
|
|
ret.value = v
|
|
return ret
|
|
}
|
|
|
|
toModel() {
|
|
return {
|
|
type: this.type,
|
|
value: this.value,
|
|
}
|
|
}
|
|
}
|
|
|
|
export enum FlexDirection {
|
|
COLUMN = 0,
|
|
COLUMN_REVERSE = 1,
|
|
ROW = 2,
|
|
ROW_REVERSE = 3,
|
|
}
|
|
|
|
export enum Align {
|
|
AUTO = 0,
|
|
FLEX_START = 1,
|
|
CENTER = 2,
|
|
FLEX_END = 3,
|
|
STRETCH = 4,
|
|
BASELINE = 5,
|
|
SPACE_BETWEEN = 6,
|
|
SPACE_AROUND = 7,
|
|
}
|
|
|
|
export enum Justify {
|
|
FLEX_START = 0,
|
|
CENTER = 1,
|
|
FLEX_END = 2,
|
|
SPACE_BETWEEN = 3,
|
|
SPACE_AROUND = 4,
|
|
SPACE_EVENLY = 5,
|
|
}
|
|
|
|
export enum Direction {
|
|
INHERIT = 0,
|
|
LTR = 1,
|
|
RTL = 2,
|
|
}
|
|
|
|
export enum PositionType {
|
|
RELATIVE = 0,
|
|
ABSOLUTE = 1,
|
|
}
|
|
export enum Wrap {
|
|
NO_WRAP = 0,
|
|
WRAP = 1,
|
|
WRAP_REVERSE = 2,
|
|
}
|
|
export enum OverFlow {
|
|
VISIBLE = 0,
|
|
HIDDEN = 1,
|
|
SCROLL = 2,
|
|
}
|
|
|
|
export enum Display {
|
|
FLEX = 0,
|
|
NONE = 1,
|
|
}
|
|
export type FlexValue = FlexTypedValue | number
|
|
|
|
export interface FlexConfig {
|
|
direction?: Direction
|
|
flexDirection?: FlexDirection
|
|
justifyContent?: Justify
|
|
alignContent?: Align
|
|
alignItems?: Align
|
|
alignSelf?: Align
|
|
positionType?: PositionType
|
|
flexWrap?: Wrap
|
|
overFlow?: OverFlow
|
|
display?: Display
|
|
flex?: number
|
|
flexGrow?: number
|
|
flexShrink?: number
|
|
flexBasis?: FlexValue
|
|
|
|
marginLeft?: FlexValue
|
|
marginRight?: FlexValue
|
|
marginTop?: FlexValue
|
|
marginBottom?: FlexValue
|
|
marginStart?: FlexValue
|
|
marginEnd?: FlexValue
|
|
marginHorizontal?: FlexValue
|
|
marginVertical?: FlexValue
|
|
margin?: FlexValue
|
|
|
|
paddingLeft?: FlexValue
|
|
paddingRight?: FlexValue
|
|
paddingTop?: FlexValue
|
|
paddingBottom?: FlexValue
|
|
paddingStart?: FlexValue
|
|
paddingEnd?: FlexValue
|
|
paddingHorizontal?: FlexValue
|
|
paddingVertical?: FlexValue
|
|
padding?: FlexValue
|
|
|
|
|
|
borderLeftWidth?: number
|
|
borderRightWidth?: number
|
|
borderTopWidth?: number
|
|
borderBottomWidth?: number
|
|
borderStartWidth?: number
|
|
borderEndWidth?: number
|
|
borderWidth?: number
|
|
|
|
left?: FlexValue
|
|
right?: FlexValue
|
|
top?: FlexValue
|
|
bottom?: FlexValue
|
|
start?: FlexValue
|
|
end?: FlexValue
|
|
|
|
width?: FlexValue
|
|
height?: FlexValue
|
|
|
|
minWidth?: FlexValue
|
|
minHeight?: FlexValue
|
|
|
|
maxWidth?: FlexValue
|
|
maxHeight?: FlexValue
|
|
|
|
aspectRatio?: number
|
|
} |