: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
classes.push('with-chart');
if (args.overlap_image_feature) {
const img = constructor.setEditableImage(createElement('img'),'overlap_image_feature','overlap_image_width','overlap_image_height',args);
classes.push('with-overlay-image');
featureImage.appendChild(img);
if (args.circle_size_feature === 'custom' && customSize) {
chart.style.width = chart.style.height = customSize + 'px';
const r = 'calc(50% - ' + w / 2 + 'px)',
svg = createElementNS('', 'tf_abs tf_w tf_h');
svg.append(createElementNS('circle',{class:'tb_feature_fill',r:r,cx:'50%',cy:'50%','stroke-width':w}), createElementNS('circle',{class:'tb_feature_stroke',r:r,cx:'50%',cy:'50%','stroke-width':w,'stroke-dasharray':'0,10000',stroke:api.Helper.toRGBA(args.circle_color_feature),'data-progress':percent}));
if (insetColor !== '' && type !== 'image_icon') {
const r2 = w > 1 ? (w - 1) : 0;
svg.appendChild(createElementNS('circle',{class:'tb_feature_bg','stroke-width':w,cx:'50%',cy:'50%',fill:insetColor,r: 'calc(50% - ' + r2 + 'px)'}));
if (icon || args.image_feature) {
if (type === 'icon' && icon) {
iconItem = createElement('em','module-feature-icon tf_rel');
iconItem.style.color = color;
iconItem.appendChild(icon);
} else if (type !== 'icon' && args.image_feature) {
iconItem.src = args.image_feature;
iconItem.style.width = iconItem.style.height = 'calc(100% - ' + (w * 2) + 'px)';
chartCircle.appendChild(iconItem);
chart.appendChild(chartCircle);
if (type === 'both' && icon) {
const iconWrap = createElement('span', 'module-feature-icon-wrap tf_abs'),
featureIcon = createElement('span','module-feature-icon tf_inline_b'),
pos = args.icon_position?? '';
iconWrap.style.transform = 'rotate(' + pos + 'deg)';
featureIcon.style.transform = 'translateY(-50%) rotate(-' + pos + 'deg)';
featureIcon.style.color = color;
featureIcon.style.backgroundColor = insetColor;
featureIcon.appendChild(icon);
iconWrap.appendChild(featureIcon);
chart.appendChild(iconWrap);
const link = createElement('a');
link.href = args.link_feature;
featureImage.appendChild(link);
featureImage.appendChild(chart);
if (args.title_feature) {
const title = createElement(args.title_tag,'module-feature-title');
title.appendChild(constructor._setEditableContent(createElement('a'),{class:'title_feature',href:args.link_feature},args.title_feature));
constructor._setEditableContent(title,'title_feature',args.title_feature);
content.appendChild(title);
constructor._setEditableContent(text,'content_feature','',1);
text.innerHTML=this.shortcodeToHTML(html).content;
content.appendChild(text);
if (args.circle_size_feature) {
classes.push('size-' + args.circle_size_feature);
classes.push(args.css_feature);
module.className = classes.join(' ');
module.dataset.layoutMobile = args.layout_mobile;
module.dataset.layoutDesktop = layoutFeature;
if (args.mod_title_feature) {
module.appendChild(constructor.getModuleTitle(args.mod_title_feature,'mod_title_feature'));
module.append(featureImage, content);