@syntrologie/runtime-sdk 2.17.0 → 2.18.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.
@@ -5860,45 +5860,447 @@ var SyntrologieSDK = (() => {
5860
5860
  };
5861
5861
  var appRegistry = new AppRegistry();
5862
5862
 
5863
- // ../../node_modules/lit-html/directives/unsafe-html.js
5864
- var e5 = class extends i5 {
5865
- constructor(i9) {
5866
- if (super(i9), this.it = A, i9.type !== t3.CHILD) throw Error(this.constructor.directiveName + "() can only be used in child bindings");
5867
- }
5868
- render(r5) {
5869
- if (r5 === A || null == r5) return this._t = void 0, this.it = r5;
5870
- if (r5 === E) return r5;
5871
- if ("string" != typeof r5) throw Error(this.constructor.directiveName + "() called with a non-string value");
5872
- if (r5 === this.it) return this._t;
5873
- this.it = r5;
5874
- const s8 = [r5];
5875
- return s8.raw = s8, this._t = { _$litType$: this.constructor.resultType, strings: s8, values: [] };
5863
+ // ../adaptives/adaptive-faq/dist/chunk-S6WIENQP.js
5864
+ var base2 = {
5865
+ white: "#ffffff",
5866
+ black: "#000000"
5867
+ };
5868
+ var brand2 = {
5869
+ 0: "#2c0b0a",
5870
+ 1: "#5b1715",
5871
+ 2: "#89221f",
5872
+ 3: "#b72e2a",
5873
+ 4: "#d44844",
5874
+ 5: "#dd6d69",
5875
+ 6: "#e5918f",
5876
+ 7: "#eeb6b4",
5877
+ 8: "#f6dada",
5878
+ 9: "#faebea"
5879
+ };
5880
+ var slateGrey2 = {
5881
+ 0: "#07080a",
5882
+ 1: "#0f1318",
5883
+ 2: "#0e1114",
5884
+ 3: "#1c222a",
5885
+ 4: "#2b333f",
5886
+ 5: "#394454",
5887
+ 6: "#475569",
5888
+ 7: "#677384",
5889
+ 8: "#87919f",
5890
+ 9: "#a8afba",
5891
+ 10: "#cbd0d7",
5892
+ 11: "#e8eaee",
5893
+ 12: "#f6f7f9"
5894
+ };
5895
+ var green2 = {
5896
+ 0: "#07230a",
5897
+ 1: "#0e4514",
5898
+ 2: "#16681e",
5899
+ 3: "#1d8a28",
5900
+ 4: "#24ad32",
5901
+ 5: "#4fbd5a",
5902
+ 6: "#7acd82",
5903
+ 7: "#a5deab",
5904
+ 8: "#d0eed3",
5905
+ 9: "#e5f6e7"
5906
+ };
5907
+ var yellow2 = {
5908
+ 0: "#301f09",
5909
+ 1: "#5f3e12",
5910
+ 2: "#8f5e1b",
5911
+ 3: "#be7d24",
5912
+ 4: "#ee9c2d",
5913
+ 5: "#f1b057",
5914
+ 6: "#f5c481",
5915
+ 7: "#f8d7ab",
5916
+ 8: "#fcebd5",
5917
+ 9: "#fdf5ea"
5918
+ };
5919
+ var red2 = {
5920
+ 0: "#330707",
5921
+ 1: "#660f0e",
5922
+ 2: "#991616",
5923
+ 3: "#cc1e1d",
5924
+ 4: "#ff2524",
5925
+ 5: "#ff5150",
5926
+ 6: "#ff7c7c",
5927
+ 7: "#ffa8a7",
5928
+ 8: "#ffd3d3",
5929
+ 9: "#ffe9e9"
5930
+ };
5931
+ var blue2 = {
5932
+ 0: "#051533",
5933
+ 1: "#0a2a66",
5934
+ 2: "#0f3f98",
5935
+ 3: "#1454cb",
5936
+ 4: "#1969fe",
5937
+ 5: "#4787fe",
5938
+ 6: "#75a5fe",
5939
+ 7: "#a3c3ff",
5940
+ 8: "#d1e1ff",
5941
+ 9: "#e8f0ff"
5942
+ };
5943
+ var orange2 = {
5944
+ 0: "#662500",
5945
+ 1: "#993d00",
5946
+ 2: "#cc5800",
5947
+ 3: "#ff7700",
5948
+ 4: "#fea85d",
5949
+ 5: "#fec58f",
5950
+ 6: "#ffd6ae",
5951
+ 7: "#fee6cd",
5952
+ 8: "#fff1e1",
5953
+ 9: "#fff8f0"
5954
+ };
5955
+ var purple2 = {
5956
+ 0: "#151229",
5957
+ 1: "#2a2452",
5958
+ 2: "#40357c",
5959
+ 3: "#5547a5",
5960
+ 4: "#6a59ce",
5961
+ 5: "#887ad8",
5962
+ 6: "#a69be2",
5963
+ 7: "#c3bdeb",
5964
+ 8: "#e1def5",
5965
+ 9: "#f0eefa"
5966
+ };
5967
+ var pink2 = {
5968
+ 0: "#37091f",
5969
+ 1: "#69123c",
5970
+ 2: "#9b1c58",
5971
+ 3: "#cd2575",
5972
+ 4: "#ff2e92",
5973
+ 5: "#ff58a8",
5974
+ 6: "#ff82be",
5975
+ 7: "#ffabd3",
5976
+ 8: "#ffd5e9",
5977
+ 9: "#ffeaf4"
5978
+ };
5979
+ var text2 = {
5980
+ primary: slateGrey2[10],
5981
+ secondary: slateGrey2[9],
5982
+ tertiary: slateGrey2[8]
5983
+ };
5984
+ var background2 = {
5985
+ primary: slateGrey2[2],
5986
+ secondary: slateGrey2[0]
5987
+ };
5988
+ var border2 = {
5989
+ primary: slateGrey2[4],
5990
+ secondary: slateGrey2[3]
5991
+ };
5992
+ var button2 = {
5993
+ primary: {
5994
+ text: base2.white,
5995
+ icon: base2.white,
5996
+ border: brand2[3],
5997
+ backgroundDefault: brand2[3],
5998
+ backgroundHover: brand2[2]
5999
+ },
6000
+ neutral: {
6001
+ text: slateGrey2[10],
6002
+ textHover: base2.white,
6003
+ icon: slateGrey2[10],
6004
+ iconHover: base2.white,
6005
+ border: slateGrey2[4],
6006
+ background: slateGrey2[2]
6007
+ },
6008
+ link: {
6009
+ text: base2.white,
6010
+ icon: base2.white,
6011
+ hover: brand2[5]
6012
+ },
6013
+ error: {
6014
+ text: red2[5],
6015
+ hover: red2[6]
6016
+ },
6017
+ success: {
6018
+ text: green2[5],
6019
+ hover: green2[6]
5876
6020
  }
5877
6021
  };
5878
- e5.directiveName = "unsafeHTML", e5.resultType = 1;
5879
- var o6 = e4(e5);
5880
-
5881
- // ../../node_modules/marked/lib/marked.esm.js
5882
- function M2() {
5883
- return { async: false, breaks: false, extensions: null, gfm: true, hooks: null, pedantic: false, renderer: null, silent: false, tokenizer: null, walkTokens: null };
5884
- }
5885
- var T2 = M2();
5886
- function G(u6) {
5887
- T2 = u6;
5888
- }
5889
- var _2 = { exec: () => null };
5890
- function k2(u6, e9 = "") {
5891
- let t6 = typeof u6 == "string" ? u6 : u6.source, n7 = { replace: (r5, i9) => {
5892
- let s8 = typeof i9 == "string" ? i9 : i9.source;
5893
- return s8 = s8.replace(m2.caret, "$1"), t6 = t6.replace(r5, s8), n7;
5894
- }, getRegex: () => new RegExp(t6, e9) };
5895
- return n7;
5896
- }
5897
- var Re = (() => {
5898
- try {
5899
- return !!new RegExp("(?<=1)(?<!1)");
5900
- } catch {
5901
- return false;
6022
+ var badge2 = {
6023
+ slateGrey: {
6024
+ content: slateGrey2[10],
6025
+ pillOutline: slateGrey2[10],
6026
+ borderPrimary: slateGrey2[5],
6027
+ borderSecondary: slateGrey2[5],
6028
+ background: slateGrey2[3]
6029
+ },
6030
+ brand: {
6031
+ content: brand2[9],
6032
+ pillOutline: brand2[9],
6033
+ borderPrimary: brand2[6],
6034
+ borderSecondary: brand2[6],
6035
+ background: brand2[0]
6036
+ },
6037
+ red: {
6038
+ content: red2[8],
6039
+ pillOutline: red2[4],
6040
+ borderPrimary: red2[2],
6041
+ borderSecondary: red2[2],
6042
+ background: red2[0]
6043
+ },
6044
+ yellow: {
6045
+ content: yellow2[8],
6046
+ pillOutline: yellow2[4],
6047
+ borderPrimary: yellow2[2],
6048
+ borderSecondary: yellow2[2],
6049
+ background: yellow2[0]
6050
+ },
6051
+ green: {
6052
+ content: green2[8],
6053
+ pillOutline: green2[4],
6054
+ borderPrimary: green2[2],
6055
+ borderSecondary: green2[2],
6056
+ background: green2[0]
6057
+ },
6058
+ purple: {
6059
+ content: purple2[8],
6060
+ pillOutline: purple2[4],
6061
+ borderPrimary: purple2[2],
6062
+ borderSecondary: purple2[2],
6063
+ background: purple2[0]
6064
+ },
6065
+ blue: {
6066
+ content: blue2[8],
6067
+ pillOutline: blue2[4],
6068
+ borderPrimary: blue2[2],
6069
+ borderSecondary: blue2[2],
6070
+ background: blue2[0]
6071
+ },
6072
+ orange: {
6073
+ content: orange2[8],
6074
+ pillOutline: orange2[4],
6075
+ borderPrimary: orange2[2],
6076
+ borderSecondary: orange2[2],
6077
+ background: orange2[0]
6078
+ },
6079
+ pink: {
6080
+ content: pink2[8],
6081
+ pillOutline: pink2[4],
6082
+ borderPrimary: pink2[2],
6083
+ borderSecondary: pink2[2],
6084
+ background: pink2[0]
6085
+ }
6086
+ };
6087
+ var badgeBanner2 = {
6088
+ green: {
6089
+ content: green2[8],
6090
+ border: green2[2],
6091
+ background: green2[0]
6092
+ },
6093
+ yellow: {
6094
+ content: yellow2[8],
6095
+ border: yellow2[2],
6096
+ background: yellow2[0]
6097
+ },
6098
+ red: {
6099
+ content: red2[8],
6100
+ border: red2[2],
6101
+ background: red2[0]
6102
+ }
6103
+ };
6104
+ var alert2 = {
6105
+ green: {
6106
+ content: green2[1],
6107
+ background: green2[9]
6108
+ },
6109
+ yellow: {
6110
+ content: yellow2[1],
6111
+ background: yellow2[9]
6112
+ },
6113
+ red: {
6114
+ content: red2[1],
6115
+ background: red2[9]
6116
+ }
6117
+ };
6118
+ var tag2 = {
6119
+ content: slateGrey2[10],
6120
+ border: slateGrey2[4],
6121
+ background: slateGrey2[3]
6122
+ };
6123
+ var menu2 = {
6124
+ backgroundDefault: slateGrey2[2],
6125
+ backgroundHover: slateGrey2[1],
6126
+ selected: slateGrey2[3]
6127
+ };
6128
+ var inputDropdown2 = {
6129
+ background: slateGrey2[2],
6130
+ icon: slateGrey2[10],
6131
+ borderDefault: slateGrey2[4],
6132
+ borderSelected: brand2[3],
6133
+ textLabel: slateGrey2[9],
6134
+ textPlaceholder: slateGrey2[8],
6135
+ textHint: slateGrey2[8]
6136
+ };
6137
+ var inputField2 = {
6138
+ backgroundDefault: slateGrey2[2],
6139
+ backgroundDisabled: slateGrey2[0],
6140
+ textLabel: slateGrey2[9],
6141
+ textPlaceholder: slateGrey2[8],
6142
+ textHint: slateGrey2[8],
6143
+ textError: red2[5],
6144
+ iconDefault: slateGrey2[9],
6145
+ iconPlaceholder: slateGrey2[10],
6146
+ iconError: red2[5],
6147
+ borderDefault: slateGrey2[4],
6148
+ borderSelected: brand2[3],
6149
+ borderError: red2[5]
6150
+ };
6151
+ var toggle2 = {
6152
+ handleDefault: base2.white,
6153
+ handleDisabled: slateGrey2[10],
6154
+ off: {
6155
+ backgroundDefault: slateGrey2[4],
6156
+ backgroundHover: slateGrey2[5],
6157
+ backgroundDisabled: slateGrey2[4]
6158
+ },
6159
+ on: {
6160
+ backgroundDefault: green2[3],
6161
+ backgroundHover: green2[2],
6162
+ backgroundDisabled: slateGrey2[4]
6163
+ }
6164
+ };
6165
+ var checkbox2 = {
6166
+ off: {
6167
+ backgroundDefault: "#00000000",
6168
+ backgroundHover: slateGrey2[5],
6169
+ backgroundDisabled: slateGrey2[2],
6170
+ border: slateGrey2[6]
6171
+ },
6172
+ on: {
6173
+ backgroundDefault: green2[0],
6174
+ backgroundHover: green2[1],
6175
+ backgroundDisabled: slateGrey2[2],
6176
+ border: green2[3]
6177
+ }
6178
+ };
6179
+ var avatar2 = {
6180
+ content: slateGrey2[10],
6181
+ background: slateGrey2[4]
6182
+ };
6183
+ var progressBarSlider2 = {
6184
+ background: slateGrey2[4],
6185
+ active: green2[3]
6186
+ };
6187
+ var card2 = {
6188
+ background: slateGrey2[1],
6189
+ content: slateGrey2[9],
6190
+ border: slateGrey2[4]
6191
+ };
6192
+ var sidebar2 = {
6193
+ backgroundDefault: slateGrey2[1],
6194
+ backgroundHover: slateGrey2[3],
6195
+ backgroundActive: slateGrey2[4],
6196
+ border: slateGrey2[4],
6197
+ contentPrimary: slateGrey2[10],
6198
+ contentSecondary: slateGrey2[9],
6199
+ contentTertiary: slateGrey2[8]
6200
+ };
6201
+ var modal2 = {
6202
+ background: slateGrey2[1],
6203
+ content: slateGrey2[9],
6204
+ border: slateGrey2[4]
6205
+ };
6206
+ var tab2 = {
6207
+ activeBackground: slateGrey2[3],
6208
+ activeContent: brand2[5],
6209
+ inactiveContent: slateGrey2[9],
6210
+ border: slateGrey2[4]
6211
+ };
6212
+ var table2 = {
6213
+ header: {
6214
+ textDefault: slateGrey2[9],
6215
+ textHover: slateGrey2[8],
6216
+ backgroundDefault: slateGrey2[1]
6217
+ },
6218
+ border: slateGrey2[4],
6219
+ cell: {
6220
+ textPrimary: slateGrey2[10],
6221
+ textSecondary: slateGrey2[9],
6222
+ backgroundDefault: slateGrey2[2],
6223
+ backgroundHover: slateGrey2[1]
6224
+ }
6225
+ };
6226
+ var breadcrumbs2 = {
6227
+ textPrimaryDefault: slateGrey2[10],
6228
+ textPrimaryHover: slateGrey2[10],
6229
+ textSecondaryDefault: slateGrey2[8],
6230
+ textSecondaryHover: slateGrey2[9],
6231
+ iconPrimary: slateGrey2[10],
6232
+ iconSecondary: slateGrey2[8]
6233
+ };
6234
+ var loadingIndicator2 = {
6235
+ background: green2[1],
6236
+ active: green2[5]
6237
+ };
6238
+ var datePicker2 = {
6239
+ textDefault: slateGrey2[10],
6240
+ textSelected: base2.white,
6241
+ textDisabled: slateGrey2[7],
6242
+ backgroundDefault: slateGrey2[2],
6243
+ backgroundMiddle: slateGrey2[3],
6244
+ backgroundSelected: brand2[3],
6245
+ border: slateGrey2[4]
6246
+ };
6247
+ var scroll2 = slateGrey2[9];
6248
+ var fab2 = {
6249
+ /** Diameter in pixels. */
6250
+ size: 56,
6251
+ /** Inset from the panel's top-left corner in pixels. */
6252
+ inset: 12,
6253
+ /** Background color (always the brand black). */
6254
+ background: base2.black,
6255
+ /** Icon / logo color. */
6256
+ color: base2.white,
6257
+ /** Border — 2px brand red ring. */
6258
+ border: `2px solid ${brand2[3]}`,
6259
+ /** Shadow when the panel is open (inner ring for "active" state). */
6260
+ shadowOpen: "0 4px 24px rgba(0,0,0,0.6), 0 0 0 2px rgba(255,255,255,0.08)",
6261
+ /** Shadow when the panel is closed. */
6262
+ shadowClosed: "0 4px 24px rgba(0,0,0,0.6)"
6263
+ };
6264
+
6265
+ // ../../node_modules/lit-html/directives/unsafe-html.js
6266
+ var e5 = class extends i5 {
6267
+ constructor(i9) {
6268
+ if (super(i9), this.it = A, i9.type !== t3.CHILD) throw Error(this.constructor.directiveName + "() can only be used in child bindings");
6269
+ }
6270
+ render(r5) {
6271
+ if (r5 === A || null == r5) return this._t = void 0, this.it = r5;
6272
+ if (r5 === E) return r5;
6273
+ if ("string" != typeof r5) throw Error(this.constructor.directiveName + "() called with a non-string value");
6274
+ if (r5 === this.it) return this._t;
6275
+ this.it = r5;
6276
+ const s8 = [r5];
6277
+ return s8.raw = s8, this._t = { _$litType$: this.constructor.resultType, strings: s8, values: [] };
6278
+ }
6279
+ };
6280
+ e5.directiveName = "unsafeHTML", e5.resultType = 1;
6281
+ var o6 = e4(e5);
6282
+
6283
+ // ../../node_modules/marked/lib/marked.esm.js
6284
+ function M2() {
6285
+ return { async: false, breaks: false, extensions: null, gfm: true, hooks: null, pedantic: false, renderer: null, silent: false, tokenizer: null, walkTokens: null };
6286
+ }
6287
+ var T2 = M2();
6288
+ function G(u6) {
6289
+ T2 = u6;
6290
+ }
6291
+ var _2 = { exec: () => null };
6292
+ function k2(u6, e9 = "") {
6293
+ let t6 = typeof u6 == "string" ? u6 : u6.source, n7 = { replace: (r5, i9) => {
6294
+ let s8 = typeof i9 == "string" ? i9 : i9.source;
6295
+ return s8 = s8.replace(m2.caret, "$1"), t6 = t6.replace(r5, s8), n7;
6296
+ }, getRegex: () => new RegExp(t6, e9) };
6297
+ return n7;
6298
+ }
6299
+ var Re = (() => {
6300
+ try {
6301
+ return !!new RegExp("(?<=1)(?<!1)");
6302
+ } catch {
6303
+ return false;
5902
6304
  }
5903
6305
  })();
5904
6306
  var m2 = { codeRemoveIndent: /^(?: {1,4}| {0,3}\t)/gm, outputLinkReplace: /\\([\[\]])/g, indentCodeCompensation: /^(\s+)(?:```)/, beginningSpace: /^\s+/, endingHash: /#$/, startingSpaceChar: /^ /, endingSpaceChar: / $/, nonSpaceChar: /[^ ]/, newLineCharGlobal: /\n/g, tabCharGlobal: /\t/g, multipleSpaceGlobal: /\s+/g, blankLine: /^[ \t]*$/, doubleBlankLine: /\n[ \t]*\n[ \t]*$/, blockquoteStart: /^ {0,3}>/, blockquoteSetextReplace: /\n {0,3}((?:=+|-+) *)(?=\n|$)/g, blockquoteSetextReplace2: /^ {0,3}>[ \t]?/gm, listReplaceNesting: /^ {1,4}(?=( {4})*[^ ])/g, listIsTask: /^\[[ xX]\] +\S/, listReplaceTask: /^\[[ xX]\] +/, listTaskCheckbox: /\[[ xX]\]/, anyLine: /\n.*\n/, hrefBrackets: /^<(.*)>$/, tableDelimiter: /[:|]/, tableAlignChars: /^\||\| *$/g, tableRowBlankLine: /\n[ \t]*$/, tableAlignRight: /^ *-+: *$/, tableAlignCenter: /^ *:-+: *$/, tableAlignLeft: /^ *:-+ *$/, startATag: /^<a /i, endATag: /^<\/a>/i, startPreScriptTag: /^<(pre|code|kbd|script)(\s|>)/i, endPreScriptTag: /^<\/(pre|code|kbd|script)(\s|>)/i, startAngleBracket: /^</, endAngleBracket: />$/, pedanticHrefTitle: /^([^'"]*[^\s])\s+(['"])(.*)\2/, unicodeAlphaNumeric: /[\p{L}\p{N}]/u, escapeTest: /[&<>"']/, escapeReplace: /[&<>"']/g, escapeTestNoEncode: /[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/, escapeReplaceNoEncode: /[<>"']|&(?!(#\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\w+);)/g, caret: /(^|[^\[])\^/g, percentDecode: /%25/g, findPipe: /\|/g, splitPipe: / \|/, slashPipe: /\\\|/g, carriageReturn: /\r\n|\r/g, spaceLine: /^ +$/gm, notSpaceStart: /^\S*/, endingNewline: /\n$/, listItemRegex: (u6) => new RegExp(`^( {0,3}${u6})((?:[ ][^\\n]*)?(?:\\n|$))`), nextBulletRegex: (u6) => new RegExp(`^ {0,${Math.min(3, u6 - 1)}}(?:[*+-]|\\d{1,9}[.)])((?:[ ][^\\n]*)?(?:\\n|$))`), hrRegex: (u6) => new RegExp(`^ {0,${Math.min(3, u6 - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\* *){3,})(?:\\n+|$)`), fencesBeginRegex: (u6) => new RegExp(`^ {0,${Math.min(3, u6 - 1)}}(?:\`\`\`|~~~)`), headingBeginRegex: (u6) => new RegExp(`^ {0,${Math.min(3, u6 - 1)}}#`), htmlBeginRegex: (u6) => new RegExp(`^ {0,${Math.min(3, u6 - 1)}}<(?:[a-z].*>|!--)`, "i"), blockquoteBeginRegex: (u6) => new RegExp(`^ {0,${Math.min(3, u6 - 1)}}>`) };
@@ -6917,669 +7319,269 @@ ${e9}</tr>
6917
7319
  break;
6918
7320
  }
6919
7321
  default: {
6920
- let i9 = r5;
6921
- this.defaults.extensions?.childTokens?.[i9.type] ? this.defaults.extensions.childTokens[i9.type].forEach((s8) => {
6922
- let a4 = i9[s8].flat(1 / 0);
6923
- n7 = n7.concat(this.walkTokens(a4, t6));
6924
- }) : i9.tokens && (n7 = n7.concat(this.walkTokens(i9.tokens, t6)));
6925
- }
6926
- }
6927
- return n7;
6928
- }
6929
- use(...e9) {
6930
- let t6 = this.defaults.extensions || { renderers: {}, childTokens: {} };
6931
- return e9.forEach((n7) => {
6932
- let r5 = { ...n7 };
6933
- if (r5.async = this.defaults.async || r5.async || false, n7.extensions && (n7.extensions.forEach((i9) => {
6934
- if (!i9.name) throw new Error("extension name required");
6935
- if ("renderer" in i9) {
6936
- let s8 = t6.renderers[i9.name];
6937
- s8 ? t6.renderers[i9.name] = function(...a4) {
6938
- let o8 = i9.renderer.apply(this, a4);
6939
- return o8 === false && (o8 = s8.apply(this, a4)), o8;
6940
- } : t6.renderers[i9.name] = i9.renderer;
6941
- }
6942
- if ("tokenizer" in i9) {
6943
- if (!i9.level || i9.level !== "block" && i9.level !== "inline") throw new Error("extension level must be 'block' or 'inline'");
6944
- let s8 = t6[i9.level];
6945
- s8 ? s8.unshift(i9.tokenizer) : t6[i9.level] = [i9.tokenizer], i9.start && (i9.level === "block" ? t6.startBlock ? t6.startBlock.push(i9.start) : t6.startBlock = [i9.start] : i9.level === "inline" && (t6.startInline ? t6.startInline.push(i9.start) : t6.startInline = [i9.start]));
6946
- }
6947
- "childTokens" in i9 && i9.childTokens && (t6.childTokens[i9.name] = i9.childTokens);
6948
- }), r5.extensions = t6), n7.renderer) {
6949
- let i9 = this.defaults.renderer || new y3(this.defaults);
6950
- for (let s8 in n7.renderer) {
6951
- if (!(s8 in i9)) throw new Error(`renderer '${s8}' does not exist`);
6952
- if (["options", "parser"].includes(s8)) continue;
6953
- let a4 = s8, o8 = n7.renderer[a4], l4 = i9[a4];
6954
- i9[a4] = (...p4) => {
6955
- let c6 = o8.apply(i9, p4);
6956
- return c6 === false && (c6 = l4.apply(i9, p4)), c6 || "";
6957
- };
6958
- }
6959
- r5.renderer = i9;
6960
- }
6961
- if (n7.tokenizer) {
6962
- let i9 = this.defaults.tokenizer || new w2(this.defaults);
6963
- for (let s8 in n7.tokenizer) {
6964
- if (!(s8 in i9)) throw new Error(`tokenizer '${s8}' does not exist`);
6965
- if (["options", "rules", "lexer"].includes(s8)) continue;
6966
- let a4 = s8, o8 = n7.tokenizer[a4], l4 = i9[a4];
6967
- i9[a4] = (...p4) => {
6968
- let c6 = o8.apply(i9, p4);
6969
- return c6 === false && (c6 = l4.apply(i9, p4)), c6;
6970
- };
6971
- }
6972
- r5.tokenizer = i9;
6973
- }
6974
- if (n7.hooks) {
6975
- let i9 = this.defaults.hooks || new P2();
6976
- for (let s8 in n7.hooks) {
6977
- if (!(s8 in i9)) throw new Error(`hook '${s8}' does not exist`);
6978
- if (["options", "block"].includes(s8)) continue;
6979
- let a4 = s8, o8 = n7.hooks[a4], l4 = i9[a4];
6980
- P2.passThroughHooks.has(s8) ? i9[a4] = (p4) => {
6981
- if (this.defaults.async && P2.passThroughHooksRespectAsync.has(s8)) return (async () => {
6982
- let d4 = await o8.call(i9, p4);
6983
- return l4.call(i9, d4);
6984
- })();
6985
- let c6 = o8.call(i9, p4);
6986
- return l4.call(i9, c6);
6987
- } : i9[a4] = (...p4) => {
6988
- if (this.defaults.async) return (async () => {
6989
- let d4 = await o8.apply(i9, p4);
6990
- return d4 === false && (d4 = await l4.apply(i9, p4)), d4;
6991
- })();
6992
- let c6 = o8.apply(i9, p4);
6993
- return c6 === false && (c6 = l4.apply(i9, p4)), c6;
6994
- };
6995
- }
6996
- r5.hooks = i9;
6997
- }
6998
- if (n7.walkTokens) {
6999
- let i9 = this.defaults.walkTokens, s8 = n7.walkTokens;
7000
- r5.walkTokens = function(a4) {
7001
- let o8 = [];
7002
- return o8.push(s8.call(this, a4)), i9 && (o8 = o8.concat(i9.call(this, a4))), o8;
7003
- };
7004
- }
7005
- this.defaults = { ...this.defaults, ...r5 };
7006
- }), this;
7007
- }
7008
- setOptions(e9) {
7009
- return this.defaults = { ...this.defaults, ...e9 }, this;
7010
- }
7011
- lexer(e9, t6) {
7012
- return x2.lex(e9, t6 ?? this.defaults);
7013
- }
7014
- parser(e9, t6) {
7015
- return b3.parse(e9, t6 ?? this.defaults);
7016
- }
7017
- parseMarkdown(e9) {
7018
- return (n7, r5) => {
7019
- let i9 = { ...r5 }, s8 = { ...this.defaults, ...i9 }, a4 = this.onError(!!s8.silent, !!s8.async);
7020
- if (this.defaults.async === true && i9.async === false) return a4(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));
7021
- if (typeof n7 > "u" || n7 === null) return a4(new Error("marked(): input parameter is undefined or null"));
7022
- if (typeof n7 != "string") return a4(new Error("marked(): input parameter is of type " + Object.prototype.toString.call(n7) + ", string expected"));
7023
- if (s8.hooks && (s8.hooks.options = s8, s8.hooks.block = e9), s8.async) return (async () => {
7024
- let o8 = s8.hooks ? await s8.hooks.preprocess(n7) : n7, p4 = await (s8.hooks ? await s8.hooks.provideLexer() : e9 ? x2.lex : x2.lexInline)(o8, s8), c6 = s8.hooks ? await s8.hooks.processAllTokens(p4) : p4;
7025
- s8.walkTokens && await Promise.all(this.walkTokens(c6, s8.walkTokens));
7026
- let h4 = await (s8.hooks ? await s8.hooks.provideParser() : e9 ? b3.parse : b3.parseInline)(c6, s8);
7027
- return s8.hooks ? await s8.hooks.postprocess(h4) : h4;
7028
- })().catch(a4);
7029
- try {
7030
- s8.hooks && (n7 = s8.hooks.preprocess(n7));
7031
- let l4 = (s8.hooks ? s8.hooks.provideLexer() : e9 ? x2.lex : x2.lexInline)(n7, s8);
7032
- s8.hooks && (l4 = s8.hooks.processAllTokens(l4)), s8.walkTokens && this.walkTokens(l4, s8.walkTokens);
7033
- let c6 = (s8.hooks ? s8.hooks.provideParser() : e9 ? b3.parse : b3.parseInline)(l4, s8);
7034
- return s8.hooks && (c6 = s8.hooks.postprocess(c6)), c6;
7035
- } catch (o8) {
7036
- return a4(o8);
7037
- }
7038
- };
7039
- }
7040
- onError(e9, t6) {
7041
- return (n7) => {
7042
- if (n7.message += `
7043
- Please report this to https://github.com/markedjs/marked.`, e9) {
7044
- let r5 = "<p>An error occurred:</p><pre>" + O(n7.message + "", true) + "</pre>";
7045
- return t6 ? Promise.resolve(r5) : r5;
7046
- }
7047
- if (t6) return Promise.reject(n7);
7048
- throw n7;
7049
- };
7050
- }
7051
- };
7052
- var L2 = new B2();
7053
- function g2(u6, e9) {
7054
- return L2.parse(u6, e9);
7055
- }
7056
- g2.options = g2.setOptions = function(u6) {
7057
- return L2.setOptions(u6), g2.defaults = L2.defaults, G(g2.defaults), g2;
7058
- };
7059
- g2.getDefaults = M2;
7060
- g2.defaults = T2;
7061
- g2.use = function(...u6) {
7062
- return L2.use(...u6), g2.defaults = L2.defaults, G(g2.defaults), g2;
7063
- };
7064
- g2.walkTokens = function(u6, e9) {
7065
- return L2.walkTokens(u6, e9);
7066
- };
7067
- g2.parseInline = L2.parseInline;
7068
- g2.Parser = b3;
7069
- g2.parser = b3.parse;
7070
- g2.Renderer = y3;
7071
- g2.TextRenderer = $2;
7072
- g2.Lexer = x2;
7073
- g2.lexer = x2.lex;
7074
- g2.Tokenizer = w2;
7075
- g2.Hooks = P2;
7076
- g2.parse = g2;
7077
- var Ut = g2.options;
7078
- var Kt = g2.setOptions;
7079
- var Wt = g2.use;
7080
- var Xt = g2.walkTokens;
7081
- var Jt = g2.parseInline;
7082
- var Yt = b3.parse;
7083
- var en = x2.lex;
7084
-
7085
- // ../adaptives/adaptive-faq/dist/runtime.js
7086
- function resolveItem(store, itemId, itemQuestion) {
7087
- if (itemId) {
7088
- const found = store.getState().items.find((i9) => i9.config.id === itemId);
7089
- if (found) return found;
7090
- }
7091
- if (itemQuestion) {
7092
- const found = store.findByQuestion(itemQuestion);
7093
- if (found) return found;
7094
- }
7095
- throw new Error("FAQ item not found");
7096
- }
7097
- async function executeScrollToFaq(action, context, store) {
7098
- const item = resolveItem(store, action.itemId, action.itemQuestion);
7099
- const { id } = item.config;
7100
- if (action.expand !== false) {
7101
- store.expand(id);
7102
- }
7103
- const el = document.querySelector(`[data-faq-item-id="${id}"]`);
7104
- if (el) {
7105
- el.scrollIntoView({
7106
- behavior: action.behavior ?? "smooth"
7107
- });
7108
- }
7109
- context.publishEvent("faq:scroll_to", { itemId: id });
7110
- return {
7111
- cleanup: () => {
7112
- }
7113
- };
7114
- }
7115
- async function executeToggleFaqItem(action, context, store) {
7116
- const item = resolveItem(store, action.itemId, action.itemQuestion);
7117
- const { id } = item.config;
7118
- const desiredState = action.state ?? "toggle";
7119
- let newState;
7120
- switch (desiredState) {
7121
- case "open":
7122
- store.expand(id);
7123
- newState = "open";
7124
- break;
7125
- case "closed":
7126
- store.collapse(id);
7127
- newState = "closed";
7128
- break;
7129
- default: {
7130
- const wasExpanded = store.getState().expandedItems.has(id);
7131
- store.toggle(id);
7132
- newState = wasExpanded ? "closed" : "open";
7133
- break;
7134
- }
7135
- }
7136
- context.publishEvent("faq:toggle", { itemId: id, newState });
7137
- return {
7138
- cleanup: () => {
7139
- }
7140
- };
7141
- }
7142
- async function executeUpdateFaq(action, context, store) {
7143
- switch (action.operation) {
7144
- case "add": {
7145
- const items = action.items ?? [];
7146
- const position2 = action.position === "prepend" ? "prepend" : "append";
7147
- store.addItems(items, position2);
7148
- break;
7149
- }
7150
- case "remove": {
7151
- if (!action.itemId) {
7152
- throw new Error("FAQ item not found");
7153
- }
7154
- const exists = store.getState().items.some((i9) => i9.config.id === action.itemId);
7155
- if (!exists) {
7156
- throw new Error("FAQ item not found");
7157
- }
7158
- store.removeItem(action.itemId);
7159
- break;
7160
- }
7161
- case "reorder": {
7162
- const order = action.order ?? [];
7163
- store.reorderItems(order);
7164
- break;
7165
- }
7166
- case "replace": {
7167
- const items = action.items ?? [];
7168
- store.replaceItems(items);
7169
- break;
7170
- }
7171
- }
7172
- context.publishEvent("faq:update", { operation: action.operation });
7173
- return {
7174
- cleanup: () => {
7175
- }
7176
- };
7177
- }
7178
- var executorDefinitions = [
7179
- { kind: "faq:scroll_to", executor: executeScrollToFaq },
7180
- { kind: "faq:toggle_item", executor: executeToggleFaqItem },
7181
- { kind: "faq:update", executor: executeUpdateFaq }
7182
- ];
7183
- var base2 = {
7184
- white: "#ffffff",
7185
- black: "#000000"
7186
- };
7187
- var brand2 = {
7188
- 0: "#2c0b0a",
7189
- 1: "#5b1715",
7190
- 2: "#89221f",
7191
- 3: "#b72e2a",
7192
- 4: "#d44844",
7193
- 5: "#dd6d69",
7194
- 6: "#e5918f",
7195
- 7: "#eeb6b4",
7196
- 8: "#f6dada",
7197
- 9: "#faebea"
7198
- };
7199
- var slateGrey2 = {
7200
- 0: "#07080a",
7201
- 1: "#0f1318",
7202
- 2: "#0e1114",
7203
- 3: "#1c222a",
7204
- 4: "#2b333f",
7205
- 5: "#394454",
7206
- 6: "#475569",
7207
- 7: "#677384",
7208
- 8: "#87919f",
7209
- 9: "#a8afba",
7210
- 10: "#cbd0d7",
7211
- 11: "#e8eaee",
7212
- 12: "#f6f7f9"
7213
- };
7214
- var green2 = {
7215
- 0: "#07230a",
7216
- 1: "#0e4514",
7217
- 2: "#16681e",
7218
- 3: "#1d8a28",
7219
- 4: "#24ad32",
7220
- 5: "#4fbd5a",
7221
- 6: "#7acd82",
7222
- 7: "#a5deab",
7223
- 8: "#d0eed3",
7224
- 9: "#e5f6e7"
7225
- };
7226
- var yellow2 = {
7227
- 0: "#301f09",
7228
- 1: "#5f3e12",
7229
- 2: "#8f5e1b",
7230
- 3: "#be7d24",
7231
- 4: "#ee9c2d",
7232
- 5: "#f1b057",
7233
- 6: "#f5c481",
7234
- 7: "#f8d7ab",
7235
- 8: "#fcebd5",
7236
- 9: "#fdf5ea"
7237
- };
7238
- var red2 = {
7239
- 0: "#330707",
7240
- 1: "#660f0e",
7241
- 2: "#991616",
7242
- 3: "#cc1e1d",
7243
- 4: "#ff2524",
7244
- 5: "#ff5150",
7245
- 6: "#ff7c7c",
7246
- 7: "#ffa8a7",
7247
- 8: "#ffd3d3",
7248
- 9: "#ffe9e9"
7249
- };
7250
- var blue2 = {
7251
- 0: "#051533",
7252
- 1: "#0a2a66",
7253
- 2: "#0f3f98",
7254
- 3: "#1454cb",
7255
- 4: "#1969fe",
7256
- 5: "#4787fe",
7257
- 6: "#75a5fe",
7258
- 7: "#a3c3ff",
7259
- 8: "#d1e1ff",
7260
- 9: "#e8f0ff"
7261
- };
7262
- var orange2 = {
7263
- 0: "#662500",
7264
- 1: "#993d00",
7265
- 2: "#cc5800",
7266
- 3: "#ff7700",
7267
- 4: "#fea85d",
7268
- 5: "#fec58f",
7269
- 6: "#ffd6ae",
7270
- 7: "#fee6cd",
7271
- 8: "#fff1e1",
7272
- 9: "#fff8f0"
7273
- };
7274
- var purple2 = {
7275
- 0: "#151229",
7276
- 1: "#2a2452",
7277
- 2: "#40357c",
7278
- 3: "#5547a5",
7279
- 4: "#6a59ce",
7280
- 5: "#887ad8",
7281
- 6: "#a69be2",
7282
- 7: "#c3bdeb",
7283
- 8: "#e1def5",
7284
- 9: "#f0eefa"
7285
- };
7286
- var pink2 = {
7287
- 0: "#37091f",
7288
- 1: "#69123c",
7289
- 2: "#9b1c58",
7290
- 3: "#cd2575",
7291
- 4: "#ff2e92",
7292
- 5: "#ff58a8",
7293
- 6: "#ff82be",
7294
- 7: "#ffabd3",
7295
- 8: "#ffd5e9",
7296
- 9: "#ffeaf4"
7297
- };
7298
- var text2 = {
7299
- primary: slateGrey2[10],
7300
- secondary: slateGrey2[9],
7301
- tertiary: slateGrey2[8]
7302
- };
7303
- var background2 = {
7304
- primary: slateGrey2[2],
7305
- secondary: slateGrey2[0]
7306
- };
7307
- var border2 = {
7308
- primary: slateGrey2[4],
7309
- secondary: slateGrey2[3]
7310
- };
7311
- var button2 = {
7312
- primary: {
7313
- text: base2.white,
7314
- icon: base2.white,
7315
- border: brand2[3],
7316
- backgroundDefault: brand2[3],
7317
- backgroundHover: brand2[2]
7318
- },
7319
- neutral: {
7320
- text: slateGrey2[10],
7321
- textHover: base2.white,
7322
- icon: slateGrey2[10],
7323
- iconHover: base2.white,
7324
- border: slateGrey2[4],
7325
- background: slateGrey2[2]
7326
- },
7327
- link: {
7328
- text: base2.white,
7329
- icon: base2.white,
7330
- hover: brand2[5]
7331
- },
7332
- error: {
7333
- text: red2[5],
7334
- hover: red2[6]
7335
- },
7336
- success: {
7337
- text: green2[5],
7338
- hover: green2[6]
7339
- }
7340
- };
7341
- var badge2 = {
7342
- slateGrey: {
7343
- content: slateGrey2[10],
7344
- pillOutline: slateGrey2[10],
7345
- borderPrimary: slateGrey2[5],
7346
- borderSecondary: slateGrey2[5],
7347
- background: slateGrey2[3]
7348
- },
7349
- brand: {
7350
- content: brand2[9],
7351
- pillOutline: brand2[9],
7352
- borderPrimary: brand2[6],
7353
- borderSecondary: brand2[6],
7354
- background: brand2[0]
7355
- },
7356
- red: {
7357
- content: red2[8],
7358
- pillOutline: red2[4],
7359
- borderPrimary: red2[2],
7360
- borderSecondary: red2[2],
7361
- background: red2[0]
7362
- },
7363
- yellow: {
7364
- content: yellow2[8],
7365
- pillOutline: yellow2[4],
7366
- borderPrimary: yellow2[2],
7367
- borderSecondary: yellow2[2],
7368
- background: yellow2[0]
7369
- },
7370
- green: {
7371
- content: green2[8],
7372
- pillOutline: green2[4],
7373
- borderPrimary: green2[2],
7374
- borderSecondary: green2[2],
7375
- background: green2[0]
7376
- },
7377
- purple: {
7378
- content: purple2[8],
7379
- pillOutline: purple2[4],
7380
- borderPrimary: purple2[2],
7381
- borderSecondary: purple2[2],
7382
- background: purple2[0]
7383
- },
7384
- blue: {
7385
- content: blue2[8],
7386
- pillOutline: blue2[4],
7387
- borderPrimary: blue2[2],
7388
- borderSecondary: blue2[2],
7389
- background: blue2[0]
7390
- },
7391
- orange: {
7392
- content: orange2[8],
7393
- pillOutline: orange2[4],
7394
- borderPrimary: orange2[2],
7395
- borderSecondary: orange2[2],
7396
- background: orange2[0]
7397
- },
7398
- pink: {
7399
- content: pink2[8],
7400
- pillOutline: pink2[4],
7401
- borderPrimary: pink2[2],
7402
- borderSecondary: pink2[2],
7403
- background: pink2[0]
7322
+ let i9 = r5;
7323
+ this.defaults.extensions?.childTokens?.[i9.type] ? this.defaults.extensions.childTokens[i9.type].forEach((s8) => {
7324
+ let a4 = i9[s8].flat(1 / 0);
7325
+ n7 = n7.concat(this.walkTokens(a4, t6));
7326
+ }) : i9.tokens && (n7 = n7.concat(this.walkTokens(i9.tokens, t6)));
7327
+ }
7328
+ }
7329
+ return n7;
7404
7330
  }
7405
- };
7406
- var badgeBanner2 = {
7407
- green: {
7408
- content: green2[8],
7409
- border: green2[2],
7410
- background: green2[0]
7411
- },
7412
- yellow: {
7413
- content: yellow2[8],
7414
- border: yellow2[2],
7415
- background: yellow2[0]
7416
- },
7417
- red: {
7418
- content: red2[8],
7419
- border: red2[2],
7420
- background: red2[0]
7331
+ use(...e9) {
7332
+ let t6 = this.defaults.extensions || { renderers: {}, childTokens: {} };
7333
+ return e9.forEach((n7) => {
7334
+ let r5 = { ...n7 };
7335
+ if (r5.async = this.defaults.async || r5.async || false, n7.extensions && (n7.extensions.forEach((i9) => {
7336
+ if (!i9.name) throw new Error("extension name required");
7337
+ if ("renderer" in i9) {
7338
+ let s8 = t6.renderers[i9.name];
7339
+ s8 ? t6.renderers[i9.name] = function(...a4) {
7340
+ let o8 = i9.renderer.apply(this, a4);
7341
+ return o8 === false && (o8 = s8.apply(this, a4)), o8;
7342
+ } : t6.renderers[i9.name] = i9.renderer;
7343
+ }
7344
+ if ("tokenizer" in i9) {
7345
+ if (!i9.level || i9.level !== "block" && i9.level !== "inline") throw new Error("extension level must be 'block' or 'inline'");
7346
+ let s8 = t6[i9.level];
7347
+ s8 ? s8.unshift(i9.tokenizer) : t6[i9.level] = [i9.tokenizer], i9.start && (i9.level === "block" ? t6.startBlock ? t6.startBlock.push(i9.start) : t6.startBlock = [i9.start] : i9.level === "inline" && (t6.startInline ? t6.startInline.push(i9.start) : t6.startInline = [i9.start]));
7348
+ }
7349
+ "childTokens" in i9 && i9.childTokens && (t6.childTokens[i9.name] = i9.childTokens);
7350
+ }), r5.extensions = t6), n7.renderer) {
7351
+ let i9 = this.defaults.renderer || new y3(this.defaults);
7352
+ for (let s8 in n7.renderer) {
7353
+ if (!(s8 in i9)) throw new Error(`renderer '${s8}' does not exist`);
7354
+ if (["options", "parser"].includes(s8)) continue;
7355
+ let a4 = s8, o8 = n7.renderer[a4], l4 = i9[a4];
7356
+ i9[a4] = (...p4) => {
7357
+ let c6 = o8.apply(i9, p4);
7358
+ return c6 === false && (c6 = l4.apply(i9, p4)), c6 || "";
7359
+ };
7360
+ }
7361
+ r5.renderer = i9;
7362
+ }
7363
+ if (n7.tokenizer) {
7364
+ let i9 = this.defaults.tokenizer || new w2(this.defaults);
7365
+ for (let s8 in n7.tokenizer) {
7366
+ if (!(s8 in i9)) throw new Error(`tokenizer '${s8}' does not exist`);
7367
+ if (["options", "rules", "lexer"].includes(s8)) continue;
7368
+ let a4 = s8, o8 = n7.tokenizer[a4], l4 = i9[a4];
7369
+ i9[a4] = (...p4) => {
7370
+ let c6 = o8.apply(i9, p4);
7371
+ return c6 === false && (c6 = l4.apply(i9, p4)), c6;
7372
+ };
7373
+ }
7374
+ r5.tokenizer = i9;
7375
+ }
7376
+ if (n7.hooks) {
7377
+ let i9 = this.defaults.hooks || new P2();
7378
+ for (let s8 in n7.hooks) {
7379
+ if (!(s8 in i9)) throw new Error(`hook '${s8}' does not exist`);
7380
+ if (["options", "block"].includes(s8)) continue;
7381
+ let a4 = s8, o8 = n7.hooks[a4], l4 = i9[a4];
7382
+ P2.passThroughHooks.has(s8) ? i9[a4] = (p4) => {
7383
+ if (this.defaults.async && P2.passThroughHooksRespectAsync.has(s8)) return (async () => {
7384
+ let d4 = await o8.call(i9, p4);
7385
+ return l4.call(i9, d4);
7386
+ })();
7387
+ let c6 = o8.call(i9, p4);
7388
+ return l4.call(i9, c6);
7389
+ } : i9[a4] = (...p4) => {
7390
+ if (this.defaults.async) return (async () => {
7391
+ let d4 = await o8.apply(i9, p4);
7392
+ return d4 === false && (d4 = await l4.apply(i9, p4)), d4;
7393
+ })();
7394
+ let c6 = o8.apply(i9, p4);
7395
+ return c6 === false && (c6 = l4.apply(i9, p4)), c6;
7396
+ };
7397
+ }
7398
+ r5.hooks = i9;
7399
+ }
7400
+ if (n7.walkTokens) {
7401
+ let i9 = this.defaults.walkTokens, s8 = n7.walkTokens;
7402
+ r5.walkTokens = function(a4) {
7403
+ let o8 = [];
7404
+ return o8.push(s8.call(this, a4)), i9 && (o8 = o8.concat(i9.call(this, a4))), o8;
7405
+ };
7406
+ }
7407
+ this.defaults = { ...this.defaults, ...r5 };
7408
+ }), this;
7421
7409
  }
7422
- };
7423
- var alert2 = {
7424
- green: {
7425
- content: green2[1],
7426
- background: green2[9]
7427
- },
7428
- yellow: {
7429
- content: yellow2[1],
7430
- background: yellow2[9]
7431
- },
7432
- red: {
7433
- content: red2[1],
7434
- background: red2[9]
7410
+ setOptions(e9) {
7411
+ return this.defaults = { ...this.defaults, ...e9 }, this;
7435
7412
  }
7436
- };
7437
- var tag2 = {
7438
- content: slateGrey2[10],
7439
- border: slateGrey2[4],
7440
- background: slateGrey2[3]
7441
- };
7442
- var menu2 = {
7443
- backgroundDefault: slateGrey2[2],
7444
- backgroundHover: slateGrey2[1],
7445
- selected: slateGrey2[3]
7446
- };
7447
- var inputDropdown2 = {
7448
- background: slateGrey2[2],
7449
- icon: slateGrey2[10],
7450
- borderDefault: slateGrey2[4],
7451
- borderSelected: brand2[3],
7452
- textLabel: slateGrey2[9],
7453
- textPlaceholder: slateGrey2[8],
7454
- textHint: slateGrey2[8]
7455
- };
7456
- var inputField2 = {
7457
- backgroundDefault: slateGrey2[2],
7458
- backgroundDisabled: slateGrey2[0],
7459
- textLabel: slateGrey2[9],
7460
- textPlaceholder: slateGrey2[8],
7461
- textHint: slateGrey2[8],
7462
- textError: red2[5],
7463
- iconDefault: slateGrey2[9],
7464
- iconPlaceholder: slateGrey2[10],
7465
- iconError: red2[5],
7466
- borderDefault: slateGrey2[4],
7467
- borderSelected: brand2[3],
7468
- borderError: red2[5]
7469
- };
7470
- var toggle2 = {
7471
- handleDefault: base2.white,
7472
- handleDisabled: slateGrey2[10],
7473
- off: {
7474
- backgroundDefault: slateGrey2[4],
7475
- backgroundHover: slateGrey2[5],
7476
- backgroundDisabled: slateGrey2[4]
7477
- },
7478
- on: {
7479
- backgroundDefault: green2[3],
7480
- backgroundHover: green2[2],
7481
- backgroundDisabled: slateGrey2[4]
7413
+ lexer(e9, t6) {
7414
+ return x2.lex(e9, t6 ?? this.defaults);
7482
7415
  }
7483
- };
7484
- var checkbox2 = {
7485
- off: {
7486
- backgroundDefault: "#00000000",
7487
- backgroundHover: slateGrey2[5],
7488
- backgroundDisabled: slateGrey2[2],
7489
- border: slateGrey2[6]
7490
- },
7491
- on: {
7492
- backgroundDefault: green2[0],
7493
- backgroundHover: green2[1],
7494
- backgroundDisabled: slateGrey2[2],
7495
- border: green2[3]
7416
+ parser(e9, t6) {
7417
+ return b3.parse(e9, t6 ?? this.defaults);
7496
7418
  }
7497
- };
7498
- var avatar2 = {
7499
- content: slateGrey2[10],
7500
- background: slateGrey2[4]
7501
- };
7502
- var progressBarSlider2 = {
7503
- background: slateGrey2[4],
7504
- active: green2[3]
7505
- };
7506
- var card2 = {
7507
- background: slateGrey2[1],
7508
- content: slateGrey2[9],
7509
- border: slateGrey2[4]
7510
- };
7511
- var sidebar2 = {
7512
- backgroundDefault: slateGrey2[1],
7513
- backgroundHover: slateGrey2[3],
7514
- backgroundActive: slateGrey2[4],
7515
- border: slateGrey2[4],
7516
- contentPrimary: slateGrey2[10],
7517
- contentSecondary: slateGrey2[9],
7518
- contentTertiary: slateGrey2[8]
7519
- };
7520
- var modal2 = {
7521
- background: slateGrey2[1],
7522
- content: slateGrey2[9],
7523
- border: slateGrey2[4]
7524
- };
7525
- var tab2 = {
7526
- activeBackground: slateGrey2[3],
7527
- activeContent: brand2[5],
7528
- inactiveContent: slateGrey2[9],
7529
- border: slateGrey2[4]
7530
- };
7531
- var table2 = {
7532
- header: {
7533
- textDefault: slateGrey2[9],
7534
- textHover: slateGrey2[8],
7535
- backgroundDefault: slateGrey2[1]
7536
- },
7537
- border: slateGrey2[4],
7538
- cell: {
7539
- textPrimary: slateGrey2[10],
7540
- textSecondary: slateGrey2[9],
7541
- backgroundDefault: slateGrey2[2],
7542
- backgroundHover: slateGrey2[1]
7419
+ parseMarkdown(e9) {
7420
+ return (n7, r5) => {
7421
+ let i9 = { ...r5 }, s8 = { ...this.defaults, ...i9 }, a4 = this.onError(!!s8.silent, !!s8.async);
7422
+ if (this.defaults.async === true && i9.async === false) return a4(new Error("marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise."));
7423
+ if (typeof n7 > "u" || n7 === null) return a4(new Error("marked(): input parameter is undefined or null"));
7424
+ if (typeof n7 != "string") return a4(new Error("marked(): input parameter is of type " + Object.prototype.toString.call(n7) + ", string expected"));
7425
+ if (s8.hooks && (s8.hooks.options = s8, s8.hooks.block = e9), s8.async) return (async () => {
7426
+ let o8 = s8.hooks ? await s8.hooks.preprocess(n7) : n7, p4 = await (s8.hooks ? await s8.hooks.provideLexer() : e9 ? x2.lex : x2.lexInline)(o8, s8), c6 = s8.hooks ? await s8.hooks.processAllTokens(p4) : p4;
7427
+ s8.walkTokens && await Promise.all(this.walkTokens(c6, s8.walkTokens));
7428
+ let h4 = await (s8.hooks ? await s8.hooks.provideParser() : e9 ? b3.parse : b3.parseInline)(c6, s8);
7429
+ return s8.hooks ? await s8.hooks.postprocess(h4) : h4;
7430
+ })().catch(a4);
7431
+ try {
7432
+ s8.hooks && (n7 = s8.hooks.preprocess(n7));
7433
+ let l4 = (s8.hooks ? s8.hooks.provideLexer() : e9 ? x2.lex : x2.lexInline)(n7, s8);
7434
+ s8.hooks && (l4 = s8.hooks.processAllTokens(l4)), s8.walkTokens && this.walkTokens(l4, s8.walkTokens);
7435
+ let c6 = (s8.hooks ? s8.hooks.provideParser() : e9 ? b3.parse : b3.parseInline)(l4, s8);
7436
+ return s8.hooks && (c6 = s8.hooks.postprocess(c6)), c6;
7437
+ } catch (o8) {
7438
+ return a4(o8);
7439
+ }
7440
+ };
7441
+ }
7442
+ onError(e9, t6) {
7443
+ return (n7) => {
7444
+ if (n7.message += `
7445
+ Please report this to https://github.com/markedjs/marked.`, e9) {
7446
+ let r5 = "<p>An error occurred:</p><pre>" + O(n7.message + "", true) + "</pre>";
7447
+ return t6 ? Promise.resolve(r5) : r5;
7448
+ }
7449
+ if (t6) return Promise.reject(n7);
7450
+ throw n7;
7451
+ };
7543
7452
  }
7544
7453
  };
7545
- var breadcrumbs2 = {
7546
- textPrimaryDefault: slateGrey2[10],
7547
- textPrimaryHover: slateGrey2[10],
7548
- textSecondaryDefault: slateGrey2[8],
7549
- textSecondaryHover: slateGrey2[9],
7550
- iconPrimary: slateGrey2[10],
7551
- iconSecondary: slateGrey2[8]
7552
- };
7553
- var loadingIndicator2 = {
7554
- background: green2[1],
7555
- active: green2[5]
7454
+ var L2 = new B2();
7455
+ function g2(u6, e9) {
7456
+ return L2.parse(u6, e9);
7457
+ }
7458
+ g2.options = g2.setOptions = function(u6) {
7459
+ return L2.setOptions(u6), g2.defaults = L2.defaults, G(g2.defaults), g2;
7556
7460
  };
7557
- var datePicker2 = {
7558
- textDefault: slateGrey2[10],
7559
- textSelected: base2.white,
7560
- textDisabled: slateGrey2[7],
7561
- backgroundDefault: slateGrey2[2],
7562
- backgroundMiddle: slateGrey2[3],
7563
- backgroundSelected: brand2[3],
7564
- border: slateGrey2[4]
7461
+ g2.getDefaults = M2;
7462
+ g2.defaults = T2;
7463
+ g2.use = function(...u6) {
7464
+ return L2.use(...u6), g2.defaults = L2.defaults, G(g2.defaults), g2;
7565
7465
  };
7566
- var scroll2 = slateGrey2[9];
7567
- var fab2 = {
7568
- /** Diameter in pixels. */
7569
- size: 56,
7570
- /** Inset from the panel's top-left corner in pixels. */
7571
- inset: 12,
7572
- /** Background color (always the brand black). */
7573
- background: base2.black,
7574
- /** Icon / logo color. */
7575
- color: base2.white,
7576
- /** Border — 2px brand red ring. */
7577
- border: `2px solid ${brand2[3]}`,
7578
- /** Shadow when the panel is open (inner ring for "active" state). */
7579
- shadowOpen: "0 4px 24px rgba(0,0,0,0.6), 0 0 0 2px rgba(255,255,255,0.08)",
7580
- /** Shadow when the panel is closed. */
7581
- shadowClosed: "0 4px 24px rgba(0,0,0,0.6)"
7466
+ g2.walkTokens = function(u6, e9) {
7467
+ return L2.walkTokens(u6, e9);
7582
7468
  };
7469
+ g2.parseInline = L2.parseInline;
7470
+ g2.Parser = b3;
7471
+ g2.parser = b3.parse;
7472
+ g2.Renderer = y3;
7473
+ g2.TextRenderer = $2;
7474
+ g2.Lexer = x2;
7475
+ g2.lexer = x2.lex;
7476
+ g2.Tokenizer = w2;
7477
+ g2.Hooks = P2;
7478
+ g2.parse = g2;
7479
+ var Ut = g2.options;
7480
+ var Kt = g2.setOptions;
7481
+ var Wt = g2.use;
7482
+ var Xt = g2.walkTokens;
7483
+ var Jt = g2.parseInline;
7484
+ var Yt = b3.parse;
7485
+ var en = x2.lex;
7486
+
7487
+ // ../adaptives/adaptive-faq/dist/runtime.js
7488
+ function resolveItem(store, itemId, itemQuestion) {
7489
+ if (itemId) {
7490
+ const found = store.getState().items.find((i9) => i9.config.id === itemId);
7491
+ if (found) return found;
7492
+ }
7493
+ if (itemQuestion) {
7494
+ const found = store.findByQuestion(itemQuestion);
7495
+ if (found) return found;
7496
+ }
7497
+ throw new Error("FAQ item not found");
7498
+ }
7499
+ async function executeScrollToFaq(action, context, store) {
7500
+ const item = resolveItem(store, action.itemId, action.itemQuestion);
7501
+ const { id } = item.config;
7502
+ if (action.expand !== false) {
7503
+ store.expand(id);
7504
+ }
7505
+ const el = document.querySelector(`[data-faq-item-id="${id}"]`);
7506
+ if (el) {
7507
+ el.scrollIntoView({
7508
+ behavior: action.behavior ?? "smooth"
7509
+ });
7510
+ }
7511
+ context.publishEvent("faq:scroll_to", { itemId: id });
7512
+ return {
7513
+ cleanup: () => {
7514
+ }
7515
+ };
7516
+ }
7517
+ async function executeToggleFaqItem(action, context, store) {
7518
+ const item = resolveItem(store, action.itemId, action.itemQuestion);
7519
+ const { id } = item.config;
7520
+ const desiredState = action.state ?? "toggle";
7521
+ let newState;
7522
+ switch (desiredState) {
7523
+ case "open":
7524
+ store.expand(id);
7525
+ newState = "open";
7526
+ break;
7527
+ case "closed":
7528
+ store.collapse(id);
7529
+ newState = "closed";
7530
+ break;
7531
+ default: {
7532
+ const wasExpanded = store.getState().expandedItems.has(id);
7533
+ store.toggle(id);
7534
+ newState = wasExpanded ? "closed" : "open";
7535
+ break;
7536
+ }
7537
+ }
7538
+ context.publishEvent("faq:toggle", { itemId: id, newState });
7539
+ return {
7540
+ cleanup: () => {
7541
+ }
7542
+ };
7543
+ }
7544
+ async function executeUpdateFaq(action, context, store) {
7545
+ switch (action.operation) {
7546
+ case "add": {
7547
+ const items = action.items ?? [];
7548
+ const position2 = action.position === "prepend" ? "prepend" : "append";
7549
+ store.addItems(items, position2);
7550
+ break;
7551
+ }
7552
+ case "remove": {
7553
+ if (!action.itemId) {
7554
+ throw new Error("FAQ item not found");
7555
+ }
7556
+ const exists = store.getState().items.some((i9) => i9.config.id === action.itemId);
7557
+ if (!exists) {
7558
+ throw new Error("FAQ item not found");
7559
+ }
7560
+ store.removeItem(action.itemId);
7561
+ break;
7562
+ }
7563
+ case "reorder": {
7564
+ const order = action.order ?? [];
7565
+ store.reorderItems(order);
7566
+ break;
7567
+ }
7568
+ case "replace": {
7569
+ const items = action.items ?? [];
7570
+ store.replaceItems(items);
7571
+ break;
7572
+ }
7573
+ }
7574
+ context.publishEvent("faq:update", { operation: action.operation });
7575
+ return {
7576
+ cleanup: () => {
7577
+ }
7578
+ };
7579
+ }
7580
+ var executorDefinitions = [
7581
+ { kind: "faq:scroll_to", executor: executeScrollToFaq },
7582
+ { kind: "faq:toggle_item", executor: executeToggleFaqItem },
7583
+ { kind: "faq:update", executor: executeUpdateFaq }
7584
+ ];
7583
7585
  var baseStyles = {
7584
7586
  container: {
7585
7587
  fontFamily: "var(--sc-font-family, system-ui, -apple-system, sans-serif)",
@@ -12778,7 +12780,7 @@ Please report this to https://github.com/markedjs/marked.`, e9) {
12778
12780
  return `${PREFIX} width="${size2}" height="${size2}" stroke="${stroke}">${paths.join("")}</svg>`;
12779
12781
  }
12780
12782
 
12781
- // ../adaptives/adaptive-nav/dist/chunk-HMLY7DHA.js
12783
+ // ../adaptives/adaptive-nav/dist/chunk-7DTOSQNC.js
12782
12784
  var __typeError3 = (msg) => {
12783
12785
  throw TypeError(msg);
12784
12786
  };
@@ -16143,8 +16145,224 @@ Please report this to https://github.com/markedjs/marked.`, e9) {
16143
16145
  }
16144
16146
  }
16145
16147
 
16148
+ // src/observability/healthReporter.ts
16149
+ var HealthReporter = class {
16150
+ constructor(config) {
16151
+ this.config = config;
16152
+ this.counters = /* @__PURE__ */ new Map();
16153
+ this.histograms = /* @__PURE__ */ new Map();
16154
+ this.windowStartMs = Date.now();
16155
+ this.timer = null;
16156
+ this.pagehideHandler = null;
16157
+ this.runtime = null;
16158
+ this.resource = config.resource;
16159
+ this.flushIntervalMs = config.flushIntervalMs ?? 6e4;
16160
+ }
16161
+ /**
16162
+ * Bind runtime-derived attribute resolvers. Called after the canvas/telemetry
16163
+ * are fully initialized. Must never throw — resolvers are wrapped in
16164
+ * null-safe access at flush time.
16165
+ */
16166
+ bindRuntime(binding) {
16167
+ this.runtime = binding;
16168
+ }
16169
+ increment(signal, by = 1) {
16170
+ this.counters.set(signal, (this.counters.get(signal) ?? 0) + by);
16171
+ }
16172
+ /**
16173
+ * @internal — exposed for test inspection only. Mid-window state is intentionally
16174
+ * unstable; consumers should subscribe to flush payloads instead.
16175
+ */
16176
+ snapshotCounters() {
16177
+ const out = {};
16178
+ for (const [k4, v4] of this.counters) out[k4] = v4;
16179
+ return out;
16180
+ }
16181
+ recordHistogram(signal, valueMs) {
16182
+ const arr = this.histograms.get(signal) ?? [];
16183
+ arr.push(valueMs);
16184
+ this.histograms.set(signal, arr);
16185
+ }
16186
+ /**
16187
+ * @internal — exposed for test inspection only. Mid-window state is intentionally
16188
+ * unstable; consumers should subscribe to flush payloads instead.
16189
+ */
16190
+ snapshotHistograms() {
16191
+ const out = {};
16192
+ for (const [k4, samples] of this.histograms) {
16193
+ if (samples.length === 0) continue;
16194
+ const sorted = [...samples].sort((a4, b5) => a4 - b5);
16195
+ out[k4] = {
16196
+ count: sorted.length,
16197
+ p50: percentile(sorted, 0.5),
16198
+ p95: percentile(sorted, 0.95)
16199
+ };
16200
+ }
16201
+ return out;
16202
+ }
16203
+ async flush() {
16204
+ const counters = this.snapshotCounters();
16205
+ const histograms = this.snapshotHistograms();
16206
+ const hasData = Object.keys(counters).length > 0 || Object.keys(histograms).length > 0;
16207
+ if (!hasData) return;
16208
+ let surface = null;
16209
+ let sessionId = "";
16210
+ try {
16211
+ surface = this.runtime?.getSurface() ?? null;
16212
+ } catch {
16213
+ }
16214
+ try {
16215
+ sessionId = this.runtime?.getSessionId() ?? "";
16216
+ } catch {
16217
+ }
16218
+ const payload = {
16219
+ resource: {
16220
+ ...this.resource,
16221
+ sessionId,
16222
+ surfaceType: surface?.type ?? "unknown",
16223
+ surfaceHost: surface?.host ?? "unknown",
16224
+ surfaceDevice: surface?.device ?? "unknown",
16225
+ surfaceMode: surface?.mode ?? "unknown"
16226
+ },
16227
+ windowSeconds: Math.max(1, Math.round((Date.now() - this.windowStartMs) / 1e3)),
16228
+ windowStartUnixMs: this.windowStartMs,
16229
+ counters,
16230
+ histograms
16231
+ };
16232
+ this.counters.clear();
16233
+ this.histograms.clear();
16234
+ this.windowStartMs = Date.now();
16235
+ try {
16236
+ await this.config.emit(payload);
16237
+ } catch {
16238
+ }
16239
+ }
16240
+ start() {
16241
+ if (this.timer !== null) return;
16242
+ this.timer = setInterval(() => {
16243
+ void this.flush();
16244
+ }, this.flushIntervalMs);
16245
+ if (typeof window !== "undefined") {
16246
+ this.pagehideHandler = () => {
16247
+ void this.flush();
16248
+ };
16249
+ window.addEventListener("pagehide", this.pagehideHandler);
16250
+ }
16251
+ }
16252
+ stop() {
16253
+ if (this.timer !== null) {
16254
+ clearInterval(this.timer);
16255
+ this.timer = null;
16256
+ }
16257
+ if (this.pagehideHandler !== null && typeof window !== "undefined") {
16258
+ window.removeEventListener("pagehide", this.pagehideHandler);
16259
+ this.pagehideHandler = null;
16260
+ }
16261
+ }
16262
+ };
16263
+ function percentile(sortedAsc, q3) {
16264
+ if (sortedAsc.length === 0) return 0;
16265
+ const pos = (sortedAsc.length - 1) * q3;
16266
+ const lo2 = Math.floor(pos);
16267
+ const hi2 = Math.ceil(pos);
16268
+ if (lo2 === hi2) return sortedAsc[lo2];
16269
+ return sortedAsc[lo2] + (sortedAsc[hi2] - sortedAsc[lo2]) * (pos - lo2);
16270
+ }
16271
+ var singleton = null;
16272
+ function initHealthReporter(config) {
16273
+ singleton?.stop();
16274
+ singleton = new HealthReporter(config);
16275
+ singleton.start();
16276
+ return singleton;
16277
+ }
16278
+ function getHealthReporter() {
16279
+ return singleton;
16280
+ }
16281
+
16282
+ // src/observability/otlpEmitter.ts
16283
+ var stringAttr = (key, value) => ({ key, value: { stringValue: value } });
16284
+ var intAttr = (key, value) => ({
16285
+ key,
16286
+ value: { intValue: Math.round(value) }
16287
+ });
16288
+ var doubleAttr = (key, value) => ({ key, value: { doubleValue: value } });
16289
+ function buildOtlpPayload(flush) {
16290
+ const { resource, counters, histograms, windowSeconds, windowStartUnixMs } = flush;
16291
+ const resourceAttrs = [
16292
+ stringAttr("service.name", resource.serviceName),
16293
+ stringAttr("service.version", resource.serviceVersion),
16294
+ stringAttr("syntro.posthog_key", resource.posthogKey),
16295
+ stringAttr("syntro.session_id", resource.sessionId),
16296
+ stringAttr("syntro.surface_type", resource.surfaceType),
16297
+ stringAttr("syntro.surface_host", resource.surfaceHost),
16298
+ stringAttr("syntro.surface_device", resource.surfaceDevice),
16299
+ stringAttr("syntro.surface_mode", resource.surfaceMode),
16300
+ stringAttr("syntro.host_origin", resource.hostOrigin)
16301
+ ];
16302
+ const recordAttrs = [intAttr("window_seconds", windowSeconds)];
16303
+ for (const [k4, v4] of Object.entries(counters)) {
16304
+ if (v4 !== void 0) recordAttrs.push(intAttr(k4, v4));
16305
+ }
16306
+ for (const [k4, h4] of Object.entries(histograms)) {
16307
+ if (h4 === void 0) continue;
16308
+ recordAttrs.push(intAttr(`${k4}_count`, h4.count));
16309
+ recordAttrs.push(doubleAttr(`${k4}_p50`, h4.p50));
16310
+ recordAttrs.push(doubleAttr(`${k4}_p95`, h4.p95));
16311
+ }
16312
+ const nowNano = `${Date.now()}000000`;
16313
+ const startNano = `${windowStartUnixMs}000000`;
16314
+ return {
16315
+ resourceLogs: [
16316
+ {
16317
+ resource: { attributes: resourceAttrs },
16318
+ scopeLogs: [
16319
+ {
16320
+ scope: { name: "syntro.sdk.health" },
16321
+ logRecords: [
16322
+ {
16323
+ timeUnixNano: startNano,
16324
+ observedTimeUnixNano: nowNano,
16325
+ severityText: "INFO",
16326
+ body: { stringValue: "sdk_health_window" },
16327
+ attributes: recordAttrs
16328
+ }
16329
+ ]
16330
+ }
16331
+ ]
16332
+ }
16333
+ ]
16334
+ };
16335
+ }
16336
+ function createOtlpEmitter(cfg) {
16337
+ const fetchImpl = cfg.fetchImpl ?? fetch;
16338
+ return async (flush) => {
16339
+ const body = JSON.stringify(buildOtlpPayload(flush));
16340
+ const post = () => fetchImpl(cfg.endpoint, {
16341
+ method: "POST",
16342
+ headers: { "Content-Type": "application/json" },
16343
+ body,
16344
+ keepalive: true,
16345
+ mode: "cors"
16346
+ });
16347
+ try {
16348
+ const resp = await post();
16349
+ if (!resp.ok && resp.status >= 500) {
16350
+ try {
16351
+ await post();
16352
+ } catch {
16353
+ }
16354
+ }
16355
+ } catch {
16356
+ try {
16357
+ await post();
16358
+ } catch {
16359
+ }
16360
+ }
16361
+ };
16362
+ }
16363
+
16146
16364
  // src/version.ts
16147
- var SDK_VERSION = "2.17.0";
16365
+ var SDK_VERSION = "2.18.0";
16148
16366
 
16149
16367
  // src/types.ts
16150
16368
  var SDK_SCHEMA_VERSION = "2.0";
@@ -16299,6 +16517,8 @@ Please report this to https://github.com/markedjs/marked.`, e9) {
16299
16517
  throw new Error(`SmartCanvas: config URI not allowed: ${uri}`);
16300
16518
  }
16301
16519
  const effectiveCredentials = credentials ?? (isSameOrigin2(uri) ? "include" : "omit");
16520
+ const fetchStart = performance.now();
16521
+ let errorAlreadyCounted = false;
16302
16522
  try {
16303
16523
  const response = await fetch(uri, {
16304
16524
  credentials: effectiveCredentials,
@@ -16308,15 +16528,23 @@ Please report this to https://github.com/markedjs/marked.`, e9) {
16308
16528
  }
16309
16529
  });
16310
16530
  if (!response.ok) {
16531
+ getHealthReporter()?.increment("flag_fetch_errors");
16532
+ errorAlreadyCounted = true;
16311
16533
  throw new Error(`SmartCanvas: failed to fetch config (${response.status})`);
16312
16534
  }
16313
16535
  const config = await response.json();
16536
+ const latencyMs = performance.now() - fetchStart;
16537
+ getHealthReporter()?.increment("flag_fetch_count");
16538
+ getHealthReporter()?.recordHistogram("flag_fetch_latency_ms", latencyMs);
16314
16539
  debug("SmartCanvas Config", "Fetched config from URI", config);
16315
16540
  if (sdkVersion) {
16316
16541
  cacheConfig(config, sdkVersion);
16317
16542
  }
16318
16543
  return config;
16319
16544
  } catch (error2) {
16545
+ if (!errorAlreadyCounted) {
16546
+ getHealthReporter()?.increment("flag_fetch_errors");
16547
+ }
16320
16548
  if (sdkVersion) {
16321
16549
  const cached = getCachedConfig(sdkVersion);
16322
16550
  if (cached) {
@@ -33226,6 +33454,23 @@ ${cssRules}
33226
33454
  }
33227
33455
  const experimentHost = getEnvVar("NEXT_PUBLIC_SYNTRO_EXPERIMENT_HOST") || getEnvVar("VITE_SYNTRO_EXPERIMENT_HOST") || payload?.eh;
33228
33456
  const telemetryHost = getEnvVar("NEXT_PUBLIC_SYNTRO_TELEMETRY_HOST") || getEnvVar("VITE_SYNTRO_TELEMETRY_HOST") || payload?.th;
33457
+ if (payload != null && payload.obd !== true && telemetryHost) {
33458
+ try {
33459
+ const otlpEndpoint = `${telemetryHost.replace(/\/$/, "")}/sdk-otel/v1/logs`;
33460
+ initHealthReporter({
33461
+ resource: {
33462
+ serviceName: "syntro-runtime-sdk",
33463
+ serviceVersion: SDK_VERSION,
33464
+ // PostHog project SDK key — canonical workspace identifier for ops.
33465
+ // Telemetry lives in PostHog, so its primary key is the right join column.
33466
+ posthogKey: payload.t ?? "",
33467
+ hostOrigin: typeof window !== "undefined" ? window.location.origin : ""
33468
+ },
33469
+ emit: createOtlpEmitter({ endpoint: otlpEndpoint })
33470
+ });
33471
+ } catch {
33472
+ }
33473
+ }
33229
33474
  const editorUrl = getEnvVar("NEXT_PUBLIC_SYNTRO_EDITOR_URL") || getEnvVar("VITE_SYNTRO_EDITOR_URL") || options.canvas?.editorUrl;
33230
33475
  const geoHost = payload?.g || getEnvVar("NEXT_PUBLIC_SYNTRO_GEO_HOST") || getEnvVar("VITE_SYNTRO_GEO_HOST") || GEO_DEFAULT_HOST;
33231
33476
  const cachedSegmentAttrs = loadCachedSegmentAttributes();
@@ -33698,6 +33943,32 @@ ${cssRules}
33698
33943
  originalSetOverrideFetcher(wrappedFetcher);
33699
33944
  };
33700
33945
  }
33946
+ const healthReporter = getHealthReporter();
33947
+ if (healthReporter !== null) {
33948
+ try {
33949
+ const boundTelemetry = telemetry;
33950
+ const boundRuntime = runtime5;
33951
+ healthReporter.bindRuntime({
33952
+ getSessionId: () => {
33953
+ try {
33954
+ return boundTelemetry?.getSessionId?.() ?? "";
33955
+ } catch {
33956
+ return "";
33957
+ }
33958
+ },
33959
+ getSurface: () => {
33960
+ try {
33961
+ const surface = boundRuntime.context.get().surface;
33962
+ return surface ? { ...surface } : null;
33963
+ } catch {
33964
+ return null;
33965
+ }
33966
+ }
33967
+ });
33968
+ } catch {
33969
+ }
33970
+ }
33971
+ healthReporter?.increment("bootstrap_ok");
33701
33972
  return { canvas, runtime: runtime5, experiments, telemetry, sessionMetrics, appLoader };
33702
33973
  }
33703
33974
 
@@ -33708,6 +33979,7 @@ ${cssRules}
33708
33979
  } catch (err) {
33709
33980
  const message = err instanceof Error ? err.message : String(err);
33710
33981
  console.warn("[Syntrologie] SDK initialization failed:", message);
33982
+ getHealthReporter()?.increment("bootstrap_errors");
33711
33983
  if (typeof document !== "undefined") {
33712
33984
  document.getElementById("syntrologie-anti-flicker")?.remove();
33713
33985
  }
@@ -34137,7 +34409,7 @@ ${cssRules}
34137
34409
  }
34138
34410
 
34139
34411
  // src/index.ts
34140
- var RUNTIME_SDK_BUILD = true ? `${"2026-05-05T21:51:15.159Z"} (${"ce0ae461837"})` : "dev";
34412
+ var RUNTIME_SDK_BUILD = true ? `${"2026-05-06T01:42:37.033Z"} (${"394e30b3e33"})` : "dev";
34141
34413
  if (typeof window !== "undefined") {
34142
34414
  console.log(`[Syntro Runtime] Build: ${RUNTIME_SDK_BUILD} (Lit)`);
34143
34415
  const existing = window.SynOS;