@orangelogic/design-system 2.161.0 → 2.162.0

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.
@@ -12272,7 +12272,7 @@ ii.moduleName = "mutator", ii.mutators = Ap;
12272
12272
  let Bs = ii;
12273
12273
  const No = class No extends I {
12274
12274
  constructor(e) {
12275
- super(e), this.element = null, this.size = 0, this.page = 1, this.count = 5, this.max = 1, this.remoteRowCountEstimate = null, this.initialLoad = !0, this.progressiveLoad = !1, this.dataChanging = !1, this.pageSizes = [], this.mode = "local", this.setPage = (t) => {
12275
+ super(e), this.element = null, this.size = 0, this.page = 1, this.count = 5, this.max = 1, this.remoteRowCountEstimate = null, this.initialLoad = !0, this.progressiveLoad = !1, this.dataChanging = !1, this.pageSizes = [], this.mode = "local", this.rowsUpdatedScheduled = !1, this.setPage = (t) => {
12276
12276
  if (typeof t == "string") {
12277
12277
  if (["first", "prev", "next", "last"].includes(t))
12278
12278
  switch (t) {
@@ -12374,7 +12374,9 @@ const No = class No extends I {
12374
12374
  return t || this.mode === "local" && this.reset(!1), e;
12375
12375
  }
12376
12376
  rowsUpdated() {
12377
- this.refreshData(!0, "all");
12377
+ this.rowsUpdatedScheduled || (this.rowsUpdatedScheduled = !0, queueMicrotask(() => {
12378
+ this.rowsUpdatedScheduled = !1, this.refreshData(!0, "all");
12379
+ }));
12378
12380
  }
12379
12381
  createElements() {
12380
12382
  const e = x`<cx-pagination back-icon-name="arrow_back" next-icon-name="arrow_forward" icon-button-size="small"></cx-pagination>`, t = x`<div slot="pagination" class="tabulator-paginator"></div>`;
@@ -16213,7 +16215,15 @@ const Gr = process.env.NODE_ENV === "development", Ur = 2e3, Kr = 1e3, mi = "dat
16213
16215
  // /////////////////////////////////
16214
16216
  // //// Cell state application /////
16215
16217
  // /////////////////////////////////
16218
+ /**
16219
+ * Only style cells that already have real DOM (`cell.loaded`). Calling
16220
+ * `getElement()` on an unloaded cell forces it to generate a detached
16221
+ * element — the virtual renderer's later `layoutCell()` call (on scroll/
16222
+ * page change) is what actually applies the style once the cell is real.
16223
+ */
16216
16224
  applyCellInvalidState(e) {
16225
+ if (!e.loaded)
16226
+ return;
16217
16227
  const t = e.getElement();
16218
16228
  if (!t)
16219
16229
  return;
@@ -16225,6 +16235,8 @@ const Gr = process.env.NODE_ENV === "development", Ur = 2e3, Kr = 1e3, mi = "dat
16225
16235
  `)), e.modules.validate.messageApplied = !0);
16226
16236
  }
16227
16237
  clearCellInvalidState(e) {
16238
+ if (!e.loaded)
16239
+ return;
16228
16240
  const t = e.getElement();
16229
16241
  t && (t.classList.remove("tabulator-validation-fail"), e.modules.validate?.messageApplied && (t.removeAttribute(mi), e.modules.validate.messageApplied = !1));
16230
16242
  }
@@ -19454,7 +19466,7 @@ const sm = {
19454
19466
  [nt.Checkbox]: em,
19455
19467
  [nt.DatePicker]: tm,
19456
19468
  [nt.DateRange]: im
19457
- }, om = X`:host{display:contents}cx-dropdown{--panel-overflow:hidden}cx-details{--expand-icon-size:24px}.panel{--header-font-size:var(--cx-font-size-medium);--panel-width:min(280px, 90dvw);width:var(--panel-width);max-height:var(--panel-max-height,600px);position:relative}.panel:has(cx-facet-date-range[show-time],cx-facet-date-picker[show-time]){--panel-width:min(385px, 90dvw)}.panel__content{max-height:var(--panel-max-height,600px);flex-direction:column;display:flex}.panel__header{flex-shrink:0}.panel__body{flex:1;min-height:0;overflow-y:auto}.panel__footer{padding:var(--cx-spacing-x-small) var(--cx-spacing-medium);border-top:1px solid var(--cx-color-neutral-200);flex-shrink:0;display:flex}.applied-filters__summary{align-items:center;gap:var(--cx-spacing-2x-small);display:inline-flex}.applied-filters__title{font-weight:var(--cx-font-weight-medium);color:var(--cx-color-neutral-900)}.applied-filters__loading{align-items:center;display:inline-flex}.applied-filters{--content-padding:0 var(--cx-spacing-medium);min-width:100%;width:var(--panel-width)}.applied-filters::part(summary){flex:none}.applied-filters::part(base),cx-faceted-filter-facet::part(base){border-top-width:0;border-left-width:0;border-right-width:0}.applied-filters--empty::part(content){display:none}.faceted-filter__trigger-wrapper{display:inline-block;position:relative}.faceted-filter__trigger::part(base){background-color:var(--cx-color-neutral-100)}.faceted-filter__trigger-badge{position:absolute;top:-15px;right:-15px}.applied-filters__tags{max-width:var(--panel-width);padding-bottom:var(--cx-spacing-x-small)}.panel__clear-all-button{--cx-button-text-transform:none;padding-top:var(--cx-spacing-2x-small);padding-bottom:var(--cx-spacing-2x-small)}.panel__clear-all-button::part(label){text-decoration:underline}.panel__clear-all-button:not([disabled])::part(base):hover{color:var(--cx-color-neutral-800);background-color:#0000;border-color:#0000}cx-tag::part(remove-button){font-size:var(--cx-font-size-x-small)}cx-tag::part(remove-button__base){min-height:unset;min-width:unset;padding:var(--cx-spacing-3x-small)}`;
19469
+ }, om = X`:host{display:contents}cx-dropdown{--panel-overflow:hidden}cx-details{--expand-icon-size:24px}.panel{--header-background-color:transparent;--header-font-size:var(--cx-font-size-medium);--panel-width:min(280px, 90dvw);width:var(--panel-width);max-height:var(--panel-max-height,600px);position:relative}.panel:has(cx-facet-date-range[show-time],cx-facet-date-picker[show-time]){--panel-width:min(385px, 90dvw)}.panel__content{max-height:var(--panel-max-height,600px);flex-direction:column;display:flex}.panel__header{flex-shrink:0}.panel__body{flex:1;min-height:0;overflow-y:auto}.panel__footer{padding:var(--cx-spacing-x-small) var(--cx-spacing-medium);border-top:1px solid var(--cx-color-neutral-200);flex-shrink:0;display:flex}.applied-filters__summary{align-items:center;gap:var(--cx-spacing-2x-small);display:inline-flex}.applied-filters__title{font-weight:var(--cx-font-weight-medium);color:var(--cx-color-neutral-900)}.applied-filters__loading{align-items:center;display:inline-flex}.applied-filters{--content-padding:0 var(--cx-spacing-medium);min-width:100%;width:var(--panel-width)}.applied-filters::part(summary){flex:none}.applied-filters::part(base),cx-faceted-filter-facet::part(base){border-top-width:0;border-left-width:0;border-right-width:0}.applied-filters--empty::part(content){display:none}.faceted-filter__trigger-wrapper{display:inline-block;position:relative}.faceted-filter__trigger::part(base){background-color:var(--cx-color-neutral-100)}.faceted-filter__trigger-badge{position:absolute;top:-15px;right:-15px}.applied-filters__tags{max-width:var(--panel-width);padding-bottom:var(--cx-spacing-x-small)}.panel__clear-all-button{--cx-button-text-transform:none;padding-top:var(--cx-spacing-2x-small);padding-bottom:var(--cx-spacing-2x-small)}.panel__clear-all-button::part(label){text-decoration:underline}.panel__clear-all-button:not([disabled])::part(base):hover{color:var(--cx-color-neutral-800);background-color:#0000;border-color:#0000}cx-tag::part(remove-button){font-size:var(--cx-font-size-x-small)}cx-tag::part(remove-button__base){min-height:unset;min-width:unset;padding:var(--cx-spacing-3x-small)}`;
19458
19470
  var rm = Object.defineProperty, nm = Object.getOwnPropertyDescriptor, ye = (r, e, t, i) => {
19459
19471
  for (var s = i > 1 ? void 0 : i ? nm(e, t) : e, o = r.length - 1, n; o >= 0; o--)
19460
19472
  (n = r[o]) && (s = (i ? n(e, t, s) : n(s)) || s);
@@ -19589,7 +19601,7 @@ let ue = class extends Pe {
19589
19601
  });
19590
19602
  }
19591
19603
  renderAppliedFilters() {
19592
- return x`<cx-details open aria-busy=${this.loading ? "true" : "false"} class=${rt({
19604
+ return x`<cx-details aria-busy=${this.loading ? "true" : "false"} class=${rt({
19593
19605
  "applied-filters": !0,
19594
19606
  "applied-filters--empty": this.appliedFiltersCount === 0
19595
19607
  })}><span slot="summary" class="applied-filters__summary"><span class="applied-filters__title">${this.localize.term("appliedFilters")}${this.appliedFiltersCount > 0 ? ` (${this.appliedFiltersCount})` : wt}</span>${Y(
@@ -0,0 +1,189 @@
1
+ import { T as c, U as p } from "./asset-link-format.QzzboHHE.js";
2
+ const v = "/AssetLink/";
3
+ function T({
4
+ asset: r,
5
+ baseUrl: s,
6
+ extension: l,
7
+ options: u,
8
+ parameters: f,
9
+ transformations: o,
10
+ useSession: $ = ""
11
+ }) {
12
+ if (s == null)
13
+ return "";
14
+ let i = s;
15
+ const y = o?.findLast(
16
+ (n) => n.key === c.Quality
17
+ );
18
+ if (y && (o = [
19
+ ...o?.filter(
20
+ (n) => n.key !== c.Quality
21
+ ) || [],
22
+ y
23
+ ]), o) {
24
+ const n = [];
25
+ for (let e = 0; e < o.length; e++) {
26
+ const a = o[e];
27
+ if (a.key === c.Rotate) {
28
+ let t = a.value.rotation ?? 0;
29
+ for (; o[e + 1]?.key === c.Rotate; )
30
+ e++, t += o[e].value.rotation ?? 0;
31
+ t !== 0 && n.push({ key: c.Rotate, value: { rotation: t } });
32
+ } else
33
+ n.push(a);
34
+ }
35
+ o = n;
36
+ }
37
+ o && o.length > 0 && (i += "/t/"), o?.forEach(({ key: n, value: e }) => {
38
+ if (n === c.Resize) {
39
+ if (e.unit === p.AspectRatio && e.ratioWidth && e.ratioHeight) {
40
+ i += `re_ar_${e.ratioWidth}:${e.ratioHeight}/`;
41
+ return;
42
+ }
43
+ const a = [
44
+ ...[
45
+ {
46
+ key: "re_w_",
47
+ value: Math.round(e.width ?? 0)
48
+ },
49
+ {
50
+ key: "re_h_",
51
+ value: Math.round(e.height ?? 0)
52
+ }
53
+ ].filter((t) => t.value !== void 0).map((t) => ({
54
+ key: t.key,
55
+ value: Math.round(Number(t.value))
56
+ })),
57
+ {
58
+ key: "re_rm_",
59
+ value: "stretch"
60
+ }
61
+ ];
62
+ a.forEach(({ key: t, value: d }, k) => {
63
+ i += `${t}${d}${k < a.length - 1 ? "," : ""}`;
64
+ }), i += "/";
65
+ }
66
+ if (n === c.Crop) {
67
+ const a = e.unit === p.AspectRatio && !!e.ratioWidth && !!e.ratioHeight, t = !e.disabledSize && !a, d = t && (e.x !== void 0 || e.y !== void 0), k = [
68
+ ...[
69
+ {
70
+ key: "c_",
71
+ value: e.mode
72
+ },
73
+ ...a ? [
74
+ {
75
+ key: "ar_",
76
+ value: `${e.ratioWidth}:${e.ratioHeight}`
77
+ }
78
+ ] : [],
79
+ ...t ? [
80
+ {
81
+ key: "c_w_",
82
+ value: Math.round(e.width ?? 0)
83
+ },
84
+ {
85
+ key: "c_h_",
86
+ value: Math.round(e.height ?? 0)
87
+ },
88
+ {
89
+ key: "c_x_",
90
+ value: Math.round(e.x ?? 0) === 0 && u?.omitZeroXY ? void 0 : Math.round(e.x ?? 0)
91
+ },
92
+ {
93
+ key: "c_y_",
94
+ value: Math.round(e.y ?? 0) === 0 && u?.omitZeroXY ? void 0 : Math.round(e.y ?? 0)
95
+ }
96
+ ] : [],
97
+ ...!d && e.focusMode && e.focusMode !== "manual" ? [
98
+ {
99
+ key: e.isFocusModeAuto ? "acm_" : "c_g_",
100
+ value: e.focusMode
101
+ }
102
+ ] : []
103
+ ].filter((h) => h.value !== void 0 && h.value !== null).map((h) => ({
104
+ key: h.key,
105
+ value: h.value
106
+ })),
107
+ ...a ? [] : [
108
+ {
109
+ key: "c_whu_",
110
+ value: "pixel"
111
+ }
112
+ ]
113
+ ];
114
+ k.forEach(({ key: h, value: g }, m) => {
115
+ const M = ["c_w_", "c_h_", "c_x_", "c_y_"].includes(h);
116
+ i += `${h}${M ? Math.round(Number(g)) : g}${m < k.length - 1 ? "," : ""}`;
117
+ }), i += "/";
118
+ }
119
+ if (n === c.Rotate && ([
120
+ {
121
+ key: "r_a_",
122
+ value: e.rotation
123
+ }
124
+ ].filter((t) => t.value !== void 0).map((t) => ({
125
+ key: t.key,
126
+ value: Math.round(Number(t.value))
127
+ })).forEach(({ key: t, value: d }) => {
128
+ i += `${t}${d}`;
129
+ }), i += "/"), n === c.Quality) {
130
+ const a = [
131
+ {
132
+ key: "q_level_",
133
+ value: e.quality
134
+ }
135
+ ].filter((t) => t.value !== void 0).map((t) => ({
136
+ key: t.key,
137
+ value: Math.round(Number(t.value))
138
+ }));
139
+ a.forEach(({ key: t, value: d }, k) => {
140
+ i += `${t}${d}${k < a.length - 1 ? "," : ""}`;
141
+ }), i += "/";
142
+ }
143
+ if (n === c.Metadata) {
144
+ const a = [
145
+ {
146
+ key: "fl_keep_metadata",
147
+ value: e.keepMetadata
148
+ }
149
+ ].filter((t) => t.value !== void 0).map((t) => ({ key: t.key, value: t.value }));
150
+ a.forEach(({ key: t }, d) => {
151
+ i += `${t}${d < a.length - 1 ? "," : ""}`;
152
+ }), i += "/";
153
+ }
154
+ }), l && (i += `${r?.identifier ?? crypto.randomUUID()}${l}`);
155
+ const _ = [];
156
+ return f && f.length > 0 && f.forEach(({ key: n, value: e }) => {
157
+ _.push(
158
+ `${encodeURIComponent(n.trim())}=${encodeURIComponent(e.trim())}`
159
+ );
160
+ }), s && $ && _.push(`UseSession=${encodeURIComponent($)}`), _.length > 0 && (i += `?${_.join("&")}`), i.endsWith("/") && (i = i.slice(0, -1)), i;
161
+ }
162
+ function R(r, s) {
163
+ if (!r || !s?.length)
164
+ return r;
165
+ const l = T({ baseUrl: "", transformations: s }).replace(
166
+ /\/t\//g,
167
+ ""
168
+ );
169
+ if (!l)
170
+ return r;
171
+ const u = r.indexOf(v);
172
+ if (u < 0)
173
+ return `${r}/t/${l}`;
174
+ const f = r.slice(0, u + v.length), o = r.slice(u + v.length), $ = o.indexOf("/t/");
175
+ if ($ >= 0) {
176
+ const y = o.slice(0, $);
177
+ return `${f}${y}/t/${l}`;
178
+ }
179
+ const i = o.indexOf("/");
180
+ if (i >= 0) {
181
+ const y = o.slice(0, i), _ = o.slice(i);
182
+ return `${f}${y}/t/${l}${_}`;
183
+ }
184
+ return `${r}/t/${l}`;
185
+ }
186
+ export {
187
+ R as a,
188
+ T as b
189
+ };
@@ -3,14 +3,14 @@ import "../chunks/button.8syoJXYs.js";
3
3
  import "./space.js";
4
4
  import "../chunks/typography.IqHbnd3C.js";
5
5
  import "../chunks/lib-cortex-element.CVMmyPMC.js";
6
- import { C as g } from "../chunks/asset-link-format.CUPqX8XL.js";
6
+ import { C as g } from "../chunks/asset-link-format.DLAzKfhk.js";
7
7
  import "../chunks/component.styles.CRO4Odto.js";
8
8
  import "../chunks/asset-link-format.QzzboHHE.js";
9
9
  import "../chunks/custom-element.L4WJXn1j.js";
10
10
  import "../chunks/i18n.Bchq8v1d.js";
11
11
  import "../chunks/watch.DOt4Mabe.js";
12
12
  import "../chunks/number.CtCaI0T_.js";
13
- import "../chunks/transformation.BDmd3kER.js";
13
+ import "../chunks/transformation.D1alV_s4.js";
14
14
  import "../chunks/lit-element.jLBm65_O.js";
15
15
  import "../chunks/state.CSDxrqLd.js";
16
16
  import "../chunks/when.Dr1es41R.js";
@@ -3,7 +3,7 @@ import "../chunks/typography.IqHbnd3C.js";
3
3
  import "../chunks/lib-cortex-element.CVMmyPMC.js";
4
4
  import "../chunks/color-swatch.DsWP2fd-.js";
5
5
  import "../chunks/component.styles.CRO4Odto.js";
6
- import { C as v } from "../chunks/color-swatch-group.Dg5avknJ.js";
6
+ import { C as v } from "../chunks/color-swatch-group.CLv1LSZy.js";
7
7
  import "../chunks/content-builder.BU8X7I6V.js";
8
8
  import "../chunks/custom-element.L4WJXn1j.js";
9
9
  import "../chunks/debounce.DaHuiSGU.js";
@@ -1,5 +1,5 @@
1
- import { C as a } from "../chunks/asset-link-format.CUPqX8XL.js";
2
- import { C as t } from "../chunks/color-swatch-group.Dg5avknJ.js";
1
+ import { C as a } from "../chunks/asset-link-format.DLAzKfhk.js";
2
+ import { C as t } from "../chunks/color-swatch-group.CLv1LSZy.js";
3
3
  import { default as C } from "./file-on-demand.js";
4
4
  export {
5
5
  a as CxAssetLinkFormat,
@@ -115,7 +115,7 @@ import { d as Ic } from "../chunks/debounce.DaHuiSGU.js";
115
115
  import { t as bS, c as dI, d as FZ, i as Mk, G as Bg, j as cp, h as zZ, s as uI, T as w4, k as yi, l as F$, u as jZ, f as Pk, m as HZ, F as sy, M as Nb, n as VZ, o as z$, q as pI } from "../chunks/string.BhJ0Zogu.js";
116
116
  import { b as LXt, e as RXt, g as BXt, p as $Xt, z as FXt, y as zXt, a as jXt, x as HXt, v as VXt, r as UXt, w as qXt } from "../chunks/string.BhJ0Zogu.js";
117
117
  import { c as pi } from "../chunks/repeat.CFjcER6_.js";
118
- import { a as ky, F as _y, i as x4, b as hI, c as gI, d as UZ, e as j$, f as H$, g as k4, h as Nk, C as qZ, j as mI, k as fI, l as vI, m as yI, n as bI, o as wI, O as xI, D as wS, p as WZ, q as kI, u as Lk } from "../chunks/asset-link-format.CUPqX8XL.js";
118
+ import { a as ky, F as _y, i as x4, b as hI, c as gI, d as UZ, e as j$, f as H$, g as k4, h as Nk, C as qZ, j as mI, k as fI, l as vI, m as yI, n as bI, o as wI, O as xI, D as wS, p as WZ, q as kI, u as Lk } from "../chunks/asset-link-format.DLAzKfhk.js";
119
119
  import { H as AC } from "../chunks/slot.j5oheLJC.js";
120
120
  import { a as GXt, g as KXt } from "../chunks/slot.j5oheLJC.js";
121
121
  import { c as Mr, d as GZ, H as Di, e as _a, f as ps, a as KZ, b as Qn } from "../chunks/resizable-component.styles.CAfXABBc.js";
@@ -140,8 +140,8 @@ import { g as X$, F as oQ } from "../chunks/form.CP9KLGjF.js";
140
140
  import { c as mJt, f as fJt, v as vJt, a as yJt } from "../chunks/form.CP9KLGjF.js";
141
141
  import { d as _S, c as DI, e as aQ, i as II, h as sQ, p as lQ, t as cQ } from "../chunks/date.iWq_pkIk.js";
142
142
  import { b as wJt, f as xJt, g as kJt, a as _Jt, n as CJt } from "../chunks/date.iWq_pkIk.js";
143
- import { F as J$, a as dQ, b as PC, H as uQ, c as pQ, f as hQ, d as Xb, g as gQ, e as mQ, o as bu, h as fQ } from "../chunks/color-swatch-group.Dg5avknJ.js";
144
- import { C as TJt, i as EJt, j as AJt } from "../chunks/color-swatch-group.Dg5avknJ.js";
143
+ import { F as J$, a as dQ, b as PC, H as uQ, c as pQ, f as hQ, d as Xb, g as gQ, e as mQ, o as bu, h as fQ } from "../chunks/color-swatch-group.CLv1LSZy.js";
144
+ import { C as TJt, i as EJt, j as AJt } from "../chunks/color-swatch-group.CLv1LSZy.js";
145
145
  import { F as jd, C as _4, s as NC, a as CS } from "../chunks/folder-select.BKAuh4GE.js";
146
146
  import { b as LC, a as sw, c as vQ, r as Ue, j as _e, w as yQ, R as bQ } from "../chunks/jsx-runtime.CTpPVMxj.js";
147
147
  import { S as MI, r as wQ, c as xQ, i as PI, a as NI, b as kQ, d as LI, e as SS } from "../chunks/index.DcjJFMlq.js";
@@ -202,7 +202,7 @@ import { C as SZt } from "../chunks/calendar-grid.BWjcZL5W.js";
202
202
  import { c as EZt, f as AZt, e as OZt, b as DZt, g as IZt, d as MZt, i as PZt, r as NZt, a as LZt } from "../chunks/image.QVlPFadX.js";
203
203
  import { b as BZt, e as $Zt } from "../chunks/waveform.1U9U_0rd.js";
204
204
  import { g as zZt, a as jZt } from "../chunks/template.ClovJacp.js";
205
- import { b as VZt } from "../chunks/transformation.BDmd3kER.js";
205
+ import { a as VZt, b as UZt } from "../chunks/transformation.D1alV_s4.js";
206
206
  var PA = /* @__PURE__ */ ((i) => (i.Button = "button", i.Select = "select", i))(PA || {}), Jb = /* @__PURE__ */ ((i) => (i.Grid = "grid", i.Shadows = "shadows", i.Textures = "textures", i.Wireframe = "wireframe", i))(Jb || {}), hh = /* @__PURE__ */ ((i) => (i.Animation = "animation", i.Environment = "environment", i.Speed = "speed", i.Variant = "variant", i))(hh || {});
207
207
  const UI = 30, ree = ["0.5", "1", "1.5", "2"], qI = 100, oee = 0.01, aee = 0.01, see = 200, lee = 10, cee = 0.01, dee = 0.3, pF = "#2A2342";
208
208
  var tk = /* @__PURE__ */ ((i) => (i.Bridge = "https://downloads.orangelogic.com/3dviewer/static/environments/bridge.env", i.Church = "https://downloads.orangelogic.com/3dviewer/static/environments/church.env", i.Studio = "https://downloads.orangelogic.com/3dviewer/static/environments/studio.env", i))(tk || {}), Nd = /* @__PURE__ */ ((i) => (i.Babylon = "https://downloads.orangelogic.com/3dviewer/static/babylonjs/cdn/babylon.js", i.Fflate = "https://downloads.orangelogic.com/3dviewer/static/babylonjs/cdn/fflate.js", i.GlslangJs = "https://downloads.orangelogic.com/3dviewer/static/babylonjs/cdn/glslang.js", i.GlslangWasm = "https://downloads.orangelogic.com/3dviewer/static/babylonjs/cdn/glslang.wasm", i.Gui = "https://downloads.orangelogic.com/3dviewer/static/babylonjs/cdn/babylon.gui.min.js", i.Inspector = "https://downloads.orangelogic.com/3dviewer/static/babylonjs/cdn/babylon.inspector.bundle.js", i.Loaders = "https://downloads.orangelogic.com/3dviewer/static/babylonjs/cdn/babylonjs.loaders.min.js", i.Materials = "https://downloads.orangelogic.com/3dviewer/static/babylonjs/cdn/babylonjs.materials.js", i.Serializers = "https://downloads.orangelogic.com/3dviewer/static/babylonjs/cdn/babylonjs.serializers.min.js", i.TwgslJs = "https://downloads.orangelogic.com/3dviewer/static/babylonjs/cdn/twgsl.js", i.TwgslWasm = "https://downloads.orangelogic.com/3dviewer/static/babylonjs/cdn/twgsl.wasm", i))(Nd || {});
@@ -20825,6 +20825,16 @@ let Xn = class extends di {
20825
20825
  { label: "400%", value: "400-percent" }
20826
20826
  ];
20827
20827
  }
20828
+ // A zoom off the preset list arrives as the raw scale factor ('4.6'), which
20829
+ // matches no preset <cx-option> and leaves the select blank. Give it one, so
20830
+ // the select reads "460%".
20831
+ renderCustomScaleOption() {
20832
+ const i = Number(this.scaleValue);
20833
+ return Ge(
20834
+ Number.isFinite(i) && i > 0,
20835
+ () => M`<cx-option value=${this.scaleValue}>${Math.round(i * 1e4) / 100}%</cx-option>`
20836
+ );
20837
+ }
20828
20838
  renderMiddle() {
20829
20839
  return M`<cx-space class="pdf-viewer-toolbar__middle" part="middle" align-items="center" wrap="nowrap" spacing="2x-small"><cx-icon-button size="small" class=${Lt({
20830
20840
  "pdf-viewer-toolbar__tool": !0,
@@ -20840,7 +20850,8 @@ let Xn = class extends di {
20840
20850
  Xn.getScaleOptions(this.localize),
20841
20851
  (i) => i.value,
20842
20852
  (i) => M`<cx-option value=${i.value}>${i.label}</cx-option>`
20843
- )}</cx-select></cx-space>`;
20853
+ )}
20854
+ ${this.renderCustomScaleOption()}</cx-select></cx-space>`;
20844
20855
  }
20845
20856
  renderRight() {
20846
20857
  return M`<cx-space class="pdf-viewer-toolbar__right" part="right" align-items="center" wrap="nowrap" spacing="2x-small">${this.enableAnnotation ? M`<cx-icon-button size="small" class=${Lt({
@@ -155750,7 +155761,8 @@ export {
155750
155761
  nZt as animateTo,
155751
155762
  rF as appendProtocol,
155752
155763
  JJt as appendQueryParam,
155753
- VZt as buildTransformationString,
155764
+ VZt as applyTransformationsToUrl,
155765
+ UZt as buildTransformationString,
155754
155766
  BZt as buildWaveformPath,
155755
155767
  EZt as calculateAspectRatioFit,
155756
155768
  gp as clamp,
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@orangelogic/design-system",
3
3
  "type": "module",
4
- "version": "2.161.0",
4
+ "version": "2.162.0",
5
5
  "license": "UNLICENSED",
6
6
  "types": "library/types.d.ts",
7
7
  "scripts": {
@@ -20,6 +20,12 @@ export default class Page extends Module implements IPage {
20
20
  dataChanging: boolean;
21
21
  pageSizes: number[];
22
22
  mode: 'remote' | 'local' | 'progressive_load' | 'progressive_scroll';
23
+ /**
24
+ * Coalesces bursts of 'row-added'/'row-deleted' (e.g. a streaming loader
25
+ * calling addData() per chunk, which dispatches one event per row) into a
26
+ * single pipeline refresh instead of one full re-render per row.
27
+ */
28
+ private rowsUpdatedScheduled;
23
29
  constructor(table: Tabulator);
24
30
  options(key: string): any;
25
31
  initialize(): void;
@@ -106,6 +106,12 @@ export default class Validate extends Module {
106
106
  * responsive.
107
107
  */
108
108
  private validateColumnsOnMainThread;
109
+ /**
110
+ * Only style cells that already have real DOM (`cell.loaded`). Calling
111
+ * `getElement()` on an unloaded cell forces it to generate a detached
112
+ * element — the virtual renderer's later `layoutCell()` call (on scroll/
113
+ * page change) is what actually applies the style once the cell is real.
114
+ */
109
115
  private applyCellInvalidState;
110
116
  private clearCellInvalidState;
111
117
  private runSuppressed;
@@ -90,6 +90,7 @@ export default class CxPdfViewerToolbar extends CortexElement {
90
90
  private handleMoreOptionsSelect;
91
91
  private renderLeft;
92
92
  private static getScaleOptions;
93
+ private renderCustomScaleOption;
93
94
  private renderMiddle;
94
95
  private renderRight;
95
96
  render(): TemplateResult;
@@ -11,10 +11,11 @@ export type PdfViewerScrollMode = 'page' | 'vertical' | 'horizontal' | 'wrapped'
11
11
  /** How page spreads are joined. */
12
12
  export type PdfViewerSpreadMode = 'none' | 'odd' | 'even';
13
13
  /**
14
- * The zoom scale. Either a named mode, a percentage zoom factor (as a string, e.g.
15
- * `'150-percent'` = 150%), or `'custom'` for a non-preset factor shown via `customScalePercent`.
14
+ * The zoom scale: a named mode, one of the select's percentage presets, or — for a
15
+ * zoom off that list, e.g. once the zoom buttons step past 400% — the raw scale
16
+ * factor as a number string (`'4.6'` = 460%).
16
17
  */
17
- export type PdfViewerScaleValue = 'auto' | 'page-actual' | 'page-fit' | 'page-width' | '50-percent' | '75-percent' | '100-percent' | '125-percent' | '150-percent' | '200-percent' | '300-percent' | '400-percent';
18
+ export type PdfViewerScaleValue = 'auto' | 'page-actual' | 'page-fit' | 'page-width' | '50-percent' | '75-percent' | '100-percent' | '125-percent' | '150-percent' | '200-percent' | '300-percent' | '400-percent' | `${number}`;
18
19
  /** A row in the "View on asset" dropdown. */
19
20
  export interface ViewOnAssetRow {
20
21
  checked: boolean;
@@ -11,3 +11,11 @@ export declare function buildTransformationString({ asset, baseUrl, extension, o
11
11
  transformations?: Transformation[];
12
12
  useSession?: string;
13
13
  }): string;
14
+ /**
15
+ * Applies transformations to a (possibly finished) asset URL and returns the display URL.
16
+ *
17
+ * The backend resolver splits on the FIRST `/t/` after the access key, so for `/AssetLink/`
18
+ * URLs the transform is anchored right after the access key (before any prettyName/ext tail)
19
+ * and merged into an existing `/t/`. Other URLs keep the plain append behavior.
20
+ */
21
+ export declare function applyTransformationsToUrl(url: string, transformations: Transformation[]): string;
@@ -6840,7 +6840,7 @@
6840
6840
  /**
6841
6841
  * Current zoom scale.
6842
6842
  */
6843
- scaleValue?: 'auto' | 'page-actual' | 'page-fit' | 'page-width' | '50-percent' | '75-percent' | '100-percent' | '125-percent' | '150-percent' | '200-percent' | '300-percent' | '400-percent';
6843
+ scaleValue?: 'auto' | 'page-actual' | 'page-fit' | 'page-width' | '50-percent' | '75-percent' | '100-percent' | '125-percent' | '150-percent' | '200-percent' | '300-percent' | '400-percent' | string;
6844
6844
  /**
6845
6845
  * Disables the zoom-in button.
6846
6846
  */
package/library/utils.js CHANGED
@@ -34,7 +34,7 @@ import { s as ga } from "./chunks/parse.Cu5nBDTb.js";
34
34
  import { b as pa, o as Da, d as Ta, e as wa, f as Ca, m as xa, q as Ma, g as ya, h as Sa, l as Ea, p as Aa, z as Ia, y as La, a as va, c as Ra, s as ba, x as Va, v as Fa, t as Oa, r as ka, w as Ya, i as Na, n as Ua, u as _a } from "./chunks/string.BhJ0Zogu.js";
35
35
  import { g as Xa, a as Ha } from "./chunks/template.ClovJacp.js";
36
36
  import { c as Ba, f as $a, a as Ga, g as za } from "./chunks/time.DWfbnPnM.js";
37
- import { b as Qa } from "./chunks/transformation.BDmd3kER.js";
37
+ import { a as Qa, b as Za } from "./chunks/transformation.D1alV_s4.js";
38
38
  function n(t) {
39
39
  const e = t.getFullYear(), r = String(t.getMonth() + 1).padStart(2, "0"), s = String(t.getDate()).padStart(2, "0");
40
40
  return `${e}-${r}-${s}`;
@@ -598,7 +598,8 @@ export {
598
598
  we as animateTo,
599
599
  O as appendProtocol,
600
600
  Et as appendQueryParam,
601
- Qa as buildTransformationString,
601
+ Qa as applyTransformationsToUrl,
602
+ Za as buildTransformationString,
602
603
  ea as buildWaveformPath,
603
604
  $r as calculateAspectRatioFit,
604
605
  ze as clamp,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@orangelogic/design-system",
3
3
  "type": "module",
4
- "version": "2.161.0",
4
+ "version": "2.162.0",
5
5
  "license": "UNLICENSED",
6
6
  "types": "library/types.d.ts",
7
7
  "scripts": {
@@ -1,163 +0,0 @@
1
- import { T as n, U as $ } from "./asset-link-format.QzzboHHE.js";
2
- function R({
3
- asset: p,
4
- baseUrl: c,
5
- extension: f,
6
- options: _,
7
- parameters: y,
8
- transformations: r,
9
- useSession: k = ""
10
- }) {
11
- if (c == null)
12
- return "";
13
- let i = c;
14
- const s = r?.findLast(
15
- (a) => a.key === n.Quality
16
- );
17
- if (s && (r = [
18
- ...r?.filter(
19
- (a) => a.key !== n.Quality
20
- ) || [],
21
- s
22
- ]), r) {
23
- const a = [];
24
- for (let e = 0; e < r.length; e++) {
25
- const o = r[e];
26
- if (o.key === n.Rotate) {
27
- let t = o.value.rotation ?? 0;
28
- for (; r[e + 1]?.key === n.Rotate; )
29
- e++, t += r[e].value.rotation ?? 0;
30
- t !== 0 && a.push({ key: n.Rotate, value: { rotation: t } });
31
- } else
32
- a.push(o);
33
- }
34
- r = a;
35
- }
36
- r && r.length > 0 && (i += "/t/"), r?.forEach(({ key: a, value: e }) => {
37
- if (a === n.Resize) {
38
- if (e.unit === $.AspectRatio && e.ratioWidth && e.ratioHeight) {
39
- i += `re_ar_${e.ratioWidth}:${e.ratioHeight}/`;
40
- return;
41
- }
42
- const o = [
43
- ...[
44
- {
45
- key: "re_w_",
46
- value: Math.round(e.width ?? 0)
47
- },
48
- {
49
- key: "re_h_",
50
- value: Math.round(e.height ?? 0)
51
- }
52
- ].filter((t) => t.value !== void 0).map((t) => ({
53
- key: t.key,
54
- value: Math.round(Number(t.value))
55
- })),
56
- {
57
- key: "re_rm_",
58
- value: "stretch"
59
- }
60
- ];
61
- o.forEach(({ key: t, value: d }, u) => {
62
- i += `${t}${d}${u < o.length - 1 ? "," : ""}`;
63
- }), i += "/";
64
- }
65
- if (a === n.Crop) {
66
- const o = e.unit === $.AspectRatio && !!e.ratioWidth && !!e.ratioHeight, t = !e.disabledSize && !o, d = t && (e.x !== void 0 || e.y !== void 0), u = [
67
- ...[
68
- {
69
- key: "c_",
70
- value: e.mode
71
- },
72
- ...o ? [
73
- {
74
- key: "ar_",
75
- value: `${e.ratioWidth}:${e.ratioHeight}`
76
- }
77
- ] : [],
78
- ...t ? [
79
- {
80
- key: "c_w_",
81
- value: Math.round(e.width ?? 0)
82
- },
83
- {
84
- key: "c_h_",
85
- value: Math.round(e.height ?? 0)
86
- },
87
- {
88
- key: "c_x_",
89
- value: Math.round(e.x ?? 0) === 0 && _?.omitZeroXY ? void 0 : Math.round(e.x ?? 0)
90
- },
91
- {
92
- key: "c_y_",
93
- value: Math.round(e.y ?? 0) === 0 && _?.omitZeroXY ? void 0 : Math.round(e.y ?? 0)
94
- }
95
- ] : [],
96
- ...!d && e.focusMode && e.focusMode !== "manual" ? [
97
- {
98
- key: e.isFocusModeAuto ? "acm_" : "c_g_",
99
- value: e.focusMode
100
- }
101
- ] : []
102
- ].filter((h) => h.value !== void 0 && h.value !== null).map((h) => ({
103
- key: h.key,
104
- value: h.value
105
- })),
106
- ...o ? [] : [
107
- {
108
- key: "c_whu_",
109
- value: "pixel"
110
- }
111
- ]
112
- ];
113
- u.forEach(({ key: h, value: v }, M) => {
114
- const g = ["c_w_", "c_h_", "c_x_", "c_y_"].includes(h);
115
- i += `${h}${g ? Math.round(Number(v)) : v}${M < u.length - 1 ? "," : ""}`;
116
- }), i += "/";
117
- }
118
- if (a === n.Rotate && ([
119
- {
120
- key: "r_a_",
121
- value: e.rotation
122
- }
123
- ].filter((t) => t.value !== void 0).map((t) => ({
124
- key: t.key,
125
- value: Math.round(Number(t.value))
126
- })).forEach(({ key: t, value: d }) => {
127
- i += `${t}${d}`;
128
- }), i += "/"), a === n.Quality) {
129
- const o = [
130
- {
131
- key: "q_level_",
132
- value: e.quality
133
- }
134
- ].filter((t) => t.value !== void 0).map((t) => ({
135
- key: t.key,
136
- value: Math.round(Number(t.value))
137
- }));
138
- o.forEach(({ key: t, value: d }, u) => {
139
- i += `${t}${d}${u < o.length - 1 ? "," : ""}`;
140
- }), i += "/";
141
- }
142
- if (a === n.Metadata) {
143
- const o = [
144
- {
145
- key: "fl_keep_metadata",
146
- value: e.keepMetadata
147
- }
148
- ].filter((t) => t.value !== void 0).map((t) => ({ key: t.key, value: t.value }));
149
- o.forEach(({ key: t }, d) => {
150
- i += `${t}${d < o.length - 1 ? "," : ""}`;
151
- }), i += "/";
152
- }
153
- }), f && (i += `${p?.identifier ?? crypto.randomUUID()}${f}`);
154
- const l = [];
155
- return y && y.length > 0 && y.forEach(({ key: a, value: e }) => {
156
- l.push(
157
- `${encodeURIComponent(a.trim())}=${encodeURIComponent(e.trim())}`
158
- );
159
- }), c && k && l.push(`UseSession=${encodeURIComponent(k)}`), l.length > 0 && (i += `?${l.join("&")}`), i.endsWith("/") && (i = i.slice(0, -1)), i;
160
- }
161
- export {
162
- R as b
163
- };