infamous
Version:
A CSS3D/WebGL UI library.
132 lines (103 loc) • 3.67 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.mapPropTo = exports.props = void 0;
var _skatejs = require("@trusktr/skatejs");
var _three = require("three");
var _XYZValues = _interopRequireDefault(require("./XYZValues"));
var _XYZNumberValues = _interopRequireDefault(require("./XYZNumberValues"));
var _XYZNonNegativeValues = _interopRequireDefault(require("./XYZNonNegativeValues"));
var _XYZStringValues = _interopRequireDefault(require("./XYZStringValues"));
var _XYZSizeModeValues = _interopRequireDefault(require("./XYZSizeModeValues"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _objectSpread(target) {
for (var i = 1; i < arguments.length; i++) {
var source = arguments[i] != null ? arguments[i] : {};
var ownKeys = Object.keys(source);
if (typeof Object.getOwnPropertySymbols === 'function') {
ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {
return Object.getOwnPropertyDescriptor(source, sym).enumerable;
}));
}
ownKeys.forEach(function (key) {
_defineProperty(target, key, source[key]);
});
}
return target;
}
function _defineProperty(obj, key, value) {
if (key in obj) {
Object.defineProperty(obj, key, {
value: value,
enumerable: true,
configurable: true,
writable: true
});
} else {
obj[key] = value;
}
return obj;
}
function createXYZPropType(Type, override = {}) {
return _objectSpread({
attribute: {
source: true,
target: false
},
// get the value from an attribute (but don't mirror it back)
coerce(val, propName) {
return val === this.element[propName] ? val : this.element[propName].from(val);
},
default(propName) {
return this.element[propName];
},
deserialize(val, propName) {
return this.element[propName].fromString(val);
},
serialize(val, propName) {
this.element[propName].toString();
}
}, override);
}
function createGenericPropType(Type, override = {}) {
return _objectSpread({
attribute: {
source: true,
target: false
},
// get the value from an attribute (but don't mirror it back)
coerce: val => val instanceof Type ? val : new Type(val),
default: new Type(),
deserialize: val => new Type(val),
serialize: val => val.toString()
}, override);
}
const props = Object.assign({}, _skatejs.props, {
boolean: _objectSpread({}, _skatejs.props.boolean, {
deserialize: val => val != null && val !== 'false'
}),
THREE: {
// TODO replace THREE.Color with a persistent object that can be
// dynamically updated, like with XYZValues
Color: createGenericPropType(_three.Color, {
default: () => new _three.Color(Math.random(), Math.random(), Math.random()),
serialize: val => new _three.Color(val).getStyle() // returns a CSS "rbg()" string
})
},
XYZValues: createXYZPropType(_XYZValues.default),
XYZNumberValues: createXYZPropType(_XYZNumberValues.default),
XYZNonNegativeValues: createXYZPropType(_XYZNonNegativeValues.default),
XYZStringValues: createXYZPropType(_XYZStringValues.default),
XYZSizeModeValues: createXYZPropType(_XYZSizeModeValues.default)
}); // map a SkateJS prop value to a sub-object on the instance
exports.props = props;
const mapPropTo = (prop, subObj) => _objectSpread({}, prop, {
coerce(val, key) {
return this[subObj][key] = prop.coerce(val);
},
deserialize(val, key) {
return this[subObj][key] = prop.deserialize(val);
}
});
exports.mapPropTo = mapPropTo;
;