AfterShip – WooCommerce Tracking - Version 1.15.0

Version Description

  • New Feature: (Tracking) Ability to add tracking number on orders list
Download this release

Release Info

Developer aftership
Plugin Icon 128x128 AfterShip – WooCommerce Tracking
Version 1.15.0
Comparing to
See all releases

Code changes from version 1.14.8 to 1.15.0

Files changed (61) hide show
  1. .huskyrc +5 -0
  2. aftership-woocommerce-tracking.php +15 -2
  3. assets/css/admin.css +39 -0
  4. assets/{meta-box → frontend}/.gitignore +1 -1
  5. assets/{meta-box → frontend}/.prettierrc.json +0 -0
  6. assets/{meta-box → frontend}/README.md +0 -0
  7. assets/frontend/dist/metabox/index.js +1 -0
  8. assets/frontend/dist/metabox/style.css +1 -0
  9. assets/frontend/dist/orders/index.js +1 -0
  10. assets/frontend/dist/orders/style.css +1 -0
  11. assets/{meta-box → frontend}/index.html +0 -0
  12. assets/{meta-box → frontend}/inject.js +0 -0
  13. assets/{meta-box → frontend}/package.json +4 -2
  14. assets/{meta-box → frontend}/plugins/hotReloadShadowDomCss.js +0 -0
  15. assets/{meta-box → frontend}/src/components/Button/Button.module.scss +0 -0
  16. assets/{meta-box → frontend}/src/components/Button/Button.tsx +0 -0
  17. assets/{meta-box → frontend}/src/components/Button/index.ts +0 -0
  18. assets/{meta-box → frontend}/src/components/EditTrackingModal/EditTrackingModal.module.scss +0 -0
  19. assets/{meta-box → frontend}/src/components/EditTrackingModal/EditTrackingModal.tsx +8 -2
  20. assets/{meta-box → frontend}/src/components/EditTrackingModal/index.ts +0 -0
  21. assets/{meta-box → frontend}/src/components/Modal/Modal.module.scss +0 -0
  22. assets/{meta-box → frontend}/src/components/Modal/Modal.tsx +0 -0
  23. assets/{meta-box → frontend}/src/components/Modal/index.ts +0 -0
  24. assets/{meta-box → frontend}/src/components/Modal/x.svg +0 -0
  25. assets/{meta-box → frontend}/src/components/NumberInput/NumberInput.module.scss +0 -0
  26. assets/{meta-box → frontend}/src/components/NumberInput/NumberInput.tsx +0 -0
  27. assets/{meta-box → frontend}/src/components/NumberInput/images/caret-down-fill.svg +0 -0
  28. assets/{meta-box → frontend}/src/components/NumberInput/images/caret-up-fill.svg +0 -0
  29. assets/{meta-box → frontend}/src/components/NumberInput/index.ts +0 -0
  30. assets/{meta-box → frontend}/src/components/Spinner/Spinner.module.scss +0 -0
  31. assets/{meta-box → frontend}/src/components/Spinner/Spinner.tsx +0 -0
  32. assets/{meta-box → frontend}/src/components/Spinner/index.ts +0 -0
  33. assets/{meta-box/src/index.scss → frontend/src/global.scss} +0 -0
  34. assets/{meta-box/src/index.tsx → frontend/src/metabox.tsx} +4 -5
  35. assets/frontend/src/orders.tsx +28 -0
  36. assets/{meta-box/src/App.module.scss → frontend/src/pages/Metabox/Metabox.module.scss} +35 -10
  37. assets/frontend/src/pages/Metabox/Metabox.tsx +145 -0
  38. assets/frontend/src/pages/Metabox/index.ts +1 -0
  39. assets/frontend/src/pages/Orders/Orders.module.scss +0 -0
  40. assets/frontend/src/pages/Orders/Orders.tsx +101 -0
  41. assets/frontend/src/pages/Orders/index.ts +1 -0
  42. assets/{meta-box/src/storages/metaBox.ts → frontend/src/storages/tracking.ts} +17 -15
  43. assets/{meta-box → frontend}/src/typings/global.d.ts +0 -0
  44. assets/{meta-box → frontend}/src/typings/trackings.ts +0 -0
  45. assets/{meta-box → frontend}/src/utils/common.ts +1 -1
  46. assets/{meta-box → frontend}/tsconfig.json +0 -0
  47. assets/{meta-box/vite.config.ts → frontend/vite.config.metabox.ts} +4 -6
  48. assets/frontend/vite.config.orders.ts +23 -0
  49. assets/{meta-box → frontend}/yarn.lock +6 -6
  50. assets/images/truck-fast.svg +4 -0
  51. assets/js/order-status.js +40 -0
  52. assets/js/order-status.json +37 -0
  53. assets/js/setting.js +33 -0
  54. assets/meta-box/dist/index.js +0 -1
  55. assets/meta-box/dist/style.css +0 -1
  56. assets/meta-box/src/App.tsx +0 -108
  57. includes/api/aftership/v1/class-am-rest-settings-controller.php +7 -0
  58. includes/api/v4/class-aftership-api-settings.php +7 -0
  59. includes/class-aftership-actions.php +150 -1
  60. includes/class-aftership-settings.php +42 -0
  61. readme.txt +4 -1
.huskyrc ADDED
@@ -0,0 +1,5 @@
 
 
 
 
 
1
+ {
2
+ "hooks": {
3
+ "pre-commit": "./vendor/bin/phpcbf ./"
4
+ }
5
+ }
aftership-woocommerce-tracking.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: AfterShip Tracking - All-In-One WooCommerce Order Tracking (Free plan available)
4
  * Plugin URI: http://aftership.com/
5
  * Description: Track orders in one place. shipment tracking, automated notifications, order lookup, branded tracking page, delivery day prediction
6
- * Version: 1.14.8
7
  * Author: AfterShip
8
  * Author URI: http://aftership.com
9
  *
