var baseSegments = (function () {
'use strict';
var pearlID = '2020';
var template = '
{{# isPearl}}
LiveRamp Segments:
{{/isPearl}}
';
return newSegments;
function newSegments(d, cid, uf, bf) { return new Segments(d, cid, uf, bf); }
function mapSegmentID(seg) { return seg.getValue().id; }
function Segments(d, cid, uf, bf) {
var isPearl = uf.core.agencyID === pearlID,
e = getElementFromString(template, {isPearl: isPearl}),
lrSegs = e.querySelector('#lrSegs'),
items = getDataItems(d, d.lists.segments, isPearl),
lrSegsTC = lrSegs ? new TagContainer(lrSegs, { 'limit' : 2000, 'data' : items.lr }, lrSegUpdate) : null,
list = CheckboxListv2.New(e.firstChild, 'Select Segments', items.segs, segmentsUpdate, true);
this.getE = function () { return e; };
this.getActive = list.getActive;
this.toggleUserSegments = toggle;
this.exit = exit;
function lrSegUpdate(v) {
d.segments = d.segments.filter(filterLRAndAuto);
d.segments.push.apply(d.segments, v.map(v => 'lr-' + v.trim()).filter((v) => v.length > 3));
}
function segmentsUpdate() {
var otherSegs = d.segments ? d.segments.filter((v) => v.substr(0, 3) === 'lr-' || v.substr(0, 5) === 'auto_') : [];
d.segments = list.getActive().map(mapSegmentID).concat(otherSegs);
uf.refreshSidePanel();
}
function toggle(state) {
loop(list.getList(), p);
function p(k, v) {
var t = v.getElement();
if (typeof t.dataset.id === 'string') t.classList[state ? 'remove' : 'add']('noDisplay');
}
}
function exit() {
if (!!list) list.exit();
e = lrSegs = lrSegsTC = list = null;
}
}
function getDataItems(d, segs, isPearl) {
var r = {
segs: [],
lr: unmapLiveRampIDs(d.segments),
};
segs.forEach(function (seg) {
if(seg.id.substr(0, 3) === 'lr-') {
r.lr.push(seg.id.substr(3)); // trim the 'lr-'
} else {
r.segs.push(new CheckboxListv2.Item(seg.label, seg, hasID(d.segments, seg.id)));
}
});
return r;
}
function hasID(arr, id) {
if (!Array.isArray(arr)) {
return false;
}
return arr.some(function (rid) {
return rid === id;
});
}
function getSegmentsAndEvegments(d) {
if (!d.apps.evegment || !d.apps.evegment.list) return d.segments;
var ret = [];
ret.push.apply(ret, d.segments);
ret.push.apply(ret, d.apps.evegment.list);
return ret;
}
function unmapLiveRampIDs(segs) {
if(!segs) return [];
return segs.filter((v) => v.substr(0, 3) === 'lr-').map((v) => v.substr(3));
}
function filterLRAndAuto(v) {
return v.indexOf('auto_') !== -1 || v.indexOf("lr-") !== -1;
}
})();