dcl-ui-toolkit
Version:
A collection of UI helpers to make it easier to build a Decentraland scene using the SDK 7.
92 lines • 14.2 kB
JavaScript
import ReactEcs, { UiEntity } from '@dcl/sdk/react-ecs';
import { UIObject } from '../UIObject';
import { getImageAtlasMapping } from '../../utils/imageUtils';
var IconSize;
(function (IconSize) {
IconSize[IconSize["small"] = 32] = "small";
IconSize[IconSize["medium"] = 64] = "medium";
IconSize[IconSize["large"] = 128] = "large";
})(IconSize || (IconSize = {}));
const iconInitialConfig = {
startHidden: true,
image: '',
width: 128,
height: 128,
xOffset: 0,
yOffset: 0,
};
export class Icon extends UIObject {
constructor({ section, initial = iconInitialConfig, startHidden = initial.startHidden, image = initial.image, width = initial.width, height = initial.height, xOffset = initial.xOffset, yOffset = initial.yOffset, }) {
super({ startHidden });
this.image = image;
this.width = width;
this.height = height;
this.xOffset = xOffset;
this.yOffset = yOffset;
if (section)
this.section = section;
this.imageElement = {
uiBackground: {
textureMode: 'stretch',
},
uiTransform: {
positionType: 'absolute',
},
};
}
render(key) {
return (ReactEcs.createElement(UiEntity, { key: key, ...this.imageElement, uiBackground: {
...this.imageElement.uiBackground,
texture: {
src: this.image,
},
uvs: getImageAtlasMapping(this.section),
}, uiTransform: {
...this.imageElement.uiTransform,
width: this.width,
height: this.height,
display: this.visible ? 'flex' : 'none',
position: { bottom: this.yOffset, right: this.xOffset * -1 },
} }));
}
}
const smallIconInitialConfig = {
startHidden: true,
image: '',
width: IconSize.small,
height: IconSize.small,
xOffset: -30,
yOffset: 50,
};
export class SmallIcon extends Icon {
constructor(config) {
super({ ...config, initial: smallIconInitialConfig });
}
}
const mediumIconInitialConfig = {
startHidden: true,
image: '',
width: IconSize.medium,
height: IconSize.medium,
xOffset: -30,
yOffset: 50,
};
export class MediumIcon extends Icon {
constructor(config) {
super({ ...config, initial: mediumIconInitialConfig });
}
}
const largeIconInitialConfig = {
startHidden: true,
image: '',
width: IconSize.large,
height: IconSize.large,
xOffset: -30,
yOffset: 50,
};
export class LargeIcon extends Icon {
constructor(config) {
super({ ...config, initial: largeIconInitialConfig });
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdWktZW50aXRpZXMvSWNvbi9pbmRleC50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxRQUFRLEVBQUUsRUFBRSxRQUFRLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUd2RCxPQUFPLEVBQUUsUUFBUSxFQUFrQixNQUFNLGFBQWEsQ0FBQTtBQUV0RCxPQUFPLEVBQUUsb0JBQW9CLEVBQWtCLE1BQU0sd0JBQXdCLENBQUE7QUF1QjdFLElBQUssUUFJSjtBQUpELFdBQUssUUFBUTtJQUNYLDBDQUFZLENBQUE7SUFDWiw0Q0FBYSxDQUFBO0lBQ2IsMkNBQWEsQ0FBQTtBQUNmLENBQUMsRUFKSSxRQUFRLEtBQVIsUUFBUSxRQUlaO0FBRUQsTUFBTSxpQkFBaUIsR0FBMEM7SUFDL0QsV0FBVyxFQUFFLElBQUk7SUFDakIsS0FBSyxFQUFFLEVBQUU7SUFDVCxLQUFLLEVBQUUsR0FBRztJQUNWLE1BQU0sRUFBRSxHQUFHO0lBQ1gsT0FBTyxFQUFFLENBQUM7SUFDVixPQUFPLEVBQUUsQ0FBQztDQUNGLENBQUE7QUFjVixNQUFNLE9BQU8sSUFBSyxTQUFRLFFBQVE7SUFVaEMsWUFBWSxFQUNWLE9BQU8sRUFDUCxPQUFPLEdBQUcsaUJBQWlCLEVBQzNCLFdBQVcsR0FBRyxPQUFPLENBQUMsV0FBVyxFQUNqQyxLQUFLLEdBQUcsT0FBTyxDQUFDLEtBQUssRUFDckIsS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLEVBQ3JCLE1BQU0sR0FBRyxPQUFPLENBQUMsTUFBTSxFQUN2QixPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sRUFDekIsT0FBTyxHQUFHLE9BQU8sQ0FBQyxPQUFPLEdBQ007UUFDL0IsS0FBSyxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQTtRQUV0QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQTtRQUNsQixJQUFJLENBQUMsS0FBSyxHQUFH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QUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdEVjcywgeyBVaUVudGl0eSB9IGZyb20gJ0BkY2wvc2RrL3JlYWN0LWVjcydcbmltcG9ydCB7IEVudGl0eVByb3BUeXBlcyB9IGZyb20gJ0BkY2wvcmVhY3QtZWNzL2Rpc3QvY29tcG9uZW50cy90eXBlcydcblxuaW1wb3J0IHsgVUlPYmplY3QsIFVJT2JqZWN0Q29uZmlnIH0gZnJvbSAnLi4vVUlPYmplY3QnXG5cbmltcG9ydCB7IGdldEltYWdlQXRsYXNNYXBwaW5nLCBJbWFnZUF0bGFzRGF0YSB9IGZyb20gJy4uLy4uL3V0aWxzL2ltYWdlVXRpbHMnXG5cbmV4cG9ydCB0eXBlIEljb25JbWFnZUVsZW1lbnQgPSBPbWl0PEVudGl0eVByb3BUeXBlcywgJ3VpVHJhbnNmb3JtJyB8ICd1aUJhY2tncm91bmQnPiAmIHtcbiAgdWlUcmFuc2Zvcm0/OiBPbWl0PFxuICAgIE5vbk51bGxhYmxlPEVudGl0eVByb3BUeXBlc1sndWlUcmFuc2Zvcm0nXT4sXG4gICAgJ2Rpc3BsYXknIHwgJ3Bvc2l0aW9uJyB8ICd3aWR0aCcgfCAnaGVpZ2h0J1xuICA+XG4gIHVpQmFja2dyb3VuZD86IE9taXQ8Tm9uTnVsbGFibGU8RW50aXR5UHJvcFR5cGVzWyd1aUJhY2tncm91bmQnXT4sICd0ZXh0dXJlJyB8ICd1dnMnPlxufVxuXG5leHBvcnQgdHlwZSBJY29uQ29uZmlnID0gVUlPYmplY3RDb25maWcgJiB7XG4gIGltYWdlOiBzdHJpbmdcbiAgd2lkdGg/OiBudW1iZXJcbiAgaGVpZ2h0PzogbnVtYmVyXG4gIHhPZmZzZXQ/OiBudW1iZXJcbiAgeU9mZnNldD86IG51bWJlclxuICBzZWN0aW9uPzogSW1hZ2VBdGxhc0RhdGFcbn1cblxuZXhwb3J0IHR5cGUgSWNvbkluaXRpYWxDb25maWcgPSB7XG4gIGluaXRpYWw/OiBPbWl0PFJlcXVpcmVkPEljb25Db25maWc+LCAnc2VjdGlvbic+XG59XG5cbmVudW0gSWNvblNpemUge1xuICAnc21hbGwnID0gMzIsXG4gICdtZWRpdW0nID0gNjQsXG4gICdsYXJnZScgPSAxMjgsXG59XG5cbmNvbnN0IGljb25Jbml0aWFsQ29uZmlnOiBPbWl0PFJlcXVpcmVkPEljb25Db25maWc+LCAnc2VjdGlvbic+ID0ge1xuICBzdGFydEhpZGRlbjogdHJ1ZSxcbiAgaW1hZ2U6ICcnLFxuICB3aWR0aDogMTI4LFxuICBoZWlnaHQ6IDEyOCxcbiAgeE9mZnNldDogMCxcbiAgeU9mZnNldDogMCxcbn0gYXMgY29uc3RcblxuLyoqXG4gKiBEaXNwbGF5cyBhbiBpY29uIGluIHRoZSBib3R0b20tbGVmdCBjb3JuZXIuXG4gKlxuICogQHBhcmFtIHtib29sZWFufSBbc3RhcnRIaWRkZW49dHJ1ZV0gc3RhcnRpbmcgaGlkZGVuXG4gKiBAcGFyYW0ge3N0cmluZ30gaW1hZ2UgcGF0aCB0byBpbWFnZSBmaWxlXG4gKiBAcGFyYW0ge251bWJlcn0gW3dpZHRoPTEyOF0gaW1hZ2Ugd2lkdGhcbiAqIEBwYXJhbSB7bnVtYmVyfSBbaGVpZ2h0PTEyOF0gaW1hZ2UgaGVpZ2h0XG4gKiBAcGFyYW0ge251bWJlcn0gW3hPZmZzZXQ9MF0gb2Zmc2V0IG9uIFhcbiAqIEBwYXJhbSB7bnVtYmVyfSBbeU9mZnNldD0wXSBvZmZzZXQgb24gWVxuICogQHBhcmFtIHtJbWFnZUF0bGFzRGF0YX0gc2VjdGlvbiBjdXQgb3V0IGEgc2VjdGlvbiBvZiB0aGUgaW1hZ2UsIGFzIGFuIG9iamVjdCBzcGVjaWZ5aW5nIGF0bGFzV2lkdGgsIGF0bGFzSGVpZ2h0LCBzb3VyY2VMZWZ0LCBzb3VyY2VUb3AsIHNvdXJjZVdpZHRoIGFuZCBzb3VyY2VIZWlnaHRcbiAqXG4gKi9cbmV4cG9ydCBjbGFzcyBJY29uIGV4dGVuZHMgVUlPYmplY3Qge1xuICBwdWJsaWMgaW1hZ2VFbGVtZW50OiBJY29uSW1hZ2VFbGVtZW50XG5cbiAgcHVibGljIGltYWdlOiBzdHJpbmdcbiAgcHVibGljIHdpZHRoOiBudW1iZXJcbiAgcHVibGljIGhlaWdodDogbnVtYmVyXG4gIHB1YmxpYyB4T2Zmc2V0OiBudW1iZXJcbiAgcHVibGljIHlPZmZzZXQ6IG51bWJlclxuICBwdWJsaWMgc2VjdGlvbjogSW1hZ2VBdGxhc0RhdGEgfCB1bmRlZmluZWRcblxuICBjb25zdHJ1Y3Rvcih7XG4gICAgc2VjdGlvbixcbiAgICBpbml0aWFsID0gaWNvbkluaXRpYWxDb25maWcsXG4gICAgc3RhcnRIaWRkZW4gPSBpbml0aWFsLnN0YXJ0SGlkZGVuLFxuICAgIGltYWdlID0gaW5pdGlhbC5pbWFnZSxcbiAgICB3aWR0aCA9IGluaXRpYWwud2lkdGgsXG4gICAgaGVpZ2h0ID0gaW5pdGlhbC5oZWlnaHQsXG4gICAgeE9mZnNldCA9IGluaXRpYWwueE9mZnNldCxcbiAgICB5T2Zmc2V0ID0gaW5pdGlhbC55T2Zmc2V0LFxuICB9OiBJY29uQ29uZmlnICYgSWNvbkluaXRpYWxDb25maWcpIHtcbiAgICBzdXBlcih7IHN0YXJ0SGlkZGVuIH0pXG5cbiAgICB0aGlzLmltYWdlID0gaW1hZ2VcbiAgICB0aGlzLndpZHRoID0gd2lkdGhcbiAgICB0aGlzLmhlaWdodCA9IGhlaWdodFxuICAgIHRoaXMueE9mZnNldCA9IHhPZmZzZXRcbiAgICB0aGlzLnlPZmZzZXQgPSB5T2Zmc2V0XG4gICAgaWYgKHNlY3Rpb24pIHRoaXMuc2VjdGlvbiA9IHNlY3Rpb25cblxuICAgIHRoaXMuaW1hZ2VFbGVtZW50ID0ge1xuICAgICAgdWlCYWNrZ3JvdW5kOiB7XG4gICAgICAgIHRleHR1cmVNb2RlOiAnc3RyZXRjaCcsXG4gICAgICB9LFxuICAgICAgdWlUcmFuc2Zvcm06IHtcbiAgICAgICAgcG9zaXRpb25UeXBlOiAnYWJzb2x1dGUnLFxuICAgICAgfSxcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgcmVuZGVyKGtleT86IHN0cmluZyk6IFJlYWN0RWNzLkpTWC5FbGVtZW50IHtcbiAgICByZXR1cm4gKFxuICAgICAgPFVpRW50aXR5XG4gICAgICAgIGtleT17a2V5fVxuICAgICAgICB7Li4udGhpcy5pbWFnZUVsZW1lbnR9XG4gICAgICAgIHVpQmFja2dyb3VuZD17e1xuICAgICAgICAgIC4uLnRoaXMuaW1hZ2VFbGVtZW50LnVpQmFja2dyb3VuZCxcbiAgICAgICAgICB0ZXh0dXJlOiB7XG4gICAgICAgICAgICBzcmM6IHRoaXMuaW1hZ2UsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB1dnM6IGdldEltYWdlQXRsYXNNYXBwaW5nKHRoaXMuc2VjdGlvbiksXG4gICAgICAgIH19XG4gICAgICAgIHVpVHJhbnNmb3JtPXt7XG4gICAgICAgICAgLi4udGhpcy5pbWFnZUVsZW1lbnQudWlUcmFuc2Zvcm0sXG4gICAgICAgICAgd2lkdGg6IHRoaXMud2lkdGgsXG4gICAgICAgICAgaGVpZ2h0OiB0aGlzLmhlaWdodCxcbiAgICAgICAgICBkaXNwbGF5OiB0aGlzLnZpc2libGUgPyAnZmxleCcgOiAnbm9uZScsXG4gICAgICAgICAgcG9zaXRpb246IHsgYm90dG9tOiB0aGlzLnlPZmZzZXQsIHJpZ2h0OiB0aGlzLnhPZmZzZXQgKiAtMSB9LFxuICAgICAgICB9fVxuICAgICAgLz5cbiAgICApXG4gIH1cbn1cblxuY29uc3Qgc21hbGxJY29uSW5pdGlhbENvbmZpZzogT21pdDxSZXF1aXJlZDxJY29uQ29uZmlnPiwgJ3NlY3Rpb24nPiA9IHtcbiAgc3RhcnRIaWRkZW46IHRydWUsXG4gIGltYWdlOiAnJyxcbiAgd2lkdGg6IEljb25TaXplLnNtYWxsLFxuICBoZWlnaHQ6IEljb25TaXplLnNtYWxsLFxuICB4T2Zmc2V0OiAtMzAsXG4gIHlPZmZzZXQ6IDUwLFxufSBhcyBjb25zdFxuXG4vKipcbiAqIERpc3BsYXlzIGFuIGljb24gb2YgMzJ4MzIgaW4gdGhlIGJvdHRvbS1sZWZ0IGNvcm5lci5cbiAqXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtzdGFydEhpZGRlbj1mYWxzZV0gc3RhcnRpbmcgaGlkZGVuXG4gKiBAcGFyYW0ge3N0cmluZ30gaW1hZ2UgcGF0aCB0byBpbWFnZSBmaWxlXG4gKiBAcGFyYW0ge251bWJlcn0gW3dpZHRoPTMyXSBpbWFnZSB3aWR0aFxuICogQHBhcmFtIHtudW1iZXJ9IFtoZWlnaHQ9MzJdIGltYWdlIGhlaWdodFxuICogQHBhcmFtIHtudW1iZXJ9IFt4T2Zmc2V0PS0zMF0gb2Zmc2V0IG9uIFhcbiAqIEBwYXJhbSB7bnVtYmVyfSBbeU9mZnNldD01MF0gb2Zmc2V0IG9uIFlcbiAqIEBwYXJhbSB7SW1hZ2VBdGxhc0RhdGF9IHNlY3Rpb24gY3V0IG91dCBhIHNlY3Rpb24gb2YgdGhlIGltYWdlLCBhcyBhbiBvYmplY3Qgc3BlY2lmeWluZyBhdGxhc1dpZHRoLCBhdGxhc0hlaWdodCwgc291cmNlTGVmdCwgc291cmNlVG9wLCBzb3VyY2VXaWR0aCBhbmQgc291cmNlSGVpZ2h0XG4gKlxuICovXG5leHBvcnQgY2xhc3MgU21hbGxJY29uIGV4dGVuZHMgSWNvbiB7XG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogSWNvbkNvbmZpZykge1xuICAgIHN1cGVyKHsgLi4uY29uZmlnLCBpbml0aWFsOiBzbWFsbEljb25Jbml0aWFsQ29uZmlnIH0pXG4gIH1cbn1cblxuY29uc3QgbWVkaXVtSWNvbkluaXRpYWxDb25maWc6IE9taXQ8UmVxdWlyZWQ8SWNvbkNvbmZpZz4sICdzZWN0aW9uJz4gPSB7XG4gIHN0YXJ0SGlkZGVuOiB0cnVlLFxuICBpbWFnZTogJycsXG4gIHdpZHRoOiBJY29uU2l6ZS5tZWRpdW0sXG4gIGhlaWdodDogSWNvblNpemUubWVkaXVtLFxuICB4T2Zmc2V0OiAtMzAsXG4gIHlPZmZzZXQ6IDUwLFxufSBhcyBjb25zdFxuXG4vKipcbiAqIERpc3BsYXlzIGFuIGljb24gb2YgNjR4NjQgaW4gdGhlIGJvdHRvbS1sZWZ0IGNvcm5lci5cbiAqXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtzdGFydEhpZGRlbj1mYWxzZV0gc3RhcnRpbmcgaGlkZGVuXG4gKiBAcGFyYW0ge3N0cmluZ30gaW1hZ2UgcGF0aCB0byBpbWFnZSBmaWxlXG4gKiBAcGFyYW0ge251bWJlcn0gW3dpZHRoPTY0XSBpbWFnZSB3aWR0aFxuICogQHBhcmFtIHtudW1iZXJ9IFtoZWlnaHQ9NjRdIGltYWdlIGhlaWdodFxuICogQHBhcmFtIHtudW1iZXJ9IFt4T2Zmc2V0PS0zMF0gb2Zmc2V0IG9uIFhcbiAqIEBwYXJhbSB7bnVtYmVyfSBbeU9mZnNldD01MF0gb2Zmc2V0IG9uIFlcbiAqIEBwYXJhbSB7SW1hZ2VBdGxhc0RhdGF9IHNlY3Rpb24gY3V0IG91dCBhIHNlY3Rpb24gb2YgdGhlIGltYWdlLCBhcyBhbiBvYmplY3Qgc3BlY2lmeWluZyBhdGxhc1dpZHRoLCBhdGxhc0hlaWdodCwgc291cmNlTGVmdCwgc291cmNlVG9wLCBzb3VyY2VXaWR0aCBhbmQgc291cmNlSGVpZ2h0XG4gKlxuICovXG5leHBvcnQgY2xhc3MgTWVkaXVtSWNvbiBleHRlbmRzIEljb24ge1xuICBjb25zdHJ1Y3Rvcihjb25maWc6IEljb25Db25maWcpIHtcbiAgICBzdXBlcih7IC4uLmNvbmZpZywgaW5pdGlhbDogbWVkaXVtSWNvbkluaXRpYWxDb25maWcgfSlcbiAgfVxufVxuXG5jb25zdCBsYXJnZUljb25Jbml0aWFsQ29uZmlnOiBPbWl0PFJlcXVpcmVkPEljb25Db25maWc+LCAnc2VjdGlvbic+ID0ge1xuICBzdGFydEhpZGRlbjogdHJ1ZSxcbiAgaW1hZ2U6ICcnLFxuICB3aWR0aDogSWNvblNpemUubGFyZ2UsXG4gIGhlaWdodDogSWNvblNpemUubGFyZ2UsXG4gIHhPZmZzZXQ6IC0zMCxcbiAgeU9mZnNldDogNTAsXG59IGFzIGNvbnN0XG5cbi8qKlxuICogRGlzcGxheXMgYW4gaWNvbiBvZiAxMjh4MTI4IGluIHRoZSBib3R0b20tbGVmdCBjb3JuZXIuXG4gKlxuICogQHBhcmFtIHtib29sZWFufSBbc3RhcnRIaWRkZW49ZmFsc2VdIHN0YXJ0aW5nIGhpZGRlblxuICogQHBhcmFtIHtzdHJpbmd9IGltYWdlIHBhdGggdG8gaW1hZ2UgZmlsZVxuICogQHBhcmFtIHtudW1iZXJ9IFt3aWR0aD0xMjhdIGltYWdlIHdpZHRoXG4gKiBAcGFyYW0ge251bWJlcn0gW2hlaWdodD0xMjhdIGltYWdlIGhlaWdodFxuICogQHBhcmFtIHtudW1iZXJ9IFt4T2Zmc2V0PS0zMF0gb2Zmc2V0IG9uIFhcbiAqIEBwYXJhbSB7bnVtYmVyfSBbeU9mZnNldD01MF0gb2Zmc2V0IG9uIFlcbiAqIEBwYXJhbSB7SW1hZ2VBdGxhc0RhdGF9IHNlY3Rpb24gY3V0IG91dCBhIHNlY3Rpb24gb2YgdGhlIGltYWdlLCBhcyBhbiBvYmplY3Qgc3BlY2lmeWluZyBhdGxhc1dpZHRoLCBhdGxhc0hlaWdodCwgc291cmNlTGVmdCwgc291cmNlVG9wLCBzb3VyY2VXaWR0aCBhbmQgc291cmNlSGVpZ2h0XG4gKlxuICovXG5leHBvcnQgY2xhc3MgTGFyZ2VJY29uIGV4dGVuZHMgSWNvbiB7XG4gIGNvbnN0cnVjdG9yKGNvbmZpZzogSWNvbkNvbmZpZykge1xuICAgIHN1cGVyKHsgLi4uY29uZmlnLCBpbml0aWFsOiBsYXJnZUljb25Jbml0aWFsQ29uZmlnIH0pXG4gIH1cbn1cbiJdfQ==