@@ -20,7 +20,7 @@ if ( ! defined( 'ABSPATH' ) ) {
20
 
21
  require_once( 'woo-includes/woo-functions.php' );
22
 
23
- define( 'AFTERSHIP_VERSION', '1.14.8' );
24
  define( 'AFTERSHIP_PATH', dirname( __FILE__ ) );
25
  define( 'AFTERSHIP_ASSETS_URL', plugins_url() . '/' . basename( AFTERSHIP_PATH ) );
26
 
@@ -134,6 +134,7 @@ if ( is_woocommerce_active() ) {
134
  }
135
 
136
  add_action( 'admin_print_styles', array( $this->actions, 'admin_styles' ) );
 
137
  add_action( 'admin_enqueue_scripts', array( $this, 'automizely_aftership_add_admin_css' ) );
138
  // Remove other plugins notice message for setting and landing page
139
  add_action( 'admin_enqueue_scripts', array( $this, 'as_admin_remove_notice_style' ) );
@@ -166,6 +167,12 @@ if ( is_woocommerce_active() ) {
166
  add_action( 'wp_ajax_aftership_get_order_trackings', array( $this->actions, 'get_order_detail' ) );
167
  add_action( 'wp_ajax_aftership_get_settings', array( $this->actions, 'get_settings' ) );
168
 
 
 
 
 
 
 
169
  $subs_version = class_exists( 'WC_Subscriptions' ) && ! empty( WC_Subscriptions::$version ) ? WC_Subscriptions::$version : null;
170
 
171
  // Prevent data being copied to subscriptions.
@@ -236,6 +243,9 @@ if ( is_woocommerce_active() ) {
236
  delete_option( 'automizely_aftership_plugin_actived' );
237
  exit( wp_redirect( 'admin.php?page=automizely-aftership-index' ) );
238
  }
 
 
 
239
  }
240
 
241
  /**
@@ -335,6 +345,9 @@ if ( is_woocommerce_active() ) {
335
  }
336
 
337
  add_option( 'automizely_aftership_plugin_actived', true );
 
 
 
338
  }
339
 
340
 
3
  * Plugin Name: AfterShip Tracking - All-In-One WooCommerce Order Tracking (Free plan available)
4
  * Plugin URI: http://aftership.com/
5
  * Description: Track orders in one place. shipment tracking, automated notifications, order lookup, branded tracking page, delivery day prediction
6
+ * Version: 1.15.0
7
  * Author: AfterShip
8
  * Author URI: http://aftership.com
9
  *
20
 
21
  require_once( 'woo-includes/woo-functions.php' );
22
 
23
+ define( 'AFTERSHIP_VERSION', '1.15.0' );
24
  define( 'AFTERSHIP_PATH', dirname( __FILE__ ) );
25
  define( 'AFTERSHIP_ASSETS_URL', plugins_url() . '/' . basename( AFTERSHIP_PATH ) );
26
 
134
  }
135
 
136
  add_action( 'admin_print_styles', array( $this->actions, 'admin_styles' ) );
137
+ add_action( 'admin_enqueue_scripts', array( $this->actions, 'load_orders_page_script' ) );
138
  add_action( 'admin_enqueue_scripts', array( $this, 'automizely_aftership_add_admin_css' ) );
139
  // Remove other plugins notice message for setting and landing page
140
  add_action( 'admin_enqueue_scripts', array( $this, 'as_admin_remove_notice_style' ) );
167
  add_action( 'wp_ajax_aftership_get_order_trackings', array( $this->actions, 'get_order_detail' ) );
168
  add_action( 'wp_ajax_aftership_get_settings', array( $this->actions, 'get_settings' ) );
169
 
170
+ // Register Add Tracking Action for AfterShip
171
+ add_filter( 'woocommerce_admin_order_actions', array( $this->actions, 'add_aftership_tracking_actions_button' ), 100, 2 );
172
+ // Custom AfterShip Tracking column in admin orders list.
173
+ add_filter( 'manage_shop_order_posts_columns', array( $this->actions, 'shop_order_columns' ), 99 );
174
+ add_action( 'manage_shop_order_posts_custom_column', array( $this->actions, 'render_shop_order_columns' ) );
175
+
176
  $subs_version = class_exists( 'WC_Subscriptions' ) && ! empty( WC_Subscriptions::$version ) ? WC_Subscriptions::$version : null;
177
 
178
  // Prevent data being copied to subscriptions.
243
  delete_option( 'automizely_aftership_plugin_actived' );
244
  exit( wp_redirect( 'admin.php?page=automizely-aftership-index' ) );
245
  }
246
+
247
+ // Set default value for show_orders_actions when upgrade aftership plugin
248
+ call_user_func( array( 'AfterShip_Actions', 'init_aftership_show_orders_actions' ) );
249
  }
250
 
251
  /**
345
  }
346
 
347
  add_option( 'automizely_aftership_plugin_actived', true );
348
+
349
+ // Set default value for show_orders_actions when active aftership plugin
350
+ call_user_func( array( 'AfterShip_Actions', 'init_aftership_show_orders_actions' ) );
351
  }
352
 
353
 
assets/css/admin.css CHANGED
@@ -124,3 +124,42 @@
124
  #woocommerce-aftership .tracking-item-content:first-child {
125
  margin-bottom: 4px;
126
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
124
  #woocommerce-aftership .tracking-item-content:first-child {
125
  margin-bottom: 4px;
126
  }
127
+ .widefat .column-wc_actions a.aftership_add_inline_tracking.button::after {
128
+ content: ' ';
129
+ background-position: center;
130
+ background-repeat: no-repeat;
131
+ margin: 0;
132
+ background-image: url('data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNnB4IiBoZWlnaHQ9IjE2cHgiIHZpZXdCb3g9IjAgMCA2NDAgNTEyIj48cGF0aCBmaWxsPSIjMjI3MWIxIiBkPSJNMTEyIDBDODUuNDkgMCA2NCAyMS40OSA2NCA0OFY5NkgxNkM3LjE2MyA5NiAwIDEwMy4yIDAgMTEyQzAgMTIwLjggNy4xNjMgMTI4IDE2IDEyOEgyNzJDMjgwLjggMTI4IDI4OCAxMzUuMiAyODggMTQ0QzI4OCAxNTIuOCAyODAuOCAxNjAgMjcyIDE2MEg0OEMzOS4xNiAxNjAgMzIgMTY3LjIgMzIgMTc2QzMyIDE4NC44IDM5LjE2IDE5MiA0OCAxOTJIMjQwQzI0OC44IDE5MiAyNTYgMTk5LjIgMjU2IDIwOEMyNTYgMjE2LjggMjQ4LjggMjI0IDI0MCAyMjRIMTZDNy4xNjMgMjI0IDAgMjMxLjIgMCAyNDBDMCAyNDguOCA3LjE2MyAyNTYgMTYgMjU2SDIwOEMyMTYuOCAyNTYgMjI0IDI2My4yIDIyNCAyNzJDMjI0IDI4MC44IDIxNi44IDI4OCAyMDggMjg4SDY0VjQxNkM2NCA0NjkgMTA2LjEgNTEyIDE2MCA1MTJDMjEzIDUxMiAyNTYgNDY5IDI1NiA0MTZIMzg0QzM4NCA0NjkgNDI2LjEgNTEyIDQ4MCA1MTJDNTMzIDUxMiA1NzYgNDY5IDU3NiA0MTZINjA4QzYyNS43IDQxNiA2NDAgNDAxLjcgNjQwIDM4NEM2NDAgMzY2LjMgNjI1LjcgMzUyIDYwOCAzNTJWMjM3LjNDNjA4IDIyMC4zIDYwMS4zIDIwNCA1ODkuMyAxOTJMNTEyIDExNC43QzQ5OS4xIDEwMi43IDQ4My43IDk2IDQ2Ni43IDk2SDQxNlY0OEM0MTYgMjEuNDkgMzk0LjUgMCAzNjggMEgxMTJ6TTU0NCAyMzcuM1YyNTZINDE2VjE2MEg0NjYuN0w1NDQgMjM3LjN6TTE2MCA0NjRDMTMzLjUgNDY0IDExMiA0NDIuNSAxMTIgNDE2QzExMiAzODkuNSAxMzMuNSAzNjggMTYwIDM2OEMxODYuNSAzNjggMjA4IDM4OS41IDIwOCA0MTZDMjA4IDQ0Mi41IDE4Ni41IDQ2NCAxNjAgNDY0ek01MjggNDE2QzUyOCA0NDIuNSA1MDYuNSA0NjQgNDgwIDQ2NEM0NTMuNSA0NjQgNDMyIDQ0Mi41IDQzMiA0MTZDNDMyIDM4OS41IDQ1My41IDM2OCA0ODAgMzY4QzUwNi41IDM2OCA1MjggMzg5LjUgNTI4IDQxNnoiLz48L3N2Zz4K');
133
+ }
134
+ .wcas-tracking-number-list li {
135
+ position: relative;
136
+ padding: 5px;
137
+ min-height: 50px;
138
+ box-sizing: border-box;
139
+ margin-bottom: 0;
140
+ }
141
+ .wcas-tracking-number-list li a:nth-child(2) {
142
+ display: block;
143
+ white-space: nowrap;
144
+ overflow: hidden;
145
+ text-overflow: ellipsis;
146
+ }
147
+ a.aftership_inline_tracking_delete{
148
+ display:none;
149
+ position: absolute;
150
+ top: 5px;
151
+ right: 5px;
152
+ font-size: 11px;
153
+ color: #a00;
154
+ }
155
+ a.aftership_inline_tracking_delete span.dashicons{
156
+ width: 16px;
157
+ height: 16px;
158
+ font-size: 16px;
159
+ }
160
+ .wcas-tracking-number-list li:hover a.aftership_inline_tracking_delete{
161
+ display:block;
162
+ }
163
+ ul.wcas-tracking-number-list {
164
+ margin: 0;
165
+ }
assets/{meta-box → frontend}/.gitignore RENAMED
@@ -1,4 +1,4 @@
1
  !package.json
2
  !yarn.lock
3
  node_modules
4
- # dist
1
  !package.json
2
  !yarn.lock
3
  node_modules
4
+ # dist/
assets/{meta-box → frontend}/.prettierrc.json RENAMED
File without changes
assets/{meta-box → frontend}/README.md RENAMED
File without changes
assets/frontend/dist/metabox/index.js ADDED
@@ -0,0 +1 @@
 
1
+ var jr=Object.defineProperty,Tr=Object.defineProperties;var Or=Object.getOwnPropertyDescriptors;var At=Object.getOwnPropertySymbols;var Mr=Object.prototype.hasOwnProperty,Er=Object.prototype.propertyIsEnumerable;var We=(Y,R,D)=>R in Y?jr(Y,R,{enumerable:!0,configurable:!0,writable:!0,value:D}):Y[R]=D,z=(Y,R)=>{for(var D in R||(R={}))Mr.call(R,D)&&We(Y,D,R[D]);if(At)for(var D of At(R))Er.call(R,D)&&We(Y,D,R[D]);return Y},H=(Y,R)=>Tr(Y,Or(R));var It=(Y,R,D)=>(We(Y,typeof R!="symbol"?R+"":R,D),D);var ie=(Y,R,D)=>new Promise(($e,X)=>{var K=M=>{try{ae(D.next(M))}catch(J){X(J)}},ue=M=>{try{ae(D.throw(M))}catch(J){X(J)}},ae=M=>M.done?$e(M.value):Promise.resolve(M.value).then(K,ue);ae((D=D.apply(Y,R)).next())});(function(){"use strict";const Y=(e,n)=>e===n,R=Symbol("solid-proxy"),D={equals:Y};let $e=Je;const X={},K=1,ue=2,ae={owned:null,cleanups:null,context:null,owner:null};var M=null;let J=null,P=null,fe=null,Z=null,ee=null,Te=0;function pe(e,n){n&&(M=n);const t=P,i=M,s=e.length===0?ae:{owned:null,cleanups:null,context:null,owner:i};M=s,P=null;let o;try{De(()=>o=e(()=>Le(s)),!0)}finally{P=t,M=i}return o}function te(e,n){n=n?Object.assign({},D,n):D;const t={value:e,observers:null,observerSlots:null,pending:X,comparator:n.equals||void 0};return[Qe.bind(t),i=>(typeof i=="function"&&(J&&J.running&&J.sources.has(t)?i=i(t.pending!==X?t.pending:t.tValue):i=i(t.pending!==X?t.pending:t.value)),Me(t,i))]}function G(e,n,t){const i=Ee(e,n,!1,K);we(i)}function Oe(e,n,t){$e=Ft;const i=Ee(e,n,!1,K);i.user=!0,ee&&ee.push(i)}function W(e,n,t){t=t?Object.assign({},D,t):D;const i=Ee(e,n,!0,0);return i.pending=X,i.observers=null,i.observerSlots=null,i.comparator=t.equals||void 0,we(i),Qe.bind(i)}function jt(e){if(fe)return e();let n;const t=fe=[];try{n=e()}finally{fe=null}return De(()=>{for(let i=0;i<t.length;i+=1){const s=t[i];if(s.pending!==X){const o=s.pending;s.pending=X,Me(s,o)}}},!1),n}function le(e){let n,t=P;return P=null,n=e(),P=t,n}function Tt(e){Oe(()=>le(e))}function Ot(e){return M===null||(M.cleanups===null?M.cleanups=[e]:M.cleanups.push(e)),e}function Mt(e){const n=W(e);return W(()=>Be(n()))}function Qe(){const e=J;if(this.sources&&(this.state||e)){const n=Z;Z=null,this.state===K||e?we(this):Fe(this),Z=n}if(P){const n=this.observers?this.observers.length:0;P.sources?(P.sources.push(this),P.sourceSlots.push(n)):(P.sources=[this],P.sourceSlots=[n]),this.observers?(this.observers.push(P),this.observerSlots.push(P.sources.length-1)):(this.observers=[P],this.observerSlots=[P.sources.length-1])}return this.value}function Me(e,n,t){if(e.comparator&&e.comparator(e.value,n))return n;if(fe)return e.pending===X&&fe.push(e),e.pending=n,n;let i=!1;return e.value=n,e.observers&&e.observers.length&&De(()=>{for(let s=0;s<e.observers.length;s+=1){const o=e.observers[s];i&&J.disposed.has(o),o.pure?Z.push(o):ee.push(o),o.observers&&(i&&!o.tState||!i&&!o.state)&&Xe(o),i||(o.state=K)}if(Z.length>1e6)throw Z=[],new Error},!1),n}function we(e){if(!e.fn)return;Le(e);const n=M,t=P,i=Te;P=M=e,Et(e,e.value,i),P=t,M=n}function Et(e,n,t){let i;try{i=e.fn(n)}catch(s){Ke(s)}(!e.updatedAt||e.updatedAt<=t)&&(e.observers&&e.observers.length?Me(e,i):e.value=i,e.updatedAt=t)}function Ee(e,n,t,i=K,s){const o={fn:e,state:i,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:n,owner:M,context:null,pure:t};return M===null||M!==ae&&(M.owned?M.owned.push(o):M.owned=[o]),o}function de(e){const n=J;if(e.state!==K)return e.state=0;if(e.suspense&&le(e.suspense.inFallback))return e.suspense.effects.push(e);const t=[e];for(;(e=e.owner)&&(!e.updatedAt||e.updatedAt<Te);)(e.state||n)&&t.push(e);for(let i=t.length-1;i>=0;i--)if(e=t[i],e.state===K||n)we(e);else if(e.state===ue||n){const s=Z;Z=null,Fe(e),Z=s}}function De(e,n){if(Z)return e();let t=!1;n||(Z=[]),ee?t=!0:ee=[],Te++;try{e()}catch(i){Ke(i)}finally{Dt(t)}}function Dt(e){Z&&(Je(Z),Z=null),!e&&(ee.length?jt(()=>{$e(ee),ee=null}):ee=null)}function Je(e){for(let n=0;n<e.length;n++)de(e[n])}function Ft(e){let n,t=0;for(n=0;n<e.length;n++){const s=e[n];s.user?e[t++]=s:de(s)}const i=e.length;for(n=0;n<t;n++)de(e[n]);for(n=i;n<e.length;n++)de(e[n])}function Fe(e){e.state=0;const n=J;for(let t=0;t<e.sources.length;t+=1){const i=e.sources[t];i.sources&&(i.state===K||n?de(i):(i.state===ue||n)&&Fe(i))}}function Xe(e){const n=J;for(let t=0;t<e.observers.length;t+=1){const i=e.observers[t];(!i.state||n)&&(i.state=ue,i.pure?Z.push(i):ee.push(i),i.observers&&Xe(i))}}function Le(e){let n;if(e.sources)for(;e.sources.length;){const t=e.sources.pop(),i=e.sourceSlots.pop(),s=t.observers;if(s&&s.length){const o=s.pop(),m=t.observerSlots.pop();i<s.length&&(o.sourceSlots[m]=i,s[i]=o,t.observerSlots[i]=m)}}if(e.owned){for(n=0;n<e.owned.length;n++)Le(e.owned[n]);e.owned=null}if(e.cleanups){for(n=0;n<e.cleanups.length;n++)e.cleanups[n]();e.cleanups=null}e.state=0,e.context=null}function Ke(e){throw e}function Be(e){if(typeof e=="function"&&!e.length)return Be(e());if(Array.isArray(e)){const n=[];for(let t=0;t<e.length;t++){const i=Be(e[t]);Array.isArray(i)?n.push.apply(n,i):n.push(i)}return n}return e}const Lt=Symbol("fallback");function et(e){for(let n=0;n<e.length;n++)e[n]()}function Bt(e,n,t={}){let i=[],s=[],o=[],m=0,d=n.length>1?[]:null;return Ot(()=>et(o)),()=>{let w=e()||[],f,u;return le(()=>{let S=w.length,N,I,_,h,k,r,a,l,c;if(S===0)m!==0&&(et(o),o=[],i=[],s=[],m=0,d&&(d=[])),t.fallback&&(i=[Lt],s[0]=pe(g=>(o[0]=g,t.fallback())),m=1);else if(m===0){for(s=new Array(S),u=0;u<S;u++)i[u]=w[u],s[u]=pe(p);m=S}else{for(_=new Array(S),h=new Array(S),d&&(k=new Array(S)),r=0,a=Math.min(m,S);r<a&&i[r]===w[r];r++);for(a=m-1,l=S-1;a>=r&&l>=r&&i[a]===w[l];a--,l--)_[l]=s[a],h[l]=o[a],d&&(k[l]=d[a]);for(N=new Map,I=new Array(l+1),u=l;u>=r;u--)c=w[u],f=N.get(c),I[u]=f===void 0?-1:f,N.set(c,u);for(f=r;f<=a;f++)c=i[f],u=N.get(c),u!==void 0&&u!==-1?(_[u]=s[f],h[u]=o[f],d&&(k[u]=d[f]),u=I[u],N.set(c,u)):o[f]();for(u=r;u<S;u++)u in _?(s[u]=_[u],o[u]=h[u],d&&(d[u]=k[u],d[u](u))):s[u]=pe(p);s=s.slice(0,m=S),i=w.slice(0)}return s});function p(S){if(o[u]=S,d){const[N,I]=te(u);return d[u]=I,n(w[u],N)}return n(w[u])}}}function V(e,n){return le(()=>e(n))}function Se(){return!0}const Rt={get(e,n,t){return n===R?t:e.get(n)},has(e,n){return e.has(n)},set:Se,deleteProperty:Se,getOwnPropertyDescriptor(e,n){return{configurable:!0,enumerable:!0,get(){return e.get(n)},set:Se,deleteProperty:Se}},ownKeys(e){return e.keys()}};function Re(e){return typeof e=="function"?e():e}function Pt(...e){return new Proxy({get(n){for(let t=e.length-1;t>=0;t--){const i=Re(e[t])[n];if(i!==void 0)return i}},has(n){for(let t=e.length-1;t>=0;t--)if(n in Re(e[t]))return!0;return!1},keys(){const n=[];for(let t=0;t<e.length;t++)n.push(...Object.keys(Re(e[t])));return[...new Set(n)]}},Rt)}function ge(e){const n="fallback"in e&&{fallback:()=>e.fallback};return W(Bt(()=>e.each,e.children,n||void 0))}function Pe(e){let n=!1;const t=W(()=>e.when,void 0,{equals:(i,s)=>n?i===s:!i==!s});return W(()=>{const i=t();if(i){const s=e.children;return(n=typeof s=="function"&&s.length>0)?le(()=>s(i)):s}return e.fallback})}function Ut(e){let n=!1;const t=Mt(()=>e.children),i=W(()=>{let s=t();Array.isArray(s)||(s=[s]);for(let o=0;o<s.length;o++){const m=s[o].when;if(m)return[o,m,s[o]]}return[-1]},void 0,{equals:(s,o)=>s&&s[0]===o[0]&&(n?s[1]===o[1]:!s[1]==!o[1])&&s[2]===o[2]});return W(()=>{const[s,o,m]=i();if(s<0)return e.fallback;const d=m.children;return(n=typeof d=="function"&&d.length>0)?le(()=>d(o)):d})}function qt(e){return e}function tt(e,n,t){let i=t.length,s=n.length,o=i,m=0,d=0,w=n[s-1].nextSibling,f=null;for(;m<s||d<o;){if(n[m]===t[d]){m++,d++;continue}for(;n[s-1]===t[o-1];)s--,o--;if(s===m){const u=o<i?d?t[d-1].nextSibling:t[o-d]:w;for(;d<o;)e.insertBefore(t[d++],u)}else if(o===d)for(;m<s;)(!f||!f.has(n[m]))&&e.removeChild(n[m]),m++;else if(n[m]===t[o-1]&&t[d]===n[s-1]){const u=n[--s].nextSibling;e.insertBefore(t[d++],n[m++].nextSibling),e.insertBefore(t[--o],u),n[s]=t[o]}else{if(!f){f=new Map;let p=d;for(;p<o;)f.set(t[p],p++)}const u=f.get(n[m]);if(u!=null)if(d<u&&u<o){let p=m,S=1,N;for(;++p<s&&p<o&&!((N=f.get(n[p]))==null||N!==u+S);)S++;if(S>u-d){const I=n[m];for(;d<u;)e.insertBefore(t[d++],I)}else e.replaceChild(t[d++],n[m++])}else m++;else e.removeChild(n[m++])}}}const nt="_$DX_DELEGATE";function zt(e,n,t){let i;return pe(s=>{i=s,O(n,e(),n.firstChild?null:void 0,t)}),()=>{i(),n.textContent=""}}function Q(e,n,t){const i=document.createElement("template");i.innerHTML=e;let s=i.content.firstChild;return t&&(s=s.firstChild),s}function he(e,n=window.document){const t=n[nt]||(n[nt]=new Set);for(let i=0,s=e.length;i<s;i++){const o=e[i];t.has(o)||(t.add(o),n.addEventListener(o,Yt))}}function re(e,n,t){t==null?e.removeAttribute(n):e.setAttribute(n,t)}function Ue(e,n,t,i){i?Array.isArray(t)?(e[`$$${n}`]=t[0],e[`$$${n}Data`]=t[1]):e[`$$${n}`]=t:Array.isArray(t)?e.addEventListener(n,s=>t[0](t[1],s)):e.addEventListener(n,t)}function Ht(e,n,t={}){const i=Object.keys(n||{}),s=Object.keys(t);let o,m;for(o=0,m=s.length;o<m;o++){const d=s[o];!d||d==="undefined"||n[d]||(rt(e,d,!1),delete t[d])}for(o=0,m=i.length;o<m;o++){const d=i[o],w=!!n[d];!d||d==="undefined"||t[d]===w||!w||(rt(e,d,!0),t[d]=w)}return t}function Vt(e,n,t={}){const i=e.style;if(n==null||typeof n=="string")return i.cssText=n;typeof t=="string"&&(t={});let s,o;for(o in t)n[o]==null&&i.removeProperty(o),delete t[o];for(o in n)s=n[o],s!==t[o]&&(i.setProperty(o,s),t[o]=s);return t}function O(e,n,t,i){if(t!==void 0&&!i&&(i=[]),typeof n!="function")return Ce(e,n,i,t);G(s=>Ce(e,n(),s,t),i)}function rt(e,n,t){const i=n.trim().split(/\s+/);for(let s=0,o=i.length;s<o;s++)e.classList.toggle(i[s],t)}function Yt(e){const n=`$$${e.type}`;let t=e.composedPath&&e.composedPath()[0]||e.target;for(e.target!==t&&Object.defineProperty(e,"target",{configurable:!0,value:t}),Object.defineProperty(e,"currentTarget",{configurable:!0,get(){return t}});t!==null;){const i=t[n];if(i&&!t.disabled){const s=t[`${n}Data`];if(s!==void 0?i(s,e):i(e),e.cancelBubble)return}t=t.host&&t.host!==t&&t.host instanceof Node?t.host:t.parentNode}}function Ce(e,n,t,i,s){for(;typeof t=="function";)t=t();if(n===t)return t;const o=typeof n,m=i!==void 0;if(e=m&&t[0]&&t[0].parentNode||e,o==="string"||o==="number")if(o==="number"&&(n=n.toString()),m){let d=t[0];d&&d.nodeType===3?d.data=n:d=document.createTextNode(n),t=me(e,t,i,d)}else t!==""&&typeof t=="string"?t=e.firstChild.data=n:t=e.textContent=n;else if(n==null||o==="boolean")t=me(e,t,i);else{if(o==="function")return G(()=>{let d=n();for(;typeof d=="function";)d=d();t=Ce(e,d,t,i)}),()=>t;if(Array.isArray(n)){const d=[];if(qe(d,n,s))return G(()=>t=Ce(e,d,t,i,!0)),()=>t;if(d.length===0){if(t=me(e,t,i),m)return t}else Array.isArray(t)?t.length===0?it(e,d,i):tt(e,t,d):t==null||t===""?it(e,d):tt(e,m&&t||[e.firstChild],d);t=d}else if(n instanceof Node){if(Array.isArray(t)){if(m)return t=me(e,t,i,n);me(e,t,null,n)}else t==null||t===""||!e.firstChild?e.appendChild(n):e.replaceChild(n,e.firstChild);t=n}}return t}function qe(e,n,t){let i=!1;for(let s=0,o=n.length;s<o;s++){let m=n[s],d;if(m instanceof Node)e.push(m);else if(!(m==null||m===!0||m===!1))if(Array.isArray(m))i=qe(e,m)||i;else if((d=typeof m)==="string")e.push(document.createTextNode(m));else if(d==="function")if(t){for(;typeof m=="function";)m=m();i=qe(e,Array.isArray(m)?m:[m])||i}else e.push(m),i=!0;else e.push(document.createTextNode(m.toString()))}return i}function it(e,n,t){for(let i=0,s=n.length;i<s;i++)e.insertBefore(n[i],t)}function me(e,n,t,i){if(t===void 0)return e.textContent="";const s=i||document.createTextNode("");if(n.length){let o=!1;for(let m=n.length-1;m>=0;m--){const d=n[m];if(s!==d){const w=d.parentNode===e;!o&&!m?w?e.replaceChild(s,d):e.insertBefore(s,t):w&&e.removeChild(d)}else o=!0}}else e.insertBefore(s,t);return[s]}var st={button:"_button_1dv9o_1",primary:"_primary_1dv9o_18"};const Zt=Q("<button></button>"),at=e=>(()=>{const n=Zt.cloneNode(!0);return Ue(n,"click",e.onClick,!0),O(n,()=>e.children),G(t=>{const i={[st.button]:!0,[st.primary]:e.type==="primary"},s=e.disabled,o=e.style;return t._v$=Ht(n,i,t._v$),s!==t._v$2&&(n.disabled=t._v$2=s),t._v$3=Vt(n,o,t._v$3),t},{_v$:void 0,_v$2:void 0,_v$3:void 0}),n})();he(["click"]);var oe={root:"_root_nkd9j_1",loading:"_loading_nkd9j_5",tracking:"_tracking_nkd9j_19",title:"_title_nkd9j_23",content:"_content_nkd9j_38",number:"_number_nkd9j_45",item:"_item_nkd9j_65"},_e=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{};function Gt(e){throw new Error('Could not dynamically require "'+e+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var lt={exports:{}},ot={exports:{}};(function(e,n){(function(t,i){e.exports=i()})(_e,function(){var t=t||function(i,s){var o;if(typeof window!="undefined"&&window.crypto&&(o=window.crypto),typeof self!="undefined"&&self.crypto&&(o=self.crypto),typeof globalThis!="undefined"&&globalThis.crypto&&(o=globalThis.crypto),!o&&typeof window!="undefined"&&window.msCrypto&&(o=window.msCrypto),!o&&typeof _e!="undefined"&&_e.crypto&&(o=_e.crypto),!o&&typeof Gt=="function")try{o=require("crypto")}catch(r){}var m=function(){if(o){if(typeof o.getRandomValues=="function")try{return o.getRandomValues(new Uint32Array(1))[0]}catch(r){}if(typeof o.randomBytes=="function")try{return o.randomBytes(4).readInt32LE()}catch(r){}}throw new Error("Native crypto module could not be used to get secure random number.")},d=Object.create||function(){function r(){}return function(a){var l;return r.prototype=a,l=new r,r.prototype=null,l}}(),w={},f=w.lib={},u=f.Base=function(){return{extend:function(r){var a=d(this);return r&&a.mixIn(r),(!a.hasOwnProperty("init")||this.init===a.init)&&(a.init=function(){a.$super.init.apply(this,arguments)}),a.init.prototype=a,a.$super=this,a},create:function(){var r=this.extend();return r.init.apply(r,arguments),r},init:function(){},mixIn:function(r){for(var a in r)r.hasOwnProperty(a)&&(this[a]=r[a]);r.hasOwnProperty("toString")&&(this.toString=r.toString)},clone:function(){return this.init.prototype.extend(this)}}}(),p=f.WordArray=u.extend({init:function(r,a){r=this.words=r||[],a!=s?this.sigBytes=a:this.sigBytes=r.length*4},toString:function(r){return(r||N).stringify(this)},concat:function(r){var a=this.words,l=r.words,c=this.sigBytes,g=r.sigBytes;if(this.clamp(),c%4)for(var x=0;x<g;x++){var C=l[x>>>2]>>>24-x%4*8&255;a[c+x>>>2]|=C<<24-(c+x)%4*8}else for(var T=0;T<g;T+=4)a[c+T>>>2]=l[T>>>2];return this.sigBytes+=g,this},clamp:function(){var r=this.words,a=this.sigBytes;r[a>>>2]&=4294967295<<32-a%4*8,r.length=i.ceil(a/4)},clone:function(){var r=u.clone.call(this);return r.words=this.words.slice(0),r},random:function(r){for(var a=[],l=0;l<r;l+=4)a.push(m());return new p.init(a,r)}}),S=w.enc={},N=S.Hex={stringify:function(r){for(var a=r.words,l=r.sigBytes,c=[],g=0;g<l;g++){var x=a[g>>>2]>>>24-g%4*8&255;c.push((x>>>4).toString(16)),c.push((x&15).toString(16))}return c.join("")},parse:function(r){for(var a=r.length,l=[],c=0;c<a;c+=2)l[c>>>3]|=parseInt(r.substr(c,2),16)<<24-c%8*4;return new p.init(l,a/2)}},I=S.Latin1={stringify:function(r){for(var a=r.words,l=r.sigBytes,c=[],g=0;g<l;g++){var x=a[g>>>2]>>>24-g%4*8&255;c.push(String.fromCharCode(x))}return c.join("")},parse:function(r){for(var a=r.length,l=[],c=0;c<a;c++)l[c>>>2]|=(r.charCodeAt(c)&255)<<24-c%4*8;return new p.init(l,a)}},_=S.Utf8={stringify:function(r){try{return decodeURIComponent(escape(I.stringify(r)))}catch(a){throw new Error("Malformed UTF-8 data")}},parse:function(r){return I.parse(unescape(encodeURIComponent(r)))}},h=f.BufferedBlockAlgorithm=u.extend({reset:function(){this._data=new p.init,this._nDataBytes=0},_append:function(r){typeof r=="string"&&(r=_.parse(r)),this._data.concat(r),this._nDataBytes+=r.sigBytes},_process:function(r){var a,l=this._data,c=l.words,g=l.sigBytes,x=this.blockSize,C=x*4,T=g/C;r?T=i.ceil(T):T=i.max((T|0)-this._minBufferSize,0);var A=T*x,F=i.min(A*4,g);if(A){for(var j=0;j<A;j+=x)this._doProcessBlock(c,j);a=c.splice(0,A),l.sigBytes-=F}return new p.init(a,F)},clone:function(){var r=u.clone.call(this);return r._data=this._data.clone(),r},_minBufferSize:0});f.Hasher=h.extend({cfg:u.extend(),init:function(r){this.cfg=this.cfg.extend(r),this.reset()},reset:function(){h.reset.call(this),this._doReset()},update:function(r){return this._append(r),this._process(),this},finalize:function(r){r&&this._append(r);var a=this._doFinalize();return a},blockSize:512/32,_createHelper:function(r){return function(a,l){return new r.init(l).finalize(a)}},_createHmacHelper:function(r){return function(a,l){return new k.HMAC.init(r,l).finalize(a)}}});var k=w.algo={};return w}(Math);return t})})(ot),function(e,n){(function(t,i){e.exports=i(ot.exports)})(_e,function(t){return function(i){var s=t,o=s.lib,m=o.WordArray,d=o.Hasher,w=s.algo,f=[];(function(){for(var _=0;_<64;_++)f[_]=i.abs(i.sin(_+1))*4294967296|0})();var u=w.MD5=d.extend({_doReset:function(){this._hash=new m.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(_,h){for(var k=0;k<16;k++){var r=h+k,a=_[r];_[r]=(a<<8|a>>>24)&16711935|(a<<24|a>>>8)&4278255360}var l=this._hash.words,c=_[h+0],g=_[h+1],x=_[h+2],C=_[h+3],T=_[h+4],A=_[h+5],F=_[h+6],j=_[h+7],L=_[h+8],B=_[h+9],E=_[h+10],U=_[h+11],q=_[h+12],ne=_[h+13],Ie=_[h+14],je=_[h+15],v=l[0],y=l[1],b=l[2],$=l[3];v=p(v,y,b,$,c,7,f[0]),$=p($,v,y,b,g,12,f[1]),b=p(b,$,v,y,x,17,f[2]),y=p(y,b,$,v,C,22,f[3]),v=p(v,y,b,$,T,7,f[4]),$=p($,v,y,b,A,12,f[5]),b=p(b,$,v,y,F,17,f[6]),y=p(y,b,$,v,j,22,f[7]),v=p(v,y,b,$,L,7,f[8]),$=p($,v,y,b,B,12,f[9]),b=p(b,$,v,y,E,17,f[10]),y=p(y,b,$,v,U,22,f[11]),v=p(v,y,b,$,q,7,f[12]),$=p($,v,y,b,ne,12,f[13]),b=p(b,$,v,y,Ie,17,f[14]),y=p(y,b,$,v,je,22,f[15]),v=S(v,y,b,$,g,5,f[16]),$=S($,v,y,b,F,9,f[17]),b=S(b,$,v,y,U,14,f[18]),y=S(y,b,$,v,c,20,f[19]),v=S(v,y,b,$,A,5,f[20]),$=S($,v,y,b,E,9,f[21]),b=S(b,$,v,y,je,14,f[22]),y=S(y,b,$,v,T,20,f[23]),v=S(v,y,b,$,B,5,f[24]),$=S($,v,y,b,Ie,9,f[25]),b=S(b,$,v,y,C,14,f[26]),y=S(y,b,$,v,L,20,f[27]),v=S(v,y,b,$,ne,5,f[28]),$=S($,v,y,b,x,9,f[29]),b=S(b,$,v,y,j,14,f[30]),y=S(y,b,$,v,q,20,f[31]),v=N(v,y,b,$,A,4,f[32]),$=N($,v,y,b,L,11,f[33]),b=N(b,$,v,y,U,16,f[34]),y=N(y,b,$,v,Ie,23,f[35]),v=N(v,y,b,$,g,4,f[36]),$=N($,v,y,b,T,11,f[37]),b=N(b,$,v,y,j,16,f[38]),y=N(y,b,$,v,E,23,f[39]),v=N(v,y,b,$,ne,4,f[40]),$=N($,v,y,b,c,11,f[41]),b=N(b,$,v,y,C,16,f[42]),y=N(y,b,$,v,F,23,f[43]),v=N(v,y,b,$,B,4,f[44]),$=N($,v,y,b,q,11,f[45]),b=N(b,$,v,y,je,16,f[46]),y=N(y,b,$,v,x,23,f[47]),v=I(v,y,b,$,c,6,f[48]),$=I($,v,y,b,j,10,f[49]),b=I(b,$,v,y,Ie,15,f[50]),y=I(y,b,$,v,A,21,f[51]),v=I(v,y,b,$,q,6,f[52]),$=I($,v,y,b,C,10,f[53]),b=I(b,$,v,y,E,15,f[54]),y=I(y,b,$,v,g,21,f[55]),v=I(v,y,b,$,L,6,f[56]),$=I($,v,y,b,je,10,f[57]),b=I(b,$,v,y,F,15,f[58]),y=I(y,b,$,v,ne,21,f[59]),v=I(v,y,b,$,T,6,f[60]),$=I($,v,y,b,U,10,f[61]),b=I(b,$,v,y,x,15,f[62]),y=I(y,b,$,v,B,21,f[63]),l[0]=l[0]+v|0,l[1]=l[1]+y|0,l[2]=l[2]+b|0,l[3]=l[3]+$|0},_doFinalize:function(){var _=this._data,h=_.words,k=this._nDataBytes*8,r=_.sigBytes*8;h[r>>>5]|=128<<24-r%32;var a=i.floor(k/4294967296),l=k;h[(r+64>>>9<<4)+15]=(a<<8|a>>>24)&16711935|(a<<24|a>>>8)&4278255360,h[(r+64>>>9<<4)+14]=(l<<8|l>>>24)&16711935|(l<<24|l>>>8)&4278255360,_.sigBytes=(h.length+1)*4,this._process();for(var c=this._hash,g=c.words,x=0;x<4;x++){var C=g[x];g[x]=(C<<8|C>>>24)&16711935|(C<<24|C>>>8)&4278255360}return c},clone:function(){var _=d.clone.call(this);return _._hash=this._hash.clone(),_}});function p(_,h,k,r,a,l,c){var g=_+(h&k|~h&r)+a+c;return(g<<l|g>>>32-l)+h}function S(_,h,k,r,a,l,c){var g=_+(h&r|k&~r)+a+c;return(g<<l|g>>>32-l)+h}function N(_,h,k,r,a,l,c){var g=_+(h^k^r)+a+c;return(g<<l|g>>>32-l)+h}function I(_,h,k,r,a,l,c){var g=_+(k^(h|~r))+a+c;return(g<<l|g>>>32-l)+h}s.MD5=d._createHelper(u),s.HmacMD5=d._createHmacHelper(u)}(Math),t.MD5})}(lt);var Wt=lt.exports,ve={},Qt=e=>encodeURIComponent(e).replace(/[!'()*]/g,n=>`%${n.charCodeAt(0).toString(16).toUpperCase()}`),ct="%[a-f0-9]{2}",ut=new RegExp(ct,"gi"),ft=new RegExp("("+ct+")+","gi");function ze(e,n){try{return decodeURIComponent(e.join(""))}catch(s){}if(e.length===1)return e;n=n||1;var t=e.slice(0,n),i=e.slice(n);return Array.prototype.concat.call([],ze(t),ze(i))}function Jt(e){try{return decodeURIComponent(e)}catch(i){for(var n=e.match(ut),t=1;t<n.length;t++)e=ze(n,t).join(""),n=e.match(ut);return e}}function Xt(e){for(var n={"%FE%FF":"\uFFFD\uFFFD","%FF%FE":"\uFFFD\uFFFD"},t=ft.exec(e);t;){try{n[t[0]]=decodeURIComponent(t[0])}catch(d){var i=Jt(t[0]);i!==t[0]&&(n[t[0]]=i)}t=ft.exec(e)}n["%C2"]="\uFFFD";for(var s=Object.keys(n),o=0;o<s.length;o++){var m=s[o];e=e.replace(new RegExp(m,"g"),n[m])}return e}var Kt=function(e){if(typeof e!="string")throw new TypeError("Expected `encodedURI` to be of type `string`, got `"+typeof e+"`");try{return e=e.replace(/\+/g," "),decodeURIComponent(e)}catch(n){return Xt(e)}},en=(e,n)=>{if(!(typeof e=="string"&&typeof n=="string"))throw new TypeError("Expected the arguments to be of type `string`");if(n==="")return[e];const t=e.indexOf(n);return t===-1?[e]:[e.slice(0,t),e.slice(t+n.length)]},tn=function(e,n){for(var t={},i=Object.keys(e),s=Array.isArray(n),o=0;o<i.length;o++){var m=i[o],d=e[m];(s?n.indexOf(m)!==-1:n(m,d,e))&&(t[m]=d)}return t};(function(e){const n=Qt,t=Kt,i=en,s=tn,o=r=>r==null,m=Symbol("encodeFragmentIdentifier");function d(r){switch(r.arrayFormat){case"index":return a=>(l,c)=>{const g=l.length;return c===void 0||r.skipNull&&c===null||r.skipEmptyString&&c===""?l:c===null?[...l,[u(a,r),"[",g,"]"].join("")]:[...l,[u(a,r),"[",u(g,r),"]=",u(c,r)].join("")]};case"bracket":return a=>(l,c)=>c===void 0||r.skipNull&&c===null||r.skipEmptyString&&c===""?l:c===null?[...l,[u(a,r),"[]"].join("")]:[...l,[u(a,r),"[]=",u(c,r)].join("")];case"colon-list-separator":return a=>(l,c)=>c===void 0||r.skipNull&&c===null||r.skipEmptyString&&c===""?l:c===null?[...l,[u(a,r),":list="].join("")]:[...l,[u(a,r),":list=",u(c,r)].join("")];case"comma":case"separator":case"bracket-separator":{const a=r.arrayFormat==="bracket-separator"?"[]=":"=";return l=>(c,g)=>g===void 0||r.skipNull&&g===null||r.skipEmptyString&&g===""?c:(g=g===null?"":g,c.length===0?[[u(l,r),a,u(g,r)].join("")]:[[c,u(g,r)].join(r.arrayFormatSeparator)])}default:return a=>(l,c)=>c===void 0||r.skipNull&&c===null||r.skipEmptyString&&c===""?l:c===null?[...l,u(a,r)]:[...l,[u(a,r),"=",u(c,r)].join("")]}}function w(r){let a;switch(r.arrayFormat){case"index":return(l,c,g)=>{if(a=/\[(\d*)\]$/.exec(l),l=l.replace(/\[\d*\]$/,""),!a){g[l]=c;return}g[l]===void 0&&(g[l]={}),g[l][a[1]]=c};case"bracket":return(l,c,g)=>{if(a=/(\[\])$/.exec(l),l=l.replace(/\[\]$/,""),!a){g[l]=c;return}if(g[l]===void 0){g[l]=[c];return}g[l]=[].concat(g[l],c)};case"colon-list-separator":return(l,c,g)=>{if(a=/(:list)$/.exec(l),l=l.replace(/:list$/,""),!a){g[l]=c;return}if(g[l]===void 0){g[l]=[c];return}g[l]=[].concat(g[l],c)};case"comma":case"separator":return(l,c,g)=>{const x=typeof c=="string"&&c.includes(r.arrayFormatSeparator),C=typeof c=="string"&&!x&&p(c,r).includes(r.arrayFormatSeparator);c=C?p(c,r):c;const T=x||C?c.split(r.arrayFormatSeparator).map(A=>p(A,r)):c===null?c:p(c,r);g[l]=T};case"bracket-separator":return(l,c,g)=>{const x=/(\[\])$/.test(l);if(l=l.replace(/\[\]$/,""),!x){g[l]=c&&p(c,r);return}const C=c===null?[]:c.split(r.arrayFormatSeparator).map(T=>p(T,r));if(g[l]===void 0){g[l]=C;return}g[l]=[].concat(g[l],C)};default:return(l,c,g)=>{if(g[l]===void 0){g[l]=c;return}g[l]=[].concat(g[l],c)}}}function f(r){if(typeof r!="string"||r.length!==1)throw new TypeError("arrayFormatSeparator must be single character string")}function u(r,a){return a.encode?a.strict?n(r):encodeURIComponent(r):r}function p(r,a){return a.decode?t(r):r}function S(r){return Array.isArray(r)?r.sort():typeof r=="object"?S(Object.keys(r)).sort((a,l)=>Number(a)-Number(l)).map(a=>r[a]):r}function N(r){const a=r.indexOf("#");return a!==-1&&(r=r.slice(0,a)),r}function I(r){let a="";const l=r.indexOf("#");return l!==-1&&(a=r.slice(l)),a}function _(r){r=N(r);const a=r.indexOf("?");return a===-1?"":r.slice(a+1)}function h(r,a){return a.parseNumbers&&!Number.isNaN(Number(r))&&typeof r=="string"&&r.trim()!==""?r=Number(r):a.parseBooleans&&r!==null&&(r.toLowerCase()==="true"||r.toLowerCase()==="false")&&(r=r.toLowerCase()==="true"),r}function k(r,a){a=Object.assign({decode:!0,sort:!0,arrayFormat:"none",arrayFormatSeparator:",",parseNumbers:!1,parseBooleans:!1},a),f(a.arrayFormatSeparator);const l=w(a),c=Object.create(null);if(typeof r!="string"||(r=r.trim().replace(/^[?#&]/,""),!r))return c;for(const g of r.split("&")){if(g==="")continue;let[x,C]=i(a.decode?g.replace(/\+/g," "):g,"=");C=C===void 0?null:["comma","separator","bracket-separator"].includes(a.arrayFormat)?C:p(C,a),l(p(x,a),C,c)}for(const g of Object.keys(c)){const x=c[g];if(typeof x=="object"&&x!==null)for(const C of Object.keys(x))x[C]=h(x[C],a);else c[g]=h(x,a)}return a.sort===!1?c:(a.sort===!0?Object.keys(c).sort():Object.keys(c).sort(a.sort)).reduce((g,x)=>{const C=c[x];return Boolean(C)&&typeof C=="object"&&!Array.isArray(C)?g[x]=S(C):g[x]=C,g},Object.create(null))}e.extract=_,e.parse=k,e.stringify=(r,a)=>{if(!r)return"";a=Object.assign({encode:!0,strict:!0,arrayFormat:"none",arrayFormatSeparator:","},a),f(a.arrayFormatSeparator);const l=C=>a.skipNull&&o(r[C])||a.skipEmptyString&&r[C]==="",c=d(a),g={};for(const C of Object.keys(r))l(C)||(g[C]=r[C]);const x=Object.keys(g);return a.sort!==!1&&x.sort(a.sort),x.map(C=>{const T=r[C];return T===void 0?"":T===null?u(C,a):Array.isArray(T)?T.length===0&&a.arrayFormat==="bracket-separator"?u(C,a)+"[]":T.reduce(c(C),[]).join("&"):u(C,a)+"="+u(T,a)}).filter(C=>C.length>0).join("&")},e.parseUrl=(r,a)=>{a=Object.assign({decode:!0},a);const[l,c]=i(r,"#");return Object.assign({url:l.split("?")[0]||"",query:k(_(r),a)},a&&a.parseFragmentIdentifier&&c?{fragmentIdentifier:p(c,a)}:{})},e.stringifyUrl=(r,a)=>{a=Object.assign({encode:!0,strict:!0,[m]:!0},a);const l=N(r.url).split("?")[0]||"",c=e.extract(r.url),g=e.parse(c,{sort:!1}),x=Object.assign(g,r.query);let C=e.stringify(x,a);C&&(C=`?${C}`);let T=I(r.url);return r.fragmentIdentifier&&(T=`#${a[m]?u(r.fragmentIdentifier,a):r.fragmentIdentifier}`),`${l}${C}${T}`},e.pick=(r,a,l)=>{l=Object.assign({parseFragmentIdentifier:!0,[m]:!1},l);const{url:c,query:g,fragmentIdentifier:x}=e.parseUrl(r,l);return e.stringifyUrl({url:c,query:s(g,a),fragmentIdentifier:x},l)},e.exclude=(r,a,l)=>{const c=Array.isArray(a)?g=>!a.includes(g):(g,x)=>!a(g,x);return e.pick(r,c,l)}})(ve);const[se,nn]=te([]),[dt,rn]=te([]),[He,gt]=te(new Map),[ht,sn]=te([]),[Ve,an]=te(""),[ln,on]=te(""),xe=window.woocommerce_admin_meta_boxes.ajax_url;function ye(e){return ie(this,null,function*(){var t;const n=((t=document.querySelector("#aftership_get_nonce"))==null?void 0:t.value)||"";yield fetch(ve.stringifyUrl({url:xe,query:{action:"aftership_get_order_trackings",security:n,order_id:e,t:Date.now()}})).then(i=>i.json()).then(i=>{const s=i.data,o=window.get_aftership_couriers(),m=new Map;s.trackings.forEach(d=>{if(m.has(d.slug))return;const w=o.find(f=>f.slug===d.slug);w&&m.set(d.slug,w)}),gt(d=>new Map([...d,...m])),nn(s.trackings),sn(s.line_items),on(s.number)})})}function cn(e,n){return ie(this,null,function*(){var w;const t=se().find(f=>f.tracking_id===n.tracking_id),i=se().findIndex(f=>f.tracking_id===n.tracking_id),s=new Date().toISOString().replace(/\.\d+(?=Z$)/,""),o=n.slug!==(t==null?void 0:t.slug)||n.tracking_number!==(t==null?void 0:t.tracking_number);let m=[...se()];t&&!o?m.splice(i,1,H(z({},n),{metrics:{created_at:t.metrics.created_at||s,updated_at:s}})):m=[...m.filter(f=>f.tracking_id!==n.tracking_id),H(z({},n),{tracking_id:Wt(`${n.slug}-${n.tracking_number}`).toString(),metrics:{created_at:s,updated_at:s}})];const d=((w=document.querySelector("#aftership_create_nonce"))==null?void 0:w.value)||"";yield fetch(ve.stringifyUrl({url:xe,query:{action:"aftership_save_order_tracking",security:d}}),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({order_id:e,trackings:m})})})}function un(e,n){return ie(this,null,function*(){var i;const t=((i=document.querySelector("#aftership_delete_nonce"))==null?void 0:i.value)||"";yield fetch(ve.stringifyUrl({url:xe,query:{action:"aftership_delete_order_tracking",security:t}}),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({order_id:e,tracking_id:n})})})}function fn(){return ie(this,null,function*(){yield fetch(ve.stringifyUrl({url:xe,query:{action:"aftership_get_settings",t:Date.now()}})).then(e=>e.json()).then(e=>{const n=e.data.couriers,t=new Map(He());n.forEach(i=>{t.set(i.slug,i)}),gt(i=>new Map([...i,...t])),rn(n),an(e.data.custom_domain)})})}var dn=typeof global=="object"&&global&&global.Object===Object&&global,gn=dn,hn=typeof self=="object"&&self&&self.Object===Object&&self,mn=gn||hn||Function("return this")(),_n=mn,vn=_n.Symbol,ce=vn,mt=Object.prototype,yn=mt.hasOwnProperty,bn=mt.toString,be=ce?ce.toStringTag:void 0;function $n(e){var n=yn.call(e,be),t=e[be];try{e[be]=void 0;var i=!0}catch(o){}var s=bn.call(e);return i&&(n?e[be]=t:delete e[be]),s}var pn=Object.prototype,wn=pn.toString;function Sn(e){return wn.call(e)}var Cn="[object Null]",xn="[object Undefined]",_t=ce?ce.toStringTag:void 0;function Nn(e){return e==null?e===void 0?xn:Cn:_t&&_t in Object(e)?$n(e):Sn(e)}function kn(e){return e!=null&&typeof e=="object"}var An="[object Symbol]";function In(e){return typeof e=="symbol"||kn(e)&&Nn(e)==An}function jn(e,n){for(var t=-1,i=e==null?0:e.length,s=Array(i);++t<i;)s[t]=n(e[t],t,e);return s}var Tn=Array.isArray,On=Tn,Mn=1/0,vt=ce?ce.prototype:void 0,yt=vt?vt.toString:void 0;function bt(e){if(typeof e=="string")return e;if(On(e))return jn(e,bt)+"";if(In(e))return yt?yt.call(e):"";var n=e+"";return n=="0"&&1/e==-Mn?"-0":n}function $t(e){return e==null?"":bt(e)}function En(e,n,t){var i=-1,s=e.length;n<0&&(n=-n>s?0:s+n),t=t>s?s:t,t<0&&(t+=s),s=n>t?0:t-n>>>0,n>>>=0;for(var o=Array(s);++i<s;)o[i]=e[i+n];return o}function Dn(e,n,t){var i=e.length;return t=t===void 0?i:t,!n&&t>=i?e:En(e,n,t)}var Fn="\\ud800-\\udfff",Ln="\\u0300-\\u036f",Bn="\\ufe20-\\ufe2f",Rn="\\u20d0-\\u20ff",Pn=Ln+Bn+Rn,Un="\\ufe0e\\ufe0f",qn="\\u200d",zn=RegExp("["+qn+Fn+Pn+Un+"]");function pt(e){return zn.test(e)}function Hn(e){return e.split("")}var wt="\\ud800-\\udfff",Vn="\\u0300-\\u036f",Yn="\\ufe20-\\ufe2f",Zn="\\u20d0-\\u20ff",Gn=Vn+Yn+Zn,Wn="\\ufe0e\\ufe0f",Qn="["+wt+"]",Ye="["+Gn+"]",Ze="\\ud83c[\\udffb-\\udfff]",Jn="(?:"+Ye+"|"+Ze+")",St="[^"+wt+"]",Ct="(?:\\ud83c[\\udde6-\\uddff]){2}",xt="[\\ud800-\\udbff][\\udc00-\\udfff]",Xn="\\u200d",Nt=Jn+"?",kt="["+Wn+"]?",Kn="(?:"+Xn+"(?:"+[St,Ct,xt].join("|")+")"+kt+Nt+")*",er=kt+Nt+Kn,tr="(?:"+[St+Ye+"?",Ye,Ct,xt,Qn].join("|")+")",nr=RegExp(Ze+"(?="+Ze+")|"+tr+er,"g");function rr(e){return e.match(nr)||[]}function ir(e){return pt(e)?rr(e):Hn(e)}function sr(e){return function(n){n=$t(n);var t=pt(n)?ir(n):void 0,i=t?t[0]:n.charAt(0),s=t?Dn(t,1).join(""):n.slice(1);return i[e]()+s}}var ar=sr("toUpperCase"),lr=ar;function or(e){return lr($t(e).toLowerCase())}var Ne={container:"_container_1s8av_1",backdrop:"_backdrop_1s8av_8",modal:"_modal_1s8av_15"},cr="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0iY3VycmVudENvbG9yIiBjbGFzcz0iYmkgYmkteCIgdmlld0JveD0iMCAwIDE2IDE2Ij4KICA8cGF0aCBmaWxsPSIjNjY2IiBkPSJNNC42NDYgNC42NDZhLjUuNSAwIDAgMSAuNzA4IDBMOCA3LjI5M2wyLjY0Ni0yLjY0N2EuNS41IDAgMCAxIC43MDguNzA4TDguNzA3IDhsMi42NDcgMi42NDZhLjUuNSAwIDAgMS0uNzA4LjcwOEw4IDguNzA3bC0yLjY0NiAyLjY0N2EuNS41IDAgMCAxLS43MDgtLjcwOEw3LjI5MyA4IDQuNjQ2IDUuMzU0YS41LjUgMCAwIDEgMC0uNzA4eiIvPgo8L3N2Zz4=";const ur=Q('<div><div></div><section><header><h1></h1><div role="button"><img></div></header><article></article><footer></footer></section></div>');function fr(e){return Oe(()=>{e.visible?document.body.style.overflowY="hidden":document.body.style.overflowY="auto"}),V(Pe,{get when(){return e.visible},get children(){const n=ur.cloneNode(!0),t=n.firstChild,i=t.nextSibling,s=i.firstChild,o=s.firstChild,m=o.nextSibling,d=m.firstChild,w=s.nextSibling,f=w.nextSibling;return Ue(t,"click",e.onCancel,!0),O(o,()=>e.title),Ue(m,"click",e.onCancel,!0),re(d,"src",cr),O(w,()=>e.children),O(f,V(at,{get disabled(){return e.disabled},onClick:()=>e.onOk&&e.onOk(),type:"primary",get children(){return e.okText||"Ok"}})),G(u=>{const p=Ne.container,S=Ne.backdrop,N=Ne.modal,I=Ne.header;return p!==u._v$&&(n.className=u._v$=p),S!==u._v$2&&(t.className=u._v$2=S),N!==u._v$3&&(i.className=u._v$3=N),I!==u._v$4&&(s.className=u._v$4=I),u},{_v$:void 0,_v$2:void 0,_v$3:void 0,_v$4:void 0}),n}})}he(["click"]);var Ge={root:"_root_b92ih_1",suffix:"_suffix_b92ih_25",action:"_action_b92ih_30"},dr="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0iY3VycmVudENvbG9yIiBjbGFzcz0iYmkgYmktY2FyZXQtdXAtZmlsbCIgdmlld0JveD0iMCAwIDE2IDE2Ij4KICA8cGF0aCBmaWxsPSIjNWM1ZjYyIiBkPSJtNy4yNDcgNC44Ni00Ljc5NiA1LjQ4MWMtLjU2Ni42NDctLjEwNiAxLjY1OS43NTMgMS42NTloOS41OTJhMSAxIDAgMCAwIC43NTMtMS42NTlsLTQuNzk2LTUuNDhhMSAxIDAgMCAwLTEuNTA2IDB6Ii8+Cjwvc3ZnPg==",gr="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0iY3VycmVudENvbG9yIiBjbGFzcz0iYmkgYmktY2FyZXQtZG93bi1maWxsIiB2aWV3Qm94PSIwIDAgMTYgMTYiPgogIDxwYXRoIGZpbGw9IiM1YzVmNjIiIGQ9Ik03LjI0NyAxMS4xNCAyLjQ1MSA1LjY1OEMxLjg4NSA1LjAxMyAyLjM0NSA0IDMuMjA0IDRoOS41OTJhMSAxIDAgMCAxIC43NTMgMS42NTlsLTQuNzk2IDUuNDhhMSAxIDAgMCAxLTEuNTA2IDB6Ii8+Cjwvc3ZnPg==";const hr=Q("<div>of </div>"),mr=Q('<div><div><input type="number" inputmode="numeric"></div><div aria-hidden><div role="button" tabindex="-1"><img></div><div role="button" tabindex="-1"><img></div></div></div>');function _r(e){let n;const t=Pt({step:1},e);function i(w){return t.min!==void 0&&Number(w)<t.min}function s(w){return t.max!==void 0&&Number(w)>t.max}function o(w){!w||i(w)||s(w)||t.onChange(Number(w))}function m(w){if(w)if(i(w)){t.onChange(t.min),n.value=String(t.min);return}else if(s(w)){t.onChange(t.max),n.value=String(t.max);return}else t.onChange(Number(w));else n.value="",t.onChange(void 0)}function d(w){const f=t.value;let u;if(f===void 0)u=w>0?t.min:t.max,t.onChange(u||0);else{u=f+w*t.step;const p=String(u);if(i(p)||s(p))return}t.onChange(u)}return(()=>{const w=mr.cloneNode(!0),f=w.firstChild,u=f.firstChild,p=f.nextSibling,S=p.firstChild,N=S.firstChild,I=S.nextSibling,_=I.firstChild;return u.addEventListener("blur",h=>m(h.currentTarget.value)),u.$$input=h=>o(h.currentTarget.value),(h=>n=h)(u),O(w,V(Pe,{get when(){return t.max!==void 0},get children(){const h=hr.cloneNode(!0);return h.firstChild,h.$$click=()=>n.focus(),O(h,()=>t.max,null),G(()=>h.className=Ge.suffix),h}}),p),S.$$click=()=>d(1),re(N,"src",dr),I.$$click=()=>d(-1),re(_,"src",gr),G(h=>{const k=Ge.root,r=t.min,a=t.max,l=t.value,c=Ge.action;return k!==h._v$&&(w.className=h._v$=k),r!==h._v$2&&re(u,"min",h._v$2=r),a!==h._v$3&&re(u,"max",h._v$3=a),l!==h._v$4&&(u.value=h._v$4=l),c!==h._v$5&&(p.className=h._v$5=c),h},{_v$:void 0,_v$2:void 0,_v$3:void 0,_v$4:void 0,_v$5:void 0}),w})()}he(["input","click"]);var ke={modal:"_modal_128mo_1",empty:"_empty_128mo_7",items:"_items_128mo_13",input:"_input_128mo_34"};function vr(e){const n=new Map;return e.forEach(i=>{var s;(s=i.line_items)==null||s.forEach(o=>{n.has(Number(o.id))?n.set(Number(o.id),(n.get(Number(o.id))||0)+Number(o.quantity)):n.set(Number(o.id),Number(o.quantity))})}),ht().map(i=>{const s=n.get(i.id)||0;return{id:i.id,name:i.name,quantity:i.quantity-s}}).filter(i=>i.quantity>0)}const yr=Q("<table><thead><tr><th>Items</th><th>Qty.</th></tr></thead><tbody></tbody></table>"),br=Q('<div style="color: red;"></div>'),$r=Q('<div><hr><div><div><label>Courier:<select></select></label><a href="admin.php?page=aftership-setting-admin">Update carrier list</a></div><div><label>Tracking number:<input></label></div></div></div>'),pr=Q("<div>All items have been fulfilled</div>"),wr=Q("<tr><td></td><td></td></tr>"),Sr=Q("<option></option>"),Cr=Q("<div><label>:<input></label></div>"),Ae={tracking_id:"",tracking_number:"",slug:"",additional_fields:{account_number:"",key:"",postal_code:"",ship_date:"",destination_country:"",state:""},line_items:{}};function xr(e){const[n,t]=te(Ae),i=W(()=>n().slug||""),s=W(()=>{var h;return(((h=He().get(i()))==null?void 0:h.required_fields)||[]).map(k=>({key:k.replace(/^tracking_/,""),name:k.replace(/^tracking_/,"").split("_").map(or).join(" ")}))}),o=W(()=>e.value?se().filter(_=>{var h;return _.tracking_id!==((h=e.value)==null?void 0:h.tracking_id)}):se()),m=W(()=>o().length),d=W(()=>vr(o()));Oe(()=>{var k,r,a;const _=new Date().toISOString().split("T")[0],h=((k=e.value)==null?void 0:k.line_items)||[];e.value?e.value.line_items?t({tracking_id:e.value.tracking_id,slug:e.value.slug,tracking_number:e.value.tracking_number,additional_fields:H(z({},e.value.additional_fields),{ship_date:e.value.additional_fields.ship_date||_}),line_items:Object.fromEntries(h.map(l=>[Number(l.id),Number(l.quantity)]))}):m()?t({tracking_id:e.value.tracking_id,slug:e.value.slug,tracking_number:e.value.tracking_number,additional_fields:H(z({},e.value.additional_fields),{ship_date:e.value.additional_fields.ship_date||_}),line_items:Object.fromEntries(d().map(l=>[Number(l.id),0]))}):t({tracking_id:e.value.tracking_id,slug:e.value.slug,tracking_number:e.value.tracking_number,additional_fields:H(z({},e.value.additional_fields),{ship_date:e.value.additional_fields.ship_date||_}),line_items:Object.fromEntries(d().map(l=>[Number(l.id),Number(l.quantity)]))}):t(H(z({},Ae),{slug:((a=(r=dt())==null?void 0:r[0])==null?void 0:a.slug)||"",additional_fields:H(z({},Ae.additional_fields),{ship_date:_}),line_items:Object.fromEntries(d().map(l=>[Number(l.id),Number(l.quantity)]))}))});const w=()=>{t(_=>{const h=new Date().toISOString().split("T")[0];return H(z({},_),{additional_fields:H(z({},Ae.additional_fields),{ship_date:h})})})},f=W(()=>{let _=!0;const h={};return Object.entries(n().line_items||[]).some(([,r])=>!!r)||(_=!1),n().slug===""&&(_=!1,h.slug="Required"),n().tracking_number===""&&(_=!1),o().some(r=>r.slug===n().slug&&r.tracking_number===n().tracking_number)&&(_=!1,h.tracking_number="This shipment has already been added."),s().forEach(r=>{n().additional_fields[r.key]===""&&(_=!1,h.additional_fields=H(z({},h.additional_fields),{[r.key]:"Required"}))}),{isValid:_,errors:h}}),u=(_,h)=>{t(k=>H(z({},k),{line_items:H(z({},k.line_items),{[_]:h})}))},p=(_,h)=>{t(k=>H(z({},k),{[_]:h.trim()}))},S=(_,h)=>{t(k=>H(z({},k),{additional_fields:H(z({},k.additional_fields),{[_]:h.trim()})}))},N=()=>e.onOk(n()),I=W(()=>{var _;return`${((_=e.value)==null?void 0:_.tracking_id)?"Edit tracking":"Add tracking"} - order - #${e.orderId}`});return V(fr,{get title(){return I()},get visible(){return e.visible},get okText(){var _;return((_=e.value)==null?void 0:_.tracking_id)?"Save":"Add"},onOk:N,get onCancel(){return e.onCancel},get disabled(){return!f().isValid},get children(){const _=$r.cloneNode(!0),h=_.firstChild,k=h.nextSibling,r=k.firstChild,a=r.firstChild,l=a.firstChild,c=l.nextSibling,g=r.nextSibling,x=g.firstChild,C=x.firstChild,T=C.nextSibling;return O(_,V(Ut,{get fallback(){return(()=>{const A=pr.cloneNode(!0);return G(()=>A.className=ke.empty),A})()},get children(){return V(qt,{get when(){return d().length>0},get children(){const A=yr.cloneNode(!0),F=A.firstChild,j=F.nextSibling;return O(j,V(ge,{get each(){return d()},children:L=>(()=>{const B=wr.cloneNode(!0),E=B.firstChild,U=E.nextSibling;return O(E,()=>L.name),O(U,V(_r,{min:0,get max(){return L.quantity},step:1,get value(){var q;return((q=n().line_items)==null?void 0:q[L.id])||0},onChange:q=>u(L.id,q||0)})),B})()})),G(()=>A.className=ke.items),A}})}}),h),h.style.setProperty("margin","20px 0"),c.addEventListener("change",A=>{w(),p("slug",A.currentTarget.value)}),O(c,V(ge,{get each(){return dt()},children:A=>(()=>{const F=Sr.cloneNode(!0);return O(F,()=>A.name||A.other_name),G(()=>F.value=A.slug),F})()})),T.$$input=A=>p("tracking_number",A.currentTarget.value),O(g,V(Pe,{get when(){return f().errors.tracking_number},get children(){const A=br.cloneNode(!0);return O(A,()=>f().errors.tracking_number),A}}),null),O(k,V(ge,{get each(){return s()},children:A=>(()=>{const F=Cr.cloneNode(!0),j=F.firstChild,L=j.firstChild,B=L.nextSibling;return O(j,()=>A.name,L),B.$$input=E=>S(A.key,E.currentTarget.value),G(E=>{const U=A.key==="ship_date"?"date":"text",q=n().additional_fields[A.key];return U!==E._v$5&&re(B,"type",E._v$5=U),q!==E._v$6&&(B.value=E._v$6=q),E},{_v$5:void 0,_v$6:void 0}),F})()}),null),G(A=>{var E;const F=ke.modal,j=ke.input,L=(E=n())==null?void 0:E.slug,B=n().tracking_number;return F!==A._v$&&(_.className=A._v$=F),j!==A._v$2&&(k.className=A._v$2=j),L!==A._v$3&&(c.value=A._v$3=L),B!==A._v$4&&(T.value=A._v$4=B),A},{_v$:void 0,_v$2:void 0,_v$3:void 0,_v$4:void 0}),_}})}he(["input"]);const Nr=Q("<div><div></div><div></div></div>"),kr=Q('<div><div><div>Shipment </div><div><a>Edit</a><a>Delete</a></div></div><div><div><div><strong>&nbsp;</strong></div><div><a target="_blank"></a></div></div></div></div>'),Ar=Q("<div><div></div><div>&nbsp;x </div></div>"),Ir=()=>{const[e,n]=te(!1),[t,i]=te(),s=window.woocommerce_admin_meta_boxes.post_id;Tt(()=>{ye(s),fn()});const o=u=>ie(this,null,function*(){const p=u.line_items||{};yield cn(s,H(z({},u),{line_items:Object.entries(p).map(([S,N])=>({id:Number(S),quantity:N})).filter(S=>S.quantity>0)})),n(!1),i(void 0),yield ye(s)}),m=()=>{n(!1),i(void 0)},d=u=>ie(this,null,function*(){yield un(s,u),yield ye(s)}),w=W(()=>{const u=new Map;return se().forEach(p=>{var N;const S=(N=p.line_items||[])==null?void 0:N.map(I=>{const _=ht().find(h=>I.id===h.id);return{name:(_==null?void 0:_.name)||String(I.id),quantity:I.quantity}});u.set(p.tracking_id,S)}),u}),f=u=>/^https?:\/\//.test(Ve())?`${Ve()}/${u.slug}/${u.tracking_number}`:`https://${Ve()}/${u.slug}/${u.tracking_number}`;return(()=>{const u=Nr.cloneNode(!0),p=u.firstChild,S=p.nextSibling;return O(p,V(ge,{get each(){return se()},children:(N,I)=>(()=>{const _=kr.cloneNode(!0),h=_.firstChild,k=h.firstChild;k.firstChild;const r=k.nextSibling,a=r.firstChild,l=a.nextSibling,c=h.nextSibling,g=c.firstChild,x=g.firstChild,C=x.firstChild,T=C.firstChild,A=x.nextSibling,F=A.firstChild;return O(k,()=>I()+1,null),a.$$click=()=>ie(this,null,function*(){yield ye(s),i(N),n(!0)}),l.$$click=()=>d(N.tracking_id),O(C,()=>{var j;return((j=He().get(N.slug))==null?void 0:j.name)||N.slug},T),O(F,()=>N.tracking_number),O(c,V(ge,{get each(){return w().get(N.tracking_id)||[]},children:j=>(()=>{const L=Ar.cloneNode(!0),B=L.firstChild,E=B.nextSibling;return E.firstChild,O(B,()=>j.name),O(E,()=>j.quantity,null),G(U=>{const q=oe.item,ne=j.name;return q!==U._v$7&&(L.className=U._v$7=q),ne!==U._v$8&&re(B,"title",U._v$8=ne),U},{_v$7:void 0,_v$8:void 0}),L})()}),null),G(j=>{const L=oe.tracking,B=oe.title,E=oe.content,U=oe.number,q=N.tracking_number,ne=f(N);return L!==j._v$&&(_.className=j._v$=L),B!==j._v$2&&(h.className=j._v$2=B),E!==j._v$3&&(c.className=j._v$3=E),U!==j._v$4&&(g.className=j._v$4=U),q!==j._v$5&&re(F,"title",j._v$5=q),ne!==j._v$6&&re(F,"href",j._v$6=ne),j},{_v$:void 0,_v$2:void 0,_v$3:void 0,_v$4:void 0,_v$5:void 0,_v$6:void 0}),_})()})),S.style.setProperty("padding","12px"),O(S,V(at,{onClick:()=>ie(this,null,function*(){yield ye(s),n(!0)}),style:{width:"100%"},children:"Add Tracking Number"})),O(u,V(xr,{get visible(){return e()},get value(){return t()},onCancel:m,onOk:o,get orderId(){return ln()}}),null),G(()=>u.className=oe.root),u})()};he(["click"]);var ei="";customElements.define("aftership-meta-box",class extends HTMLElement{constructor(){super();It(this,"initialized",!1);this.attachShadow({mode:"open"})}connectedCallback(){if(!!this.shadowRoot&&!this.initialized){this.initialized=!0;{const n=document.currentScript,t=document.createElement("link");t.rel="stylesheet",t.href=n.src.replace(/\/index\.js\?/,"/style.css?"),this.shadowRoot.appendChild(t)}zt(()=>V(Ir,{}),this.shadowRoot)}}})})();
assets/frontend/dist/metabox/style.css ADDED
@@ -0,0 +1 @@
 
1
+ ._button_1dv9o_1{border:1px solid #ccc;border-radius:3px;background-color:#f7f7f7;color:#555;font-size:13px;min-height:30px;padding:0 10px;cursor:pointer}._button_1dv9o_1[disabled]{color:#a7aaad!important;background:#f6f7f7!important;border-color:#dcdcde!important;cursor:not-allowed}._primary_1dv9o_18{border-color:#2271b1;background:#2271b1;color:#fff}._primary_1dv9o_18:hover{background:#135e96;border-color:#135e96}._root_nkd9j_1{position:relative}._loading_nkd9j_5{position:absolute;height:100%;width:100%;top:0;left:0;background:#fff;opacity:.6;pointer-events:none;display:flex;align-items:center;justify-content:center}._tracking_nkd9j_19{padding:16px 12px;border-bottom:1px solid #eeeeee}._tracking_nkd9j_19 ._title_nkd9j_23{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;color:#5f5f5f}._tracking_nkd9j_19 ._title_nkd9j_23 a{font-size:12px}._tracking_nkd9j_19 ._title_nkd9j_23 a:nth-child(2){color:#a00;margin-left:12px}._content_nkd9j_38{background-color:#f6f6f6;padding:12px;font-size:14px;line-height:1.43}._number_nkd9j_45{margin-bottom:2px}._number_nkd9j_45>div:nth-child(1){flex-shrink:0;word-break:break-all}._number_nkd9j_45>div:nth-child(1) strong{font-weight:600;color:#3c434a}._number_nkd9j_45>div:nth-child(2){text-overflow:ellipsis;overflow:hidden;word-break:keep-all}._number_nkd9j_45>div:nth-child(2) a{text-decoration:none}._item_nkd9j_65{display:flex;flex-wrap:nowrap;color:#404040}._item_nkd9j_65 div:nth-child(1){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}._item_nkd9j_65 div:nth-child(2){flex-shrink:0}._container_1s8av_1{position:fixed;top:0;right:0;z-index:99999}._backdrop_1s8av_8{width:100vw;height:100vh;background-color:#000;opacity:.7}._modal_1s8av_15{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background-color:#fff;width:500px}._modal_1s8av_15 header{background:#fcfcfc;padding:1em 1.5em;border-bottom:1px solid #ddd}._modal_1s8av_15 header h1{margin:0;font-size:18px;font-weight:700;line-height:1.5em}._modal_1s8av_15 header div{position:absolute;top:0;right:0;width:54px;height:54px;display:flex;align-items:center;justify-content:center;cursor:pointer;border-left:1px solid #ddd;color:#666}._modal_1s8av_15 header div:hover{background:#ddd;border-color:#ccc}._modal_1s8av_15 header img{height:32px;width:32px}._modal_1s8av_15 footer{padding:1em 1.5em;background:#fcfcfc;border-top:1px solid #dfdfdf;box-shadow:0 -4px 4px -4px #0000001a;display:flex;justify-content:flex-end}._root_b92ih_1{display:flex;align-items:center;justify-content:space-between;border:1px solid #8c8f94;border-radius:4px;height:30px;overflow:hidden}._root_b92ih_1 input{line-height:26px;border:0;padding-left:8px}._root_b92ih_1 input:focus{outline:0}._root_b92ih_1 input[type=number]::-webkit-outer-spin-button,._root_b92ih_1 input[type=number]::-webkit-inner-spin-button{appearance:none;margin:0}._root_b92ih_1 input[type=number]{appearance:textfield}._root_b92ih_1 ._suffix_b92ih_25{color:#6c7075;margin-right:8px;cursor:default}._root_b92ih_1 ._action_b92ih_30{width:22px;padding:2px;height:100%;display:grid;row-gap:2px}._root_b92ih_1 ._action_b92ih_30 div{border-radius:2px;background-color:#e4e5e7;display:flex;align-items:center;justify-content:center;cursor:pointer}._root_b92ih_1 ._action_b92ih_30 div:hover{background-color:#c9cbcf}._root_b92ih_1 ._action_b92ih_30 div:active{background-color:#b3b5b9}._root_b92ih_1 ._action_b92ih_30 div img{width:10px;height:10px;user-select:none}._modal_128mo_1{padding:20px;max-height:70vh;overflow:auto}._empty_128mo_7{text-align:center;font-size:16px;color:#999c9f}._items_128mo_13{display:grid;text-align:left;grid-template-columns:1fr auto;column-gap:10px;row-gap:6px;align-items:center}._items_128mo_13 thead,._items_128mo_13 tbody,._items_128mo_13 tr{display:contents}._items_128mo_13 th:last-child,._items_128mo_13 td:last-child{text-align:right}._items_128mo_13 th{margin-bottom:8px}._input_128mo_34{color:#3c434a;display:grid;grid-template-columns:1fr 1fr;column-gap:20px;row-gap:10px}._input_128mo_34 label{display:flex;flex-direction:column}._input_128mo_34 a{font-size:12px;text-decoration-line:underline;margin-left:2px;width:fit-content}._input_128mo_34 label{margin-left:2px}._input_128mo_34 select{border:1px solid #8c8f94;border-radius:4px;min-height:30px;font-size:14px;line-height:28px;padding:0 8px}._input_128mo_34 input{border:1px solid #8c8f94;border-radius:4px;font-size:14px;line-height:28px;padding:0 8px}/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}:host{all:initial;font-family:inherit;font-size:inherit}*{box-sizing:border-box}a{cursor:pointer;color:#2271b1;transition:color .5s ease-in-out}a:hover{color:#135e96}
assets/frontend/dist/orders/index.js ADDED
@@ -0,0 +1 @@
 
1
+ var xr=Object.defineProperty,Nr=Object.defineProperties;var Ar=Object.getOwnPropertyDescriptors;var Ct=Object.getOwnPropertySymbols;var kr=Object.prototype.hasOwnProperty,Ir=Object.prototype.propertyIsEnumerable;var Ve=(U,E,T)=>E in U?xr(U,E,{enumerable:!0,configurable:!0,writable:!0,value:T}):U[E]=T,B=(U,E)=>{for(var T in E||(E={}))kr.call(E,T)&&Ve(U,T,E[T]);if(Ct)for(var T of Ct(E))Ir.call(E,T)&&Ve(U,T,E[T]);return U},R=(U,E)=>Nr(U,Ar(E));var xt=(U,E,T)=>(Ve(U,typeof E!="symbol"?E+"":E,T),T);var ne=(U,E,T)=>new Promise((me,X)=>{var K=O=>{try{re(T.next(O))}catch(Z){X(Z)}},le=O=>{try{re(T.throw(O))}catch(Z){X(Z)}},re=O=>O.done?me(O.value):Promise.resolve(O.value).then(K,le);re((T=T.apply(U,E)).next())});(function(){"use strict";const U=(e,n)=>e===n,E=Symbol("solid-proxy"),T={equals:U};let me=Ge;const X={},K=1,le=2,re={owned:null,cleanups:null,context:null,owner:null};var O=null;let Z=null,M=null,oe=null,H=null,ee=null,ke=0;function ye(e,n){n&&(O=n);const t=M,i=O,s=e.length===0?re:{owned:null,cleanups:null,context:null,owner:i};O=s,M=null;let o;try{Te(()=>o=e(()=>Me(s)),!0)}finally{M=t,O=i}return o}function Q(e,n){n=n?Object.assign({},T,n):T;const t={value:e,observers:null,observerSlots:null,pending:X,comparator:n.equals||void 0};return[Ze.bind(t),i=>(typeof i=="function"&&(Z&&Z.running&&Z.sources.has(t)?i=i(t.pending!==X?t.pending:t.tValue):i=i(t.pending!==X?t.pending:t.value)),je(t,i))]}function G(e,n,t){const i=Oe(e,n,!1,K);_e(i)}function Ie(e,n,t){me=Ot;const i=Oe(e,n,!1,K);i.user=!0,ee&&ee.push(i)}function z(e,n,t){t=t?Object.assign({},T,t):T;const i=Oe(e,n,!0,0);return i.pending=X,i.observers=null,i.observerSlots=null,i.comparator=t.equals||void 0,_e(i),Ze.bind(i)}function Nt(e){if(oe)return e();let n;const t=oe=[];try{n=e()}finally{oe=null}return Te(()=>{for(let i=0;i<t.length;i+=1){const s=t[i];if(s.pending!==X){const o=s.pending;s.pending=X,je(s,o)}}},!1),n}function ie(e){let n,t=M;return M=null,n=e(),M=t,n}function At(e){Ie(()=>ie(e))}function Ye(e){return O===null||(O.cleanups===null?O.cleanups=[e]:O.cleanups.push(e)),e}function kt(e){const n=z(e);return z(()=>De(n()))}function Ze(){const e=Z;if(this.sources&&(this.state||e)){const n=H;H=null,this.state===K||e?_e(this):Ee(this),H=n}if(M){const n=this.observers?this.observers.length:0;M.sources?(M.sources.push(this),M.sourceSlots.push(n)):(M.sources=[this],M.sourceSlots=[n]),this.observers?(this.observers.push(M),this.observerSlots.push(M.sources.length-1)):(this.observers=[M],this.observerSlots=[M.sources.length-1])}return this.value}function je(e,n,t){if(e.comparator&&e.comparator(e.value,n))return n;if(oe)return e.pending===X&&oe.push(e),e.pending=n,n;let i=!1;return e.value=n,e.observers&&e.observers.length&&Te(()=>{for(let s=0;s<e.observers.length;s+=1){const o=e.observers[s];i&&Z.disposed.has(o),o.pure?H.push(o):ee.push(o),o.observers&&(i&&!o.tState||!i&&!o.state)&&We(o),i||(o.state=K)}if(H.length>1e6)throw H=[],new Error},!1),n}function _e(e){if(!e.fn)return;Me(e);const n=O,t=M,i=ke;M=O=e,It(e,e.value,i),M=t,O=n}function It(e,n,t){let i;try{i=e.fn(n)}catch(s){Qe(s)}(!e.updatedAt||e.updatedAt<=t)&&(e.observers&&e.observers.length?je(e,i):e.value=i,e.updatedAt=t)}function Oe(e,n,t,i=K,s){const o={fn:e,state:i,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:n,owner:O,context:null,pure:t};return O===null||O!==re&&(O.owned?O.owned.push(o):O.owned=[o]),o}function ce(e){const n=Z;if(e.state!==K)return e.state=0;if(e.suspense&&ie(e.suspense.inFallback))return e.suspense.effects.push(e);const t=[e];for(;(e=e.owner)&&(!e.updatedAt||e.updatedAt<ke);)(e.state||n)&&t.push(e);for(let i=t.length-1;i>=0;i--)if(e=t[i],e.state===K||n)_e(e);else if(e.state===le||n){const s=H;H=null,Ee(e),H=s}}function Te(e,n){if(H)return e();let t=!1;n||(H=[]),ee?t=!0:ee=[],ke++;try{e()}catch(i){Qe(i)}finally{jt(t)}}function jt(e){H&&(Ge(H),H=null),!e&&(ee.length?Nt(()=>{me(ee),ee=null}):ee=null)}function Ge(e){for(let n=0;n<e.length;n++)ce(e[n])}function Ot(e){let n,t=0;for(n=0;n<e.length;n++){const s=e[n];s.user?e[t++]=s:ce(s)}const i=e.length;for(n=0;n<t;n++)ce(e[n]);for(n=i;n<e.length;n++)ce(e[n])}function Ee(e){e.state=0;const n=Z;for(let t=0;t<e.sources.length;t+=1){const i=e.sources[t];i.sources&&(i.state===K||n?ce(i):(i.state===le||n)&&Ee(i))}}function We(e){const n=Z;for(let t=0;t<e.observers.length;t+=1){const i=e.observers[t];(!i.state||n)&&(i.state=le,i.pure?H.push(i):ee.push(i),i.observers&&We(i))}}function Me(e){let n;if(e.sources)for(;e.sources.length;){const t=e.sources.pop(),i=e.sourceSlots.pop(),s=t.observers;if(s&&s.length){const o=s.pop(),h=t.observerSlots.pop();i<s.length&&(o.sourceSlots[h]=i,s[i]=o,t.observerSlots[i]=h)}}if(e.owned){for(n=0;n<e.owned.length;n++)Me(e.owned[n]);e.owned=null}if(e.cleanups){for(n=0;n<e.cleanups.length;n++)e.cleanups[n]();e.cleanups=null}e.state=0,e.context=null}function Qe(e){throw e}function De(e){if(typeof e=="function"&&!e.length)return De(e());if(Array.isArray(e)){const n=[];for(let t=0;t<e.length;t++){const i=De(e[t]);Array.isArray(i)?n.push.apply(n,i):n.push(i)}return n}return e}const Tt=Symbol("fallback");function Je(e){for(let n=0;n<e.length;n++)e[n]()}function Et(e,n,t={}){let i=[],s=[],o=[],h=0,d=n.length>1?[]:null;return Ye(()=>Je(o)),()=>{let S=e()||[],u,f;return ie(()=>{let C=S.length,k,I,y,m,N,r,a,l,c;if(C===0)h!==0&&(Je(o),o=[],i=[],s=[],h=0,d&&(d=[])),t.fallback&&(i=[Tt],s[0]=ye(g=>(o[0]=g,t.fallback())),h=1);else if(h===0){for(s=new Array(C),f=0;f<C;f++)i[f]=S[f],s[f]=ye(w);h=C}else{for(y=new Array(C),m=new Array(C),d&&(N=new Array(C)),r=0,a=Math.min(h,C);r<a&&i[r]===S[r];r++);for(a=h-1,l=C-1;a>=r&&l>=r&&i[a]===S[l];a--,l--)y[l]=s[a],m[l]=o[a],d&&(N[l]=d[a]);for(k=new Map,I=new Array(l+1),f=l;f>=r;f--)c=S[f],u=k.get(c),I[f]=u===void 0?-1:u,k.set(c,f);for(u=r;u<=a;u++)c=i[u],f=k.get(c),f!==void 0&&f!==-1?(y[f]=s[u],m[f]=o[u],d&&(N[f]=d[u]),f=I[f],k.set(c,f)):o[u]();for(f=r;f<C;f++)f in y?(s[f]=y[f],o[f]=m[f],d&&(d[f]=N[f],d[f](f))):s[f]=ye(w);s=s.slice(0,h=C),i=S.slice(0)}return s});function w(C){if(o[f]=C,d){const[k,I]=Q(f);return d[f]=I,n(S[f],k)}return n(S[f])}}}function Y(e,n){return ie(()=>e(n))}function ve(){return!0}const Mt={get(e,n,t){return n===E?t:e.get(n)},has(e,n){return e.has(n)},set:ve,deleteProperty:ve,getOwnPropertyDescriptor(e,n){return{configurable:!0,enumerable:!0,get(){return e.get(n)},set:ve,deleteProperty:ve}},ownKeys(e){return e.keys()}};function Fe(e){return typeof e=="function"?e():e}function Dt(...e){return new Proxy({get(n){for(let t=e.length-1;t>=0;t--){const i=Fe(e[t])[n];if(i!==void 0)return i}},has(n){for(let t=e.length-1;t>=0;t--)if(n in Fe(e[t]))return!0;return!1},keys(){const n=[];for(let t=0;t<e.length;t++)n.push(...Object.keys(Fe(e[t])));return[...new Set(n)]}},Mt)}function Le(e){const n="fallback"in e&&{fallback:()=>e.fallback};return z(Et(()=>e.each,e.children,n||void 0))}function Be(e){let n=!1;const t=z(()=>e.when,void 0,{equals:(i,s)=>n?i===s:!i==!s});return z(()=>{const i=t();if(i){const s=e.children;return(n=typeof s=="function"&&s.length>0)?ie(()=>s(i)):s}return e.fallback})}function Ft(e){let n=!1;const t=kt(()=>e.children),i=z(()=>{let s=t();Array.isArray(s)||(s=[s]);for(let o=0;o<s.length;o++){const h=s[o].when;if(h)return[o,h,s[o]]}return[-1]},void 0,{equals:(s,o)=>s&&s[0]===o[0]&&(n?s[1]===o[1]:!s[1]==!o[1])&&s[2]===o[2]});return z(()=>{const[s,o,h]=i();if(s<0)return e.fallback;const d=h.children;return(n=typeof d=="function"&&d.length>0)?ie(()=>d(o)):d})}function Lt(e){return e}function Xe(e,n,t){let i=t.length,s=n.length,o=i,h=0,d=0,S=n[s-1].nextSibling,u=null;for(;h<s||d<o;){if(n[h]===t[d]){h++,d++;continue}for(;n[s-1]===t[o-1];)s--,o--;if(s===h){const f=o<i?d?t[d-1].nextSibling:t[o-d]:S;for(;d<o;)e.insertBefore(t[d++],f)}else if(o===d)for(;h<s;)(!u||!u.has(n[h]))&&e.removeChild(n[h]),h++;else if(n[h]===t[o-1]&&t[d]===n[s-1]){const f=n[--s].nextSibling;e.insertBefore(t[d++],n[h++].nextSibling),e.insertBefore(t[--o],f),n[s]=t[o]}else{if(!u){u=new Map;let w=d;for(;w<o;)u.set(t[w],w++)}const f=u.get(n[h]);if(f!=null)if(d<f&&f<o){let w=h,C=1,k;for(;++w<s&&w<o&&!((k=u.get(n[w]))==null||k!==f+C);)C++;if(C>f-d){const I=n[h];for(;d<f;)e.insertBefore(t[d++],I)}else e.replaceChild(t[d++],n[h++])}else h++;else e.removeChild(n[h++])}}}const Ke="_$DX_DELEGATE";function Bt(e,n,t){let i;return ye(s=>{i=s,L(n,e(),n.firstChild?null:void 0,t)}),()=>{i(),n.textContent=""}}function J(e,n,t){const i=document.createElement("template");i.innerHTML=e;let s=i.content.firstChild;return t&&(s=s.firstChild),s}function be(e,n=window.document){const t=n[Ke]||(n[Ke]=new Set);for(let i=0,s=e.length;i<s;i++){const o=e[i];t.has(o)||(t.add(o),n.addEventListener(o,Ut))}}function se(e,n,t){t==null?e.removeAttribute(n):e.setAttribute(n,t)}function Re(e,n,t,i){i?Array.isArray(t)?(e[`$$${n}`]=t[0],e[`$$${n}Data`]=t[1]):e[`$$${n}`]=t:Array.isArray(t)?e.addEventListener(n,s=>t[0](t[1],s)):e.addEventListener(n,t)}function Rt(e,n,t={}){const i=Object.keys(n||{}),s=Object.keys(t);let o,h;for(o=0,h=s.length;o<h;o++){const d=s[o];!d||d==="undefined"||n[d]||(et(e,d,!1),delete t[d])}for(o=0,h=i.length;o<h;o++){const d=i[o],S=!!n[d];!d||d==="undefined"||t[d]===S||!S||(et(e,d,!0),t[d]=S)}return t}function Pt(e,n,t={}){const i=e.style;if(n==null||typeof n=="string")return i.cssText=n;typeof t=="string"&&(t={});let s,o;for(o in t)n[o]==null&&i.removeProperty(o),delete t[o];for(o in n)s=n[o],s!==t[o]&&(i.setProperty(o,s),t[o]=s);return t}function L(e,n,t,i){if(t!==void 0&&!i&&(i=[]),typeof n!="function")return pe(e,n,i,t);G(s=>pe(e,n(),s,t),i)}function et(e,n,t){const i=n.trim().split(/\s+/);for(let s=0,o=i.length;s<o;s++)e.classList.toggle(i[s],t)}function Ut(e){const n=`$$${e.type}`;let t=e.composedPath&&e.composedPath()[0]||e.target;for(e.target!==t&&Object.defineProperty(e,"target",{configurable:!0,value:t}),Object.defineProperty(e,"currentTarget",{configurable:!0,get(){return t}});t!==null;){const i=t[n];if(i&&!t.disabled){const s=t[`${n}Data`];if(s!==void 0?i(s,e):i(e),e.cancelBubble)return}t=t.host&&t.host!==t&&t.host instanceof Node?t.host:t.parentNode}}function pe(e,n,t,i,s){for(;typeof t=="function";)t=t();if(n===t)return t;const o=typeof n,h=i!==void 0;if(e=h&&t[0]&&t[0].parentNode||e,o==="string"||o==="number")if(o==="number"&&(n=n.toString()),h){let d=t[0];d&&d.nodeType===3?d.data=n:d=document.createTextNode(n),t=ue(e,t,i,d)}else t!==""&&typeof t=="string"?t=e.firstChild.data=n:t=e.textContent=n;else if(n==null||o==="boolean")t=ue(e,t,i);else{if(o==="function")return G(()=>{let d=n();for(;typeof d=="function";)d=d();t=pe(e,d,t,i)}),()=>t;if(Array.isArray(n)){const d=[];if(Pe(d,n,s))return G(()=>t=pe(e,d,t,i,!0)),()=>t;if(d.length===0){if(t=ue(e,t,i),h)return t}else Array.isArray(t)?t.length===0?tt(e,d,i):Xe(e,t,d):t==null||t===""?tt(e,d):Xe(e,h&&t||[e.firstChild],d);t=d}else if(n instanceof Node){if(Array.isArray(t)){if(h)return t=ue(e,t,i,n);ue(e,t,null,n)}else t==null||t===""||!e.firstChild?e.appendChild(n):e.replaceChild(n,e.firstChild);t=n}}return t}function Pe(e,n,t){let i=!1;for(let s=0,o=n.length;s<o;s++){let h=n[s],d;if(h instanceof Node)e.push(h);else if(!(h==null||h===!0||h===!1))if(Array.isArray(h))i=Pe(e,h)||i;else if((d=typeof h)==="string")e.push(document.createTextNode(h));else if(d==="function")if(t){for(;typeof h=="function";)h=h();i=Pe(e,Array.isArray(h)?h:[h])||i}else e.push(h),i=!0;else e.push(document.createTextNode(h.toString()))}return i}function tt(e,n,t){for(let i=0,s=n.length;i<s;i++)e.insertBefore(n[i],t)}function ue(e,n,t,i){if(t===void 0)return e.textContent="";const s=i||document.createTextNode("");if(n.length){let o=!1;for(let h=n.length-1;h>=0;h--){const d=n[h];if(s!==d){const S=d.parentNode===e;!o&&!h?S?e.replaceChild(s,d):e.insertBefore(s,t):S&&e.removeChild(d)}else o=!0}}else e.insertBefore(s,t);return[s]}var jr="",fe=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{};function Ht(e){throw new Error('Could not dynamically require "'+e+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var nt={exports:{}},rt={exports:{}};(function(e,n){(function(t,i){e.exports=i()})(fe,function(){var t=t||function(i,s){var o;if(typeof window!="undefined"&&window.crypto&&(o=window.crypto),typeof self!="undefined"&&self.crypto&&(o=self.crypto),typeof globalThis!="undefined"&&globalThis.crypto&&(o=globalThis.crypto),!o&&typeof window!="undefined"&&window.msCrypto&&(o=window.msCrypto),!o&&typeof fe!="undefined"&&fe.crypto&&(o=fe.crypto),!o&&typeof Ht=="function")try{o=require("crypto")}catch(r){}var h=function(){if(o){if(typeof o.getRandomValues=="function")try{return o.getRandomValues(new Uint32Array(1))[0]}catch(r){}if(typeof o.randomBytes=="function")try{return o.randomBytes(4).readInt32LE()}catch(r){}}throw new Error("Native crypto module could not be used to get secure random number.")},d=Object.create||function(){function r(){}return function(a){var l;return r.prototype=a,l=new r,r.prototype=null,l}}(),S={},u=S.lib={},f=u.Base=function(){return{extend:function(r){var a=d(this);return r&&a.mixIn(r),(!a.hasOwnProperty("init")||this.init===a.init)&&(a.init=function(){a.$super.init.apply(this,arguments)}),a.init.prototype=a,a.$super=this,a},create:function(){var r=this.extend();return r.init.apply(r,arguments),r},init:function(){},mixIn:function(r){for(var a in r)r.hasOwnProperty(a)&&(this[a]=r[a]);r.hasOwnProperty("toString")&&(this.toString=r.toString)},clone:function(){return this.init.prototype.extend(this)}}}(),w=u.WordArray=f.extend({init:function(r,a){r=this.words=r||[],a!=s?this.sigBytes=a:this.sigBytes=r.length*4},toString:function(r){return(r||k).stringify(this)},concat:function(r){var a=this.words,l=r.words,c=this.sigBytes,g=r.sigBytes;if(this.clamp(),c%4)for(var x=0;x<g;x++){var $=l[x>>>2]>>>24-x%4*8&255;a[c+x>>>2]|=$<<24-(c+x)%4*8}else for(var j=0;j<g;j+=4)a[c+j>>>2]=l[j>>>2];return this.sigBytes+=g,this},clamp:function(){var r=this.words,a=this.sigBytes;r[a>>>2]&=4294967295<<32-a%4*8,r.length=i.ceil(a/4)},clone:function(){var r=f.clone.call(this);return r.words=this.words.slice(0),r},random:function(r){for(var a=[],l=0;l<r;l+=4)a.push(h());return new w.init(a,r)}}),C=S.enc={},k=C.Hex={stringify:function(r){for(var a=r.words,l=r.sigBytes,c=[],g=0;g<l;g++){var x=a[g>>>2]>>>24-g%4*8&255;c.push((x>>>4).toString(16)),c.push((x&15).toString(16))}return c.join("")},parse:function(r){for(var a=r.length,l=[],c=0;c<a;c+=2)l[c>>>3]|=parseInt(r.substr(c,2),16)<<24-c%8*4;return new w.init(l,a/2)}},I=C.Latin1={stringify:function(r){for(var a=r.words,l=r.sigBytes,c=[],g=0;g<l;g++){var x=a[g>>>2]>>>24-g%4*8&255;c.push(String.fromCharCode(x))}return c.join("")},parse:function(r){for(var a=r.length,l=[],c=0;c<a;c++)l[c>>>2]|=(r.charCodeAt(c)&255)<<24-c%4*8;return new w.init(l,a)}},y=C.Utf8={stringify:function(r){try{return decodeURIComponent(escape(I.stringify(r)))}catch(a){throw new Error("Malformed UTF-8 data")}},parse:function(r){return I.parse(unescape(encodeURIComponent(r)))}},m=u.BufferedBlockAlgorithm=f.extend({reset:function(){this._data=new w.init,this._nDataBytes=0},_append:function(r){typeof r=="string"&&(r=y.parse(r)),this._data.concat(r),this._nDataBytes+=r.sigBytes},_process:function(r){var a,l=this._data,c=l.words,g=l.sigBytes,x=this.blockSize,$=x*4,j=g/$;r?j=i.ceil(j):j=i.max((j|0)-this._minBufferSize,0);var A=j*x,D=i.min(A*4,g);if(A){for(var P=0;P<A;P+=x)this._doProcessBlock(c,P);a=c.splice(0,A),l.sigBytes-=D}return new w.init(a,D)},clone:function(){var r=f.clone.call(this);return r._data=this._data.clone(),r},_minBufferSize:0});u.Hasher=m.extend({cfg:f.extend(),init:function(r){this.cfg=this.cfg.extend(r),this.reset()},reset:function(){m.reset.call(this),this._doReset()},update:function(r){return this._append(r),this._process(),this},finalize:function(r){r&&this._append(r);var a=this._doFinalize();return a},blockSize:512/32,_createHelper:function(r){return function(a,l){return new r.init(l).finalize(a)}},_createHmacHelper:function(r){return function(a,l){return new N.HMAC.init(r,l).finalize(a)}}});var N=S.algo={};return S}(Math);return t})})(rt),function(e,n){(function(t,i){e.exports=i(rt.exports)})(fe,function(t){return function(i){var s=t,o=s.lib,h=o.WordArray,d=o.Hasher,S=s.algo,u=[];(function(){for(var y=0;y<64;y++)u[y]=i.abs(i.sin(y+1))*4294967296|0})();var f=S.MD5=d.extend({_doReset:function(){this._hash=new h.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(y,m){for(var N=0;N<16;N++){var r=m+N,a=y[r];y[r]=(a<<8|a>>>24)&16711935|(a<<24|a>>>8)&4278255360}var l=this._hash.words,c=y[m+0],g=y[m+1],x=y[m+2],$=y[m+3],j=y[m+4],A=y[m+5],D=y[m+6],P=y[m+7],q=y[m+8],V=y[m+9],F=y[m+10],te=y[m+11],W=y[m+12],xe=y[m+13],Ne=y[m+14],Ae=y[m+15],_=l[0],v=l[1],b=l[2],p=l[3];_=w(_,v,b,p,c,7,u[0]),p=w(p,_,v,b,g,12,u[1]),b=w(b,p,_,v,x,17,u[2]),v=w(v,b,p,_,$,22,u[3]),_=w(_,v,b,p,j,7,u[4]),p=w(p,_,v,b,A,12,u[5]),b=w(b,p,_,v,D,17,u[6]),v=w(v,b,p,_,P,22,u[7]),_=w(_,v,b,p,q,7,u[8]),p=w(p,_,v,b,V,12,u[9]),b=w(b,p,_,v,F,17,u[10]),v=w(v,b,p,_,te,22,u[11]),_=w(_,v,b,p,W,7,u[12]),p=w(p,_,v,b,xe,12,u[13]),b=w(b,p,_,v,Ne,17,u[14]),v=w(v,b,p,_,Ae,22,u[15]),_=C(_,v,b,p,g,5,u[16]),p=C(p,_,v,b,D,9,u[17]),b=C(b,p,_,v,te,14,u[18]),v=C(v,b,p,_,c,20,u[19]),_=C(_,v,b,p,A,5,u[20]),p=C(p,_,v,b,F,9,u[21]),b=C(b,p,_,v,Ae,14,u[22]),v=C(v,b,p,_,j,20,u[23]),_=C(_,v,b,p,V,5,u[24]),p=C(p,_,v,b,Ne,9,u[25]),b=C(b,p,_,v,$,14,u[26]),v=C(v,b,p,_,q,20,u[27]),_=C(_,v,b,p,xe,5,u[28]),p=C(p,_,v,b,x,9,u[29]),b=C(b,p,_,v,P,14,u[30]),v=C(v,b,p,_,W,20,u[31]),_=k(_,v,b,p,A,4,u[32]),p=k(p,_,v,b,q,11,u[33]),b=k(b,p,_,v,te,16,u[34]),v=k(v,b,p,_,Ne,23,u[35]),_=k(_,v,b,p,g,4,u[36]),p=k(p,_,v,b,j,11,u[37]),b=k(b,p,_,v,P,16,u[38]),v=k(v,b,p,_,F,23,u[39]),_=k(_,v,b,p,xe,4,u[40]),p=k(p,_,v,b,c,11,u[41]),b=k(b,p,_,v,$,16,u[42]),v=k(v,b,p,_,D,23,u[43]),_=k(_,v,b,p,V,4,u[44]),p=k(p,_,v,b,W,11,u[45]),b=k(b,p,_,v,Ae,16,u[46]),v=k(v,b,p,_,x,23,u[47]),_=I(_,v,b,p,c,6,u[48]),p=I(p,_,v,b,P,10,u[49]),b=I(b,p,_,v,Ne,15,u[50]),v=I(v,b,p,_,A,21,u[51]),_=I(_,v,b,p,W,6,u[52]),p=I(p,_,v,b,$,10,u[53]),b=I(b,p,_,v,F,15,u[54]),v=I(v,b,p,_,g,21,u[55]),_=I(_,v,b,p,q,6,u[56]),p=I(p,_,v,b,Ae,10,u[57]),b=I(b,p,_,v,D,15,u[58]),v=I(v,b,p,_,xe,21,u[59]),_=I(_,v,b,p,j,6,u[60]),p=I(p,_,v,b,te,10,u[61]),b=I(b,p,_,v,x,15,u[62]),v=I(v,b,p,_,V,21,u[63]),l[0]=l[0]+_|0,l[1]=l[1]+v|0,l[2]=l[2]+b|0,l[3]=l[3]+p|0},_doFinalize:function(){var y=this._data,m=y.words,N=this._nDataBytes*8,r=y.sigBytes*8;m[r>>>5]|=128<<24-r%32;var a=i.floor(N/4294967296),l=N;m[(r+64>>>9<<4)+15]=(a<<8|a>>>24)&16711935|(a<<24|a>>>8)&4278255360,m[(r+64>>>9<<4)+14]=(l<<8|l>>>24)&16711935|(l<<24|l>>>8)&4278255360,y.sigBytes=(m.length+1)*4,this._process();for(var c=this._hash,g=c.words,x=0;x<4;x++){var $=g[x];g[x]=($<<8|$>>>24)&16711935|($<<24|$>>>8)&4278255360}return c},clone:function(){var y=d.clone.call(this);return y._hash=this._hash.clone(),y}});function w(y,m,N,r,a,l,c){var g=y+(m&N|~m&r)+a+c;return(g<<l|g>>>32-l)+m}function C(y,m,N,r,a,l,c){var g=y+(m&r|N&~r)+a+c;return(g<<l|g>>>32-l)+m}function k(y,m,N,r,a,l,c){var g=y+(m^N^r)+a+c;return(g<<l|g>>>32-l)+m}function I(y,m,N,r,a,l,c){var g=y+(N^(m|~r))+a+c;return(g<<l|g>>>32-l)+m}s.MD5=d._createHelper(f),s.HmacMD5=d._createHmacHelper(f)}(Math),t.MD5})}(nt);var qt=nt.exports,de={},zt=e=>encodeURIComponent(e).replace(/[!'()*]/g,n=>`%${n.charCodeAt(0).toString(16).toUpperCase()}`),it="%[a-f0-9]{2}",st=new RegExp(it,"gi"),at=new RegExp("("+it+")+","gi");function Ue(e,n){try{return decodeURIComponent(e.join(""))}catch(s){}if(e.length===1)return e;n=n||1;var t=e.slice(0,n),i=e.slice(n);return Array.prototype.concat.call([],Ue(t),Ue(i))}function Vt(e){try{return decodeURIComponent(e)}catch(i){for(var n=e.match(st),t=1;t<n.length;t++)e=Ue(n,t).join(""),n=e.match(st);return e}}function Yt(e){for(var n={"%FE%FF":"\uFFFD\uFFFD","%FF%FE":"\uFFFD\uFFFD"},t=at.exec(e);t;){try{n[t[0]]=decodeURIComponent(t[0])}catch(d){var i=Vt(t[0]);i!==t[0]&&(n[t[0]]=i)}t=at.exec(e)}n["%C2"]="\uFFFD";for(var s=Object.keys(n),o=0;o<s.length;o++){var h=s[o];e=e.replace(new RegExp(h,"g"),n[h])}return e}var Zt=function(e){if(typeof e!="string")throw new TypeError("Expected `encodedURI` to be of type `string`, got `"+typeof e+"`");try{return e=e.replace(/\+/g," "),decodeURIComponent(e)}catch(n){return Yt(e)}},Gt=(e,n)=>{if(!(typeof e=="string"&&typeof n=="string"))throw new TypeError("Expected the arguments to be of type `string`");if(n==="")return[e];const t=e.indexOf(n);return t===-1?[e]:[e.slice(0,t),e.slice(t+n.length)]},Wt=function(e,n){for(var t={},i=Object.keys(e),s=Array.isArray(n),o=0;o<i.length;o++){var h=i[o],d=e[h];(s?n.indexOf(h)!==-1:n(h,d,e))&&(t[h]=d)}return t};(function(e){const n=zt,t=Zt,i=Gt,s=Wt,o=r=>r==null,h=Symbol("encodeFragmentIdentifier");function d(r){switch(r.arrayFormat){case"index":return a=>(l,c)=>{const g=l.length;return c===void 0||r.skipNull&&c===null||r.skipEmptyString&&c===""?l:c===null?[...l,[f(a,r),"[",g,"]"].join("")]:[...l,[f(a,r),"[",f(g,r),"]=",f(c,r)].join("")]};case"bracket":return a=>(l,c)=>c===void 0||r.skipNull&&c===null||r.skipEmptyString&&c===""?l:c===null?[...l,[f(a,r),"[]"].join("")]:[...l,[f(a,r),"[]=",f(c,r)].join("")];case"colon-list-separator":return a=>(l,c)=>c===void 0||r.skipNull&&c===null||r.skipEmptyString&&c===""?l:c===null?[...l,[f(a,r),":list="].join("")]:[...l,[f(a,r),":list=",f(c,r)].join("")];case"comma":case"separator":case"bracket-separator":{const a=r.arrayFormat==="bracket-separator"?"[]=":"=";return l=>(c,g)=>g===void 0||r.skipNull&&g===null||r.skipEmptyString&&g===""?c:(g=g===null?"":g,c.length===0?[[f(l,r),a,f(g,r)].join("")]:[[c,f(g,r)].join(r.arrayFormatSeparator)])}default:return a=>(l,c)=>c===void 0||r.skipNull&&c===null||r.skipEmptyString&&c===""?l:c===null?[...l,f(a,r)]:[...l,[f(a,r),"=",f(c,r)].join("")]}}function S(r){let a;switch(r.arrayFormat){case"index":return(l,c,g)=>{if(a=/\[(\d*)\]$/.exec(l),l=l.replace(/\[\d*\]$/,""),!a){g[l]=c;return}g[l]===void 0&&(g[l]={}),g[l][a[1]]=c};case"bracket":return(l,c,g)=>{if(a=/(\[\])$/.exec(l),l=l.replace(/\[\]$/,""),!a){g[l]=c;return}if(g[l]===void 0){g[l]=[c];return}g[l]=[].concat(g[l],c)};case"colon-list-separator":return(l,c,g)=>{if(a=/(:list)$/.exec(l),l=l.replace(/:list$/,""),!a){g[l]=c;return}if(g[l]===void 0){g[l]=[c];return}g[l]=[].concat(g[l],c)};case"comma":case"separator":return(l,c,g)=>{const x=typeof c=="string"&&c.includes(r.arrayFormatSeparator),$=typeof c=="string"&&!x&&w(c,r).includes(r.arrayFormatSeparator);c=$?w(c,r):c;const j=x||$?c.split(r.arrayFormatSeparator).map(A=>w(A,r)):c===null?c:w(c,r);g[l]=j};case"bracket-separator":return(l,c,g)=>{const x=/(\[\])$/.test(l);if(l=l.replace(/\[\]$/,""),!x){g[l]=c&&w(c,r);return}const $=c===null?[]:c.split(r.arrayFormatSeparator).map(j=>w(j,r));if(g[l]===void 0){g[l]=$;return}g[l]=[].concat(g[l],$)};default:return(l,c,g)=>{if(g[l]===void 0){g[l]=c;return}g[l]=[].concat(g[l],c)}}}function u(r){if(typeof r!="string"||r.length!==1)throw new TypeError("arrayFormatSeparator must be single character string")}function f(r,a){return a.encode?a.strict?n(r):encodeURIComponent(r):r}function w(r,a){return a.decode?t(r):r}function C(r){return Array.isArray(r)?r.sort():typeof r=="object"?C(Object.keys(r)).sort((a,l)=>Number(a)-Number(l)).map(a=>r[a]):r}function k(r){const a=r.indexOf("#");return a!==-1&&(r=r.slice(0,a)),r}function I(r){let a="";const l=r.indexOf("#");return l!==-1&&(a=r.slice(l)),a}function y(r){r=k(r);const a=r.indexOf("?");return a===-1?"":r.slice(a+1)}function m(r,a){return a.parseNumbers&&!Number.isNaN(Number(r))&&typeof r=="string"&&r.trim()!==""?r=Number(r):a.parseBooleans&&r!==null&&(r.toLowerCase()==="true"||r.toLowerCase()==="false")&&(r=r.toLowerCase()==="true"),r}function N(r,a){a=Object.assign({decode:!0,sort:!0,arrayFormat:"none",arrayFormatSeparator:",",parseNumbers:!1,parseBooleans:!1},a),u(a.arrayFormatSeparator);const l=S(a),c=Object.create(null);if(typeof r!="string"||(r=r.trim().replace(/^[?#&]/,""),!r))return c;for(const g of r.split("&")){if(g==="")continue;let[x,$]=i(a.decode?g.replace(/\+/g," "):g,"=");$=$===void 0?null:["comma","separator","bracket-separator"].includes(a.arrayFormat)?$:w($,a),l(w(x,a),$,c)}for(const g of Object.keys(c)){const x=c[g];if(typeof x=="object"&&x!==null)for(const $ of Object.keys(x))x[$]=m(x[$],a);else c[g]=m(x,a)}return a.sort===!1?c:(a.sort===!0?Object.keys(c).sort():Object.keys(c).sort(a.sort)).reduce((g,x)=>{const $=c[x];return Boolean($)&&typeof $=="object"&&!Array.isArray($)?g[x]=C($):g[x]=$,g},Object.create(null))}e.extract=y,e.parse=N,e.stringify=(r,a)=>{if(!r)return"";a=Object.assign({encode:!0,strict:!0,arrayFormat:"none",arrayFormatSeparator:","},a),u(a.arrayFormatSeparator);const l=$=>a.skipNull&&o(r[$])||a.skipEmptyString&&r[$]==="",c=d(a),g={};for(const $ of Object.keys(r))l($)||(g[$]=r[$]);const x=Object.keys(g);return a.sort!==!1&&x.sort(a.sort),x.map($=>{const j=r[$];return j===void 0?"":j===null?f($,a):Array.isArray(j)?j.length===0&&a.arrayFormat==="bracket-separator"?f($,a)+"[]":j.reduce(c($),[]).join("&"):f($,a)+"="+f(j,a)}).filter($=>$.length>0).join("&")},e.parseUrl=(r,a)=>{a=Object.assign({decode:!0},a);const[l,c]=i(r,"#");return Object.assign({url:l.split("?")[0]||"",query:N(y(r),a)},a&&a.parseFragmentIdentifier&&c?{fragmentIdentifier:w(c,a)}:{})},e.stringifyUrl=(r,a)=>{a=Object.assign({encode:!0,strict:!0,[h]:!0},a);const l=k(r.url).split("?")[0]||"",c=e.extract(r.url),g=e.parse(c,{sort:!1}),x=Object.assign(g,r.query);let $=e.stringify(x,a);$&&($=`?${$}`);let j=I(r.url);return r.fragmentIdentifier&&(j=`#${a[h]?f(r.fragmentIdentifier,a):r.fragmentIdentifier}`),`${l}${$}${j}`},e.pick=(r,a,l)=>{l=Object.assign({parseFragmentIdentifier:!0,[h]:!1},l);const{url:c,query:g,fragmentIdentifier:x}=e.parseUrl(r,l);return e.stringifyUrl({url:c,query:s(g,a),fragmentIdentifier:x},l)},e.exclude=(r,a,l)=>{const c=Array.isArray(a)?g=>!a.includes(g):(g,x)=>!a(g,x);return e.pick(r,c,l)}})(de);const[ge,Qt]=Q([]),[lt,Jt]=Q([]),[ot,ct]=Q(new Map),[Xt,Kt]=Q([]),[Or,en]=Q(""),[tn,nn]=Q(""),we=window.woocommerce_admin_meta_boxes.ajax_url;function rn(e){return ne(this,null,function*(){var t;const n=((t=document.querySelector("#aftership_get_nonce"))==null?void 0:t.value)||"";yield fetch(de.stringifyUrl({url:we,query:{action:"aftership_get_order_trackings",security:n,order_id:e,t:Date.now()}})).then(i=>i.json()).then(i=>{const s=i.data,o=window.get_aftership_couriers(),h=new Map;s.trackings.forEach(d=>{if(h.has(d.slug))return;const S=o.find(u=>u.slug===d.slug);S&&h.set(d.slug,S)}),ct(d=>new Map([...d,...h])),Qt(s.trackings),Kt(s.line_items),nn(s.number)})})}function sn(e,n){return ne(this,null,function*(){var S;const t=ge().find(u=>u.tracking_id===n.tracking_id),i=ge().findIndex(u=>u.tracking_id===n.tracking_id),s=new Date().toISOString().replace(/\.\d+(?=Z$)/,""),o=n.slug!==(t==null?void 0:t.slug)||n.tracking_number!==(t==null?void 0:t.tracking_number);let h=[...ge()];t&&!o?h.splice(i,1,R(B({},n),{metrics:{created_at:t.metrics.created_at||s,updated_at:s}})):h=[...h.filter(u=>u.tracking_id!==n.tracking_id),R(B({},n),{tracking_id:qt(`${n.slug}-${n.tracking_number}`).toString(),metrics:{created_at:s,updated_at:s}})];const d=((S=document.querySelector("#aftership_create_nonce"))==null?void 0:S.value)||"";yield fetch(de.stringifyUrl({url:we,query:{action:"aftership_save_order_tracking",security:d}}),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({order_id:e,trackings:h})})})}function an(e,n){return ne(this,null,function*(){var i;const t=((i=document.querySelector("#aftership_delete_nonce"))==null?void 0:i.value)||"";yield fetch(de.stringifyUrl({url:we,query:{action:"aftership_delete_order_tracking",security:t}}),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({order_id:e,tracking_id:n})})})}function ln(){return ne(this,null,function*(){yield fetch(de.stringifyUrl({url:we,query:{action:"aftership_get_settings",t:Date.now()}})).then(e=>e.json()).then(e=>{const n=e.data.couriers,t=new Map(ot());n.forEach(i=>{t.set(i.slug,i)}),ct(i=>new Map([...i,...t])),Jt(n),en(e.data.custom_domain)})})}var on=typeof global=="object"&&global&&global.Object===Object&&global,cn=on,un=typeof self=="object"&&self&&self.Object===Object&&self,fn=cn||un||Function("return this")(),dn=fn,gn=dn.Symbol,ae=gn,ut=Object.prototype,hn=ut.hasOwnProperty,mn=ut.toString,he=ae?ae.toStringTag:void 0;function yn(e){var n=hn.call(e,he),t=e[he];try{e[he]=void 0;var i=!0}catch(o){}var s=mn.call(e);return i&&(n?e[he]=t:delete e[he]),s}var _n=Object.prototype,vn=_n.toString;function bn(e){return vn.call(e)}var pn="[object Null]",wn="[object Undefined]",ft=ae?ae.toStringTag:void 0;function Sn(e){return e==null?e===void 0?wn:pn:ft&&ft in Object(e)?yn(e):bn(e)}function $n(e){return e!=null&&typeof e=="object"}var Cn="[object Symbol]";function xn(e){return typeof e=="symbol"||$n(e)&&Sn(e)==Cn}function Nn(e,n){for(var t=-1,i=e==null?0:e.length,s=Array(i);++t<i;)s[t]=n(e[t],t,e);return s}var An=Array.isArray,kn=An,In=1/0,dt=ae?ae.prototype:void 0,gt=dt?dt.toString:void 0;function ht(e){if(typeof e=="string")return e;if(kn(e))return Nn(e,ht)+"";if(xn(e))return gt?gt.call(e):"";var n=e+"";return n=="0"&&1/e==-In?"-0":n}function mt(e){return e==null?"":ht(e)}function jn(e,n,t){var i=-1,s=e.length;n<0&&(n=-n>s?0:s+n),t=t>s?s:t,t<0&&(t+=s),s=n>t?0:t-n>>>0,n>>>=0;for(var o=Array(s);++i<s;)o[i]=e[i+n];return o}function On(e,n,t){var i=e.length;return t=t===void 0?i:t,!n&&t>=i?e:jn(e,n,t)}var Tn="\\ud800-\\udfff",En="\\u0300-\\u036f",Mn="\\ufe20-\\ufe2f",Dn="\\u20d0-\\u20ff",Fn=En+Mn+Dn,Ln="\\ufe0e\\ufe0f",Bn="\\u200d",Rn=RegExp("["+Bn+Tn+Fn+Ln+"]");function yt(e){return Rn.test(e)}function Pn(e){return e.split("")}var _t="\\ud800-\\udfff",Un="\\u0300-\\u036f",Hn="\\ufe20-\\ufe2f",qn="\\u20d0-\\u20ff",zn=Un+Hn+qn,Vn="\\ufe0e\\ufe0f",Yn="["+_t+"]",He="["+zn+"]",qe="\\ud83c[\\udffb-\\udfff]",Zn="(?:"+He+"|"+qe+")",vt="[^"+_t+"]",bt="(?:\\ud83c[\\udde6-\\uddff]){2}",pt="[\\ud800-\\udbff][\\udc00-\\udfff]",Gn="\\u200d",wt=Zn+"?",St="["+Vn+"]?",Wn="(?:"+Gn+"(?:"+[vt,bt,pt].join("|")+")"+St+wt+")*",Qn=St+wt+Wn,Jn="(?:"+[vt+He+"?",He,bt,pt,Yn].join("|")+")",Xn=RegExp(qe+"(?="+qe+")|"+Jn+Qn,"g");function Kn(e){return e.match(Xn)||[]}function er(e){return yt(e)?Kn(e):Pn(e)}function tr(e){return function(n){n=mt(n);var t=yt(n)?er(n):void 0,i=t?t[0]:n.charAt(0),s=t?On(t,1).join(""):n.slice(1);return i[e]()+s}}var nr=tr("toUpperCase"),rr=nr;function ir(e){return rr(mt(e).toLowerCase())}var $t={button:"_button_1dv9o_1",primary:"_primary_1dv9o_18"};const sr=J("<button></button>"),ar=e=>(()=>{const n=sr.cloneNode(!0);return Re(n,"click",e.onClick,!0),L(n,()=>e.children),G(t=>{const i={[$t.button]:!0,[$t.primary]:e.type==="primary"},s=e.disabled,o=e.style;return t._v$=Rt(n,i,t._v$),s!==t._v$2&&(n.disabled=t._v$2=s),t._v$3=Pt(n,o,t._v$3),t},{_v$:void 0,_v$2:void 0,_v$3:void 0}),n})();be(["click"]);var Se={container:"_container_1s8av_1",backdrop:"_backdrop_1s8av_8",modal:"_modal_1s8av_15"},lr="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0iY3VycmVudENvbG9yIiBjbGFzcz0iYmkgYmkteCIgdmlld0JveD0iMCAwIDE2IDE2Ij4KICA8cGF0aCBmaWxsPSIjNjY2IiBkPSJNNC42NDYgNC42NDZhLjUuNSAwIDAgMSAuNzA4IDBMOCA3LjI5M2wyLjY0Ni0yLjY0N2EuNS41IDAgMCAxIC43MDguNzA4TDguNzA3IDhsMi42NDcgMi42NDZhLjUuNSAwIDAgMS0uNzA4LjcwOEw4IDguNzA3bC0yLjY0NiAyLjY0N2EuNS41IDAgMCAxLS43MDgtLjcwOEw3LjI5MyA4IDQuNjQ2IDUuMzU0YS41LjUgMCAwIDEgMC0uNzA4eiIvPgo8L3N2Zz4=";const or=J('<div><div></div><section><header><h1></h1><div role="button"><img></div></header><article></article><footer></footer></section></div>');function cr(e){return Ie(()=>{e.visible?document.body.style.overflowY="hidden":document.body.style.overflowY="auto"}),Y(Be,{get when(){return e.visible},get children(){const n=or.cloneNode(!0),t=n.firstChild,i=t.nextSibling,s=i.firstChild,o=s.firstChild,h=o.nextSibling,d=h.firstChild,S=s.nextSibling,u=S.nextSibling;return Re(t,"click",e.onCancel,!0),L(o,()=>e.title),Re(h,"click",e.onCancel,!0),se(d,"src",lr),L(S,()=>e.children),L(u,Y(ar,{get disabled(){return e.disabled},onClick:()=>e.onOk&&e.onOk(),type:"primary",get children(){return e.okText||"Ok"}})),G(f=>{const w=Se.container,C=Se.backdrop,k=Se.modal,I=Se.header;return w!==f._v$&&(n.className=f._v$=w),C!==f._v$2&&(t.className=f._v$2=C),k!==f._v$3&&(i.className=f._v$3=k),I!==f._v$4&&(s.className=f._v$4=I),f},{_v$:void 0,_v$2:void 0,_v$3:void 0,_v$4:void 0}),n}})}be(["click"]);var ze={root:"_root_b92ih_1",suffix:"_suffix_b92ih_25",action:"_action_b92ih_30"},ur="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0iY3VycmVudENvbG9yIiBjbGFzcz0iYmkgYmktY2FyZXQtdXAtZmlsbCIgdmlld0JveD0iMCAwIDE2IDE2Ij4KICA8cGF0aCBmaWxsPSIjNWM1ZjYyIiBkPSJtNy4yNDcgNC44Ni00Ljc5NiA1LjQ4MWMtLjU2Ni42NDctLjEwNiAxLjY1OS43NTMgMS42NTloOS41OTJhMSAxIDAgMCAwIC43NTMtMS42NTlsLTQuNzk2LTUuNDhhMSAxIDAgMCAwLTEuNTA2IDB6Ii8+Cjwvc3ZnPg==",fr="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0iY3VycmVudENvbG9yIiBjbGFzcz0iYmkgYmktY2FyZXQtZG93bi1maWxsIiB2aWV3Qm94PSIwIDAgMTYgMTYiPgogIDxwYXRoIGZpbGw9IiM1YzVmNjIiIGQ9Ik03LjI0NyAxMS4xNCAyLjQ1MSA1LjY1OEMxLjg4NSA1LjAxMyAyLjM0NSA0IDMuMjA0IDRoOS41OTJhMSAxIDAgMCAxIC43NTMgMS42NTlsLTQuNzk2IDUuNDhhMSAxIDAgMCAxLTEuNTA2IDB6Ii8+Cjwvc3ZnPg==";const dr=J("<div>of </div>"),gr=J('<div><div><input type="number" inputmode="numeric"></div><div aria-hidden><div role="button" tabindex="-1"><img></div><div role="button" tabindex="-1"><img></div></div></div>');function hr(e){let n;const t=Dt({step:1},e);function i(S){return t.min!==void 0&&Number(S)<t.min}function s(S){return t.max!==void 0&&Number(S)>t.max}function o(S){!S||i(S)||s(S)||t.onChange(Number(S))}function h(S){if(S)if(i(S)){t.onChange(t.min),n.value=String(t.min);return}else if(s(S)){t.onChange(t.max),n.value=String(t.max);return}else t.onChange(Number(S));else n.value="",t.onChange(void 0)}function d(S){const u=t.value;let f;if(u===void 0)f=S>0?t.min:t.max,t.onChange(f||0);else{f=u+S*t.step;const w=String(f);if(i(w)||s(w))return}t.onChange(f)}return(()=>{const S=gr.cloneNode(!0),u=S.firstChild,f=u.firstChild,w=u.nextSibling,C=w.firstChild,k=C.firstChild,I=C.nextSibling,y=I.firstChild;return f.addEventListener("blur",m=>h(m.currentTarget.value)),f.$$input=m=>o(m.currentTarget.value),(m=>n=m)(f),L(S,Y(Be,{get when(){return t.max!==void 0},get children(){const m=dr.cloneNode(!0);return m.firstChild,m.$$click=()=>n.focus(),L(m,()=>t.max,null),G(()=>m.className=ze.suffix),m}}),w),C.$$click=()=>d(1),se(k,"src",ur),I.$$click=()=>d(-1),se(y,"src",fr),G(m=>{const N=ze.root,r=t.min,a=t.max,l=t.value,c=ze.action;return N!==m._v$&&(S.className=m._v$=N),r!==m._v$2&&se(f,"min",m._v$2=r),a!==m._v$3&&se(f,"max",m._v$3=a),l!==m._v$4&&(f.value=m._v$4=l),c!==m._v$5&&(w.className=m._v$5=c),m},{_v$:void 0,_v$2:void 0,_v$3:void 0,_v$4:void 0,_v$5:void 0}),S})()}be(["input","click"]);var $e={modal:"_modal_128mo_1",empty:"_empty_128mo_7",items:"_items_128mo_13",input:"_input_128mo_34"};function mr(e){const n=new Map;return e.forEach(i=>{var s;(s=i.line_items)==null||s.forEach(o=>{n.has(Number(o.id))?n.set(Number(o.id),(n.get(Number(o.id))||0)+Number(o.quantity)):n.set(Number(o.id),Number(o.quantity))})}),Xt().map(i=>{const s=n.get(i.id)||0;return{id:i.id,name:i.name,quantity:i.quantity-s}}).filter(i=>i.quantity>0)}const yr=J("<table><thead><tr><th>Items</th><th>Qty.</th></tr></thead><tbody></tbody></table>"),_r=J('<div style="color: red;"></div>'),vr=J('<div><hr><div><div><label>Courier:<select></select></label><a href="admin.php?page=aftership-setting-admin">Update carrier list</a></div><div><label>Tracking number:<input></label></div></div></div>'),br=J("<div>All items have been fulfilled</div>"),pr=J("<tr><td></td><td></td></tr>"),wr=J("<option></option>"),Sr=J("<div><label>:<input></label></div>"),Ce={tracking_id:"",tracking_number:"",slug:"",additional_fields:{account_number:"",key:"",postal_code:"",ship_date:"",destination_country:"",state:""},line_items:{}};function $r(e){const[n,t]=Q(Ce),i=z(()=>n().slug||""),s=z(()=>{var m;return(((m=ot().get(i()))==null?void 0:m.required_fields)||[]).map(N=>({key:N.replace(/^tracking_/,""),name:N.replace(/^tracking_/,"").split("_").map(ir).join(" ")}))}),o=z(()=>e.value?ge().filter(y=>{var m;return y.tracking_id!==((m=e.value)==null?void 0:m.tracking_id)}):ge()),h=z(()=>o().length),d=z(()=>mr(o()));Ie(()=>{var N,r,a;const y=new Date().toISOString().split("T")[0],m=((N=e.value)==null?void 0:N.line_items)||[];e.value?e.value.line_items?t({tracking_id:e.value.tracking_id,slug:e.value.slug,tracking_number:e.value.tracking_number,additional_fields:R(B({},e.value.additional_fields),{ship_date:e.value.additional_fields.ship_date||y}),line_items:Object.fromEntries(m.map(l=>[Number(l.id),Number(l.quantity)]))}):h()?t({tracking_id:e.value.tracking_id,slug:e.value.slug,tracking_number:e.value.tracking_number,additional_fields:R(B({},e.value.additional_fields),{ship_date:e.value.additional_fields.ship_date||y}),line_items:Object.fromEntries(d().map(l=>[Number(l.id),0]))}):t({tracking_id:e.value.tracking_id,slug:e.value.slug,tracking_number:e.value.tracking_number,additional_fields:R(B({},e.value.additional_fields),{ship_date:e.value.additional_fields.ship_date||y}),line_items:Object.fromEntries(d().map(l=>[Number(l.id),Number(l.quantity)]))}):t(R(B({},Ce),{slug:((a=(r=lt())==null?void 0:r[0])==null?void 0:a.slug)||"",additional_fields:R(B({},Ce.additional_fields),{ship_date:y}),line_items:Object.fromEntries(d().map(l=>[Number(l.id),Number(l.quantity)]))}))});const S=()=>{t(y=>{const m=new Date().toISOString().split("T")[0];return R(B({},y),{additional_fields:R(B({},Ce.additional_fields),{ship_date:m})})})},u=z(()=>{let y=!0;const m={};return Object.entries(n().line_items||[]).some(([,r])=>!!r)||(y=!1),n().slug===""&&(y=!1,m.slug="Required"),n().tracking_number===""&&(y=!1),o().some(r=>r.slug===n().slug&&r.tracking_number===n().tracking_number)&&(y=!1,m.tracking_number="This shipment has already been added."),s().forEach(r=>{n().additional_fields[r.key]===""&&(y=!1,m.additional_fields=R(B({},m.additional_fields),{[r.key]:"Required"}))}),{isValid:y,errors:m}}),f=(y,m)=>{t(N=>R(B({},N),{line_items:R(B({},N.line_items),{[y]:m})}))},w=(y,m)=>{t(N=>R(B({},N),{[y]:m.trim()}))},C=(y,m)=>{t(N=>R(B({},N),{additional_fields:R(B({},N.additional_fields),{[y]:m.trim()})}))},k=()=>e.onOk(n()),I=z(()=>{var y;return`${((y=e.value)==null?void 0:y.tracking_id)?"Edit tracking":"Add tracking"} - order - #${e.orderId}`});return Y(cr,{get title(){return I()},get visible(){return e.visible},get okText(){var y;return((y=e.value)==null?void 0:y.tracking_id)?"Save":"Add"},onOk:k,get onCancel(){return e.onCancel},get disabled(){return!u().isValid},get children(){const y=vr.cloneNode(!0),m=y.firstChild,N=m.nextSibling,r=N.firstChild,a=r.firstChild,l=a.firstChild,c=l.nextSibling,g=r.nextSibling,x=g.firstChild,$=x.firstChild,j=$.nextSibling;return L(y,Y(Ft,{get fallback(){return(()=>{const A=br.cloneNode(!0);return G(()=>A.className=$e.empty),A})()},get children(){return Y(Lt,{get when(){return d().length>0},get children(){const A=yr.cloneNode(!0),D=A.firstChild,P=D.nextSibling;return L(P,Y(Le,{get each(){return d()},children:q=>(()=>{const V=pr.cloneNode(!0),F=V.firstChild,te=F.nextSibling;return L(F,()=>q.name),L(te,Y(hr,{min:0,get max(){return q.quantity},step:1,get value(){var W;return((W=n().line_items)==null?void 0:W[q.id])||0},onChange:W=>f(q.id,W||0)})),V})()})),G(()=>A.className=$e.items),A}})}}),m),m.style.setProperty("margin","20px 0"),c.addEventListener("change",A=>{S(),w("slug",A.currentTarget.value)}),L(c,Y(Le,{get each(){return lt()},children:A=>(()=>{const D=wr.cloneNode(!0);return L(D,()=>A.name||A.other_name),G(()=>D.value=A.slug),D})()})),j.$$input=A=>w("tracking_number",A.currentTarget.value),L(g,Y(Be,{get when(){return u().errors.tracking_number},get children(){const A=_r.cloneNode(!0);return L(A,()=>u().errors.tracking_number),A}}),null),L(N,Y(Le,{get each(){return s()},children:A=>(()=>{const D=Sr.cloneNode(!0),P=D.firstChild,q=P.firstChild,V=q.nextSibling;return L(P,()=>A.name,q),V.$$input=F=>C(A.key,F.currentTarget.value),G(F=>{const te=A.key==="ship_date"?"date":"text",W=n().additional_fields[A.key];return te!==F._v$5&&se(V,"type",F._v$5=te),W!==F._v$6&&(V.value=F._v$6=W),F},{_v$5:void 0,_v$6:void 0}),D})()}),null),G(A=>{var F;const D=$e.modal,P=$e.input,q=(F=n())==null?void 0:F.slug,V=n().tracking_number;return D!==A._v$&&(y.className=A._v$=D),P!==A._v$2&&(N.className=A._v$2=P),q!==A._v$3&&(c.value=A._v$3=q),V!==A._v$4&&(j.value=A._v$4=V),A},{_v$:void 0,_v$2:void 0,_v$3:void 0,_v$4:void 0}),y}})}be(["input"]);const Cr=()=>{const[e,n]=Q(!1),[t,i]=Q(""),[s]=Q(),o=u=>ne(this,null,function*(){const f=u.target;if(!f||f.tagName!=="A"||!f.className.includes("aftership_add_inline_tracking"))return;u.preventDefault();const w=f.href.match(/#order-id-(\S+)$/);w&&(yield i(w[1]),yield rn(w[1]),n(!0))}),h=u=>ne(this,null,function*(){var C,k;const f=(C=u.target)==null?void 0:C.parentElement;if(!f||f.tagName!=="A"||!f.className.includes("aftership_inline_tracking_delete"))return;if(u.preventDefault(),window.confirm("Do you really want to delete tracking number?")){const I=f.dataset,y=u.composedPath();yield an(I.orderId,I.trackingId);for(let m of y)if(m instanceof HTMLElement&&m.tagName==="LI"&&((k=m.parentElement)==null?void 0:k.className.includes("wcas-tracking-number-list"))){m.remove();return}}});return At(()=>{ln(),window.addEventListener("click",o,!0),window.addEventListener("click",h)}),Ye(()=>{window.removeEventListener("click",o),window.removeEventListener("click",h)}),Y($r,{get value(){return s()},get visible(){return e()},onCancel:()=>{n(!1)},onOk:u=>ne(this,null,function*(){const f=u.line_items||{};yield sn(t(),R(B({},u),{line_items:Object.entries(f).map(([w,C])=>({id:Number(w),quantity:C})).filter(w=>w.quantity>0)})),window.location.reload()}),get orderId(){return tn()}})};customElements.define("aftership-orders-modal",class extends HTMLElement{constructor(){super();xt(this,"initialized",!1);this.attachShadow({mode:"open"})}connectedCallback(){if(!!this.shadowRoot&&!this.initialized){this.initialized=!0;{const n=document.currentScript,t=document.createElement("link");t.rel="stylesheet",t.href=n.src.replace(/\/index\.js\?/,"/style.css?"),this.shadowRoot.appendChild(t)}Bt(()=>Y(Cr,{}),this.shadowRoot)}}})})();
assets/frontend/dist/orders/style.css ADDED
@@ -0,0 +1 @@
 
1
+ /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}:host{all:initial;font-family:inherit;font-size:inherit}*{box-sizing:border-box}a{cursor:pointer;color:#2271b1;transition:color .5s ease-in-out}a:hover{color:#135e96}._button_1dv9o_1{border:1px solid #ccc;border-radius:3px;background-color:#f7f7f7;color:#555;font-size:13px;min-height:30px;padding:0 10px;cursor:pointer}._button_1dv9o_1[disabled]{color:#a7aaad!important;background:#f6f7f7!important;border-color:#dcdcde!important;cursor:not-allowed}._primary_1dv9o_18{border-color:#2271b1;background:#2271b1;color:#fff}._primary_1dv9o_18:hover{background:#135e96;border-color:#135e96}._container_1s8av_1{position:fixed;top:0;right:0;z-index:99999}._backdrop_1s8av_8{width:100vw;height:100vh;background-color:#000;opacity:.7}._modal_1s8av_15{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background-color:#fff;width:500px}._modal_1s8av_15 header{background:#fcfcfc;padding:1em 1.5em;border-bottom:1px solid #ddd}._modal_1s8av_15 header h1{margin:0;font-size:18px;font-weight:700;line-height:1.5em}._modal_1s8av_15 header div{position:absolute;top:0;right:0;width:54px;height:54px;display:flex;align-items:center;justify-content:center;cursor:pointer;border-left:1px solid #ddd;color:#666}._modal_1s8av_15 header div:hover{background:#ddd;border-color:#ccc}._modal_1s8av_15 header img{height:32px;width:32px}._modal_1s8av_15 footer{padding:1em 1.5em;background:#fcfcfc;border-top:1px solid #dfdfdf;box-shadow:0 -4px 4px -4px #0000001a;display:flex;justify-content:flex-end}._root_b92ih_1{display:flex;align-items:center;justify-content:space-between;border:1px solid #8c8f94;border-radius:4px;height:30px;overflow:hidden}._root_b92ih_1 input{line-height:26px;border:0;padding-left:8px}._root_b92ih_1 input:focus{outline:0}._root_b92ih_1 input[type=number]::-webkit-outer-spin-button,._root_b92ih_1 input[type=number]::-webkit-inner-spin-button{appearance:none;margin:0}._root_b92ih_1 input[type=number]{appearance:textfield}._root_b92ih_1 ._suffix_b92ih_25{color:#6c7075;margin-right:8px;cursor:default}._root_b92ih_1 ._action_b92ih_30{width:22px;padding:2px;height:100%;display:grid;row-gap:2px}._root_b92ih_1 ._action_b92ih_30 div{border-radius:2px;background-color:#e4e5e7;display:flex;align-items:center;justify-content:center;cursor:pointer}._root_b92ih_1 ._action_b92ih_30 div:hover{background-color:#c9cbcf}._root_b92ih_1 ._action_b92ih_30 div:active{background-color:#b3b5b9}._root_b92ih_1 ._action_b92ih_30 div img{width:10px;height:10px;user-select:none}._modal_128mo_1{padding:20px;max-height:70vh;overflow:auto}._empty_128mo_7{text-align:center;font-size:16px;color:#999c9f}._items_128mo_13{display:grid;text-align:left;grid-template-columns:1fr auto;column-gap:10px;row-gap:6px;align-items:center}._items_128mo_13 thead,._items_128mo_13 tbody,._items_128mo_13 tr{display:contents}._items_128mo_13 th:last-child,._items_128mo_13 td:last-child{text-align:right}._items_128mo_13 th{margin-bottom:8px}._input_128mo_34{color:#3c434a;display:grid;grid-template-columns:1fr 1fr;column-gap:20px;row-gap:10px}._input_128mo_34 label{display:flex;flex-direction:column}._input_128mo_34 a{font-size:12px;text-decoration-line:underline;margin-left:2px;width:fit-content}._input_128mo_34 label{margin-left:2px}._input_128mo_34 select{border:1px solid #8c8f94;border-radius:4px;min-height:30px;font-size:14px;line-height:28px;padding:0 8px}._input_128mo_34 input{border:1px solid #8c8f94;border-radius:4px;font-size:14px;line-height:28px;padding:0 8px}
assets/{meta-box → frontend}/index.html RENAMED
File without changes
assets/{meta-box → frontend}/inject.js RENAMED
File without changes
assets/{meta-box → frontend}/package.json RENAMED
@@ -3,8 +3,10 @@
3
  "version": "0.0.0",
4
  "description": "",
5
  "scripts": {
6
- "dev": "vite",
7
- "build": "vite build",
 
 
8
  "serve": "vite preview"
9
  },
10
  "license": "MIT",
3
  "version": "0.0.0",
4
  "description": "",
5
  "scripts": {
6
+ "dev:metabox": "vite -c vite.config.metabox.ts",
7
+ "dev:orders": "vite -c vite.config.orders.ts",
8
+ "build:metabox": "vite build -c vite.config.metabox.ts",
9
+ "build:orders": "vite build -c vite.config.orders.ts",
10
  "serve": "vite preview"
11
  },
12
  "license": "MIT",
assets/{meta-box → frontend}/plugins/hotReloadShadowDomCss.js RENAMED
File without changes
assets/{meta-box → frontend}/src/components/Button/Button.module.scss RENAMED
File without changes
assets/{meta-box → frontend}/src/components/Button/Button.tsx RENAMED
File without changes
assets/{meta-box → frontend}/src/components/Button/index.ts RENAMED
File without changes
assets/{meta-box → frontend}/src/components/EditTrackingModal/EditTrackingModal.module.scss RENAMED
File without changes
assets/{meta-box → frontend}/src/components/EditTrackingModal/EditTrackingModal.tsx RENAMED
@@ -1,4 +1,4 @@
1
- import { selectedCouriers, trackings, courierMap } from '@src/storages/metaBox';
2
  import { Tracking, AdditionalFields } from '@src/typings/trackings';
3
  import { createEffect, createMemo, createSignal, For, Show, Switch, Match } from 'solid-js';
4
  import { capitalize } from 'lodash-es';
@@ -14,6 +14,7 @@ interface Props {
14
  value?: Tracking;
15
  onOk(v: FormValue): void;
16
  onCancel(): void;
 
17
  }
18
 
19
  export interface FormValue {
@@ -205,9 +206,14 @@ export default function EditTrackingModal(props: Props) {
205
  };
206
 
207
  const handleOk = () => props.onOk(_val());
 
 
 
 
 
208
  return (
209
  <Modal
210
- title={props.value?.tracking_id ? 'Edit tracking' : 'Add tracking'}
211
  visible={props.visible}
212
  okText={props.value?.tracking_id ? 'Save' : 'Add'}
213
  onOk={handleOk}
1
+ import { selectedCouriers, trackings, courierMap } from '@src/storages/tracking';
2
  import { Tracking, AdditionalFields } from '@src/typings/trackings';
3
  import { createEffect, createMemo, createSignal, For, Show, Switch, Match } from 'solid-js';
4
  import { capitalize } from 'lodash-es';
14
  value?: Tracking;
15
  onOk(v: FormValue): void;
16
  onCancel(): void;
17
+ orderId: string;
18
  }
19
 
20
  export interface FormValue {
206
  };
207
 
208
  const handleOk = () => props.onOk(_val());
209
+
210
+ const title = createMemo(
211
+ () =>
212
+ `${props.value?.tracking_id ? 'Edit tracking' : 'Add tracking'} - order - #${props.orderId}`
213
+ );
214
  return (
215
  <Modal
216
+ title={title()}
217
  visible={props.visible}
218
  okText={props.value?.tracking_id ? 'Save' : 'Add'}
219
  onOk={handleOk}
assets/{meta-box → frontend}/src/components/EditTrackingModal/index.ts RENAMED
File without changes
assets/{meta-box → frontend}/src/components/Modal/Modal.module.scss RENAMED
File without changes
assets/{meta-box → frontend}/src/components/Modal/Modal.tsx RENAMED
File without changes
assets/{meta-box → frontend}/src/components/Modal/index.ts RENAMED
File without changes
assets/{meta-box → frontend}/src/components/Modal/x.svg RENAMED
File without changes
assets/{meta-box → frontend}/src/components/NumberInput/NumberInput.module.scss RENAMED
File without changes
assets/{meta-box → frontend}/src/components/NumberInput/NumberInput.tsx RENAMED
File without changes
assets/{meta-box → frontend}/src/components/NumberInput/images/caret-down-fill.svg RENAMED
File without changes
assets/{meta-box → frontend}/src/components/NumberInput/images/caret-up-fill.svg RENAMED
File without changes
assets/{meta-box → frontend}/src/components/NumberInput/index.ts RENAMED
File without changes
assets/{meta-box → frontend}/src/components/Spinner/Spinner.module.scss RENAMED
File without changes
assets/{meta-box → frontend}/src/components/Spinner/Spinner.tsx RENAMED
File without changes
assets/{meta-box → frontend}/src/components/Spinner/index.ts RENAMED
File without changes
assets/{meta-box/src/index.scss → frontend/src/global.scss} RENAMED
File without changes
assets/{meta-box/src/index.tsx → frontend/src/metabox.tsx} RENAMED
@@ -1,8 +1,7 @@
1
  import { render } from 'solid-js/web';
2
- import App from './App';
3
- import './index.scss';
4
 
5
- console.log('src/index.js');
6
  customElements.define(
7
  'aftership-meta-box',
8
  class Tracking extends HTMLElement {
@@ -14,7 +13,7 @@ customElements.define(
14
 
15
  connectedCallback() {
16
  if (!this.shadowRoot) return;
17
- if(this.initialized) return;
18
  this.initialized = true;
19
  if (import.meta.env.MODE === 'production') {
20
  const currentScript = document.currentScript as HTMLScriptElement;
@@ -23,7 +22,7 @@ customElements.define(
23
  linkElm.href = currentScript.src.replace(/\/index\.js\?/, '/style.css?');
24
  this.shadowRoot.appendChild(linkElm);
25
  }
26
- render(() => <App />, this.shadowRoot);
27
  }
28
  }
29
  );
1
  import { render } from 'solid-js/web';
2
+ import Metabox from './pages/Metabox';
3
+ import './global.scss';
4
 
 
5
  customElements.define(
6
  'aftership-meta-box',
7
  class Tracking extends HTMLElement {
13
 
14
  connectedCallback() {
15
  if (!this.shadowRoot) return;
16
+ if (this.initialized) return;
17
  this.initialized = true;
18
  if (import.meta.env.MODE === 'production') {
19
  const currentScript = document.currentScript as HTMLScriptElement;
22
  linkElm.href = currentScript.src.replace(/\/index\.js\?/, '/style.css?');
23
  this.shadowRoot.appendChild(linkElm);
24
  }
25
+ render(() => <Metabox />, this.shadowRoot);
26
  }
27
  }
28
  );
assets/frontend/src/orders.tsx ADDED
@@ -0,0 +1,28 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { render } from 'solid-js/web';
2
+ import './global.scss';
3
+ import Orders from './pages/Orders';
4
+
5
+ customElements.define(
6
+ 'aftership-orders-modal',
7
+ class Tracking extends HTMLElement {
8
+ private initialized = false;
9
+ constructor() {
10
+ super();
11
+ this.attachShadow({ mode: 'open' });
12
+ }
13
+
14
+ connectedCallback() {
15
+ if (!this.shadowRoot) return;
16
+ if (this.initialized) return;
17
+ this.initialized = true;
18
+ if (import.meta.env.MODE === 'production') {
19
+ const currentScript = document.currentScript as HTMLScriptElement;
20
+ const linkElm = document.createElement('link');
21
+ linkElm.rel = 'stylesheet';
22
+ linkElm.href = currentScript.src.replace(/\/index\.js\?/, '/style.css?');
23
+ this.shadowRoot.appendChild(linkElm);
24
+ }
25
+ render(() => <Orders />, this.shadowRoot);
26
+ }
27
+ }
28
+ );
assets/{meta-box/src/App.module.scss → frontend/src/pages/Metabox/Metabox.module.scss} RENAMED
@@ -33,20 +33,45 @@
33
  }
34
  }
35
  }
36
- .content {
37
- background-color: #f6f6f6;
38
- padding: 12px;
39
- font-size: 14px;
40
- line-height: 1.43;
 
 
 
 
 
 
 
41
  word-break: break-all;
42
- display: flex;
43
- flex-direction: column;
44
- a {
45
- text-decoration: none;
46
- }
47
  strong {
48
  font-weight: 600;
49
  color: #3c434a;
50
  }
51
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
52
  }
33
  }
34
  }
35
  }
36
+ }
37
+ .content {
38
+ background-color: #f6f6f6;
39
+ padding: 12px;
40
+ font-size: 14px;
41
+ line-height: 1.43;
42
+ }
43
+
44
+ .number {
45
+ margin-bottom: 2px;
46
+ & > div:nth-child(1) {
47
+ flex-shrink: 0;
48
  word-break: break-all;
 
 
 
 
 
49
  strong {
50
  font-weight: 600;
51
  color: #3c434a;
52
  }
53
  }
54
+ & > div:nth-child(2) {
55
+ text-overflow: ellipsis;
56
+ overflow: hidden;
57
+ word-break: keep-all;
58
+ a {
59
+ text-decoration: none;
60
+ }
61
+ }
62
+ }
63
+ .item {
64
+ display: flex;
65
+ flex-wrap: nowrap;
66
+ color: #404040;
67
+ div {
68
+ &:nth-child(1) {
69
+ overflow: hidden;
70
+ text-overflow: ellipsis;
71
+ white-space: nowrap;
72
+ }
73
+ &:nth-child(2) {
74
+ flex-shrink: 0;
75
+ }
76
+ }
77
  }
assets/frontend/src/pages/Metabox/Metabox.tsx ADDED
@@ -0,0 +1,145 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { Component, createMemo, createSignal, For, onMount } from 'solid-js';
2
+ import Button from '@src/components/Button';
3
+ import styles from './Metabox.module.scss';
4
+ import {
5
+ trackings,
6
+ courierMap,
7
+ fetchOrderTrackings,
8
+ deleteOrderTracking,
9
+ editOrderTracking,
10
+ fetchSelectedCouriers,
11
+ customDomain,
12
+ lineItems,
13
+ editingOrderNumber,
14
+ } from '@src/storages/tracking';
15
+ import EditTrackingModal, { FormValue } from '@src/components/EditTrackingModal';
16
+ import { Tracking } from '@src/typings/trackings';
17
+
18
+ const Metabox: Component = () => {
19
+ const [showModal, setShowModal] = createSignal(false);
20
+ const [editingTracking, setEditingTracking] = createSignal<Tracking>();
21
+
22
+ const orderId = window.woocommerce_admin_meta_boxes.post_id;
23
+
24
+ onMount(() => {
25
+ fetchOrderTrackings(orderId);
26
+ fetchSelectedCouriers();
27
+ });
28
+
29
+ const handleOk = async (values: FormValue) => {
30
+ const selectedItems = values.line_items || {};
31
+ await editOrderTracking(orderId, {
32
+ ...values,
33
+ line_items: Object.entries(selectedItems)
34
+ .map(([id, quantity]) => ({
35
+ id: Number(id),
36
+ quantity,
37
+ }))
38
+ .filter((item) => item.quantity > 0),
39
+ });
40
+ setShowModal(false);
41
+ setEditingTracking(undefined);
42
+ await fetchOrderTrackings(orderId);
43
+ };
44
+ const handleCancel = () => {
45
+ setShowModal(false);
46
+ setEditingTracking(undefined);
47
+ };
48
+ const handleDelete = async (trackingId: string) => {
49
+ await deleteOrderTracking(orderId, trackingId);
50
+ await fetchOrderTrackings(orderId);
51
+ };
52
+
53
+ const lineItemsMap = createMemo(() => {
54
+ const lineItemsMap = new Map<string, { name: string; quantity: number }[]>();
55
+ trackings().forEach((tracking) => {
56
+ const arr = (tracking.line_items || [])?.map((tl) => {
57
+ const match = lineItems().find((l) => tl.id === l.id);
58
+ return {
59
+ name: match?.name || String(tl.id),
60
+ quantity: tl.quantity,
61
+ };
62
+ });
63
+ lineItemsMap.set(tracking.tracking_id, arr);
64
+ });
65
+ return lineItemsMap;
66
+ });
67
+
68
+ const formatTackingLink = (tracking: Tracking) => {
69
+ return /^https?:\/\//.test(customDomain())
70
+ ? `${customDomain()}/${tracking.slug}/${tracking.tracking_number}`
71
+ : `https://${customDomain()}/${tracking.slug}/${tracking.tracking_number}`;
72
+ };
73
+
74
+ return (
75
+ <div className={styles.root}>
76
+ {/* trackings */}
77
+ <div>
78
+ <For each={trackings()}>
79
+ {(tracking, index) => (
80
+ <div className={styles.tracking}>
81
+ <div className={styles.title}>
82
+ <div>Shipment {index() + 1}</div>
83
+ <div>
84
+ <a
85
+ onClick={async () => {
86
+ // 💩 update data first, user maybe modify line_items
87
+ await fetchOrderTrackings(orderId);
88
+ setEditingTracking(tracking);
89
+ setShowModal(true);
90
+ }}>
91
+ Edit
92
+ </a>
93
+ <a onClick={() => handleDelete(tracking.tracking_id)}>Delete</a>
94
+ </div>
95
+ </div>
96
+ <div className={styles.content}>
97
+ <div className={styles.number}>
98
+ <div>
99
+ <strong>{courierMap().get(tracking.slug)?.name || tracking.slug}&nbsp;</strong>
100
+ </div>
101
+ <div>
102
+ <a
103
+ title={tracking.tracking_number}
104
+ href={formatTackingLink(tracking)}
105
+ target="_blank">
106
+ {tracking.tracking_number}
107
+ </a>
108
+ </div>
109
+ </div>
110
+ <For each={lineItemsMap().get(tracking.tracking_id) || []}>
111
+ {(item) => (
112
+ <div className={styles.item}>
113
+ <div title={item.name}>{item.name}</div>
114
+ <div>&nbsp;x {item.quantity}</div>
115
+ </div>
116
+ )}
117
+ </For>
118
+ </div>
119
+ </div>
120
+ )}
121
+ </For>
122
+ </div>
123
+ {/* add button */}
124
+ <div style={{ padding: '12px' }}>
125
+ <Button
126
+ onClick={async () => {
127
+ await fetchOrderTrackings(orderId);
128
+ setShowModal(true);
129
+ }}
130
+ style={{ width: '100%' }}>
131
+ Add Tracking Number
132
+ </Button>
133
+ </div>
134
+ <EditTrackingModal
135
+ visible={showModal()}
136
+ value={editingTracking()}
137
+ onCancel={handleCancel}
138
+ onOk={handleOk}
139
+ orderId={editingOrderNumber()}
140
+ />
141
+ </div>
142
+ );
143
+ };
144
+
145
+ export default Metabox;
assets/frontend/src/pages/Metabox/index.ts ADDED
@@ -0,0 +1 @@
 
