@joryio/web-sdk 1.3.1-beta.1 → 1.3.1-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,7 +2,11 @@
2
2
 
3
3
  ## 1.3.1 - 2026-10-24
4
4
 
5
- No changes to the web SDK. Released with the same version number as the other Joryio SDKs (1.3.1 fixes iOS builds; see the iOS, React Native and Unity release notes).
5
+ Fixed: HTML modals and slide-ups are responsive. The message frame used to start narrow and take the width the content reported, so the author's media queries (for example `@media (max-width: 560px)`) fired even on a desktop screen. The frame is now given min(maxWidth, viewport width - 16px on each side) before the content loads (`maxWidth` comes from the "Max width" field in the dashboard; modal 600 and slide-up 400 when unset), re-fits when the window is resized, and only its height follows the content.
6
+
7
+ Fixed: the height is measured from the message body, so a message can shrink as well as grow (a form replaced by its thank-you line).
8
+
9
+ No API changes. Banner and fullscreen messages are unchanged.
6
10
 
7
11
  ## 1.3.0 - 2026-10-06
8
12
 
@@ -38,6 +38,7 @@ export interface InAppCampaign {
38
38
  html: string;
39
39
  css: string;
40
40
  assets?: unknown[];
41
+ maxWidth?: number;
41
42
  } | {
42
43
  kind: 'native';
43
44
  title?: string;
@@ -96,6 +97,13 @@ export interface InAppBridge {
96
97
  preparePushPermission?: () => void;
97
98
  }
98
99
  export declare function escapeStyleText(css: string): string;
100
+ export declare const IN_APP_DEFAULT_MAX_WIDTH: {
101
+ readonly modal: 600;
102
+ readonly slideup: 400;
103
+ };
104
+ export declare const IN_APP_VIEWPORT_MARGIN = 16;
105
+ export declare function inAppMaxWidth(campaign: Pick<InAppCampaign, 'type' | 'content'>): number | null;
106
+ export declare function inAppFrameWidth(maxWidth: number, viewportWidth: number, margin?: number): number;
99
107
  export declare function scopeCssRules(rules: ArrayLike<unknown>, scope: string): string;
100
108
  export declare function normalizedElementId(raw: unknown): string | undefined;
101
109
  export declare function cssValue(raw: unknown): string | null;
@@ -123,6 +131,9 @@ export declare class InAppMessagingManager {
123
131
  private syncAgainChanges;
124
132
  private claimed;
125
133
  private iframes;
134
+ private frameMaxWidths;
135
+ private viewportListener?;
136
+ private viewportTimer?;
126
137
  private allowHtmlJsInAppMessages;
127
138
  private capabilities;
128
139
  private callHost;
@@ -149,6 +160,10 @@ export declare class InAppMessagingManager {
149
160
  private renderTemplate;
150
161
  private undisplayableReason;
151
162
  private display;
163
+ private hostViewportWidth;
164
+ private sizeContentFrame;
165
+ private watchViewport;
166
+ private unwatchViewportIfIdle;
152
167
  private buildSrcdoc;
153
168
  private scopeCss;
154
169
  dismiss(campaignId: string, action?: string): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"inapp.d.ts","sourceRoot":"","sources":["../../src/core/inapp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"inapp.d.ts","sourceRoot":"","sources":["../../src/core/inapp.ts"],"names":[],"mappings":"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"}
package/dist/index.d.mts CHANGED
@@ -403,6 +403,7 @@ interface InAppCampaign {
403
403
  html: string;
404
404
  css: string;
405
405
  assets?: unknown[];
406
+ maxWidth?: number;
406
407
  } | {
407
408
  kind: 'native';
408
409
  title?: string;
package/dist/joryio-sw.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Joryio Web SDK v1.3.1-beta.1
2
+ * Joryio Web SDK v1.3.1-beta.2
3
3
  * (c) 2026 Joryio. All rights reserved.
4
4
  * @license Commercial - see https://github.com/joryio/joryio-web-sdk/blob/main/LICENSE
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Joryio Web SDK v1.3.1-beta.1
2
+ * Joryio Web SDK v1.3.1-beta.2
3
3
  * (c) 2026 Joryio. All rights reserved.
4
4
  * @license Commercial - see https://github.com/joryio/joryio-web-sdk/blob/main/LICENSE
5
5
  */
@@ -2265,6 +2265,21 @@ class UTMManager {
2265
2265
  function escapeStyleText(css) {
2266
2266
  return typeof css === 'string' ? css.replace(/<\//g, '<\\/') : '';
2267
2267
  }
2268
+ const IN_APP_DEFAULT_MAX_WIDTH = { modal: 600, slideup: 400 };
2269
+ const IN_APP_VIEWPORT_MARGIN = 16;
2270
+ function inAppMaxWidth(campaign) {
2271
+ var _a;
2272
+ if (campaign.type !== 'modal' && campaign.type !== 'slideup')
2273
+ return null;
2274
+ if (((_a = campaign.content) === null || _a === void 0 ? void 0 : _a.kind) !== 'html')
2275
+ return null;
2276
+ const mw = campaign.content.maxWidth;
2277
+ return typeof mw === 'number' && Number.isFinite(mw) && mw > 0 ? Math.floor(mw) : IN_APP_DEFAULT_MAX_WIDTH[campaign.type];
2278
+ }
2279
+ function inAppFrameWidth(maxWidth, viewportWidth, margin = IN_APP_VIEWPORT_MARGIN) {
2280
+ const available = Math.max(0, Math.floor(viewportWidth) - 2 * margin);
2281
+ return Math.max(0, Math.min(Math.floor(maxWidth), available));
2282
+ }
2268
2283
  const HOST_BRIDGE_KEY = '__joryioInApp';
2269
2284
  const IMPRESSIONS_STORAGE_KEY = 'inapp_impressions';
2270
2285
  const MAX_DISPLAYED_MESSAGES = 500;
@@ -2380,6 +2395,7 @@ class InAppMessagingManager {
2380
2395
  this.syncAgain = false;
2381
2396
  this.claimed = new Set();
2382
2397
  this.iframes = new Map();
2398
+ this.frameMaxWidths = new Map();
2383
2399
  this.allowHtmlJsInAppMessages = false;
2384
2400
  this.bridge = null;
2385
2401
  this.auth = null;
@@ -2499,16 +2515,13 @@ class InAppMessagingManager {
2499
2515
  this.trackImpression(campaignId, 'clicked').catch(() => { });
2500
2516
  return this.submitForm(campaignId, values);
2501
2517
  },
2502
- setSize: (campaignId, width, height) => {
2518
+ setSize: (campaignId, _width, height) => {
2503
2519
  var _a;
2504
2520
  const iframe = this.iframes.get(campaignId);
2505
2521
  if (!iframe || !Number.isFinite(height) || height <= 0)
2506
2522
  return;
2507
2523
  const type = (_a = this.displayedMessages.get(campaignId)) === null || _a === void 0 ? void 0 : _a.campaign.type;
2508
2524
  iframe.style.height = type === 'fullscreen' ? '100%' : `${Math.ceil(height)}px`;
2509
- if ((type === 'modal' || type === 'slideup') && Number.isFinite(width) && width > 0) {
2510
- iframe.style.width = `${Math.ceil(width)}px`;
2511
- }
2512
2525
  },
2513
2526
  };
2514
2527
  }
@@ -3206,6 +3219,13 @@ class InAppMessagingManager {
3206
3219
  if (campaign.type === 'banner' || campaign.type === 'fullscreen') {
3207
3220
  iframe.style.width = '100%';
3208
3221
  }
3222
+ const maxWidth = inAppMaxWidth(campaign);
3223
+ if (maxWidth !== null) {
3224
+ container.style.maxWidth = 'none';
3225
+ this.frameMaxWidths.set(campaign.id, maxWidth);
3226
+ iframe.style.width = `${inAppFrameWidth(maxWidth, this.hostViewportWidth())}px`;
3227
+ this.watchViewport();
3228
+ }
3209
3229
  iframe.srcdoc = this.buildSrcdoc(campaign.id, renderedHtml, ((_d = campaign.content) === null || _d === void 0 ? void 0 : _d.kind) === 'html' ? campaign.content.css : '', campaign.type);
3210
3230
  container.appendChild(iframe);
3211
3231
  this.iframes.set(campaign.id, iframe);
@@ -3259,13 +3279,53 @@ class InAppMessagingManager {
3259
3279
  this.callHost('onMessageDisplay', () => { var _a, _b; return (_b = (_a = this.displayOptions).onDisplay) === null || _b === void 0 ? void 0 : _b.call(_a, message); });
3260
3280
  this.logger.info(`Displayed campaign: ${campaign.name} (${campaign.id})`);
3261
3281
  }
3282
+ hostViewportWidth() {
3283
+ const doc = typeof document !== 'undefined' ? document.documentElement : null;
3284
+ const cw = doc && typeof doc.clientWidth === 'number' ? doc.clientWidth : 0;
3285
+ if (cw > 0)
3286
+ return cw;
3287
+ return typeof window !== 'undefined' && typeof window.innerWidth === 'number' ? window.innerWidth : 0;
3288
+ }
3289
+ sizeContentFrame(campaignId) {
3290
+ const iframe = this.iframes.get(campaignId);
3291
+ const maxWidth = this.frameMaxWidths.get(campaignId);
3292
+ if (!iframe || maxWidth === undefined)
3293
+ return;
3294
+ iframe.style.width = `${inAppFrameWidth(maxWidth, this.hostViewportWidth())}px`;
3295
+ }
3296
+ watchViewport() {
3297
+ if (this.viewportListener || typeof window === 'undefined' || typeof window.addEventListener !== 'function')
3298
+ return;
3299
+ this.viewportListener = () => {
3300
+ if (this.viewportTimer)
3301
+ clearTimeout(this.viewportTimer);
3302
+ this.viewportTimer = setTimeout(() => {
3303
+ this.viewportTimer = undefined;
3304
+ for (const id of this.frameMaxWidths.keys())
3305
+ this.sizeContentFrame(id);
3306
+ }, 100);
3307
+ };
3308
+ window.addEventListener('resize', this.viewportListener);
3309
+ }
3310
+ unwatchViewportIfIdle() {
3311
+ if (this.frameMaxWidths.size > 0 || !this.viewportListener)
3312
+ return;
3313
+ if (typeof window !== 'undefined' && typeof window.removeEventListener === 'function') {
3314
+ window.removeEventListener('resize', this.viewportListener);
3315
+ }
3316
+ this.viewportListener = undefined;
3317
+ if (this.viewportTimer) {
3318
+ clearTimeout(this.viewportTimer);
3319
+ this.viewportTimer = undefined;
3320
+ }
3321
+ }
3262
3322
  buildSrcdoc(campaignId, html, css, type) {
3263
3323
  const cid = JSON.stringify(campaignId);
3264
3324
  const key = JSON.stringify(HOST_BRIDGE_KEY);
3265
3325
  const contentSized = type === 'modal' || type === 'slideup';
3266
- const bodySizing = contentSized ? 'body{display:inline-block;max-width:100vw;}' : '';
3326
+ const bodySizing = contentSized ? 'body{display:flow-root;}' : '';
3267
3327
  const bootstrap = `(function(){
3268
- var CID=${cid},KEY=${key};
3328
+ var CID=${cid},KEY=${key},SIZED=${contentSized ? 'true' : 'false'};
3269
3329
  // Per-device visibility: tag the root with the REAL device class from the
3270
3330
  // HOST page viewport (the iframe is message-sized, so its own innerWidth is
3271
3331
  // useless here). The jr-vp-* → jr-hide-* rules in <style> then hide elements
@@ -3314,7 +3374,7 @@ class InAppMessagingManager {
3314
3374
  var p=window.joryioBridge.submitForm(d);if(!p||typeof p.then!=='function'){msg('This form cannot be sent here.',false);f.removeAttribute('data-jry-busy');if(btn)btn.disabled=false;return}
3315
3375
  p.then(function(r){if(r&&r.ok){if(r.redirect){window.joryioBridge.navigate(r.redirect,'_top');return}var els2=f.querySelectorAll('input,select,textarea,button');for(var j=0;j<els2.length;j++){els2[j].disabled=true}msg(r.message||'Thank you.',true)}else{msg((r&&(r.message||(r.errors&&r.errors[0])))||'Something went wrong. Please try again.',false);f.removeAttribute('data-jry-busy');if(btn)btn.disabled=false}}).catch(function(){msg('Something went wrong. Please try again.',false);f.removeAttribute('data-jry-busy');if(btn)btn.disabled=false});
3316
3376
  },true);
3317
- function reportSize(){try{var b=document.body,de=document.documentElement;var w=Math.max(b?b.scrollWidth:0,de.scrollWidth);var h=Math.max(b?b.scrollHeight:0,de.scrollHeight);call('setSize',[w,h]);}catch(e){}}
3377
+ function reportSize(){try{var b=document.body,de=document.documentElement;var w=Math.max(b?b.scrollWidth:0,de.scrollWidth);var h=SIZED&&b?Math.ceil(Math.max(b.scrollHeight,b.getBoundingClientRect?b.getBoundingClientRect().height:0)):Math.max(b?b.scrollHeight:0,de.scrollHeight);call('setSize',[w,h]);}catch(e){}}
3318
3378
  if(document.readyState!=='loading')reportSize();else document.addEventListener('DOMContentLoaded',reportSize);
3319
3379
  window.addEventListener('load',reportSize);
3320
3380
  try{if(window.ResizeObserver&&document.body){new ResizeObserver(reportSize).observe(document.body);}}catch(e){}
@@ -3376,6 +3436,8 @@ class InAppMessagingManager {
3376
3436
  container.remove();
3377
3437
  }
3378
3438
  this.iframes.delete(campaignId);
3439
+ this.frameMaxWidths.delete(campaignId);
3440
+ this.unwatchViewportIfIdle();
3379
3441
  if (backdrop) {
3380
3442
  backdrop.remove();
3381
3443
  }
@@ -3603,6 +3665,8 @@ class InAppMessagingManager {
3603
3665
  this.displayedMessages.clear();
3604
3666
  this.watchedAttributes.clear();
3605
3667
  this.iframes.clear();
3668
+ this.frameMaxWidths.clear();
3669
+ this.unwatchViewportIfIdle();
3606
3670
  this.logger.info('In-app messaging state cleared');
3607
3671
  }
3608
3672
  forgetImpressions() {
@@ -3643,6 +3707,8 @@ class InAppMessagingManager {
3643
3707
  this.impressionTimestamps.clear();
3644
3708
  this.watchedAttributes.clear();
3645
3709
  this.iframes.clear();
3710
+ this.frameMaxWidths.clear();
3711
+ this.unwatchViewportIfIdle();
3646
3712
  if (typeof window !== 'undefined') {
3647
3713
  delete window[HOST_BRIDGE_KEY];
3648
3714
  }