@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 +5 -1
- package/dist/core/inapp.d.ts +15 -0
- package/dist/core/inapp.d.ts.map +1 -1
- package/dist/index.d.mts +1 -0
- package/dist/joryio-sw.js +1 -1
- package/dist/joryio.cjs.js +74 -8
- package/dist/joryio.min.js +2 -2
- package/dist/joryio.min.js.map +1 -1
- package/dist/joryio.mjs +74 -8
- package/dist/joryio.umd.js +74 -8
- package/package.json +1 -1
- package/src/core/inapp.ts +136 -16
package/CHANGELOG.md
CHANGED
|
@@ -2,7 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
## 1.3.1 - 2026-10-24
|
|
4
4
|
|
|
5
|
-
|
|
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
|
|
package/dist/core/inapp.d.ts
CHANGED
|
@@ -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>;
|
package/dist/core/inapp.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inapp.d.ts","sourceRoot":"","sources":["../../src/core/inapp.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAQ/C,MAAM,WAAW,iBAAiB;IAEhC,iBAAiB,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzE,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC;IACnD,mBAAmB,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAE3E,gBAAgB,CAAC,IAAI,MAAM,GAAG,IAAI,CAAC;CACpC;AAMD,MAAM,WAAW,mBAAmB;IAKlC,OAAO,CAAC,EAAE,MAAM,OAAO,CAAC;IAExB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,cAAc,CAAC,EAAE,mBAAmB,GAAG,oBAAoB,CAAC;IAE5D,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,IAAI,CAAC;CAClD;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,YAAY,GAAG,QAAQ,CAAC;IAC/D,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,mBAAmB,GAAG,oBAAoB,CAAC;IAC3D,YAAY,CAAC,EAAE;QAEb,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC/B,UAAU,EAAE,MAAM,CAAC;QACnB,0BAA0B,CAAC,EAAE,MAAM,CAAC;KACrC,CAAC;IACF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IAQrB,SAAS,CAAC,EAAE,MAAM,CAAC;IAiBnB,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAUhB,OAAO,CAAC,EACJ;
|
|
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
package/dist/joryio-sw.js
CHANGED
package/dist/joryio.cjs.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Joryio Web SDK v1.3.1-beta.
|
|
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,
|
|
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:
|
|
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
|
}
|