1
+ export { default } from './Metabox';
assets/frontend/src/pages/Orders/Orders.module.scss ADDED
File without changes
assets/frontend/src/pages/Orders/Orders.tsx ADDED
@@ -0,0 +1,101 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { Component, createSignal, onCleanup, onMount } from 'solid-js';
2
+ import EditTrackingModal, { FormValue } from '@src/components/EditTrackingModal';
3
+ import {
4
+ fetchOrderTrackings,
5
+ fetchSelectedCouriers,
6
+ editOrderTracking,
7
+ deleteOrderTracking,
8
+ editingOrderNumber,
9
+ } from '@src/storages/tracking';
10
+ import { Tracking } from '@src/typings/trackings';
11
+
12
+ const Orders: Component = () => {
13
+ const [showModal, setShowModal] = createSignal(false);
14
+ const [orderId, setOrderId] = createSignal('');
15
+ const [editingTracking] = createSignal<Tracking>();
16
+
17
+ interface ClickMouseEvent extends MouseEvent {
18
+ path: HTMLElement[];
19
+ }
20
+ const handleAddTrackingClick = async (e: MouseEvent) => {
21
+ const target = e.target as HTMLAnchorElement | null;
22
+ if (!target) return;
23
+ if (target.tagName !== 'A' || !target.className.includes('aftership_add_inline_tracking')) {
24
+ return;
25
+ }
26
+ e.preventDefault();
27
+ const match = target.href.match(/#order-id-(\S+)$/);
28
+ if (match) {
29
+ await setOrderId(match[1]);
30
+ await fetchOrderTrackings(match[1]);
31
+ setShowModal(true);
32
+ }
33
+ };
34
+ const handleDeleteTrackingClick = async (e: MouseEvent) => {
35
+ const parentElement = (e.target as HTMLAnchorElement | null)?.parentElement;
36
+ if (!parentElement) return;
37
+ if (
38
+ parentElement.tagName !== 'A' ||
39
+ !parentElement.className.includes('aftership_inline_tracking_delete')
40
+ ) {
41
+ return;
42
+ }
43
+ e.preventDefault();
44
+ const result = window.confirm('Do you really want to delete tracking number?');
45
+ if (result) {
46
+ const dataSet = parentElement.dataset as { orderId: string; trackingId: string };
47
+ const elPath = e.composedPath();
48
+ await deleteOrderTracking(dataSet.orderId, dataSet.trackingId);
49
+ for (let el of elPath) {
50
+ if (
51
+ el instanceof HTMLElement &&
52
+ el.tagName === 'LI' &&
53
+ el.parentElement?.className.includes('wcas-tracking-number-list')
54
+ ) {
55
+ el.remove();
56
+ return;
57
+ }
58
+ }
59
+ }
60
+ };
61
+
62
+ onMount(() => {
63
+ fetchSelectedCouriers();
64
+ window.addEventListener('click', handleAddTrackingClick, true);
65
+ window.addEventListener('click', handleDeleteTrackingClick);
66
+ });
67
+
68
+ onCleanup(() => {
69
+ window.removeEventListener('click', handleAddTrackingClick);
70
+ window.removeEventListener('click', handleDeleteTrackingClick);
71
+ });
72
+
73
+ const handleOk = async (values: FormValue) => {
74
+ const selectedItems = values.line_items || {};
75
+ await editOrderTracking(orderId(), {
76
+ ...values,
77
+ line_items: Object.entries(selectedItems)
78
+ .map(([id, quantity]) => ({
79
+ id: Number(id),
80
+ quantity,
81
+ }))
82
+ .filter((item) => item.quantity > 0),
83
+ });
84
+ window.location.reload();
85
+ };
86
+ const handleCancel = () => {
87
+ setShowModal(false);
88
+ };
89
+
90
+ return (
91
+ <EditTrackingModal
92
+ value={editingTracking()}
93
+ visible={showModal()}
94
+ onCancel={handleCancel}
95
+ onOk={handleOk}
96
+ orderId={editingOrderNumber()}
97
+ />
98
+ );
99
+ };
100
+
101
+ export default Orders;
assets/frontend/src/pages/Orders/index.ts ADDED
@@ -0,0 +1 @@
 
1
+ export { default } from './Orders';
assets/{meta-box/src/storages/metaBox.ts → frontend/src/storages/tracking.ts} RENAMED
@@ -8,6 +8,7 @@ interface GetTrackingsResponse {
8
  data: {
9
  line_items: LineItem[];
10
  trackings: Tracking[];
 
11
  };
12
  }
13
 
@@ -23,17 +24,19 @@ export const [selectedCouriers, setSelectedCouriers] = createSignal<Courier[]>([
23
  export const [courierMap, setCourierMap] = createSignal<Map<string, Courier>>(new Map());
24
  export const [lineItems, setLineItems] = createSignal<LineItem[]>([]);
25
  export const [customDomain, setCustomDomain] = createSignal<string>('');
26
- export const [path, setPath] = createSignal('');
27
 
28
- export async function fetchTrackings() {
 
 
29
  const security = document.querySelector<HTMLInputElement>('#aftership_get_nonce')?.value || '';
30
  await fetch(
31
  stringifyUrl({
32
- url: window.woocommerce_admin_meta_boxes.ajax_url,
33
  query: {
34
  action: 'aftership_get_order_trackings',
35
  security: security,
36
- order_id: window.woocommerce_admin_meta_boxes.post_id,
37
  t: Date.now(),
38
  },
39
  })
@@ -51,6 +54,7 @@ export async function fetchTrackings() {
51
  setCourierMap((prev) => new Map([...prev, ...nextCourierMap]));
52
  setTrackings(data.trackings);
53
  setLineItems(data.line_items);
 
54
  });
55
  }
56
 
@@ -60,7 +64,7 @@ interface SubmitData extends Omit<Tracking, 'tracking_id' | 'line_items' | 'metr
60
  metrics?: Tracking['metrics'];
61
  }
62
 
63
- export async function editTracking(data: SubmitData) {
64
  const oldTracking = trackings().find((t) => t.tracking_id === data.tracking_id);
65
  const oldTrackingIndex = trackings().findIndex((t) => t.tracking_id === data.tracking_id);
66
  const nowISOString = new Date().toISOString().replace(/\.\d+(?=Z$)/, '');
@@ -92,7 +96,7 @@ export async function editTracking(data: SubmitData) {
92
 
93
  await fetch(
94
  stringifyUrl({
95
- url: window.woocommerce_admin_meta_boxes.ajax_url,
96
  query: {
97
  action: 'aftership_save_order_tracking',
98
  security: security,
@@ -104,19 +108,18 @@ export async function editTracking(data: SubmitData) {
104
  'Content-Type': 'application/json',
105
  },
106
  body: JSON.stringify({
107
- order_id: window.woocommerce_admin_meta_boxes.post_id,
108
  trackings: result,
109
  }),
110
  }
111
  );
112
- await fetchTrackings();
113
  }
114
 
115
- export async function deleteTracking(id: string) {
116
  const security = document.querySelector<HTMLInputElement>('#aftership_delete_nonce')?.value || '';
117
  await fetch(
118
  stringifyUrl({
119
- url: window.woocommerce_admin_meta_boxes.ajax_url,
120
  query: {
121
  action: 'aftership_delete_order_tracking',
122
  security: security,
@@ -128,18 +131,17 @@ export async function deleteTracking(id: string) {
128
  'Content-Type': 'application/json',
129
  },
130
  body: JSON.stringify({
131
- order_id: window.woocommerce_admin_meta_boxes.post_id,
132
- tracking_id: id,
133
  }),
134
  }
135
  );
136
- await fetchTrackings();
137
  }
138
 
139
- export async function getSelectedCouriers() {
140
  await fetch(
141
  stringifyUrl({
142
- url: window.woocommerce_admin_meta_boxes.ajax_url,
143
  query: {
144
  action: 'aftership_get_settings',
145
  t: Date.now(),
8
  data: {
9
  line_items: LineItem[];
10
  trackings: Tracking[];
11
+ number: string;
12
  };
13
  }
14
 
24
  export const [courierMap, setCourierMap] = createSignal<Map<string, Courier>>(new Map());
25
  export const [lineItems, setLineItems] = createSignal<LineItem[]>([]);
26
  export const [customDomain, setCustomDomain] = createSignal<string>('');
27
+ export const [editingOrderNumber, setEditingOrderNumber] = createSignal<string>('');
28
 
29
+ const AJAX_URL = window.woocommerce_admin_meta_boxes.ajax_url;
30
+
31
+ export async function fetchOrderTrackings(orderId: string) {
32
  const security = document.querySelector<HTMLInputElement>('#aftership_get_nonce')?.value || '';
33
  await fetch(
34
  stringifyUrl({
35
+ url: AJAX_URL,
36
  query: {
37
  action: 'aftership_get_order_trackings',
38
  security: security,
39
+ order_id: orderId,
40
  t: Date.now(),
41
  },
42
  })
54
  setCourierMap((prev) => new Map([...prev, ...nextCourierMap]));
55
  setTrackings(data.trackings);
56
  setLineItems(data.line_items);
57
+ setEditingOrderNumber(data.number);
58
  });
59
  }
60
 
64
  metrics?: Tracking['metrics'];
65
  }
66
 
67
+ export async function editOrderTracking(orderId: string, data: SubmitData) {
68
  const oldTracking = trackings().find((t) => t.tracking_id === data.tracking_id);
69
  const oldTrackingIndex = trackings().findIndex((t) => t.tracking_id === data.tracking_id);
70
  const nowISOString = new Date().toISOString().replace(/\.\d+(?=Z$)/, '');
96
 
97
  await fetch(
98
  stringifyUrl({
99
+ url: AJAX_URL,
100
  query: {
101
  action: 'aftership_save_order_tracking',
102
  security: security,
108
  'Content-Type': 'application/json',
109
  },
110
  body: JSON.stringify({
111
+ order_id: orderId,
112
  trackings: result,
113
  }),
114
  }
115
  );
 
116
  }
117
 
118
+ export async function deleteOrderTracking(orderId: string, trackingId: string) {
119
  const security = document.querySelector<HTMLInputElement>('#aftership_delete_nonce')?.value || '';
120
  await fetch(
121
  stringifyUrl({
122
+ url: AJAX_URL,
123
  query: {
124
  action: 'aftership_delete_order_tracking',
125
  security: security,
131
  'Content-Type': 'application/json',
132
  },
133
  body: JSON.stringify({
134
+ order_id: orderId,
135
+ tracking_id: trackingId,
136
  }),
137
  }
138
  );
 
139
  }
140
 
141
+ export async function fetchSelectedCouriers() {
142
  await fetch(
143
  stringifyUrl({
144
+ url: AJAX_URL,
145
  query: {
146
  action: 'aftership_get_settings',
147
  t: Date.now(),
assets/{meta-box → frontend}/src/typings/global.d.ts RENAMED
File without changes
assets/{meta-box → frontend}/src/typings/trackings.ts RENAMED
File without changes
assets/{meta-box → frontend}/src/utils/common.ts RENAMED
@@ -1,4 +1,4 @@
1
- import { lineItems } from '@src/storages/metaBox';
2
  import { Tracking } from '@src/typings/trackings';
3
 
4
  export function calcUnfulfilledItems(trackings: Tracking[]) {
1
+ import { lineItems } from '@src/storages/tracking';
2
  import { Tracking } from '@src/typings/trackings';
3
 
4
  export function calcUnfulfilledItems(trackings: Tracking[]) {
assets/{meta-box → frontend}/tsconfig.json RENAMED
File without changes
assets/{meta-box/vite.config.ts → frontend/vite.config.metabox.ts} RENAMED
@@ -1,11 +1,11 @@
1
- import { defineConfig, Plugin } from 'vite';
2
  import path from 'path';
3
  import solidPlugin from 'vite-plugin-solid';
4
  // @ts-ignore
5
  import MyExamplePlugin from './plugins/hotReloadShadowDomCss.js';
6
 
7
  export default defineConfig({
8
- base: '/wp-content/plugins/aftership-woocommerce-tracking/assets/meta-box/',
9
  plugins: [solidPlugin(), MyExamplePlugin('aftership-meta-box')],
10
  resolve: {
11
  alias: {
@@ -13,12 +13,10 @@ export default defineConfig({
13
  },
14
  },
15
  build: {
16
- // target: 'esnext',
17
- // polyfillDynamicImport: false,
18
  target: 'es2015',
19
- outDir: './dist',
20
  lib: {
21
- entry: 'src/index.tsx',
22
  name: 'metabox',
23
  fileName: (_format) => `index.js`,
24
  formats: ['iife'],
1
+ import { defineConfig } from 'vite';
2
  import path from 'path';
3
  import solidPlugin from 'vite-plugin-solid';
4
  // @ts-ignore
5
  import MyExamplePlugin from './plugins/hotReloadShadowDomCss.js';
6
 
7
  export default defineConfig({
8
+ base: '/wp-content/plugins/aftership-woocommerce-tracking/assets/frontend/',
9
  plugins: [solidPlugin(), MyExamplePlugin('aftership-meta-box')],
10
  resolve: {
11
  alias: {
13
  },
14
  },
15
  build: {
 
 
16
  target: 'es2015',
17
+ outDir: './dist/metabox',
18
  lib: {
19
+ entry: 'src/metabox.tsx',
20
  name: 'metabox',
21
  fileName: (_format) => `index.js`,
22
  formats: ['iife'],
assets/frontend/vite.config.orders.ts ADDED
@@ -0,0 +1,23 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import { defineConfig } from 'vite';
2
+ import path from 'path';
3
+ import solidPlugin from 'vite-plugin-solid';
4
+
5
+ export default defineConfig({
6
+ base: '/wp-content/plugins/aftership-woocommerce-tracking/assets/frontend/',
7
+ plugins: [solidPlugin()],
8
+ resolve: {
9
+ alias: {
10
+ '@src': path.resolve(__dirname, './src'),
11
+ },
12
+ },
13
+ build: {
14
+ target: 'es2015',
15
+ outDir: './dist/orders',
16
+ lib: {
17
+ entry: 'src/orders.tsx',
18
+ name: 'orders',
19
+ fileName: (_format) => `index.js`,
20
+ formats: ['iife'],
21
+ },
22
+ },
23
+ });
assets/{meta-box → frontend}/yarn.lock RENAMED
@@ -890,9 +890,9 @@ mimic-fn@^2.1.0:
890
  integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
891
 
892
  minimist@^1.2.5:
893
- version "1.2.5"
894
- resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz"
895
- integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==
896
 
897
  ms@2.1.2:
898
  version "2.1.2"
@@ -900,9 +900,9 @@ ms@2.1.2:
900
  integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
901
 
902
  nanoid@^3.1.30:
903
- version "3.1.30"
904
- resolved "https://registry.npmjs.org/nanoid/-/nanoid-3.1.30.tgz"
905
- integrity sha512-zJpuPDwOv8D2zq2WRoMe1HsfZthVewpel9CAvTfc/2mBD1uUT/agc5f7GHGWXlYkFvi1mVxe4IjvP2HNrop7nQ==
906
 
907
  node-releases@^2.0.1:
908
  version "2.0.1"
890
  integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
891
 
892
  minimist@^1.2.5:
893
+ version "1.2.6"
894
+ resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.6.tgz#8637a5b759ea0d6e98702cfb3a9283323c93af44"
895
+ integrity sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==
896
 
897
  ms@2.1.2:
898
  version "2.1.2"
900
  integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==
901
 
902
  nanoid@^3.1.30:
903
+ version "3.3.4"
904
+ resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.4.tgz#730b67e3cd09e2deacf03c027c81c9d9dbc5e8ab"
905
+ integrity sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==
906
 
907
  node-releases@^2.0.1:
908
  version "2.0.1"
assets/images/truck-fast.svg ADDED
@@ -0,0 +1,4 @@
 
 
 
 
1
+ <svg xmlns="http://www.w3.org/2000/svg" width="16px" height="16px" viewBox="0 0 640 512">
2
+ <path fill="#2271b1"
3
+ d="M112 0C85.49 0 64 21.49 64 48V96H16C7.163 96 0 103.2 0 112C0 120.8 7.163 128 16 128H272C280.8 128 288 135.2 288 144C288 152.8 280.8 160 272 160H48C39.16 160 32 167.2 32 176C32 184.8 39.16 192 48 192H240C248.8 192 256 199.2 256 208C256 216.8 248.8 224 240 224H16C7.163 224 0 231.2 0 240C0 248.8 7.163 256 16 256H208C216.8 256 224 263.2 224 272C224 280.8 216.8 288 208 288H64V416C64 469 106.1 512 160 512C213 512 256 469 256 416H384C384 469 426.1 512 480 512C533 512 576 469 576 416H608C625.7 416 640 401.7 640 384C640 366.3 625.7 352 608 352V237.3C608 220.3 601.3 204 589.3 192L512 114.7C499.1 102.7 483.7 96 466.7 96H416V48C416 21.49 394.5 0 368 0H112zM544 237.3V256H416V160H466.7L544 237.3zM160 464C133.5 464 112 442.5 112 416C112 389.5 133.5 368 160 368C186.5 368 208 389.5 208 416C208 442.5 186.5 464 160 464zM528 416C528 442.5 506.5 464 480 464C453.5 464 432 442.5 432 416C432 389.5 453.5 368 480 368C506.5 368 528 389.5 528 416z" />
4
+ </svg>
assets/js/order-status.js ADDED
@@ -0,0 +1,40 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ function get_aftership_show_order_status() {
2
+ var data = [
3
+ {
4
+ "status": "processing",
5
+ "name": "Processing",
6
+ "type": "default"
7
+ },
8
+ {
9
+ "status": "completed",
10
+ "name": "Completed",
11
+ "type": "default"
12
+ },
13
+ {
14
+ "status": "partial-shipped",
15
+ "name": "Partially Shipped",
16
+ "type": "default"
17
+ },
18
+ {
19
+ "status": "on-hold",
20
+ "name": "On Hold",
21
+ "type": "default"
22
+ },
23
+ {
24
+ "status": "cancelled",
25
+ "name": "Cancelled",
26
+ "type": "default"
27
+ },
28
+ {
29
+ "status": "refunded",
30
+ "name": "Refunded",
31
+ "type": "default"
32
+ },
33
+ {
34
+ "status": "failed",
35
+ "name": "Failed",
36
+ "type": "default"
37
+ }
38
+ ];
39
+ return data;
40
+ }
assets/js/order-status.json ADDED
@@ -0,0 +1,37 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ [
2
+ {
3
+ "status": "processing",
4
+ "name": "Processing",
5
+ "type": "default"
6
+ },
7
+ {
8
+ "status": "completed",
9
+ "name": "Completed",
10
+ "type": "default"
11
+ },
12
+ {
13
+ "status": "partial-shipped",
14
+ "name": "Partially Shipped",
15
+ "type": "default"
16
+ },
17
+ {
18
+ "status": "on-hold",
19
+ "name": "On Hold",
20
+ "type": "default"
21
+ },
22
+ {
23
+ "status": "cancelled",
24
+ "name": "Cancelled",
25
+ "type": "default"
26
+ },
27
+ {
28
+ "status": "refunded",
29
+ "name": "Refunded",
30
+ "type": "default"
31
+ },
32
+ {
33
+ "status": "failed",
34
+ "name": "Failed",
35
+ "type": "default"
36
+ }
37
+ ]
assets/js/setting.js CHANGED
@@ -1,4 +1,5 @@
1
  jQuery(function () {
 
2
  var aftership_couriers_select = jQuery('#aftership_couriers_select');
3
  var aftership_couriers = jQuery('#aftership_couriers');
4
  function set_aftership_tracking_provider(selected_couriers) {
@@ -29,4 +30,36 @@ jQuery(function () {
29
  var couriers_select_array = (couriers_select) ? couriers_select.split(',') : [];
30
  set_aftership_tracking_provider(couriers_select_array);
31
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
  });
1
  jQuery(function () {
2
+ // Couriers selection
3
  var aftership_couriers_select = jQuery('#aftership_couriers_select');
4
  var aftership_couriers = jQuery('#aftership_couriers');
5
  function set_aftership_tracking_provider(selected_couriers) {
30
  var couriers_select_array = (couriers_select) ? couriers_select.split(',') : [];
31
  set_aftership_tracking_provider(couriers_select_array);
32
  }
33
+
34
+ // Add Tracking Order action selection
35
+ var aftership_show_order_actions_select = jQuery('#aftership_show_order_actions_select');
36
+ var aftership_show_order_actions = jQuery('#aftership_show_order_actions');
37
+ function set_aftership_show_order_actions(selected_status) {
38
+ var show_order_status = get_aftership_show_order_status();
39
+ jQuery.each(show_order_status, function (key, status) {
40
+ var str = '<option ';
41
+ str += 'value="' + status['status'] + '" ';
42
+ if (selected_status.hasOwnProperty(status['status'])) {
43
+ str += 'selected="selected"';
44
+ }
45
+ str += '>' + status['name'] + '</option>';
46
+ aftership_show_order_actions_select.append(str);
47
+ });
48
+
49
+ aftership_show_order_actions_select.val(selected_status);
50
+ aftership_show_order_actions_select.chosen();
51
+ aftership_show_order_actions_select.trigger('chosen:updated');
52
+ }
53
+
54
+ aftership_show_order_actions_select.change(function () {
55
+ var order_actions_select = aftership_show_order_actions_select.val();
56
+ var value = (order_actions_select) ? order_actions_select.join(',') : '';
57
+ aftership_show_order_actions.val(value);
58
+ });
59
+
60
+ if (aftership_show_order_actions) {
61
+ var order_actions_select = aftership_show_order_actions.val();
62
+ var order_actions_select_array = (order_actions_select) ? order_actions_select.split(',') : [];
63
+ set_aftership_show_order_actions(order_actions_select_array);
64
+ }
65
  });
assets/meta-box/dist/index.js DELETED
@@ -1 +0,0 @@
1
- var Nr=Object.defineProperty,kr=Object.defineProperties;var Ar=Object.getOwnPropertyDescriptors;var Nt=Object.getOwnPropertySymbols;var Ir=Object.prototype.hasOwnProperty,jr=Object.prototype.propertyIsEnumerable;var Ge=(U,M,O)=>M in U?Nr(U,M,{enumerable:!0,configurable:!0,writable:!0,value:O}):U[M]=O,R=(U,M)=>{for(var O in M||(M={}))Ir.call(M,O)&&Ge(U,O,M[O]);if(Nt)for(var O of Nt(M))jr.call(M,O)&&Ge(U,O,M[O]);return U},P=(U,M)=>kr(U,Ar(M));var kt=(U,M,O)=>(Ge(U,typeof M!="symbol"?M+"":M,O),O);var te=(U,M,O)=>new Promise((_e,Q)=>{var J=T=>{try{re(O.next(T))}catch(G){Q(G)}},le=T=>{try{re(O.throw(T))}catch(G){Q(G)}},re=T=>T.done?_e(T.value):Promise.resolve(T.value).then(J,le);re((O=O.apply(U,M)).next())});(function(){"use strict";const U=(e,n)=>e===n,M=Symbol("solid-proxy"),O={equals:U};let _e=Qe;const Q={},J=1,le=2,re={owned:null,cleanups:null,context:null,owner:null};var T=null;let G=null,F=null,oe=null,q=null,K=null,je=0;function ye(e,n){n&&(T=n);const t=F,i=T,a=e.length===0?re:{owned:null,cleanups:null,context:null,owner:i};T=a,F=null;let o;try{Me(()=>o=e(()=>De(a)),!0)}finally{F=t,T=i}return o}function X(e,n){n=n?Object.assign({},O,n):O;const t={value:e,observers:null,observerSlots:null,pending:Q,comparator:n.equals||void 0};return[We.bind(t),i=>(typeof i=="function"&&(G&&G.running&&G.sources.has(t)?i=i(t.pending!==Q?t.pending:t.tValue):i=i(t.pending!==Q?t.pending:t.value)),Oe(t,i))]}function H(e,n,t){const i=Ee(e,n,!1,J);ve(i)}function Te(e,n,t){_e=Mt;const i=Ee(e,n,!1,J);i.user=!0,K&&K.push(i)}function Y(e,n,t){t=t?Object.assign({},O,t):O;const i=Ee(e,n,!0,0);return i.pending=Q,i.observers=null,i.observerSlots=null,i.comparator=t.equals||void 0,ve(i),We.bind(i)}function At(e){if(oe)return e();let n;const t=oe=[];try{n=e()}finally{oe=null}return Me(()=>{for(let i=0;i<t.length;i+=1){const a=t[i];if(a.pending!==Q){const o=a.pending;a.pending=Q,Oe(a,o)}}},!1),n}function ie(e){let n,t=F;return F=null,n=e(),F=t,n}function It(e){Te(()=>ie(e))}function jt(e){return T===null||(T.cleanups===null?T.cleanups=[e]:T.cleanups.push(e)),e}function Tt(e){const n=Y(e);return Y(()=>Le(n()))}function We(){const e=G;if(this.sources&&(this.state||e)){const n=q;q=null,this.state===J||e?ve(this):Fe(this),q=n}if(F){const n=this.observers?this.observers.length:0;F.sources?(F.sources.push(this),F.sourceSlots.push(n)):(F.sources=[this],F.sourceSlots=[n]),this.observers?(this.observers.push(F),this.observerSlots.push(F.sources.length-1)):(this.observers=[F],this.observerSlots=[F.sources.length-1])}return this.value}function Oe(e,n,t){if(e.comparator&&e.comparator(e.value,n))return n;if(oe)return e.pending===Q&&oe.push(e),e.pending=n,n;let i=!1;return e.value=n,e.observers&&e.observers.length&&Me(()=>{for(let a=0;a<e.observers.length;a+=1){const o=e.observers[a];i&&G.disposed.has(o),o.pure?q.push(o):K.push(o),o.observers&&(i&&!o.tState||!i&&!o.state)&&Je(o),i||(o.state=J)}if(q.length>1e6)throw q=[],new Error},!1),n}function ve(e){if(!e.fn)return;De(e);const n=T,t=F,i=je;F=T=e,Ot(e,e.value,i),F=t,T=n}function Ot(e,n,t){let i;try{i=e.fn(n)}catch(a){Ke(a)}(!e.updatedAt||e.updatedAt<=t)&&(e.observers&&e.observers.length?Oe(e,i):e.value=i,e.updatedAt=t)}function Ee(e,n,t,i=J,a){const o={fn:e,state:i,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:n,owner:T,context:null,pure:t};return T===null||T!==re&&(T.owned?T.owned.push(o):T.owned=[o]),o}function ce(e){const n=G;if(e.state!==J)return e.state=0;if(e.suspense&&ie(e.suspense.inFallback))return e.suspense.effects.push(e);const t=[e];for(;(e=e.owner)&&(!e.updatedAt||e.updatedAt<je);)(e.state||n)&&t.push(e);for(let i=t.length-1;i>=0;i--)if(e=t[i],e.state===J||n)ve(e);else if(e.state===le||n){const a=q;q=null,Fe(e),q=a}}function Me(e,n){if(q)return e();let t=!1;n||(q=[]),K?t=!0:K=[],je++;try{e()}catch(i){Ke(i)}finally{Et(t)}}function Et(e){q&&(Qe(q),q=null),!e&&(K.length?At(()=>{_e(K),K=null}):K=null)}function Qe(e){for(let n=0;n<e.length;n++)ce(e[n])}function Mt(e){let n,t=0;for(n=0;n<e.length;n++){const a=e[n];a.user?e[t++]=a:ce(a)}const i=e.length;for(n=0;n<t;n++)ce(e[n]);for(n=i;n<e.length;n++)ce(e[n])}function Fe(e){e.state=0;const n=G;for(let t=0;t<e.sources.length;t+=1){const i=e.sources[t];i.sources&&(i.state===J||n?ce(i):(i.state===le||n)&&Fe(i))}}function Je(e){const n=G;for(let t=0;t<e.observers.length;t+=1){const i=e.observers[t];(!i.state||n)&&(i.state=le,i.pure?q.push(i):K.push(i),i.observers&&Je(i))}}function De(e){let n;if(e.sources)for(;e.sources.length;){const t=e.sources.pop(),i=e.sourceSlots.pop(),a=t.observers;if(a&&a.length){const o=a.pop(),h=t.observerSlots.pop();i<a.length&&(o.sourceSlots[h]=i,a[i]=o,t.observerSlots[i]=h)}}if(e.owned){for(n=0;n<e.owned.length;n++)De(e.owned[n]);e.owned=null}if(e.cleanups){for(n=0;n<e.cleanups.length;n++)e.cleanups[n]();e.cleanups=null}e.state=0,e.context=null}function Ke(e){throw e}function Le(e){if(typeof e=="function"&&!e.length)return Le(e());if(Array.isArray(e)){const n=[];for(let t=0;t<e.length;t++){const i=Le(e[t]);Array.isArray(i)?n.push.apply(n,i):n.push(i)}return n}return e}const Ft=Symbol("fallback");function Xe(e){for(let n=0;n<e.length;n++)e[n]()}function Dt(e,n,t={}){let i=[],a=[],o=[],h=0,u=n.length>1?[]:null;return jt(()=>Xe(o)),()=>{let S=e()||[],d,f;return ie(()=>{let k=S.length,I,w,p,m,A,r,s,l,c;if(k===0)h!==0&&(Xe(o),o=[],i=[],a=[],h=0,u&&(u=[])),t.fallback&&(i=[Ft],a[0]=ye(g=>(o[0]=g,t.fallback())),h=1);else if(h===0){for(a=new Array(k),f=0;f<k;f++)i[f]=S[f],a[f]=ye(N);h=k}else{for(p=new Array(k),m=new Array(k),u&&(A=new Array(k)),r=0,s=Math.min(h,k);r<s&&i[r]===S[r];r++);for(s=h-1,l=k-1;s>=r&&l>=r&&i[s]===S[l];s--,l--)p[l]=a[s],m[l]=o[s],u&&(A[l]=u[s]);for(I=new Map,w=new Array(l+1),f=l;f>=r;f--)c=S[f],d=I.get(c),w[f]=d===void 0?-1:d,I.set(c,f);for(d=r;d<=s;d++)c=i[d],f=I.get(c),f!==void 0&&f!==-1?(p[f]=a[d],m[f]=o[d],u&&(A[f]=u[d]),f=w[f],I.set(c,f)):o[d]();for(f=r;f<k;f++)f in p?(a[f]=p[f],o[f]=m[f],u&&(u[f]=A[f],u[f](f))):a[f]=ye(N);a=a.slice(0,h=k),i=S.slice(0)}return a});function N(k){if(o[f]=k,u){const[I,w]=X(f);return u[f]=w,n(S[f],I)}return n(S[f])}}}function z(e,n){return ie(()=>e(n))}function be(){return!0}const Lt={get(e,n,t){return n===M?t:e.get(n)},has(e,n){return e.has(n)},set:be,deleteProperty:be,getOwnPropertyDescriptor(e,n){return{configurable:!0,enumerable:!0,get(){return e.get(n)},set:be,deleteProperty:be}},ownKeys(e){return e.keys()}};function Be(e){return typeof e=="function"?e():e}function Bt(...e){return new Proxy({get(n){for(let t=e.length-1;t>=0;t--){const i=Be(e[t])[n];if(i!==void 0)return i}},has(n){for(let t=e.length-1;t>=0;t--)if(n in Be(e[t]))return!0;return!1},keys(){const n=[];for(let t=0;t<e.length;t++)n.push(...Object.keys(Be(e[t])));return[...new Set(n)]}},Lt)}function pe(e){const n="fallback"in e&&{fallback:()=>e.fallback};return Y(Dt(()=>e.each,e.children,n||void 0))}function Re(e){let n=!1;const t=Y(()=>e.when,void 0,{equals:(i,a)=>n?i===a:!i==!a});return Y(()=>{const i=t();if(i){const a=e.children;return(n=typeof a=="function"&&a.length>0)?ie(()=>a(i)):a}return e.fallback})}function Rt(e){let n=!1;const t=Tt(()=>e.children),i=Y(()=>{let a=t();Array.isArray(a)||(a=[a]);for(let o=0;o<a.length;o++){const h=a[o].when;if(h)return[o,h,a[o]]}return[-1]},void 0,{equals:(a,o)=>a&&a[0]===o[0]&&(n?a[1]===o[1]:!a[1]==!o[1])&&a[2]===o[2]});return Y(()=>{const[a,o,h]=i();if(a<0)return e.fallback;const u=h.children;return(n=typeof u=="function"&&u.length>0)?ie(()=>u(o)):u})}function Pt(e){return e}function et(e,n,t){let i=t.length,a=n.length,o=i,h=0,u=0,S=n[a-1].nextSibling,d=null;for(;h<a||u<o;){if(n[h]===t[u]){h++,u++;continue}for(;n[a-1]===t[o-1];)a--,o--;if(a===h){const f=o<i?u?t[u-1].nextSibling:t[o-u]:S;for(;u<o;)e.insertBefore(t[u++],f)}else if(o===u)for(;h<a;)(!d||!d.has(n[h]))&&e.removeChild(n[h]),h++;else if(n[h]===t[o-1]&&t[u]===n[a-1]){const f=n[--a].nextSibling;e.insertBefore(t[u++],n[h++].nextSibling),e.insertBefore(t[--o],f),n[a]=t[o]}else{if(!d){d=new Map;let N=u;for(;N<o;)d.set(t[N],N++)}const f=d.get(n[h]);if(f!=null)if(u<f&&f<o){let N=h,k=1,I;for(;++N<a&&N<o&&!((I=d.get(n[N]))==null||I!==f+k);)k++;if(k>f-u){const w=n[h];for(;u<f;)e.insertBefore(t[u++],w)}else e.replaceChild(t[u++],n[h++])}else h++;else e.removeChild(n[h++])}}}const tt="_$DX_DELEGATE";function Ut(e,n,t){let i;return ye(a=>{i=a,E(n,e(),n.firstChild?null:void 0,t)}),()=>{i(),n.textContent=""}}function Z(e,n,t){const i=document.createElement("template");i.innerHTML=e;let a=i.content.firstChild;return t&&(a=a.firstChild),a}function ue(e,n=window.document){const t=n[tt]||(n[tt]=new Set);for(let i=0,a=e.length;i<a;i++){const o=e[i];t.has(o)||(t.add(o),n.addEventListener(o,Ht))}}function ne(e,n,t){t==null?e.removeAttribute(n):e.setAttribute(n,t)}function Pe(e,n,t,i){i?Array.isArray(t)?(e[`$$${n}`]=t[0],e[`$$${n}Data`]=t[1]):e[`$$${n}`]=t:Array.isArray(t)?e.addEventListener(n,a=>t[0](t[1],a)):e.addEventListener(n,t)}function qt(e,n,t={}){const i=Object.keys(n||{}),a=Object.keys(t);let o,h;for(o=0,h=a.length;o<h;o++){const u=a[o];!u||u==="undefined"||n[u]||(nt(e,u,!1),delete t[u])}for(o=0,h=i.length;o<h;o++){const u=i[o],S=!!n[u];!u||u==="undefined"||t[u]===S||!S||(nt(e,u,!0),t[u]=S)}return t}function zt(e,n,t={}){const i=e.style;if(n==null||typeof n=="string")return i.cssText=n;typeof t=="string"&&(t={});let a,o;for(o in t)n[o]==null&&i.removeProperty(o),delete t[o];for(o in n)a=n[o],a!==t[o]&&(i.setProperty(o,a),t[o]=a);return t}function E(e,n,t,i){if(t!==void 0&&!i&&(i=[]),typeof n!="function")return we(e,n,i,t);H(a=>we(e,n(),a,t),i)}function nt(e,n,t){const i=n.trim().split(/\s+/);for(let a=0,o=i.length;a<o;a++)e.classList.toggle(i[a],t)}function Ht(e){const n=`$$${e.type}`;let t=e.composedPath&&e.composedPath()[0]||e.target;for(e.target!==t&&Object.defineProperty(e,"target",{configurable:!0,value:t}),Object.defineProperty(e,"currentTarget",{configurable:!0,get(){return t}});t!==null;){const i=t[n];if(i&&!t.disabled){const a=t[`${n}Data`];if(a!==void 0?i(a,e):i(e),e.cancelBubble)return}t=t.host&&t.host!==t&&t.host instanceof Node?t.host:t.parentNode}}function we(e,n,t,i,a){for(;typeof t=="function";)t=t();if(n===t)return t;const o=typeof n,h=i!==void 0;if(e=h&&t[0]&&t[0].parentNode||e,o==="string"||o==="number")if(o==="number"&&(n=n.toString()),h){let u=t[0];u&&u.nodeType===3?u.data=n:u=document.createTextNode(n),t=fe(e,t,i,u)}else t!==""&&typeof t=="string"?t=e.firstChild.data=n:t=e.textContent=n;else if(n==null||o==="boolean")t=fe(e,t,i);else{if(o==="function")return H(()=>{let u=n();for(;typeof u=="function";)u=u();t=we(e,u,t,i)}),()=>t;if(Array.isArray(n)){const u=[];if(Ue(u,n,a))return H(()=>t=we(e,u,t,i,!0)),()=>t;if(u.length===0){if(t=fe(e,t,i),h)return t}else Array.isArray(t)?t.length===0?rt(e,u,i):et(e,t,u):t==null||t===""?rt(e,u):et(e,h&&t||[e.firstChild],u);t=u}else if(n instanceof Node){if(Array.isArray(t)){if(h)return t=fe(e,t,i,n);fe(e,t,null,n)}else t==null||t===""||!e.firstChild?e.appendChild(n):e.replaceChild(n,e.firstChild);t=n}}return t}function Ue(e,n,t){let i=!1;for(let a=0,o=n.length;a<o;a++){let h=n[a],u;if(h instanceof Node)e.push(h);else if(!(h==null||h===!0||h===!1))if(Array.isArray(h))i=Ue(e,h)||i;else if((u=typeof h)==="string")e.push(document.createTextNode(h));else if(u==="function")if(t){for(;typeof h=="function";)h=h();i=Ue(e,Array.isArray(h)?h:[h])||i}else e.push(h),i=!0;else e.push(document.createTextNode(h.toString()))}return i}function rt(e,n,t){for(let i=0,a=n.length;i<a;i++)e.insertBefore(n[i],t)}function fe(e,n,t,i){if(t===void 0)return e.textContent="";const a=i||document.createTextNode("");if(n.length){let o=!1;for(let h=n.length-1;h>=0;h--){const u=n[h];if(a!==u){const S=u.parentNode===e;!o&&!h?S?e.replaceChild(a,u):e.insertBefore(a,t):S&&e.removeChild(u)}else o=!0}}else e.insertBefore(a,t);return[a]}var it={button:"_button_1dv9o_1",primary:"_primary_1dv9o_18"};const Vt=Z("<button></button>"),st=e=>(()=>{const n=Vt.cloneNode(!0);return Pe(n,"click",e.onClick,!0),E(n,()=>e.children),H(t=>{const i={[it.button]:!0,[it.primary]:e.type==="primary"},a=e.disabled,o=e.style;return t._v$=qt(n,i,t._v$),a!==t._v$2&&(n.disabled=t._v$2=a),t._v$3=zt(n,o,t._v$3),t},{_v$:void 0,_v$2:void 0,_v$3:void 0}),n})();ue(["click"]);var $e={root:"_root_1nuhb_1",loading:"_loading_1nuhb_5",tracking:"_tracking_1nuhb_19",title:"_title_1nuhb_23",content:"_content_1nuhb_37"},de=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{};function Yt(e){throw new Error('Could not dynamically require "'+e+'". Please configure the dynamicRequireTargets or/and ignoreDynamicRequires option of @rollup/plugin-commonjs appropriately for this require call to work.')}var at={exports:{}},lt={exports:{}};(function(e,n){(function(t,i){e.exports=i()})(de,function(){var t=t||function(i,a){var o;if(typeof window!="undefined"&&window.crypto&&(o=window.crypto),typeof self!="undefined"&&self.crypto&&(o=self.crypto),typeof globalThis!="undefined"&&globalThis.crypto&&(o=globalThis.crypto),!o&&typeof window!="undefined"&&window.msCrypto&&(o=window.msCrypto),!o&&typeof de!="undefined"&&de.crypto&&(o=de.crypto),!o&&typeof Yt=="function")try{o=require("crypto")}catch(r){}var h=function(){if(o){if(typeof o.getRandomValues=="function")try{return o.getRandomValues(new Uint32Array(1))[0]}catch(r){}if(typeof o.randomBytes=="function")try{return o.randomBytes(4).readInt32LE()}catch(r){}}throw new Error("Native crypto module could not be used to get secure random number.")},u=Object.create||function(){function r(){}return function(s){var l;return r.prototype=s,l=new r,r.prototype=null,l}}(),S={},d=S.lib={},f=d.Base=function(){return{extend:function(r){var s=u(this);return r&&s.mixIn(r),(!s.hasOwnProperty("init")||this.init===s.init)&&(s.init=function(){s.$super.init.apply(this,arguments)}),s.init.prototype=s,s.$super=this,s},create:function(){var r=this.extend();return r.init.apply(r,arguments),r},init:function(){},mixIn:function(r){for(var s in r)r.hasOwnProperty(s)&&(this[s]=r[s]);r.hasOwnProperty("toString")&&(this.toString=r.toString)},clone:function(){return this.init.prototype.extend(this)}}}(),N=d.WordArray=f.extend({init:function(r,s){r=this.words=r||[],s!=a?this.sigBytes=s:this.sigBytes=r.length*4},toString:function(r){return(r||I).stringify(this)},concat:function(r){var s=this.words,l=r.words,c=this.sigBytes,g=r.sigBytes;if(this.clamp(),c%4)for(var $=0;$<g;$++){var C=l[$>>>2]>>>24-$%4*8&255;s[c+$>>>2]|=C<<24-(c+$)%4*8}else for(var x=0;x<g;x+=4)s[c+x>>>2]=l[x>>>2];return this.sigBytes+=g,this},clamp:function(){var r=this.words,s=this.sigBytes;r[s>>>2]&=4294967295<<32-s%4*8,r.length=i.ceil(s/4)},clone:function(){var r=f.clone.call(this);return r.words=this.words.slice(0),r},random:function(r){for(var s=[],l=0;l<r;l+=4)s.push(h());return new N.init(s,r)}}),k=S.enc={},I=k.Hex={stringify:function(r){for(var s=r.words,l=r.sigBytes,c=[],g=0;g<l;g++){var $=s[g>>>2]>>>24-g%4*8&255;c.push(($>>>4).toString(16)),c.push(($&15).toString(16))}return c.join("")},parse:function(r){for(var s=r.length,l=[],c=0;c<s;c+=2)l[c>>>3]|=parseInt(r.substr(c,2),16)<<24-c%8*4;return new N.init(l,s/2)}},w=k.Latin1={stringify:function(r){for(var s=r.words,l=r.sigBytes,c=[],g=0;g<l;g++){var $=s[g>>>2]>>>24-g%4*8&255;c.push(String.fromCharCode($))}return c.join("")},parse:function(r){for(var s=r.length,l=[],c=0;c<s;c++)l[c>>>2]|=(r.charCodeAt(c)&255)<<24-c%4*8;return new N.init(l,s)}},p=k.Utf8={stringify:function(r){try{return decodeURIComponent(escape(w.stringify(r)))}catch(s){throw new Error("Malformed UTF-8 data")}},parse:function(r){return w.parse(unescape(encodeURIComponent(r)))}},m=d.BufferedBlockAlgorithm=f.extend({reset:function(){this._data=new N.init,this._nDataBytes=0},_append:function(r){typeof r=="string"&&(r=p.parse(r)),this._data.concat(r),this._nDataBytes+=r.sigBytes},_process:function(r){var s,l=this._data,c=l.words,g=l.sigBytes,$=this.blockSize,C=$*4,x=g/C;r?x=i.ceil(x):x=i.max((x|0)-this._minBufferSize,0);var j=x*$,L=i.min(j*4,g);if(j){for(var D=0;D<j;D+=$)this._doProcessBlock(c,D);s=c.splice(0,j),l.sigBytes-=L}return new N.init(s,L)},clone:function(){var r=f.clone.call(this);return r._data=this._data.clone(),r},_minBufferSize:0});d.Hasher=m.extend({cfg:f.extend(),init:function(r){this.cfg=this.cfg.extend(r),this.reset()},reset:function(){m.reset.call(this),this._doReset()},update:function(r){return this._append(r),this._process(),this},finalize:function(r){r&&this._append(r);var s=this._doFinalize();return s},blockSize:512/32,_createHelper:function(r){return function(s,l){return new r.init(l).finalize(s)}},_createHmacHelper:function(r){return function(s,l){return new A.HMAC.init(r,l).finalize(s)}}});var A=S.algo={};return S}(Math);return t})})(lt),function(e,n){(function(t,i){e.exports=i(lt.exports)})(de,function(t){return function(i){var a=t,o=a.lib,h=o.WordArray,u=o.Hasher,S=a.algo,d=[];(function(){for(var p=0;p<64;p++)d[p]=i.abs(i.sin(p+1))*4294967296|0})();var f=S.MD5=u.extend({_doReset:function(){this._hash=new h.init([1732584193,4023233417,2562383102,271733878])},_doProcessBlock:function(p,m){for(var A=0;A<16;A++){var r=m+A,s=p[r];p[r]=(s<<8|s>>>24)&16711935|(s<<24|s>>>8)&4278255360}var l=this._hash.words,c=p[m+0],g=p[m+1],$=p[m+2],C=p[m+3],x=p[m+4],j=p[m+5],L=p[m+6],D=p[m+7],V=p[m+8],B=p[m+9],ee=p[m+10],W=p[m+11],Ne=p[m+12],ke=p[m+13],Ae=p[m+14],Ie=p[m+15],_=l[0],y=l[1],v=l[2],b=l[3];_=N(_,y,v,b,c,7,d[0]),b=N(b,_,y,v,g,12,d[1]),v=N(v,b,_,y,$,17,d[2]),y=N(y,v,b,_,C,22,d[3]),_=N(_,y,v,b,x,7,d[4]),b=N(b,_,y,v,j,12,d[5]),v=N(v,b,_,y,L,17,d[6]),y=N(y,v,b,_,D,22,d[7]),_=N(_,y,v,b,V,7,d[8]),b=N(b,_,y,v,B,12,d[9]),v=N(v,b,_,y,ee,17,d[10]),y=N(y,v,b,_,W,22,d[11]),_=N(_,y,v,b,Ne,7,d[12]),b=N(b,_,y,v,ke,12,d[13]),v=N(v,b,_,y,Ae,17,d[14]),y=N(y,v,b,_,Ie,22,d[15]),_=k(_,y,v,b,g,5,d[16]),b=k(b,_,y,v,L,9,d[17]),v=k(v,b,_,y,W,14,d[18]),y=k(y,v,b,_,c,20,d[19]),_=k(_,y,v,b,j,5,d[20]),b=k(b,_,y,v,ee,9,d[21]),v=k(v,b,_,y,Ie,14,d[22]),y=k(y,v,b,_,x,20,d[23]),_=k(_,y,v,b,B,5,d[24]),b=k(b,_,y,v,Ae,9,d[25]),v=k(v,b,_,y,C,14,d[26]),y=k(y,v,b,_,V,20,d[27]),_=k(_,y,v,b,ke,5,d[28]),b=k(b,_,y,v,$,9,d[29]),v=k(v,b,_,y,D,14,d[30]),y=k(y,v,b,_,Ne,20,d[31]),_=I(_,y,v,b,j,4,d[32]),b=I(b,_,y,v,V,11,d[33]),v=I(v,b,_,y,W,16,d[34]),y=I(y,v,b,_,Ae,23,d[35]),_=I(_,y,v,b,g,4,d[36]),b=I(b,_,y,v,x,11,d[37]),v=I(v,b,_,y,D,16,d[38]),y=I(y,v,b,_,ee,23,d[39]),_=I(_,y,v,b,ke,4,d[40]),b=I(b,_,y,v,c,11,d[41]),v=I(v,b,_,y,C,16,d[42]),y=I(y,v,b,_,L,23,d[43]),_=I(_,y,v,b,B,4,d[44]),b=I(b,_,y,v,Ne,11,d[45]),v=I(v,b,_,y,Ie,16,d[46]),y=I(y,v,b,_,$,23,d[47]),_=w(_,y,v,b,c,6,d[48]),b=w(b,_,y,v,D,10,d[49]),v=w(v,b,_,y,Ae,15,d[50]),y=w(y,v,b,_,j,21,d[51]),_=w(_,y,v,b,Ne,6,d[52]),b=w(b,_,y,v,C,10,d[53]),v=w(v,b,_,y,ee,15,d[54]),y=w(y,v,b,_,g,21,d[55]),_=w(_,y,v,b,V,6,d[56]),b=w(b,_,y,v,Ie,10,d[57]),v=w(v,b,_,y,L,15,d[58]),y=w(y,v,b,_,ke,21,d[59]),_=w(_,y,v,b,x,6,d[60]),b=w(b,_,y,v,W,10,d[61]),v=w(v,b,_,y,$,15,d[62]),y=w(y,v,b,_,B,21,d[63]),l[0]=l[0]+_|0,l[1]=l[1]+y|0,l[2]=l[2]+v|0,l[3]=l[3]+b|0},_doFinalize:function(){var p=this._data,m=p.words,A=this._nDataBytes*8,r=p.sigBytes*8;m[r>>>5]|=128<<24-r%32;var s=i.floor(A/4294967296),l=A;m[(r+64>>>9<<4)+15]=(s<<8|s>>>24)&16711935|(s<<24|s>>>8)&4278255360,m[(r+64>>>9<<4)+14]=(l<<8|l>>>24)&16711935|(l<<24|l>>>8)&4278255360,p.sigBytes=(m.length+1)*4,this._process();for(var c=this._hash,g=c.words,$=0;$<4;$++){var C=g[$];g[$]=(C<<8|C>>>24)&16711935|(C<<24|C>>>8)&4278255360}return c},clone:function(){var p=u.clone.call(this);return p._hash=this._hash.clone(),p}});function N(p,m,A,r,s,l,c){var g=p+(m&A|~m&r)+s+c;return(g<<l|g>>>32-l)+m}function k(p,m,A,r,s,l,c){var g=p+(m&r|A&~r)+s+c;return(g<<l|g>>>32-l)+m}function I(p,m,A,r,s,l,c){var g=p+(m^A^r)+s+c;return(g<<l|g>>>32-l)+m}function w(p,m,A,r,s,l,c){var g=p+(A^(m|~r))+s+c;return(g<<l|g>>>32-l)+m}a.MD5=u._createHelper(f),a.HmacMD5=u._createHmacHelper(f)}(Math),t.MD5})}(at);var Zt=at.exports,ge={},Gt=e=>encodeURIComponent(e).replace(/[!'()*]/g,n=>`%${n.charCodeAt(0).toString(16).toUpperCase()}`),ot="%[a-f0-9]{2}",ct=new RegExp(ot,"gi"),ut=new RegExp("("+ot+")+","gi");function qe(e,n){try{return decodeURIComponent(e.join(""))}catch(a){}if(e.length===1)return e;n=n||1;var t=e.slice(0,n),i=e.slice(n);return Array.prototype.concat.call([],qe(t),qe(i))}function Wt(e){try{return decodeURIComponent(e)}catch(i){for(var n=e.match(ct),t=1;t<n.length;t++)e=qe(n,t).join(""),n=e.match(ct);return e}}function Qt(e){for(var n={"%FE%FF":"\uFFFD\uFFFD","%FF%FE":"\uFFFD\uFFFD"},t=ut.exec(e);t;){try{n[t[0]]=decodeURIComponent(t[0])}catch(u){var i=Wt(t[0]);i!==t[0]&&(n[t[0]]=i)}t=ut.exec(e)}n["%C2"]="\uFFFD";for(var a=Object.keys(n),o=0;o<a.length;o++){var h=a[o];e=e.replace(new RegExp(h,"g"),n[h])}return e}var Jt=function(e){if(typeof e!="string")throw new TypeError("Expected `encodedURI` to be of type `string`, got `"+typeof e+"`");try{return e=e.replace(/\+/g," "),decodeURIComponent(e)}catch(n){return Qt(e)}},Kt=(e,n)=>{if(!(typeof e=="string"&&typeof n=="string"))throw new TypeError("Expected the arguments to be of type `string`");if(n==="")return[e];const t=e.indexOf(n);return t===-1?[e]:[e.slice(0,t),e.slice(t+n.length)]},Xt=function(e,n){for(var t={},i=Object.keys(e),a=Array.isArray(n),o=0;o<i.length;o++){var h=i[o],u=e[h];(a?n.indexOf(h)!==-1:n(h,u,e))&&(t[h]=u)}return t};(function(e){const n=Gt,t=Jt,i=Kt,a=Xt,o=r=>r==null,h=Symbol("encodeFragmentIdentifier");function u(r){switch(r.arrayFormat){case"index":return s=>(l,c)=>{const g=l.length;return c===void 0||r.skipNull&&c===null||r.skipEmptyString&&c===""?l:c===null?[...l,[f(s,r),"[",g,"]"].join("")]:[...l,[f(s,r),"[",f(g,r),"]=",f(c,r)].join("")]};case"bracket":return s=>(l,c)=>c===void 0||r.skipNull&&c===null||r.skipEmptyString&&c===""?l:c===null?[...l,[f(s,r),"[]"].join("")]:[...l,[f(s,r),"[]=",f(c,r)].join("")];case"colon-list-separator":return s=>(l,c)=>c===void 0||r.skipNull&&c===null||r.skipEmptyString&&c===""?l:c===null?[...l,[f(s,r),":list="].join("")]:[...l,[f(s,r),":list=",f(c,r)].join("")];case"comma":case"separator":case"bracket-separator":{const s=r.arrayFormat==="bracket-separator"?"[]=":"=";return l=>(c,g)=>g===void 0||r.skipNull&&g===null||r.skipEmptyString&&g===""?c:(g=g===null?"":g,c.length===0?[[f(l,r),s,f(g,r)].join("")]:[[c,f(g,r)].join(r.arrayFormatSeparator)])}default:return s=>(l,c)=>c===void 0||r.skipNull&&c===null||r.skipEmptyString&&c===""?l:c===null?[...l,f(s,r)]:[...l,[f(s,r),"=",f(c,r)].join("")]}}function S(r){let s;switch(r.arrayFormat){case"index":return(l,c,g)=>{if(s=/\[(\d*)\]$/.exec(l),l=l.replace(/\[\d*\]$/,""),!s){g[l]=c;return}g[l]===void 0&&(g[l]={}),g[l][s[1]]=c};case"bracket":return(l,c,g)=>{if(s=/(\[\])$/.exec(l),l=l.replace(/\[\]$/,""),!s){g[l]=c;return}if(g[l]===void 0){g[l]=[c];return}g[l]=[].concat(g[l],c)};case"colon-list-separator":return(l,c,g)=>{if(s=/(:list)$/.exec(l),l=l.replace(/:list$/,""),!s){g[l]=c;return}if(g[l]===void 0){g[l]=[c];return}g[l]=[].concat(g[l],c)};case"comma":case"separator":return(l,c,g)=>{const $=typeof c=="string"&&c.includes(r.arrayFormatSeparator),C=typeof c=="string"&&!$&&N(c,r).includes(r.arrayFormatSeparator);c=C?N(c,r):c;const x=$||C?c.split(r.arrayFormatSeparator).map(j=>N(j,r)):c===null?c:N(c,r);g[l]=x};case"bracket-separator":return(l,c,g)=>{const $=/(\[\])$/.test(l);if(l=l.replace(/\[\]$/,""),!$){g[l]=c&&N(c,r);return}const C=c===null?[]:c.split(r.arrayFormatSeparator).map(x=>N(x,r));if(g[l]===void 0){g[l]=C;return}g[l]=[].concat(g[l],C)};default:return(l,c,g)=>{if(g[l]===void 0){g[l]=c;return}g[l]=[].concat(g[l],c)}}}function d(r){if(typeof r!="string"||r.length!==1)throw new TypeError("arrayFormatSeparator must be single character string")}function f(r,s){return s.encode?s.strict?n(r):encodeURIComponent(r):r}function N(r,s){return s.decode?t(r):r}function k(r){return Array.isArray(r)?r.sort():typeof r=="object"?k(Object.keys(r)).sort((s,l)=>Number(s)-Number(l)).map(s=>r[s]):r}function I(r){const s=r.indexOf("#");return s!==-1&&(r=r.slice(0,s)),r}function w(r){let s="";const l=r.indexOf("#");return l!==-1&&(s=r.slice(l)),s}function p(r){r=I(r);const s=r.indexOf("?");return s===-1?"":r.slice(s+1)}function m(r,s){return s.parseNumbers&&!Number.isNaN(Number(r))&&typeof r=="string"&&r.trim()!==""?r=Number(r):s.parseBooleans&&r!==null&&(r.toLowerCase()==="true"||r.toLowerCase()==="false")&&(r=r.toLowerCase()==="true"),r}function A(r,s){s=Object.assign({decode:!0,sort:!0,arrayFormat:"none",arrayFormatSeparator:",",parseNumbers:!1,parseBooleans:!1},s),d(s.arrayFormatSeparator);const l=S(s),c=Object.create(null);if(typeof r!="string"||(r=r.trim().replace(/^[?#&]/,""),!r))return c;for(const g of r.split("&")){if(g==="")continue;let[$,C]=i(s.decode?g.replace(/\+/g," "):g,"=");C=C===void 0?null:["comma","separator","bracket-separator"].includes(s.arrayFormat)?C:N(C,s),l(N($,s),C,c)}for(const g of Object.keys(c)){const $=c[g];if(typeof $=="object"&&$!==null)for(const C of Object.keys($))$[C]=m($[C],s);else c[g]=m($,s)}return s.sort===!1?c:(s.sort===!0?Object.keys(c).sort():Object.keys(c).sort(s.sort)).reduce((g,$)=>{const C=c[$];return Boolean(C)&&typeof C=="object"&&!Array.isArray(C)?g[$]=k(C):g[$]=C,g},Object.create(null))}e.extract=p,e.parse=A,e.stringify=(r,s)=>{if(!r)return"";s=Object.assign({encode:!0,strict:!0,arrayFormat:"none",arrayFormatSeparator:","},s),d(s.arrayFormatSeparator);const l=C=>s.skipNull&&o(r[C])||s.skipEmptyString&&r[C]==="",c=u(s),g={};for(const C of Object.keys(r))l(C)||(g[C]=r[C]);const $=Object.keys(g);return s.sort!==!1&&$.sort(s.sort),$.map(C=>{const x=r[C];return x===void 0?"":x===null?f(C,s):Array.isArray(x)?x.length===0&&s.arrayFormat==="bracket-separator"?f(C,s)+"[]":x.reduce(c(C),[]).join("&"):f(C,s)+"="+f(x,s)}).filter(C=>C.length>0).join("&")},e.parseUrl=(r,s)=>{s=Object.assign({decode:!0},s);const[l,c]=i(r,"#");return Object.assign({url:l.split("?")[0]||"",query:A(p(r),s)},s&&s.parseFragmentIdentifier&&c?{fragmentIdentifier:N(c,s)}:{})},e.stringifyUrl=(r,s)=>{s=Object.assign({encode:!0,strict:!0,[h]:!0},s);const l=I(r.url).split("?")[0]||"",c=e.extract(r.url),g=e.parse(c,{sort:!1}),$=Object.assign(g,r.query);let C=e.stringify($,s);C&&(C=`?${C}`);let x=w(r.url);return r.fragmentIdentifier&&(x=`#${s[h]?f(r.fragmentIdentifier,s):r.fragmentIdentifier}`),`${l}${C}${x}`},e.pick=(r,s,l)=>{l=Object.assign({parseFragmentIdentifier:!0,[h]:!1},l);const{url:c,query:g,fragmentIdentifier:$}=e.parseUrl(r,l);return e.stringifyUrl({url:c,query:a(g,s),fragmentIdentifier:$},l)},e.exclude=(r,s,l)=>{const c=Array.isArray(s)?g=>!s.includes(g):(g,$)=>!s(g,$);return e.pick(r,c,l)}})(ge);const[se,en]=X([]),[ft,tn]=X([]),[ze,dt]=X(new Map),[nn,rn]=X([]),[He,sn]=X("");X("");function he(){return te(this,null,function*(){var n;const e=((n=document.querySelector("#aftership_get_nonce"))==null?void 0:n.value)||"";yield fetch(ge.stringifyUrl({url:window.woocommerce_admin_meta_boxes.ajax_url,query:{action:"aftership_get_order_trackings",security:e,order_id:window.woocommerce_admin_meta_boxes.post_id,t:Date.now()}})).then(t=>t.json()).then(t=>{const i=t.data,a=window.get_aftership_couriers(),o=new Map;i.trackings.forEach(h=>{if(o.has(h.slug))return;const u=a.find(S=>S.slug===h.slug);u&&o.set(h.slug,u)}),dt(h=>new Map([...h,...o])),en(i.trackings),rn(i.line_items)})})}function an(e){return te(this,null,function*(){var u;const n=se().find(S=>S.tracking_id===e.tracking_id),t=se().findIndex(S=>S.tracking_id===e.tracking_id),i=new Date().toISOString().replace(/\.\d+(?=Z$)/,""),a=e.slug!==(n==null?void 0:n.slug)||e.tracking_number!==(n==null?void 0:n.tracking_number);let o=[...se()];n&&!a?o.splice(t,1,P(R({},e),{metrics:{created_at:n.metrics.created_at||i,updated_at:i}})):o=[...o.filter(S=>S.tracking_id!==e.tracking_id),P(R({},e),{tracking_id:Zt(`${e.slug}-${e.tracking_number}`).toString(),metrics:{created_at:i,updated_at:i}})];const h=((u=document.querySelector("#aftership_create_nonce"))==null?void 0:u.value)||"";yield fetch(ge.stringifyUrl({url:window.woocommerce_admin_meta_boxes.ajax_url,query:{action:"aftership_save_order_tracking",security:h}}),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({order_id:window.woocommerce_admin_meta_boxes.post_id,trackings:o})}),yield he()})}function ln(e){return te(this,null,function*(){var t;const n=((t=document.querySelector("#aftership_delete_nonce"))==null?void 0:t.value)||"";yield fetch(ge.stringifyUrl({url:window.woocommerce_admin_meta_boxes.ajax_url,query:{action:"aftership_delete_order_tracking",security:n}}),{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({order_id:window.woocommerce_admin_meta_boxes.post_id,tracking_id:e})}),yield he()})}function on(){return te(this,null,function*(){yield fetch(ge.stringifyUrl({url:window.woocommerce_admin_meta_boxes.ajax_url,query:{action:"aftership_get_settings",t:Date.now()}})).then(e=>e.json()).then(e=>{const n=e.data.couriers,t=new Map(ze());n.forEach(i=>{t.set(i.slug,i)}),dt(i=>new Map([...i,...t])),tn(n),sn(e.data.custom_domain)})})}var cn=typeof global=="object"&&global&&global.Object===Object&&global,un=cn,fn=typeof self=="object"&&self&&self.Object===Object&&self,dn=un||fn||Function("return this")(),gn=dn,hn=gn.Symbol,ae=hn,gt=Object.prototype,mn=gt.hasOwnProperty,_n=gt.toString,me=ae?ae.toStringTag:void 0;function yn(e){var n=mn.call(e,me),t=e[me];try{e[me]=void 0;var i=!0}catch(o){}var a=_n.call(e);return i&&(n?e[me]=t:delete e[me]),a}var vn=Object.prototype,bn=vn.toString;function pn(e){return bn.call(e)}var wn="[object Null]",$n="[object Undefined]",ht=ae?ae.toStringTag:void 0;function Sn(e){return e==null?e===void 0?$n:wn:ht&&ht in Object(e)?yn(e):pn(e)}function xn(e){return e!=null&&typeof e=="object"}var Cn="[object Symbol]";function Nn(e){return typeof e=="symbol"||xn(e)&&Sn(e)==Cn}function kn(e,n){for(var t=-1,i=e==null?0:e.length,a=Array(i);++t<i;)a[t]=n(e[t],t,e);return a}var An=Array.isArray,In=An,jn=1/0,mt=ae?ae.prototype:void 0,_t=mt?mt.toString:void 0;function yt(e){if(typeof e=="string")return e;if(In(e))return kn(e,yt)+"";if(Nn(e))return _t?_t.call(e):"";var n=e+"";return n=="0"&&1/e==-jn?"-0":n}function vt(e){return e==null?"":yt(e)}function Tn(e,n,t){var i=-1,a=e.length;n<0&&(n=-n>a?0:a+n),t=t>a?a:t,t<0&&(t+=a),a=n>t?0:t-n>>>0,n>>>=0;for(var o=Array(a);++i<a;)o[i]=e[i+n];return o}function On(e,n,t){var i=e.length;return t=t===void 0?i:t,!n&&t>=i?e:Tn(e,n,t)}var En="\\ud800-\\udfff",Mn="\\u0300-\\u036f",Fn="\\ufe20-\\ufe2f",Dn="\\u20d0-\\u20ff",Ln=Mn+Fn+Dn,Bn="\\ufe0e\\ufe0f",Rn="\\u200d",Pn=RegExp("["+Rn+En+Ln+Bn+"]");function bt(e){return Pn.test(e)}function Un(e){return e.split("")}var pt="\\ud800-\\udfff",qn="\\u0300-\\u036f",zn="\\ufe20-\\ufe2f",Hn="\\u20d0-\\u20ff",Vn=qn+zn+Hn,Yn="\\ufe0e\\ufe0f",Zn="["+pt+"]",Ve="["+Vn+"]",Ye="\\ud83c[\\udffb-\\udfff]",Gn="(?:"+Ve+"|"+Ye+")",wt="[^"+pt+"]",$t="(?:\\ud83c[\\udde6-\\uddff]){2}",St="[\\ud800-\\udbff][\\udc00-\\udfff]",Wn="\\u200d",xt=Gn+"?",Ct="["+Yn+"]?",Qn="(?:"+Wn+"(?:"+[wt,$t,St].join("|")+")"+Ct+xt+")*",Jn=Ct+xt+Qn,Kn="(?:"+[wt+Ve+"?",Ve,$t,St,Zn].join("|")+")",Xn=RegExp(Ye+"(?="+Ye+")|"+Kn+Jn,"g");function er(e){return e.match(Xn)||[]}function tr(e){return bt(e)?er(e):Un(e)}function nr(e){return function(n){n=vt(n);var t=bt(n)?tr(n):void 0,i=t?t[0]:n.charAt(0),a=t?On(t,1).join(""):n.slice(1);return i[e]()+a}}var rr=nr("toUpperCase"),ir=rr;function sr(e){return ir(vt(e).toLowerCase())}var Se={container:"_container_1s8av_1",backdrop:"_backdrop_1s8av_8",modal:"_modal_1s8av_15"},ar="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0iY3VycmVudENvbG9yIiBjbGFzcz0iYmkgYmkteCIgdmlld0JveD0iMCAwIDE2IDE2Ij4KICA8cGF0aCBmaWxsPSIjNjY2IiBkPSJNNC42NDYgNC42NDZhLjUuNSAwIDAgMSAuNzA4IDBMOCA3LjI5M2wyLjY0Ni0yLjY0N2EuNS41IDAgMCAxIC43MDguNzA4TDguNzA3IDhsMi42NDcgMi42NDZhLjUuNSAwIDAgMS0uNzA4LjcwOEw4IDguNzA3bC0yLjY0NiAyLjY0N2EuNS41IDAgMCAxLS43MDgtLjcwOEw3LjI5MyA4IDQuNjQ2IDUuMzU0YS41LjUgMCAwIDEgMC0uNzA4eiIvPgo8L3N2Zz4=";const lr=Z('<div><div></div><section><header><h1></h1><div role="button"><img></div></header><article></article><footer></footer></section></div>');function or(e){return Te(()=>{e.visible?document.body.style.overflowY="hidden":document.body.style.overflowY="auto"}),z(Re,{get when(){return e.visible},get children(){const n=lr.cloneNode(!0),t=n.firstChild,i=t.nextSibling,a=i.firstChild,o=a.firstChild,h=o.nextSibling,u=h.firstChild,S=a.nextSibling,d=S.nextSibling;return Pe(t,"click",e.onCancel,!0),E(o,()=>e.title),Pe(h,"click",e.onCancel,!0),ne(u,"src",ar),E(S,()=>e.children),E(d,z(st,{get disabled(){return e.disabled},onClick:()=>e.onOk&&e.onOk(),type:"primary",get children(){return e.okText||"Ok"}})),H(f=>{const N=Se.container,k=Se.backdrop,I=Se.modal,w=Se.header;return N!==f._v$&&(n.className=f._v$=N),k!==f._v$2&&(t.className=f._v$2=k),I!==f._v$3&&(i.className=f._v$3=I),w!==f._v$4&&(a.className=f._v$4=w),f},{_v$:void 0,_v$2:void 0,_v$3:void 0,_v$4:void 0}),n}})}ue(["click"]);var Ze={root:"_root_b92ih_1",suffix:"_suffix_b92ih_25",action:"_action_b92ih_30"},cr="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0iY3VycmVudENvbG9yIiBjbGFzcz0iYmkgYmktY2FyZXQtdXAtZmlsbCIgdmlld0JveD0iMCAwIDE2IDE2Ij4KICA8cGF0aCBmaWxsPSIjNWM1ZjYyIiBkPSJtNy4yNDcgNC44Ni00Ljc5NiA1LjQ4MWMtLjU2Ni42NDctLjEwNiAxLjY1OS43NTMgMS42NTloOS41OTJhMSAxIDAgMCAwIC43NTMtMS42NTlsLTQuNzk2LTUuNDhhMSAxIDAgMCAwLTEuNTA2IDB6Ii8+Cjwvc3ZnPg==",ur="data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgZmlsbD0iY3VycmVudENvbG9yIiBjbGFzcz0iYmkgYmktY2FyZXQtZG93bi1maWxsIiB2aWV3Qm94PSIwIDAgMTYgMTYiPgogIDxwYXRoIGZpbGw9IiM1YzVmNjIiIGQ9Ik03LjI0NyAxMS4xNCAyLjQ1MSA1LjY1OEMxLjg4NSA1LjAxMyAyLjM0NSA0IDMuMjA0IDRoOS41OTJhMSAxIDAgMCAxIC43NTMgMS42NTlsLTQuNzk2IDUuNDhhMSAxIDAgMCAxLTEuNTA2IDB6Ii8+Cjwvc3ZnPg==";const fr=Z("<div>of </div>"),dr=Z('<div><div><input type="number" inputmode="numeric"></div><div aria-hidden><div role="button" tabindex="-1"><img></div><div role="button" tabindex="-1"><img></div></div></div>');function gr(e){let n;const t=Bt({step:1},e);function i(S){return t.min!==void 0&&Number(S)<t.min}function a(S){return t.max!==void 0&&Number(S)>t.max}function o(S){!S||i(S)||a(S)||t.onChange(Number(S))}function h(S){if(S)if(i(S)){t.onChange(t.min),n.value=String(t.min);return}else if(a(S)){t.onChange(t.max),n.value=String(t.max);return}else t.onChange(Number(S));else n.value="",t.onChange(void 0)}function u(S){const d=t.value;let f;if(d===void 0)f=S>0?t.min:t.max,t.onChange(f||0);else{f=d+S*t.step;const N=String(f);if(i(N)||a(N))return}t.onChange(f)}return(()=>{const S=dr.cloneNode(!0),d=S.firstChild,f=d.firstChild,N=d.nextSibling,k=N.firstChild,I=k.firstChild,w=k.nextSibling,p=w.firstChild;return f.addEventListener("blur",m=>h(m.currentTarget.value)),f.$$input=m=>o(m.currentTarget.value),(m=>n=m)(f),E(S,z(Re,{get when(){return t.max!==void 0},get children(){const m=fr.cloneNode(!0);return m.firstChild,m.$$click=()=>n.focus(),E(m,()=>t.max,null),H(()=>m.className=Ze.suffix),m}}),N),k.$$click=()=>u(1),ne(I,"src",cr),w.$$click=()=>u(-1),ne(p,"src",ur),H(m=>{const A=Ze.root,r=t.min,s=t.max,l=t.value,c=Ze.action;return A!==m._v$&&(S.className=m._v$=A),r!==m._v$2&&ne(f,"min",m._v$2=r),s!==m._v$3&&ne(f,"max",m._v$3=s),l!==m._v$4&&(f.value=m._v$4=l),c!==m._v$5&&(N.className=m._v$5=c),m},{_v$:void 0,_v$2:void 0,_v$3:void 0,_v$4:void 0,_v$5:void 0}),S})()}ue(["input","click"]);var xe={modal:"_modal_128mo_1",empty:"_empty_128mo_7",items:"_items_128mo_13",input:"_input_128mo_34"};function hr(e){const n=new Map;return e.forEach(i=>{var a;(a=i.line_items)==null||a.forEach(o=>{n.has(Number(o.id))?n.set(Number(o.id),(n.get(Number(o.id))||0)+Number(o.quantity)):n.set(Number(o.id),Number(o.quantity))})}),nn().map(i=>{const a=n.get(i.id)||0;return{id:i.id,name:i.name,quantity:i.quantity-a}}).filter(i=>i.quantity>0)}const mr=Z("<table><thead><tr><th>Items</th><th>Qty.</th></tr></thead><tbody></tbody></table>"),_r=Z('<div style="color: red;"></div>'),yr=Z('<div><hr><div><div><label>Courier:<select></select></label><a href="admin.php?page=aftership-setting-admin">Update carrier list</a></div><div><label>Tracking number:<input></label></div></div></div>'),vr=Z("<div>All items have been fulfilled</div>"),br=Z("<tr><td></td><td></td></tr>"),pr=Z("<option></option>"),wr=Z("<div><label>:<input></label></div>"),Ce={tracking_id:"",tracking_number:"",slug:"",additional_fields:{account_number:"",key:"",postal_code:"",ship_date:"",destination_country:"",state:""},line_items:{}};function $r(e){const[n,t]=X(Ce),i=Y(()=>n().slug||""),a=Y(()=>{var p;return(((p=ze().get(i()))==null?void 0:p.required_fields)||[]).map(m=>({key:m.replace(/^tracking_/,""),name:m.replace(/^tracking_/,"").split("_").map(sr).join(" ")}))}),o=Y(()=>e.value?se().filter(w=>{var p;return w.tracking_id!==((p=e.value)==null?void 0:p.tracking_id)}):se()),h=Y(()=>o().length),u=Y(()=>hr(o()));Te(()=>{var m,A,r;const w=new Date().toISOString().split("T")[0],p=((m=e.value)==null?void 0:m.line_items)||[];e.value?e.value.line_items?t({tracking_id:e.value.tracking_id,slug:e.value.slug,tracking_number:e.value.tracking_number,additional_fields:P(R({},e.value.additional_fields),{ship_date:e.value.additional_fields.ship_date||w}),line_items:Object.fromEntries(p.map(s=>[Number(s.id),Number(s.quantity)]))}):h()?t({tracking_id:e.value.tracking_id,slug:e.value.slug,tracking_number:e.value.tracking_number,additional_fields:P(R({},e.value.additional_fields),{ship_date:e.value.additional_fields.ship_date||w}),line_items:Object.fromEntries(u().map(s=>[Number(s.id),0]))}):t({tracking_id:e.value.tracking_id,slug:e.value.slug,tracking_number:e.value.tracking_number,additional_fields:P(R({},e.value.additional_fields),{ship_date:e.value.additional_fields.ship_date||w}),line_items:Object.fromEntries(u().map(s=>[Number(s.id),Number(s.quantity)]))}):t(P(R({},Ce),{slug:((r=(A=ft())==null?void 0:A[0])==null?void 0:r.slug)||"",additional_fields:P(R({},Ce.additional_fields),{ship_date:w}),line_items:Object.fromEntries(u().map(s=>[Number(s.id),Number(s.quantity)]))}))});const S=()=>{t(w=>{const p=new Date().toISOString().split("T")[0];return P(R({},w),{additional_fields:P(R({},Ce.additional_fields),{ship_date:p})})})},d=Y(()=>{let w=!0;const p={};return Object.entries(n().line_items||[]).some(([,A])=>!!A)||(w=!1),n().slug===""&&(w=!1,p.slug="Required"),n().tracking_number===""&&(w=!1),o().some(A=>A.slug===n().slug&&A.tracking_number===n().tracking_number)&&(w=!1,p.tracking_number="This shipment has already been added."),a().forEach(A=>{n().additional_fields[A.key]===""&&(w=!1,p.additional_fields=P(R({},p.additional_fields),{[A.key]:"Required"}))}),{isValid:w,errors:p}}),f=(w,p)=>{t(m=>P(R({},m),{line_items:P(R({},m.line_items),{[w]:p})}))},N=(w,p)=>{t(m=>P(R({},m),{[w]:p.trim()}))},k=(w,p)=>{t(m=>P(R({},m),{additional_fields:P(R({},m.additional_fields),{[w]:p.trim()})}))};return z(or,{get title(){var w;return((w=e.value)==null?void 0:w.tracking_id)?"Edit tracking":"Add tracking"},get visible(){return e.visible},get okText(){var w;return((w=e.value)==null?void 0:w.tracking_id)?"Save":"Add"},onOk:()=>e.onOk(n()),get onCancel(){return e.onCancel},get disabled(){return!d().isValid},get children(){const w=yr.cloneNode(!0),p=w.firstChild,m=p.nextSibling,A=m.firstChild,r=A.firstChild,s=r.firstChild,l=s.nextSibling,c=A.nextSibling,g=c.firstChild,$=g.firstChild,C=$.nextSibling;return E(w,z(Rt,{get fallback(){return(()=>{const x=vr.cloneNode(!0);return H(()=>x.className=xe.empty),x})()},get children(){return z(Pt,{get when(){return u().length>0},get children(){const x=mr.cloneNode(!0),j=x.firstChild,L=j.nextSibling;return E(L,z(pe,{get each(){return u()},children:D=>(()=>{const V=br.cloneNode(!0),B=V.firstChild,ee=B.nextSibling;return E(B,()=>D.name),E(ee,z(gr,{min:0,get max(){return D.quantity},step:1,get value(){var W;return((W=n().line_items)==null?void 0:W[D.id])||0},onChange:W=>f(D.id,W||0)})),V})()})),H(()=>x.className=xe.items),x}})}}),p),p.style.setProperty("margin","20px 0"),l.addEventListener("change",x=>{S(),N("slug",x.currentTarget.value)}),E(l,z(pe,{get each(){return ft()},children:x=>(()=>{const j=pr.cloneNode(!0);return E(j,()=>x.name||x.other_name),H(()=>j.value=x.slug),j})()})),C.$$input=x=>N("tracking_number",x.currentTarget.value),E(c,z(Re,{get when(){return d().errors.tracking_number},get children(){const x=_r.cloneNode(!0);return E(x,()=>d().errors.tracking_number),x}}),null),E(m,z(pe,{get each(){return a()},children:x=>(()=>{const j=wr.cloneNode(!0),L=j.firstChild,D=L.firstChild,V=D.nextSibling;return E(L,()=>x.name,D),V.$$input=B=>k(x.key,B.currentTarget.value),H(B=>{const ee=x.key==="ship_date"?"date":"text",W=n().additional_fields[x.key];return ee!==B._v$5&&ne(V,"type",B._v$5=ee),W!==B._v$6&&(V.value=B._v$6=W),B},{_v$5:void 0,_v$6:void 0}),j})()}),null),H(x=>{var B;const j=xe.modal,L=xe.input,D=(B=n())==null?void 0:B.slug,V=n().tracking_number;return j!==x._v$&&(w.className=x._v$=j),L!==x._v$2&&(m.className=x._v$2=L),D!==x._v$3&&(l.value=x._v$3=D),V!==x._v$4&&(C.value=x._v$4=V),x},{_v$:void 0,_v$2:void 0,_v$3:void 0,_v$4:void 0}),w}})}ue(["input"]);const Sr=Z("<div><div></div><div></div></div>"),xr=Z('<div><div><div>Shipment </div><div><a>Edit</a><a>Delete</a></div></div><div><div><strong></strong></div><div><a target="_blank"></a></div></div></div>'),Cr=()=>{const[e,n]=X(!1),[t,i]=X();It(()=>{he(),on()});const a=u=>te(this,null,function*(){const S=u.line_items||{};yield an(P(R({},u),{line_items:Object.entries(S).map(([d,f])=>({id:Number(d),quantity:f})).filter(d=>d.quantity>0)})),n(!1),i(void 0)}),o=()=>{n(!1),i(void 0)},h=u=>/^https?:\/\//.test(He())?`${He()}/${u.slug}/${u.tracking_number}`:`https://${He()}/${u.slug}/${u.tracking_number}`;return(()=>{const u=Sr.cloneNode(!0),S=u.firstChild,d=S.nextSibling;return E(S,z(pe,{get each(){return se()},children:(f,N)=>(()=>{const k=xr.cloneNode(!0),I=k.firstChild,w=I.firstChild;w.firstChild;const p=w.nextSibling,m=p.firstChild,A=m.nextSibling,r=I.nextSibling,s=r.firstChild,l=s.firstChild,c=s.nextSibling,g=c.firstChild;return E(w,()=>N()+1,null),m.$$click=()=>te(this,null,function*(){yield he(),i(f),n(!0)}),A.$$click=()=>ln(f.tracking_id),E(l,()=>{var $;return(($=ze().get(f.slug))==null?void 0:$.name)||f.slug}),E(g,()=>f.tracking_number),H($=>{const C=$e.tracking,x=$e.title,j=$e.content,L=h(f);return C!==$._v$&&(k.className=$._v$=C),x!==$._v$2&&(I.className=$._v$2=x),j!==$._v$3&&(r.className=$._v$3=j),L!==$._v$4&&ne(g,"href",$._v$4=L),$},{_v$:void 0,_v$2:void 0,_v$3:void 0,_v$4:void 0}),k})()})),d.style.setProperty("padding","12px"),E(d,z(st,{onClick:()=>te(this,null,function*(){yield he(),n(!0)}),style:{width:"100%"},children:"Add Tracking Number"})),E(u,z($r,{get visible(){return e()},get value(){return t()},onCancel:o,onOk:a}),null),H(()=>u.className=$e.root),u})()};ue(["click"]);var Gr="";console.log("src/index.js"),customElements.define("aftership-meta-box",class extends HTMLElement{constructor(){super();kt(this,"initialized",!1);this.attachShadow({mode:"open"})}connectedCallback(){if(!!this.shadowRoot&&!this.initialized){this.initialized=!0;{const n=document.currentScript,t=document.createElement("link");t.rel="stylesheet",t.href=n.src.replace(/\/index\.js\?/,"/style.css?"),this.shadowRoot.appendChild(t)}Ut(()=>z(Cr,{}),this.shadowRoot)}}})})();
 
assets/meta-box/dist/style.css DELETED
@@ -1 +0,0 @@
1
- ._button_1dv9o_1{border:1px solid #ccc;border-radius:3px;background-color:#f7f7f7;color:#555;font-size:13px;min-height:30px;padding:0 10px;cursor:pointer}._button_1dv9o_1[disabled]{color:#a7aaad!important;background:#f6f7f7!important;border-color:#dcdcde!important;cursor:not-allowed}._primary_1dv9o_18{border-color:#2271b1;background:#2271b1;color:#fff}._primary_1dv9o_18:hover{background:#135e96;border-color:#135e96}._root_1nuhb_1{position:relative}._loading_1nuhb_5{position:absolute;height:100%;width:100%;top:0;left:0;background:#fff;opacity:.6;pointer-events:none;display:flex;align-items:center;justify-content:center}._tracking_1nuhb_19{padding:16px 12px;border-bottom:1px solid #eeeeee}._tracking_1nuhb_19 ._title_1nuhb_23{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;color:#5f5f5f}._tracking_1nuhb_19 ._title_1nuhb_23 a{font-size:12px}._tracking_1nuhb_19 ._title_1nuhb_23 a:nth-child(2){color:#a00;margin-left:12px}._tracking_1nuhb_19 ._content_1nuhb_37{background-color:#f6f6f6;padding:12px;font-size:14px;line-height:1.43;word-break:break-all;display:flex;flex-direction:column}._tracking_1nuhb_19 ._content_1nuhb_37 a{text-decoration:none}._tracking_1nuhb_19 ._content_1nuhb_37 strong{font-weight:600;color:#3c434a}._container_1s8av_1{position:fixed;top:0;right:0;z-index:99999}._backdrop_1s8av_8{width:100vw;height:100vh;background-color:#000;opacity:.7}._modal_1s8av_15{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background-color:#fff;width:500px}._modal_1s8av_15 header{background:#fcfcfc;padding:1em 1.5em;border-bottom:1px solid #ddd}._modal_1s8av_15 header h1{margin:0;font-size:18px;font-weight:700;line-height:1.5em}._modal_1s8av_15 header div{position:absolute;top:0;right:0;width:54px;height:54px;display:flex;align-items:center;justify-content:center;cursor:pointer;border-left:1px solid #ddd;color:#666}._modal_1s8av_15 header div:hover{background:#ddd;border-color:#ccc}._modal_1s8av_15 header img{height:32px;width:32px}._modal_1s8av_15 footer{padding:1em 1.5em;background:#fcfcfc;border-top:1px solid #dfdfdf;box-shadow:0 -4px 4px -4px #0000001a;display:flex;justify-content:flex-end}._root_b92ih_1{display:flex;align-items:center;justify-content:space-between;border:1px solid #8c8f94;border-radius:4px;height:30px;overflow:hidden}._root_b92ih_1 input{line-height:26px;border:0;padding-left:8px}._root_b92ih_1 input:focus{outline:0}._root_b92ih_1 input[type=number]::-webkit-outer-spin-button,._root_b92ih_1 input[type=number]::-webkit-inner-spin-button{appearance:none;margin:0}._root_b92ih_1 input[type=number]{appearance:textfield}._root_b92ih_1 ._suffix_b92ih_25{color:#6c7075;margin-right:8px;cursor:default}._root_b92ih_1 ._action_b92ih_30{width:22px;padding:2px;height:100%;display:grid;row-gap:2px}._root_b92ih_1 ._action_b92ih_30 div{border-radius:2px;background-color:#e4e5e7;display:flex;align-items:center;justify-content:center;cursor:pointer}._root_b92ih_1 ._action_b92ih_30 div:hover{background-color:#c9cbcf}._root_b92ih_1 ._action_b92ih_30 div:active{background-color:#b3b5b9}._root_b92ih_1 ._action_b92ih_30 div img{width:10px;height:10px;user-select:none}._modal_128mo_1{padding:20px;max-height:70vh;overflow:auto}._empty_128mo_7{text-align:center;font-size:16px;color:#999c9f}._items_128mo_13{display:grid;text-align:left;grid-template-columns:1fr auto;column-gap:10px;row-gap:6px;align-items:center}._items_128mo_13 thead,._items_128mo_13 tbody,._items_128mo_13 tr{display:contents}._items_128mo_13 th:last-child,._items_128mo_13 td:last-child{text-align:right}._items_128mo_13 th{margin-bottom:8px}._input_128mo_34{color:#3c434a;display:grid;grid-template-columns:1fr 1fr;column-gap:20px;row-gap:10px}._input_128mo_34 label{display:flex;flex-direction:column}._input_128mo_34 a{font-size:12px;text-decoration-line:underline;margin-left:2px;width:fit-content}._input_128mo_34 label{margin-left:2px}._input_128mo_34 select{border:1px solid #8c8f94;border-radius:4px;min-height:30px;font-size:14px;line-height:28px;padding:0 8px}._input_128mo_34 input{border:1px solid #8c8f94;border-radius:4px;font-size:14px;line-height:28px;padding:0 8px}/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}template{display:none}[hidden]{display:none}:host{all:initial;font-family:inherit;font-size:inherit}*{box-sizing:border-box}a{cursor:pointer;color:#2271b1;transition:color .5s ease-in-out}a:hover{color:#135e96}
 
assets/meta-box/src/App.tsx DELETED
@@ -1,108 +0,0 @@
1
- import { Component, createSignal, For, onMount, createMemo, Show } from 'solid-js';
2
- import Button from './components/Button';
3
- import styles from './App.module.scss';
4
- import {
5
- trackings,
6
- courierMap,
7
- fetchTrackings,
8
- deleteTracking,
9
- editTracking,
10
- getSelectedCouriers,
11
- customDomain,
12
- } from './storages/metaBox';
13
- import EditTrackingModal, { FormValue } from './components/EditTrackingModal';
14
- import { Tracking } from './typings/trackings';
15
- import { calcUnfulfilledItems } from './utils/common';
16
-
17
- const App: Component = () => {
18
- const [showModal, setShowModal] = createSignal(false);
19
- const [editingTracking, setEditingTracking] = createSignal<Tracking>();
20
-
21
- onMount(() => {
22
- fetchTrackings();
23
- getSelectedCouriers();
24
- });
25
-
26
- const handleOk = async (values: FormValue) => {
27
- const selectedItems = values.line_items || {};
28
- await editTracking({
29
- ...values,
30
- line_items: Object.entries(selectedItems)
31
- .map(([id, quantity]) => ({
32
- id: Number(id),
33
- quantity,
34
- }))
35
- .filter((item) => item.quantity > 0),
36
- });
37
- setShowModal(false);
38
- setEditingTracking(undefined);
39
- };
40
- const handleCancel = () => {
41
- setShowModal(false);
42
- setEditingTracking(undefined);
43
- };
44
-
45
- const formatTackingLink = (tracking: Tracking) => {
46
- return /^https?:\/\//.test(customDomain())
47
- ? `${customDomain()}/${tracking.slug}/${tracking.tracking_number}`
48
- : `https://${customDomain()}/${tracking.slug}/${tracking.tracking_number}`;
49
- };
50
-
51
- return (
52
- <div className={styles.root}>
53
- {/* trackings */}
54
- <div>
55
- <For each={trackings()}>
56
- {(item, index) => (
57
- <div className={styles.tracking}>
58
- <div className={styles.title}>
59
- <div>Shipment {index() + 1}</div>
60
- <div>
61
- <a
62
- onClick={async () => {
63
- // 💩 update data first, user maybe modify line_items
64
- await fetchTrackings();
65
- setEditingTracking(item);
66
- setShowModal(true);
67
- }}>
68
- Edit
69
- </a>
70
- <a onClick={() => deleteTracking(item.tracking_id)}>Delete</a>
71
- </div>
72
- </div>
73
- <div className={styles.content}>
74
- <div>
75
- <strong>{courierMap().get(item.slug)?.name || item.slug}</strong>
76
- </div>
77
- <div>
78
- <a href={formatTackingLink(item)} target="_blank">
79
- {item.tracking_number}
80
- </a>
81
- </div>
82
- </div>
83
- </div>
84
- )}
85
- </For>
86
- </div>
87
- {/* add button */}
88
- <div style={{ padding: '12px' }}>
89
- <Button
90
- onClick={async () => {
91
- await fetchTrackings();
92
- setShowModal(true);
93
- }}
94
- style={{ width: '100%' }}>
95
- Add Tracking Number
96
- </Button>
97
- </div>
98
- <EditTrackingModal
99
- visible={showModal()}
100
- value={editingTracking()}
101
- onCancel={handleCancel}
102
- onOk={handleOk}
103
- />
104
- </div>
105
- );
106
- };
107
-
108
- export default App;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/api/aftership/v1/class-am-rest-settings-controller.php CHANGED
@@ -99,6 +99,13 @@ if ( ! class_exists( 'AM_REST_Settings_Controller' ) ) {
99
  $options['couriers'] = $data['couriers'];
100
  }
101
  }
 
 
 
 
 
 
 
102
  if ( isset( $data['connected'] ) && in_array( $data['connected'], array( true, false ), true ) ) {
103
  $options['connected'] = $data['connected'];
104
  }
99
  $options['couriers'] = $data['couriers'];
100
  }
101
  }
102
+
103
+ if ( isset( $data['show_orders_actions'] ) && $data['show_orders_actions'] ) {
104
+ if ( '' === $this->seek_option_value( $options, 'show_orders_actions' ) ) {
105
+ $options['show_orders_actions'] = $data['show_orders_actions'];
106
+ }
107
+ }
108
+
109
  if ( isset( $data['connected'] ) && in_array( $data['connected'], array( true, false ), true ) ) {
110
  $options['connected'] = $data['connected'];
111
  }
includes/api/v4/class-aftership-api-settings.php CHANGED
@@ -73,6 +73,7 @@ class AfterShip_API_V4_Settings extends AfterShip_API_Resource {
73
  $custom_domain = isset( $options['custom_domain'] ) ? $options['custom_domain'] : '';
74
  $couriers = isset( $options['couriers'] ) ? $options['couriers'] : '';
75
  $use_tracking_button = isset( $options['use_track_button'] ) ? $options['use_track_button'] : '';
 
76
 
77
  if ( isset( $data['custom_domain'] ) && $data['custom_domain'] ) {
78
  if ( 'track.aftership.com' === $custom_domain || '' === $custom_domain ) {
@@ -86,6 +87,12 @@ class AfterShip_API_V4_Settings extends AfterShip_API_Resource {
86
  }
87
  }
88
 
 
 
 
 
 
 
89
  // Notice: true -> '1', false -> ''
90
  if ( isset( $data['connected'] ) && in_array( $data['connected'], array( '1', '' ) ) && in_array( boolval( $data['connected'] ), array( true, false ), true ) ) {
91
  $options['connected'] = boolval( $data['connected'] );
73
  $custom_domain = isset( $options['custom_domain'] ) ? $options['custom_domain'] : '';
74
  $couriers = isset( $options['couriers'] ) ? $options['couriers'] : '';
75
  $use_tracking_button = isset( $options['use_track_button'] ) ? $options['use_track_button'] : '';
76
+ $show_orders_actions = isset( $options['show_orders_actions'] ) ? $options['show_orders_actions'] : '';
77
 
78
  if ( isset( $data['custom_domain'] ) && $data['custom_domain'] ) {
79
  if ( 'track.aftership.com' === $custom_domain || '' === $custom_domain ) {
87
  }
88
  }
89
 
90
+ if ( isset( $data['show_orders_actions'] ) && $data['show_orders_actions'] ) {
91
+ if ( '' === $show_orders_actions ) {
92
+ $options['show_orders_actions'] = $data['show_orders_actions'];
93
+ }
94
+ }
95
+
96
  // Notice: true -> '1', false -> ''
97
  if ( isset( $data['connected'] ) && in_array( $data['connected'], array( '1', '' ) ) && in_array( boolval( $data['connected'] ), array( true, false ), true ) ) {
98
  $options['connected'] = boolval( $data['connected'] );
includes/class-aftership-actions.php CHANGED
@@ -54,6 +54,17 @@ class AfterShip_Actions {
54
  load_plugin_textdomain( 'aftership', false, dirname( plugin_basename( $plugin_file ) ) . '/languages/' );
55
  }
56
 
 
 
 
 
 
 
 
 
 
 
 
57
  /**
58
  * Load admin styles.
59
  */
@@ -62,6 +73,43 @@ class AfterShip_Actions {
62
  wp_enqueue_style( 'aftership_styles', $plugin_url . '/assets/css/admin.css', array(), AFTERSHIP_VERSION );
63
  }
64
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
65
  /**
66
  * Add the meta box for shipment info on the order page
67
  */
@@ -195,7 +243,7 @@ class AfterShip_Actions {
195
  );
196
 
197
  echo '<aftership-meta-box></aftership-meta-box>';
198
- wp_enqueue_script( 'aftership-js-tracking-items', $GLOBALS['AfterShip']->plugin_url . '/assets/meta-box/dist/index.js', array(), AFTERSHIP_VERSION );
199
  }
200
 
201
  /**
@@ -883,6 +931,103 @@ class AfterShip_Actions {
883
  <?php
884
  }
885
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
886
  /**
887
  * Order Tracking Get All Order Items AJAX
888
  *
@@ -920,9 +1065,13 @@ class AfterShip_Actions {
920
  // get exist order trackings
921
  $order_tracking_items = $this->get_tracking_items( $order_id );
922
 
 
 
 
923
  $order_trackings = array(
924
  'line_items' => $order_line_items,
925
  'trackings' => $order_tracking_items,
 
926
  );
927
 
928
  $this->format_aftership_tracking_output( 200, 'success', $order_trackings );
54
  load_plugin_textdomain( 'aftership', false, dirname( plugin_basename( $plugin_file ) ) . '/languages/' );
55
  }
56
 
57
+ /**
58
+ * Initial order actions for Add Tracking button
59
+ */
60
+ public static function init_aftership_show_orders_actions() {
61
+ $init_aftership_options = get_option( 'aftership_option_name' ) ? get_option( 'aftership_option_name' ) : array();
62
+ if ( empty( $init_aftership_options['show_orders_actions'] ) ) {
63
+ $init_aftership_options['show_orders_actions'] = 'processing,completed,partial-shipped';
64
+ update_option( 'aftership_option_name', $init_aftership_options );
65
+ }
66
+ }
67
+
68
  /**
69
  * Load admin styles.
70
  */
73
  wp_enqueue_style( 'aftership_styles', $plugin_url . '/assets/css/admin.css', array(), AFTERSHIP_VERSION );
74
  }
75
 
76
+ /**
77
+ * Load aftership orders page script.
78
+ */
79
+ public function load_orders_page_script( $hook ) {
80
+ if ( 'edit.php' !== $hook ) {
81
+ return;
82
+ }
83
+ woocommerce_wp_hidden_input(
84
+ array(
85
+ 'id' => 'aftership_get_nonce',
86
+ 'value' => wp_create_nonce( 'get-tracking-item' ),
87
+ )
88
+ );
89
+ woocommerce_wp_hidden_input(
90
+ array(
91
+ 'id' => 'aftership_delete_nonce',
92
+ 'value' => wp_create_nonce( 'delete-tracking-item' ),
93
+ )
94
+ );
95
+ woocommerce_wp_hidden_input(
96
+ array(
97
+ 'id' => 'aftership_create_nonce',
98
+ 'value' => wp_create_nonce( 'create-tracking-item' ),
99
+ )
100
+ );
101
+ echo '<aftership-orders-modal></aftership-orders-modal>';
102
+
103
+ $plugin_url = $GLOBALS['AfterShip']->plugin_url;
104
+ wp_enqueue_script(
105
+ 'aftership-orders-page-script',
106
+ $plugin_url . '/assets/frontend/dist/orders/index.js',
107
+ array( 'wc-admin-order-meta-boxes' ),
108
+ AFTERSHIP_VERSION
109
+ );
110
+ }
111
+
112
+
113
  /**
114
  * Add the meta box for shipment info on the order page
115
  */
243
  );
244
 
245
  echo '<aftership-meta-box></aftership-meta-box>';
246
+ wp_enqueue_script( 'aftership-js-tracking-items', $GLOBALS['AfterShip']->plugin_url . '/assets/frontend/dist/metabox/index.js', array(), AFTERSHIP_VERSION );
247
  }
248
 
249
  /**
931
  <?php
932
  }
933
 
934
+ /*
935
+ * Add action button in order list to change order status from completed to delivered
936
+ */
937
+ public function add_aftership_tracking_actions_button( $actions, $order ) {
938
+ $saved_options = get_option( 'aftership_option_name' ) ? get_option( 'aftership_option_name' ) : array();
939
+ $order_array = array();
940
+
941
+ if ( isset( $saved_options['show_orders_actions'] ) && $saved_options['show_orders_actions'] ) {
942
+ $as_show_orders_actions = explode( ',', $saved_options['show_orders_actions'] );
943
+ foreach ( $as_show_orders_actions as $order_status ) {
944
+ array_push( $order_array, $order_status );
945
+ }
946
+ }
947
+
948
+ if ( $order->get_shipping_method() != 'Local pickup' && $order->get_shipping_method() != 'Local Pickup' ) {
949
+ if ( $order->has_status( $order_array ) ) {
950
+ $actions['add_tracking_by_aftership'] = array(
951
+ 'url' => '#order-id-' . $order->get_id(),
952
+ 'name' => 'Add Tracking By AfterShip',
953
+ 'action' => 'aftership_add_inline_tracking', // keep "view" class for a clean button CSS
954
+ );
955
+ }
956
+ }
957
+
958
+ return $actions;
959
+ }
960
+
961
+ /**
962
+ * Define shipment tracking column in admin orders list.
963
+ *
964
+ * @param array $columns Existing columns
965
+ *
966
+ * @return array Altered columns
967
+ */
968
+ public function shop_order_columns( $columns ) {
969
+ $columns['woocommerce-automizely-aftership-tracking'] = 'AfterShip Tracking';
970
+ return $columns;
971
+ }
972
+
973
+ /**
974
+ * Render shipment tracking in custom column.
975
+ *
976
+ * @param string $column Current column
977
+ */
978
+ public function render_shop_order_columns( $column ) {
979
+ global $post;
980
+ if ( 'woocommerce-automizely-aftership-tracking' === $column ) {
981
+ echo wp_kses_post( $this->get_automizely_aftership_tracking_column( $post->ID ) );
982
+ }
983
+ }
984
+
985
+ /**
986
+ * Get content for shipment tracking column.
987
+ *
988
+ * @param int $order_id Order ID
989
+ *
990
+ * @return string Column content to render
991
+ */
992
+ public function get_automizely_aftership_tracking_column( $order_id ) {
993
+ ob_start();
994
+
995
+ $tracking_items = $this->get_tracking_items( $order_id );
996
+
997
+ if ( count( $tracking_items ) > 0 ) {
998
+ echo '<ul class="wcas-tracking-number-list">';
999
+
1000
+ foreach ( $tracking_items as $tracking_item ) {
1001
+ // 根据 slug,匹配显示的 courier name
1002
+ $provider_courier = $this->get_courier_by_slug( $tracking_item['slug'] );
1003
+ // 根据规则,生成 tracking link
1004
+ $aftership_tracking_link = $this->generate_tracking_page_link( $tracking_item );
1005
+
1006
+ printf(
1007
+ '<li>
1008
+ <div>
1009
+ <b>%s</b>
1010
+ </div>
1011
+ <a href="%s" title="%s" target="_blank" class=ft11>%s</a>
1012
+ <a href="#" class="aftership_inline_tracking_delete" data-tracking-id="%s" data-order-id="%s">
1013
+ <span class="dashicons dashicons-trash"></span>
1014
+ </a>
1015
+ </li>',
1016
+ esc_html( $provider_courier['name'] ),
1017
+ esc_url( $aftership_tracking_link ),
1018
+ esc_html( $tracking_item['tracking_number'] ),
1019
+ esc_html( $tracking_item['tracking_number'] ),
1020
+ esc_attr( $tracking_item['tracking_id'] ),
1021
+ esc_attr( $order_id )
1022
+ );
1023
+ }
1024
+ echo '</ul>';
1025
+ } else {
1026
+ echo '–';
1027
+ }
1028
+ return apply_filters( 'woocommerce_shipment_tracking_get_automizely_aftership_tracking_column', ob_get_clean(), $order_id, $tracking_items );
1029
+ }
1030
+
1031
  /**
1032
  * Order Tracking Get All Order Items AJAX
1033
  *
1065
  // get exist order trackings
1066
  $order_tracking_items = $this->get_tracking_items( $order_id );
1067
 
1068
+ // get some fields form order
1069
+ $order = new WC_Order( $order_id );
1070
+
1071
  $order_trackings = array(
1072
  'line_items' => $order_line_items,
1073
  'trackings' => $order_tracking_items,
1074
+ 'number' => (string) $order->get_order_number(),
1075
  );
1076
 
1077
  $this->format_aftership_tracking_output( 200, 'success', $order_trackings );
includes/class-aftership-settings.php CHANGED
@@ -35,6 +35,20 @@ class AfterShip_Settings {
35
  */
36
  private $dom_aftership_connected = 'aftership_connected';
37
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
38
  /**
39
  * Start up
40
  */
@@ -61,6 +75,7 @@ class AfterShip_Settings {
61
  wp_enqueue_script( 'aftership_styles_chosen_proto', $plugin_url . '/assets/plugin/chosen/chosen.proto.min.js', array(), AFTERSHIP_VERSION );
62
  wp_enqueue_script( 'aftership_script_util', $plugin_url . '/assets/js/util.js', array(), AFTERSHIP_VERSION );
63
  wp_enqueue_script( 'aftership_script_couriers', $plugin_url . '/assets/js/couriers.js', array(), AFTERSHIP_VERSION );
 
64
  wp_enqueue_script( 'aftership_script_setting', $plugin_url . '/assets/js/setting.js', array(), AFTERSHIP_VERSION );
65
  }
66
 
@@ -106,6 +121,14 @@ class AfterShip_Settings {
106
  'aftership-setting-admin',
107
  'aftership_setting_section_id'
108
  );
 
 
 
 
 
 
 
 
109
  }
110
 
111
  /**
@@ -133,6 +156,10 @@ class AfterShip_Settings {
133
  $new_input['connected'] = boolval( $input['connected'] );
134
  }
135
 
 
 
 
 
136
  return $new_input;
137
  }
138
 
@@ -195,6 +222,21 @@ class AfterShip_Settings {
195
  ( isset( $this->options['use_track_button'] ) && true === $this->options['use_track_button'] ) ? 'checked="checked"' : ''
196
  );
197
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
198
  }
199
 
200
 
35
  */
36
  private $dom_aftership_connected = 'aftership_connected';
37
 
38
+ /**
39
+ * show order actions when selected order status.
40
+ *
41
+ * @var string $dom_aftership_show_order_actions
42
+ */
43
+ private $dom_id_show_order_actions_select = 'aftership_show_order_actions_select';
44
+
45
+ /**
46
+ * show order actions when selected order status.
47
+ *
48
+ * @var string $dom_aftership_show_order_actions
49
+ */
50
+ private $dom_id_show_order_actions = 'aftership_show_order_actions';
51
+
52
  /**
53
  * Start up
54
  */
75
  wp_enqueue_script( 'aftership_styles_chosen_proto', $plugin_url . '/assets/plugin/chosen/chosen.proto.min.js', array(), AFTERSHIP_VERSION );
76
  wp_enqueue_script( 'aftership_script_util', $plugin_url . '/assets/js/util.js', array(), AFTERSHIP_VERSION );
77
  wp_enqueue_script( 'aftership_script_couriers', $plugin_url . '/assets/js/couriers.js', array(), AFTERSHIP_VERSION );
78
+ wp_enqueue_script( 'aftership_script_show_order_actions', $plugin_url . '/assets/js/order-status.js', array(), AFTERSHIP_VERSION );
79
  wp_enqueue_script( 'aftership_script_setting', $plugin_url . '/assets/js/setting.js', array(), AFTERSHIP_VERSION );
80
  }
81
 
121
  'aftership-setting-admin',
122
  'aftership_setting_section_id'
123
  );
124
+
125
+ add_settings_field(
126
+ $this->dom_id_show_order_actions,
127
+ '',
128
+ array( $this, 'show_order_actions_callback' ),
129
+ 'aftership-setting-admin',
130
+ 'aftership_setting_section_id'
131
+ );
132
  }
133
 
134
  /**
156
  $new_input['connected'] = boolval( $input['connected'] );
157
  }
158
 
159
+ if ( isset( $input['show_orders_actions'] ) ) {
160
+ $new_input['show_orders_actions'] = sanitize_text_field( $input['show_orders_actions'] );
161
+ }
162
+
163
  return $new_input;
164
  }
165
 
222
  ( isset( $this->options['use_track_button'] ) && true === $this->options['use_track_button'] ) ? 'checked="checked"' : ''
223
  );
224
  }
225
+
226
+ /**
227
+ * Call this func before shown on pages.
228
+ */
229
+ public function show_order_actions_callback() {
230
+
231
+ $show_orders_actions = array();
232
+ if ( isset( $this->options['show_orders_actions'] ) ) {
233
+ $show_orders_actions = explode( ',', $this->options['show_orders_actions'] );
234
+ }
235
+ echo '<div class="auto-as-admin-select-title">Add Tracking Order action</div>';
236
+ echo '<select data-placeholder="Please select order status" id="' . $this->dom_id_show_order_actions_select . '" multiple style="width:100%">';
237
+ echo '</select>';
238
+ echo '<input type="hidden" id="' . $this->dom_id_show_order_actions . '" name="aftership_option_name[show_orders_actions]" value="' . implode( ',', $show_orders_actions ) . '"/>';
239
+ }
240
  }
241
 
242
 
readme.txt CHANGED
@@ -4,7 +4,7 @@ Donate link: https://www.aftership.com/
4
  Tags: woocommerce shipping,woocommerce tracking,shipment tracking,order tracking, woocommerce,track order,dhl,ups,usps,fedex,shipping,tracking,order
5
  Requires at least: 2.9
6
  Tested up to: 6.0
7
- Stable tag: 1.14.8
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
@@ -138,6 +138,9 @@ Tailor a dynamic branded tracking page. Upload promotional banner, logo, and fav
138
 
139
  == Changelog ==
140
 
 
 
 
141
  = 1.14.8 =
142
  * Fix known issue
143
 
4
  Tags: woocommerce shipping,woocommerce tracking,shipment tracking,order tracking, woocommerce,track order,dhl,ups,usps,fedex,shipping,tracking,order
5
  Requires at least: 2.9
6
  Tested up to: 6.0
7
+ Stable tag: 1.15.0
8
  License: GPLv2 or later
9
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
10
 
138
 
139
  == Changelog ==
140
 
141
+ = 1.15.0 =
142
+ * New Feature: (Tracking) Ability to add tracking number on orders list
143
+
144
  = 1.14.8 =
145
  * Fix known issue
146