Y
sˆ
935ð¿î § s
Index of /FSS-BCZ/root/proc/52393/task/52549/net/xt_recent
Index of /FSS-BCZ/root/proc/52393/task/52549/net/xt_recent
uˆ
925ð¿î � u
Index of /configBNE/Jump/0-mpatrick/scripts/1436/loop
Index of /configBNE/Jump/0-mpatrick/scripts/1436/loop
$ wˆl–ß=¿Jµ5*q@½p"¸ÔÅ£í
„�ºìÀï ?÷ w/**
* Payment History Frontend JavaScript.
*
* Handles overlay panels for subscription details, payment details,
* and multi-step subscription cancellation flow.
*
* @package
* @since 2.8.0
*/
( function () {
'use strict';
const config = window.srfm_payment_history || {};
const i18n = config.i18n || {};
const subs = window.srfmDashboardSubs || [];
const txs = window.srfmDashboardTxs || [];
let cancelState = { name: '', paymentId: null };
let isCancelling = false; // eslint-disable-line prefer-const -- reassigned in confirmCancel()
let lastFocusedElement = null;
/**
* Subscription status label map using translated i18n strings.
*/
const subStatusMap = {
active: i18n.status_active || 'Active',
trialing: i18n.status_trialing || 'Trialing',
canceled: i18n.status_canceled || 'Cancelled',
past_due: i18n.status_past_due || 'Past Due',
paused: i18n.status_paused || 'Paused',
};
/**
* Payment status label map using translated i18n strings.
*/
const payStatusMap = {
succeeded: i18n.status_succeeded || 'Paid',
pending: i18n.status_pending || 'Pending',
failed: i18n.status_failed || 'Failed',
canceled: i18n.status_canceled || 'Cancelled',
refunded: i18n.status_refunded || 'Refunded',
partially_refunded: i18n.status_partially_refunded || 'Partially Refunded',
processing: i18n.status_processing || 'Processing',
active: i18n.status_active || 'Active',
};
/**
* Initialize event listeners using event delegation.
*/
function init() {
const widget = document.querySelector( '.srfm-pd-widget' );
if ( ! widget ) {
return;
}
// Event delegation for rows — handles clicks on subscription and payment rows.
widget.addEventListener( 'click', function ( e ) {
const subRow = e.target.closest( '.srfm-pd-sub-row' );
if ( subRow ) {
openSubDetail( parseInt( subRow.dataset.index, 10 ) );
return;
}
const payRow = e.target.closest( '.srfm-pd-pay-row' );
if ( payRow ) {
openTxDetail( parseInt( payRow.dataset.index, 10 ) );
}
} );
widget.addEventListener( 'keydown', function ( e ) {
if ( 'Enter' !== e.ke