mirror of
https://github.com/Sendouc/sendou.ink.git
synced 2026-05-09 20:30:54 -05:00
92 lines
2.0 KiB
TypeScript
92 lines
2.0 KiB
TypeScript
/* eslint-disable */
|
|
// @ts-nocheck
|
|
|
|
//
|
|
// From: https://github.com/intergi/pw-react-component
|
|
//
|
|
|
|
import React from "react";
|
|
import store from "./store";
|
|
|
|
window.ramp = window.ramp || {};
|
|
window.ramp.que = window.ramp.que || [];
|
|
|
|
const inPageUnits = [
|
|
"leaderboard_atf",
|
|
"leaderboard_btf",
|
|
"med_rect_atf",
|
|
"med_rect_btf",
|
|
"sky_atf",
|
|
"sky_btf",
|
|
];
|
|
|
|
// find a new unique element ID to place this ad
|
|
const getUniqueId = (type) => {
|
|
return store.getUnitId(type);
|
|
};
|
|
|
|
// sets up the object and adds a selectorId if necessary
|
|
const getInitialUnit = (props) => {
|
|
const unit = {
|
|
type: props.type,
|
|
};
|
|
if (inPageUnits.includes(props.type)) {
|
|
unit.selectorId = getUniqueId(props.type);
|
|
}
|
|
return unit;
|
|
};
|
|
|
|
// destroy the unit when componenent unmounts
|
|
const cleanUp = (parentId) => {
|
|
// possible that component was removed before first ad was created
|
|
if (!window.ramp.settings || !window.ramp.settings.slots) return;
|
|
|
|
let slotToRemove = null;
|
|
Object.entries(window.ramp.settings.slots).forEach(([slotName, slot]) => {
|
|
if (
|
|
slot.element &&
|
|
slot.element.parentElement &&
|
|
slot.element.parentElement.id === parentId
|
|
) {
|
|
slotToRemove = slotName;
|
|
}
|
|
});
|
|
|
|
if (slotToRemove) {
|
|
window.ramp.destroyUnits(slotToRemove);
|
|
}
|
|
};
|
|
|
|
export default class RampUnit extends React.Component {
|
|
constructor(props) {
|
|
super(props);
|
|
this.rendered = false;
|
|
this.unitToAdd = getInitialUnit(props);
|
|
}
|
|
componentDidMount() {
|
|
if (this.rendered) return;
|
|
|
|
this.rendered = true;
|
|
window.ramp.que.push(() => {
|
|
window.ramp
|
|
.addUnits([this.unitToAdd])
|
|
.catch((e) => {
|
|
console.warn(e);
|
|
})
|
|
.finally(() => {
|
|
window.ramp.displayUnits();
|
|
});
|
|
});
|
|
}
|
|
componentWillUnmount() {
|
|
window.ramp.que.push(() => {
|
|
cleanUp(this.unitToAdd.selectorId);
|
|
});
|
|
}
|
|
render() {
|
|
return (
|
|
<div id={this.unitToAdd.selectorId} className={this.props.cssClass}></div>
|
|
);
|
|
}
|
|
}
|