@plaidev/karte-action-sdk 1.1.180-28042066.2d66783f → 1.1.181-28042089.f7e0349f

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.
@@ -25,6 +25,229 @@ const ALL_ACTION_SHORTEN_ID = 'KARTE_ALL_ACTION_SHORTEN_ID';
25
25
  */
26
26
  const KARTE_MODAL_ROOT = 'karte-modal-root';
27
27
 
28
+ /** @internal */
29
+ const NOOP = (_args) => { }; // eslint-disable-line @typescript-eslint/no-unused-vars
30
+ /** @internal */
31
+ const isPreview = () => {
32
+ return true;
33
+ };
34
+ /** @internal */
35
+ const setPreviousFocus = () => {
36
+ const previously_focused = typeof document !== 'undefined' && document.activeElement;
37
+ if (previously_focused) {
38
+ previously_focused?.focus();
39
+ }
40
+ };
41
+ /** @internal */
42
+ const handleKeydown = (handlers) => (e) => {
43
+ if (handlers[e.key]) {
44
+ handlers[e.key](e);
45
+ }
46
+ };
47
+ const POSITION_STYLES = {
48
+ 'top-center': 'top: 0; right: 50%; transform: translate(+50%, 0%);',
49
+ 'top-left': 'top: 0; left: 0; transform: translate(0%, 0%);',
50
+ 'top-right': 'top: 0; right: 0; transform: translate(0%, 0%);',
51
+ 'center-left': 'top: 50%; left: 0; transform: translate(0%, -50%);',
52
+ center: 'top: 50%; left: 50%; transform: translate(-50%, -50%);',
53
+ 'center-right': 'top: 50%; right: 0; transform: translate(0%, -50%);',
54
+ 'bottom-left': 'bottom: 0; left: 0; transform: translate(0%, 0%);',
55
+ 'bottom-center': 'bottom: 0; left: 50%; transform: translate(-50%, 0%);',
56
+ 'bottom-right': 'bottom: 0; right: 0; transform: translate(0%, 0);',
57
+ none: 'top: 0; bottom: 0; right: 0; left: 0;',
58
+ };
59
+ const TRANSFORM = {
60
+ 'top-center': [50, 0],
61
+ 'top-left': [0, 0],
62
+ 'top-right': [0, 0],
63
+ 'center-left': [0, -50],
64
+ center: [-50, -50],
65
+ 'center-right': [0, -50],
66
+ 'bottom-left': [0, 0],
67
+ 'bottom-center': [-50, 0],
68
+ 'bottom-right': [0, 0],
69
+ none: [0, 0],
70
+ };
71
+ /** @internal */
72
+ const getPositionStyle = (position) => {
73
+ const style = POSITION_STYLES[position];
74
+ if (style != null) {
75
+ return style;
76
+ }
77
+ else {
78
+ console.warn(`[action-sdk] invalid '${position}', so we use 'center' instead`);
79
+ return POSITION_STYLES['center'];
80
+ }
81
+ };
82
+ /** @internal */
83
+ const getTransform = (position) => {
84
+ const transform = TRANSFORM[position];
85
+ if (transform != null) {
86
+ return transform;
87
+ }
88
+ else {
89
+ console.warn(`[action-sdk] invalid '${position}', so we use 'center' instead`);
90
+ return TRANSFORM['center'];
91
+ }
92
+ };
93
+ /** @internal */
94
+ const getMarginStyle = (margin) => {
95
+ return `margin: ${margin?.top ?? 0} ${margin?.right ?? 0} ${margin?.bottom ?? 0} ${margin?.left ?? 0};`;
96
+ };
97
+ /** @internal */
98
+ const stringifyStyleObj = (styleObj) => {
99
+ return Object.entries(styleObj)
100
+ .map(([key, value]) => `${key}:${value}`)
101
+ .join(';');
102
+ };
103
+ /**
104
+ * スクロール率が達したときに呼び出すコールバックを登録します
105
+ *
106
+ * @param rate - スクロール率。この値は viewport でのスクロールのパーセンテージ
107
+ * @param fn - スクロール率が達したときに呼び出されるコールバック関数
108
+ *
109
+ * @returns スクロール率によって呼び出されるコールバックを停止する関数を返します
110
+ *
111
+ * @public
112
+ */
113
+ function onScroll(rate, fn) {
114
+ const rates = Array.isArray(rate) ? rate : [rate];
115
+ const body = window.document.body;
116
+ const html = window.document.documentElement;
117
+ const contexts = new Map();
118
+ rates.forEach(rate => {
119
+ contexts.set(rate, {
120
+ rate,
121
+ repeat: false,
122
+ zone: 'out',
123
+ previousRate: 0,
124
+ deltaRate: 0,
125
+ scrollRate: 0,
126
+ scrollTop: html.scrollTop || body.scrollTop,
127
+ });
128
+ });
129
+ const _fn = fn;
130
+ const direction = (ctx) => ctx.deltaRate > 0 ? 'down' : 'up';
131
+ const updateStates = (ctx, repeat) => {
132
+ ctx.repeat = repeat;
133
+ // prettier-ignore
134
+ ctx.zone =
135
+ // case: the scroll rate cannot detect the rate when scrolling to the top
136
+ ctx.scrollTop === 0 && ctx.scrollRate >= ctx.rate
137
+ ? 'out'
138
+ : ctx.scrollRate >= ctx.rate
139
+ ? 'in'
140
+ : 'out';
141
+ // console.log('updateStates', ctx.zone);
142
+ };
143
+ // prettier-ignore
144
+ const canCall = ({ zone, scrollRate, rate, scrollTop, repeat }) => zone === 'out'
145
+ ? scrollRate >= rate
146
+ : repeat
147
+ // case: the scroll rate cannot detect the rate when scrolling to the top
148
+ ? scrollRate < rate || (scrollTop === 0 && scrollRate >= rate)
149
+ : false;
150
+ /*
151
+ // NOTE: same logic the above (code size optimiazation)
152
+ const canCall = (ctx: OnScrollInternalContext): boolean => {
153
+ // console.log('repeat', ctx.repeat, 'rate', ctx.rate, 'scrollRate', ctx.scrollRate, '1 - rate', 1 - ctx.rate, '1 - scrollRate', 1 - ctx.scrollRate, 'scrollRate >= rate', ctx.scrollRate >= ctx.rate, '1 - scrollRate >= 1 - rate', 1 - ctx.scrollRate >= 1 - ctx.rate);
154
+ // console.log(ctx.rate, 'deltaRate', ctx.deltaRate, 'reviousRate', ctx.previousRate)
155
+ if (ctx.zone === 'out') {
156
+ return ctx.scrollRate >= ctx.rate;
157
+ } else {
158
+ // 'in'
159
+ if (ctx.repeat) {
160
+ return ctx.scrollRate < ctx.rate || (ctx.scrollTop === 0 && ctx.scrollRate >= ctx.rate);
161
+ } else {
162
+ return false;
163
+ }
164
+ }
165
+ };
166
+ //*/
167
+ const onScroll = () => {
168
+ const scrollTop = html.scrollTop || body.scrollTop;
169
+ const pageHeight = Math.max(...[body.clientHeight, body.scrollHeight, html.scrollHeight, html.clientHeight]);
170
+ const viewHeight = Math.min(...[html.clientHeight, body.clientHeight]);
171
+ const scrollRate = (scrollTop + viewHeight) / pageHeight;
172
+ // console.log('scrollRate ->', scrollRate, 'scrollTop ->', scrollTop);
173
+ contexts.forEach(ctx => {
174
+ ctx.scrollRate = scrollRate;
175
+ ctx.deltaRate = ctx.scrollRate - ctx.previousRate;
176
+ ctx.previousRate = ctx.scrollRate;
177
+ ctx.scrollTop = scrollTop;
178
+ if (canCall(ctx)) {
179
+ const repeat = !!_fn(Object.assign({ direction: direction(ctx) }, ctx));
180
+ updateStates(ctx, repeat);
181
+ }
182
+ });
183
+ };
184
+ // register scorll event
185
+ window.addEventListener('scroll', onScroll);
186
+ // return disposing (finalizing/releasing) function
187
+ return () => {
188
+ window.removeEventListener('scroll', onScroll);
189
+ };
190
+ }
191
+ /**
192
+ * 指定した時間の経過後に呼び出すコールバックを登録します
193
+ *
194
+ * @param time - コールバックを呼び出すまでの時間。単位はミリセカンド(ms)
195
+ * @param fn - 指定した時間が経過後に呼び出されるコールバック関数
196
+ *
197
+ * @returns コールバックを呼び出すためのタイマーを停止する関数を返します
198
+ *
199
+ * @public
200
+ */
201
+ function onTime(time, fn) {
202
+ const timeoutHandler = setTimeout(fn, time);
203
+ return () => timeoutHandler && clearTimeout(timeoutHandler);
204
+ }
205
+ /** @internal */
206
+ function hasSuffix(value, suffix) {
207
+ return new RegExp(`[0-9]${suffix}$`).test(value);
208
+ }
209
+ /**
210
+ * Goolge Fonts用のURLを生成
211
+ *
212
+ * @param fonts - フォント名の配列
213
+ * @param texts - 使用するテキストの配列
214
+ *
215
+ * @remarks
216
+ * textsを指定した場合フォントサイズが削減される
217
+ *
218
+ * @internal
219
+ */
220
+ function makeGoogleFontUrl(fonts, texts) {
221
+ const params = [];
222
+ params.push('display=swap');
223
+ if (texts) {
224
+ texts.forEach(text => params.push(`text=${text}`));
225
+ }
226
+ fonts.forEach(font => params.push(`family=${font.replace(/['"]/g, '').replace(/ /g, '+')}`));
227
+ return `https://fonts.googleapis.com/css2?${params.join('&')}`;
228
+ }
229
+ /**
230
+ * HTML要素を生成
231
+ *
232
+ * @internal
233
+ */
234
+ const h = (type, props, ...children) => {
235
+ const el = document.createElement(type);
236
+ for (const key of Object.keys(props)) {
237
+ const v = props[key];
238
+ if (key === 'style') {
239
+ Object.assign(el.style, v);
240
+ }
241
+ else {
242
+ el.setAttribute(key, v);
243
+ }
244
+ }
245
+ for (const child of children) {
246
+ el.appendChild(child);
247
+ }
248
+ return el;
249
+ };
250
+
28
251
  /**
29
252
  * ポップアップ(モーダル)のコンポーネントで利用するPropの定義
30
253
  */
@@ -269,239 +492,6 @@ const DefaultFormButtonColor = {
269
492
  sub: '#fff',
270
493
  };
271
494
 
272
- /** @internal */
273
- const NOOP = (_args) => { }; // eslint-disable-line @typescript-eslint/no-unused-vars
274
- /** @internal */
275
- const isPreview = () => {
276
- return true;
277
- };
278
- /** @internal */
279
- const setPreviousFocus = () => {
280
- const previously_focused = typeof document !== 'undefined' && document.activeElement;
281
- if (previously_focused) {
282
- previously_focused?.focus();
283
- }
284
- };
285
- /** @internal */
286
- const handleKeydown = (handlers) => (e) => {
287
- if (handlers[e.key]) {
288
- handlers[e.key](e);
289
- }
290
- };
291
- const POSITION_STYLES = {
292
- 'top-center': 'top: 0; right: 50%; transform: translate(+50%, 0%);',
293
- 'top-left': 'top: 0; left: 0; transform: translate(0%, 0%);',
294
- 'top-right': 'top: 0; right: 0; transform: translate(0%, 0%);',
295
- 'center-left': 'top: 50%; left: 0; transform: translate(0%, -50%);',
296
- center: 'top: 50%; left: 50%; transform: translate(-50%, -50%);',
297
- 'center-right': 'top: 50%; right: 0; transform: translate(0%, -50%);',
298
- 'bottom-left': 'bottom: 0; left: 0; transform: translate(0%, 0%);',
299
- 'bottom-center': 'bottom: 0; left: 50%; transform: translate(-50%, 0%);',
300
- 'bottom-right': 'bottom: 0; right: 0; transform: translate(0%, 0);',
301
- none: 'top: 0; bottom: 0; right: 0; left: 0;',
302
- };
303
- const TRANSFORM = {
304
- 'top-center': [50, 0],
305
- 'top-left': [0, 0],
306
- 'top-right': [0, 0],
307
- 'center-left': [0, -50],
308
- center: [-50, -50],
309
- 'center-right': [0, -50],
310
- 'bottom-left': [0, 0],
311
- 'bottom-center': [-50, 0],
312
- 'bottom-right': [0, 0],
313
- none: [0, 0],
314
- };
315
- /** @internal */
316
- const getPositionStyle = (position) => {
317
- const style = POSITION_STYLES[position];
318
- if (style != null) {
319
- return style;
320
- }
321
- else {
322
- console.warn(`[action-sdk] invalid '${position}', so we use 'center' instead`);
323
- return POSITION_STYLES['center'];
324
- }
325
- };
326
- /** @internal */
327
- const getTransform = (position) => {
328
- const transform = TRANSFORM[position];
329
- if (transform != null) {
330
- return transform;
331
- }
332
- else {
333
- console.warn(`[action-sdk] invalid '${position}', so we use 'center' instead`);
334
- return TRANSFORM['center'];
335
- }
336
- };
337
- /** @internal */
338
- const getMarginStyle = (margin) => {
339
- return `margin: ${margin?.top ?? 0} ${margin?.right ?? 0} ${margin?.bottom ?? 0} ${margin?.left ?? 0};`;
340
- };
341
- /** @internal */
342
- const stringifyStyleObj = (styleObj) => {
343
- return Object.entries(styleObj)
344
- .map(([key, value]) => `${key}:${value}`)
345
- .join(';');
346
- };
347
- /**
348
- * スクロール率が達したときに呼び出すコールバックを登録します
349
- *
350
- * @param rate - スクロール率。この値は viewport でのスクロールのパーセンテージ
351
- * @param fn - スクロール率が達したときに呼び出されるコールバック関数
352
- *
353
- * @returns スクロール率によって呼び出されるコールバックを停止する関数を返します
354
- *
355
- * @public
356
- */
357
- function onScroll(rate, fn) {
358
- const rates = Array.isArray(rate) ? rate : [rate];
359
- const body = window.document.body;
360
- const html = window.document.documentElement;
361
- const contexts = new Map();
362
- rates.forEach(rate => {
363
- contexts.set(rate, {
364
- rate,
365
- repeat: false,
366
- zone: 'out',
367
- previousRate: 0,
368
- deltaRate: 0,
369
- scrollRate: 0,
370
- scrollTop: html.scrollTop || body.scrollTop,
371
- });
372
- });
373
- const _fn = fn;
374
- const direction = (ctx) => ctx.deltaRate > 0 ? 'down' : 'up';
375
- const updateStates = (ctx, repeat) => {
376
- ctx.repeat = repeat;
377
- // prettier-ignore
378
- ctx.zone =
379
- // case: the scroll rate cannot detect the rate when scrolling to the top
380
- ctx.scrollTop === 0 && ctx.scrollRate >= ctx.rate
381
- ? 'out'
382
- : ctx.scrollRate >= ctx.rate
383
- ? 'in'
384
- : 'out';
385
- // console.log('updateStates', ctx.zone);
386
- };
387
- // prettier-ignore
388
- const canCall = ({ zone, scrollRate, rate, scrollTop, repeat }) => zone === 'out'
389
- ? scrollRate >= rate
390
- : repeat
391
- // case: the scroll rate cannot detect the rate when scrolling to the top
392
- ? scrollRate < rate || (scrollTop === 0 && scrollRate >= rate)
393
- : false;
394
- /*
395
- // NOTE: same logic the above (code size optimiazation)
396
- const canCall = (ctx: OnScrollInternalContext): boolean => {
397
- // console.log('repeat', ctx.repeat, 'rate', ctx.rate, 'scrollRate', ctx.scrollRate, '1 - rate', 1 - ctx.rate, '1 - scrollRate', 1 - ctx.scrollRate, 'scrollRate >= rate', ctx.scrollRate >= ctx.rate, '1 - scrollRate >= 1 - rate', 1 - ctx.scrollRate >= 1 - ctx.rate);
398
- // console.log(ctx.rate, 'deltaRate', ctx.deltaRate, 'reviousRate', ctx.previousRate)
399
- if (ctx.zone === 'out') {
400
- return ctx.scrollRate >= ctx.rate;
401
- } else {
402
- // 'in'
403
- if (ctx.repeat) {
404
- return ctx.scrollRate < ctx.rate || (ctx.scrollTop === 0 && ctx.scrollRate >= ctx.rate);
405
- } else {
406
- return false;
407
- }
408
- }
409
- };
410
- //*/
411
- const onScroll = () => {
412
- const scrollTop = html.scrollTop || body.scrollTop;
413
- const pageHeight = Math.max(...[body.clientHeight, body.scrollHeight, html.scrollHeight, html.clientHeight]);
414
- const viewHeight = Math.min(...[html.clientHeight, body.clientHeight]);
415
- const scrollRate = (scrollTop + viewHeight) / pageHeight;
416
- // console.log('scrollRate ->', scrollRate, 'scrollTop ->', scrollTop);
417
- contexts.forEach(ctx => {
418
- ctx.scrollRate = scrollRate;
419
- ctx.deltaRate = ctx.scrollRate - ctx.previousRate;
420
- ctx.previousRate = ctx.scrollRate;
421
- ctx.scrollTop = scrollTop;
422
- if (canCall(ctx)) {
423
- const repeat = !!_fn(Object.assign({ direction: direction(ctx) }, ctx));
424
- updateStates(ctx, repeat);
425
- }
426
- });
427
- };
428
- // register scorll event
429
- window.addEventListener('scroll', onScroll);
430
- // return disposing (finalizing/releasing) function
431
- return () => {
432
- window.removeEventListener('scroll', onScroll);
433
- };
434
- }
435
- /**
436
- * 指定した時間の経過後に呼び出すコールバックを登録します
437
- *
438
- * @param time - コールバックを呼び出すまでの時間。単位はミリセカンド(ms)
439
- * @param fn - 指定した時間が経過後に呼び出されるコールバック関数
440
- *
441
- * @returns コールバックを呼び出すためのタイマーを停止する関数を返します
442
- *
443
- * @public
444
- */
445
- function onTime(time, fn) {
446
- const timeoutHandler = setTimeout(fn, time);
447
- return () => timeoutHandler && clearTimeout(timeoutHandler);
448
- }
449
- /** @internal */
450
- function hasSuffix(value, suffix) {
451
- return new RegExp(`[0-9]${suffix}$`).test(value);
452
- }
453
- /**
454
- * Goolge Fonts用のURLを生成
455
- *
456
- * @param fonts - フォント名の配列
457
- * @param texts - 使用するテキストの配列
458
- *
459
- * @remarks
460
- * textsを指定した場合フォントサイズが削減される
461
- *
462
- * @internal
463
- */
464
- function makeGoogleFontUrl(fonts, texts) {
465
- const params = [];
466
- params.push('display=swap');
467
- if (texts) {
468
- texts.forEach(text => params.push(`text=${text}`));
469
- }
470
- fonts.forEach(font => params.push(`family=${font.replace(/['"]/g, '').replace(/ /g, '+')}`));
471
- return `https://fonts.googleapis.com/css2?${params.join('&')}`;
472
- }
473
- /**
474
- * HTML要素を生成
475
- *
476
- * @internal
477
- */
478
- const h = (type, props, ...children) => {
479
- const el = document.createElement(type);
480
- for (const key of Object.keys(props)) {
481
- const v = props[key];
482
- if (key === 'style') {
483
- Object.assign(el.style, v);
484
- }
485
- else {
486
- el.setAttribute(key, v);
487
- }
488
- }
489
- for (const child of children) {
490
- el.appendChild(child);
491
- }
492
- return el;
493
- };
494
- /**
495
- * 非推奨
496
- *
497
- * @deprecated 非推奨
498
- *
499
- * @internal
500
- */
501
- function getGoogleFontsParam() {
502
- return 'family=' + Fonts.map(font => font.replace(/ /g, '+')).join('&family=');
503
- }
504
-
505
495
  /**
506
496
  * Store to handle action setting
507
497
  *
@@ -4890,7 +4880,7 @@ function add_css$n(target) {
4890
4880
  append_styles(target, "svelte-wb7ek", ".text-button-element.svelte-wb7ek{width:100%;height:100%}.text-button-element.svelte-wb7ek > .button{display:flex;justify-content:center;align-items:center;width:100%;height:100%;background-color:transparent;border:none;box-shadow:transparent;box-sizing:border-box;cursor:pointer;transition:box-shadow 0.2s;white-space:pre-wrap;overflow:hidden}.text-button-element.svelte-wb7ek > .button._disabled{cursor:not-allowed !important;opacity:0.2}.text-button-element.svelte-wb7ek > .button:not(._disabled):active{box-shadow:inset 0 0 100px 100px rgba(0, 0, 0, 0.3)}.text-button-element.svelte-wb7ek > .button:not(._disabled):hover{box-shadow:inset 0 0 100px 100px rgba(255, 255, 255, 0.3)}");
4891
4881
  }
4892
4882
 
4893
- // (36:2) <Button onClick={onClick} {style} {eventName}>
4883
+ // (46:2) <Button onClick={onClick} {style} {eventName}>
4894
4884
  function create_default_slot$5(ctx) {
4895
4885
  let rendertext;
4896
4886
  let current;
@@ -4929,9 +4919,6 @@ function create_default_slot$5(ctx) {
4929
4919
 
4930
4920
  function create_fragment$o(ctx) {
4931
4921
  let div;
4932
- let link;
4933
- let link_href_value;
4934
- let t;
4935
4922
  let button;
4936
4923
  let current;
4937
4924
 
@@ -4948,43 +4935,31 @@ function create_fragment$o(ctx) {
4948
4935
  return {
4949
4936
  c() {
4950
4937
  div = element("div");
4951
- link = element("link");
4952
- t = space();
4953
4938
  create_component(button.$$.fragment);
4954
4939
  this.h();
4955
4940
  },
4956
4941
  l(nodes) {
4957
4942
  div = claim_element(nodes, "DIV", { class: true });
4958
4943
  var div_nodes = children(div);
4959
- link = claim_element(div_nodes, "LINK", { href: true, rel: true });
4960
- t = claim_space(div_nodes);
4961
4944
  claim_component(button.$$.fragment, div_nodes);
4962
4945
  div_nodes.forEach(detach);
4963
4946
  this.h();
4964
4947
  },
4965
4948
  h() {
4966
- attr(link, "href", link_href_value = `https://fonts.googleapis.com/css2?${getGoogleFontsParam()}&display=swap&text=${/*text*/ ctx[0]}`);
4967
- attr(link, "rel", "stylesheet");
4968
4949
  attr(div, "class", "text-button-element svelte-wb7ek");
4969
4950
  },
4970
4951
  m(target, anchor) {
4971
4952
  insert_hydration(target, div, anchor);
4972
- append_hydration(div, link);
4973
- append_hydration(div, t);
4974
4953
  mount_component(button, div, null);
4975
4954
  current = true;
4976
4955
  },
4977
4956
  p(ctx, [dirty]) {
4978
- if (!current || dirty & /*text*/ 1 && link_href_value !== (link_href_value = `https://fonts.googleapis.com/css2?${getGoogleFontsParam()}&display=swap&text=${/*text*/ ctx[0]}`)) {
4979
- attr(link, "href", link_href_value);
4980
- }
4981
-
4982
4957
  const button_changes = {};
4983
4958
  if (dirty & /*onClick*/ 2) button_changes.onClick = /*onClick*/ ctx[1];
4984
4959
  if (dirty & /*style*/ 8) button_changes.style = /*style*/ ctx[3];
4985
4960
  if (dirty & /*eventName*/ 4) button_changes.eventName = /*eventName*/ ctx[2];
4986
4961
 
4987
- if (dirty & /*$$scope, text*/ 65) {
4962
+ if (dirty & /*$$scope, text*/ 129) {
4988
4963
  button_changes.$$scope = { dirty, ctx };
4989
4964
  }
4990
4965
 
@@ -5011,6 +4986,7 @@ function instance$o($$self, $$props, $$invalidate) {
5011
4986
  let { text = 'ボタンラベル' } = $$props;
5012
4987
  let { onClick = { operation: 'none', args: [] } } = $$props;
5013
4988
  let { eventName = '' } = $$props;
4989
+ let { font = SYSTEM_FONT } = $$props;
5014
4990
  let { _buttonStyle = 'color:#ffffff; font-size:14px; font-weight:bold; justify-content:center; align-items:center; padding:1px 6px 1px 6px; line-height: 1.5;' } = $$props;
5015
4991
  let { _style = 'background-color: #000000; border-radius:4px; cursor: pointer' } = $$props;
5016
4992
 
@@ -5018,17 +4994,22 @@ function instance$o($$self, $$props, $$invalidate) {
5018
4994
  if ('text' in $$props) $$invalidate(0, text = $$props.text);
5019
4995
  if ('onClick' in $$props) $$invalidate(1, onClick = $$props.onClick);
5020
4996
  if ('eventName' in $$props) $$invalidate(2, eventName = $$props.eventName);
5021
- if ('_buttonStyle' in $$props) $$invalidate(4, _buttonStyle = $$props._buttonStyle);
5022
- if ('_style' in $$props) $$invalidate(5, _style = $$props._style);
4997
+ if ('font' in $$props) $$invalidate(4, font = $$props.font);
4998
+ if ('_buttonStyle' in $$props) $$invalidate(5, _buttonStyle = $$props._buttonStyle);
4999
+ if ('_style' in $$props) $$invalidate(6, _style = $$props._style);
5023
5000
  };
5024
5001
 
5025
5002
  $$self.$$.update = () => {
5026
- if ($$self.$$.dirty & /*_buttonStyle, _style*/ 48) {
5027
- $$invalidate(3, style = [..._buttonStyle.split(';'), ..._style.split(';')].filter(Boolean).join(';'));
5003
+ if ($$self.$$.dirty & /*font*/ 16) {
5004
+ addFont(font);
5005
+ }
5006
+
5007
+ if ($$self.$$.dirty & /*_buttonStyle, _style, font*/ 112) {
5008
+ $$invalidate(3, style = [..._buttonStyle.split(';'), ..._style.split(';'), `font-family:${font}`].filter(prop => prop).join(';'));
5028
5009
  }
5029
5010
  };
5030
5011
 
5031
- return [text, onClick, eventName, style, _buttonStyle, _style];
5012
+ return [text, onClick, eventName, style, font, _buttonStyle, _style];
5032
5013
  }
5033
5014
 
5034
5015
  class TextButtonElement extends SvelteComponent {
@@ -5045,8 +5026,9 @@ class TextButtonElement extends SvelteComponent {
5045
5026
  text: 0,
5046
5027
  onClick: 1,
5047
5028
  eventName: 2,
5048
- _buttonStyle: 4,
5049
- _style: 5
5029
+ font: 4,
5030
+ _buttonStyle: 5,
5031
+ _style: 6
5050
5032
  },
5051
5033
  add_css$n
5052
5034
  );
package/dist/index.es.js CHANGED
@@ -25,6 +25,233 @@ const ALL_ACTION_SHORTEN_ID = 'KARTE_ALL_ACTION_SHORTEN_ID';
25
25
  */
26
26
  const KARTE_MODAL_ROOT = 'karte-modal-root';
27
27
 
28
+ /** @internal */
29
+ const NOOP = (_args) => { }; // eslint-disable-line @typescript-eslint/no-unused-vars
30
+ /** @internal */
31
+ const isPreview = () => {
32
+ return false;
33
+ };
34
+ /** @internal */
35
+ const setPreviousFocus = () => {
36
+ const previously_focused = typeof document !== 'undefined' && document.activeElement;
37
+ if (previously_focused) {
38
+ previously_focused?.focus();
39
+ }
40
+ };
41
+ /** @internal */
42
+ const handleKeydown = (handlers) => (e) => {
43
+ if (handlers[e.key]) {
44
+ handlers[e.key](e);
45
+ }
46
+ };
47
+ const POSITION_STYLES = {
48
+ 'top-center': 'top: 0; right: 50%; transform: translate(+50%, 0%);',
49
+ 'top-left': 'top: 0; left: 0; transform: translate(0%, 0%);',
50
+ 'top-right': 'top: 0; right: 0; transform: translate(0%, 0%);',
51
+ 'center-left': 'top: 50%; left: 0; transform: translate(0%, -50%);',
52
+ center: 'top: 50%; left: 50%; transform: translate(-50%, -50%);',
53
+ 'center-right': 'top: 50%; right: 0; transform: translate(0%, -50%);',
54
+ 'bottom-left': 'bottom: 0; left: 0; transform: translate(0%, 0%);',
55
+ 'bottom-center': 'bottom: 0; left: 50%; transform: translate(-50%, 0%);',
56
+ 'bottom-right': 'bottom: 0; right: 0; transform: translate(0%, 0);',
57
+ none: 'top: 0; bottom: 0; right: 0; left: 0;',
58
+ };
59
+ const TRANSFORM = {
60
+ 'top-center': [50, 0],
61
+ 'top-left': [0, 0],
62
+ 'top-right': [0, 0],
63
+ 'center-left': [0, -50],
64
+ center: [-50, -50],
65
+ 'center-right': [0, -50],
66
+ 'bottom-left': [0, 0],
67
+ 'bottom-center': [-50, 0],
68
+ 'bottom-right': [0, 0],
69
+ none: [0, 0],
70
+ };
71
+ /** @internal */
72
+ const getPositionStyle = (position) => {
73
+ const style = POSITION_STYLES[position];
74
+ if (style != null) {
75
+ return style;
76
+ }
77
+ else {
78
+ console.warn(`[action-sdk] invalid '${position}', so we use 'center' instead`);
79
+ return POSITION_STYLES['center'];
80
+ }
81
+ };
82
+ /** @internal */
83
+ const getTransform = (position) => {
84
+ const transform = TRANSFORM[position];
85
+ if (transform != null) {
86
+ return transform;
87
+ }
88
+ else {
89
+ console.warn(`[action-sdk] invalid '${position}', so we use 'center' instead`);
90
+ return TRANSFORM['center'];
91
+ }
92
+ };
93
+ /** @internal */
94
+ const getMarginStyle = (margin) => {
95
+ return `margin: ${margin?.top ?? 0} ${margin?.right ?? 0} ${margin?.bottom ?? 0} ${margin?.left ?? 0};`;
96
+ };
97
+ /** @internal */
98
+ const stringifyStyleObj = (styleObj) => {
99
+ return Object.entries(styleObj)
100
+ .map(([key, value]) => `${key}:${value}`)
101
+ .join(';');
102
+ };
103
+ /**
104
+ * スクロール率が達したときに呼び出すコールバックを登録します
105
+ *
106
+ * @param rate - スクロール率。この値は viewport でのスクロールのパーセンテージ
107
+ * @param fn - スクロール率が達したときに呼び出されるコールバック関数
108
+ *
109
+ * @returns スクロール率によって呼び出されるコールバックを停止する関数を返します
110
+ *
111
+ * @public
112
+ */
113
+ function onScroll(rate, fn) {
114
+ const rates = Array.isArray(rate) ? rate : [rate];
115
+ const body = window.document.body;
116
+ const html = window.document.documentElement;
117
+ const contexts = new Map();
118
+ rates.forEach(rate => {
119
+ contexts.set(rate, {
120
+ rate,
121
+ repeat: false,
122
+ zone: 'out',
123
+ previousRate: 0,
124
+ deltaRate: 0,
125
+ scrollRate: 0,
126
+ scrollTop: html.scrollTop || body.scrollTop,
127
+ });
128
+ });
129
+ const _fn = fn;
130
+ const direction = (ctx) => ctx.deltaRate > 0 ? 'down' : 'up';
131
+ const updateStates = (ctx, repeat) => {
132
+ ctx.repeat = repeat;
133
+ // prettier-ignore
134
+ ctx.zone =
135
+ // case: the scroll rate cannot detect the rate when scrolling to the top
136
+ ctx.scrollTop === 0 && ctx.scrollRate >= ctx.rate
137
+ ? 'out'
138
+ : ctx.scrollRate >= ctx.rate
139
+ ? 'in'
140
+ : 'out';
141
+ // console.log('updateStates', ctx.zone);
142
+ };
143
+ // prettier-ignore
144
+ const canCall = ({ zone, scrollRate, rate, scrollTop, repeat }) => zone === 'out'
145
+ ? scrollRate >= rate
146
+ : repeat
147
+ // case: the scroll rate cannot detect the rate when scrolling to the top
148
+ ? scrollRate < rate || (scrollTop === 0 && scrollRate >= rate)
149
+ : false;
150
+ /*
151
+ // NOTE: same logic the above (code size optimiazation)
152
+ const canCall = (ctx: OnScrollInternalContext): boolean => {
153
+ // console.log('repeat', ctx.repeat, 'rate', ctx.rate, 'scrollRate', ctx.scrollRate, '1 - rate', 1 - ctx.rate, '1 - scrollRate', 1 - ctx.scrollRate, 'scrollRate >= rate', ctx.scrollRate >= ctx.rate, '1 - scrollRate >= 1 - rate', 1 - ctx.scrollRate >= 1 - ctx.rate);
154
+ // console.log(ctx.rate, 'deltaRate', ctx.deltaRate, 'reviousRate', ctx.previousRate)
155
+ if (ctx.zone === 'out') {
156
+ return ctx.scrollRate >= ctx.rate;
157
+ } else {
158
+ // 'in'
159
+ if (ctx.repeat) {
160
+ return ctx.scrollRate < ctx.rate || (ctx.scrollTop === 0 && ctx.scrollRate >= ctx.rate);
161
+ } else {
162
+ return false;
163
+ }
164
+ }
165
+ };
166
+ //*/
167
+ const onScroll = () => {
168
+ const scrollTop = html.scrollTop || body.scrollTop;
169
+ const pageHeight = Math.max(...[body.clientHeight, body.scrollHeight, html.scrollHeight, html.clientHeight]);
170
+ const viewHeight = Math.min(...[html.clientHeight, body.clientHeight]);
171
+ const scrollRate = (scrollTop + viewHeight) / pageHeight;
172
+ // console.log('scrollRate ->', scrollRate, 'scrollTop ->', scrollTop);
173
+ contexts.forEach(ctx => {
174
+ ctx.scrollRate = scrollRate;
175
+ ctx.deltaRate = ctx.scrollRate - ctx.previousRate;
176
+ ctx.previousRate = ctx.scrollRate;
177
+ ctx.scrollTop = scrollTop;
178
+ if (canCall(ctx)) {
179
+ const repeat = !!_fn(Object.assign({ direction: direction(ctx) }, ctx));
180
+ updateStates(ctx, repeat);
181
+ }
182
+ });
183
+ };
184
+ // register scorll event
185
+ window.addEventListener('scroll', onScroll);
186
+ // return disposing (finalizing/releasing) function
187
+ return () => {
188
+ window.removeEventListener('scroll', onScroll);
189
+ };
190
+ }
191
+ /**
192
+ * 指定した時間の経過後に呼び出すコールバックを登録します
193
+ *
194
+ * @param time - コールバックを呼び出すまでの時間。単位はミリセカンド(ms)
195
+ * @param fn - 指定した時間が経過後に呼び出されるコールバック関数
196
+ *
197
+ * @returns コールバックを呼び出すためのタイマーを停止する関数を返します
198
+ *
199
+ * @public
200
+ */
201
+ function onTime(time, fn) {
202
+ const timeoutHandler = setTimeout(fn, time);
203
+ return () => timeoutHandler && clearTimeout(timeoutHandler);
204
+ }
205
+ /** @internal */
206
+ function hasSuffix(value, suffix) {
207
+ return new RegExp(`[0-9]${suffix}$`).test(value);
208
+ }
209
+ /** @internal */
210
+ function randStr(digit = 8) {
211
+ return Math.random().toString(32).substring(digit);
212
+ }
213
+ /**
214
+ * Goolge Fonts用のURLを生成
215
+ *
216
+ * @param fonts - フォント名の配列
217
+ * @param texts - 使用するテキストの配列
218
+ *
219
+ * @remarks
220
+ * textsを指定した場合フォントサイズが削減される
221
+ *
222
+ * @internal
223
+ */
224
+ function makeGoogleFontUrl(fonts, texts) {
225
+ const params = [];
226
+ params.push('display=swap');
227
+ if (texts) {
228
+ texts.forEach(text => params.push(`text=${text}`));
229
+ }
230
+ fonts.forEach(font => params.push(`family=${font.replace(/['"]/g, '').replace(/ /g, '+')}`));
231
+ return `https://fonts.googleapis.com/css2?${params.join('&')}`;
232
+ }
233
+ /**
234
+ * HTML要素を生成
235
+ *
236
+ * @internal
237
+ */
238
+ const h = (type, props, ...children) => {
239
+ const el = document.createElement(type);
240
+ for (const key of Object.keys(props)) {
241
+ const v = props[key];
242
+ if (key === 'style') {
243
+ Object.assign(el.style, v);
244
+ }
245
+ else {
246
+ el.setAttribute(key, v);
247
+ }
248
+ }
249
+ for (const child of children) {
250
+ el.appendChild(child);
251
+ }
252
+ return el;
253
+ };
254
+
28
255
  /**
29
256
  * ポップアップ(モーダル)のコンポーネントで利用するPropの定義
30
257
  */
@@ -269,243 +496,6 @@ const DefaultFormButtonColor = {
269
496
  sub: '#fff',
270
497
  };
271
498
 
272
- /** @internal */
273
- const NOOP = (_args) => { }; // eslint-disable-line @typescript-eslint/no-unused-vars
274
- /** @internal */
275
- const isPreview = () => {
276
- return false;
277
- };
278
- /** @internal */
279
- const setPreviousFocus = () => {
280
- const previously_focused = typeof document !== 'undefined' && document.activeElement;
281
- if (previously_focused) {
282
- previously_focused?.focus();
283
- }
284
- };
285
- /** @internal */
286
- const handleKeydown = (handlers) => (e) => {
287
- if (handlers[e.key]) {
288
- handlers[e.key](e);
289
- }
290
- };
291
- const POSITION_STYLES = {
292
- 'top-center': 'top: 0; right: 50%; transform: translate(+50%, 0%);',
293
- 'top-left': 'top: 0; left: 0; transform: translate(0%, 0%);',
294
- 'top-right': 'top: 0; right: 0; transform: translate(0%, 0%);',
295
- 'center-left': 'top: 50%; left: 0; transform: translate(0%, -50%);',
296
- center: 'top: 50%; left: 50%; transform: translate(-50%, -50%);',
297
- 'center-right': 'top: 50%; right: 0; transform: translate(0%, -50%);',
298
- 'bottom-left': 'bottom: 0; left: 0; transform: translate(0%, 0%);',
299
- 'bottom-center': 'bottom: 0; left: 50%; transform: translate(-50%, 0%);',
300
- 'bottom-right': 'bottom: 0; right: 0; transform: translate(0%, 0);',
301
- none: 'top: 0; bottom: 0; right: 0; left: 0;',
302
- };
303
- const TRANSFORM = {
304
- 'top-center': [50, 0],
305
- 'top-left': [0, 0],
306
- 'top-right': [0, 0],
307
- 'center-left': [0, -50],
308
- center: [-50, -50],
309
- 'center-right': [0, -50],
310
- 'bottom-left': [0, 0],
311
- 'bottom-center': [-50, 0],
312
- 'bottom-right': [0, 0],
313
- none: [0, 0],
314
- };
315
- /** @internal */
316
- const getPositionStyle = (position) => {
317
- const style = POSITION_STYLES[position];
318
- if (style != null) {
319
- return style;
320
- }
321
- else {
322
- console.warn(`[action-sdk] invalid '${position}', so we use 'center' instead`);
323
- return POSITION_STYLES['center'];
324
- }
325
- };
326
- /** @internal */
327
- const getTransform = (position) => {
328
- const transform = TRANSFORM[position];
329
- if (transform != null) {
330
- return transform;
331
- }
332
- else {
333
- console.warn(`[action-sdk] invalid '${position}', so we use 'center' instead`);
334
- return TRANSFORM['center'];
335
- }
336
- };
337
- /** @internal */
338
- const getMarginStyle = (margin) => {
339
- return `margin: ${margin?.top ?? 0} ${margin?.right ?? 0} ${margin?.bottom ?? 0} ${margin?.left ?? 0};`;
340
- };
341
- /** @internal */
342
- const stringifyStyleObj = (styleObj) => {
343
- return Object.entries(styleObj)
344
- .map(([key, value]) => `${key}:${value}`)
345
- .join(';');
346
- };
347
- /**
348
- * スクロール率が達したときに呼び出すコールバックを登録します
349
- *
350
- * @param rate - スクロール率。この値は viewport でのスクロールのパーセンテージ
351
- * @param fn - スクロール率が達したときに呼び出されるコールバック関数
352
- *
353
- * @returns スクロール率によって呼び出されるコールバックを停止する関数を返します
354
- *
355
- * @public
356
- */
357
- function onScroll(rate, fn) {
358
- const rates = Array.isArray(rate) ? rate : [rate];
359
- const body = window.document.body;
360
- const html = window.document.documentElement;
361
- const contexts = new Map();
362
- rates.forEach(rate => {
363
- contexts.set(rate, {
364
- rate,
365
- repeat: false,
366
- zone: 'out',
367
- previousRate: 0,
368
- deltaRate: 0,
369
- scrollRate: 0,
370
- scrollTop: html.scrollTop || body.scrollTop,
371
- });
372
- });
373
- const _fn = fn;
374
- const direction = (ctx) => ctx.deltaRate > 0 ? 'down' : 'up';
375
- const updateStates = (ctx, repeat) => {
376
- ctx.repeat = repeat;
377
- // prettier-ignore
378
- ctx.zone =
379
- // case: the scroll rate cannot detect the rate when scrolling to the top
380
- ctx.scrollTop === 0 && ctx.scrollRate >= ctx.rate
381
- ? 'out'
382
- : ctx.scrollRate >= ctx.rate
383
- ? 'in'
384
- : 'out';
385
- // console.log('updateStates', ctx.zone);
386
- };
387
- // prettier-ignore
388
- const canCall = ({ zone, scrollRate, rate, scrollTop, repeat }) => zone === 'out'
389
- ? scrollRate >= rate
390
- : repeat
391
- // case: the scroll rate cannot detect the rate when scrolling to the top
392
- ? scrollRate < rate || (scrollTop === 0 && scrollRate >= rate)
393
- : false;
394
- /*
395
- // NOTE: same logic the above (code size optimiazation)
396
- const canCall = (ctx: OnScrollInternalContext): boolean => {
397
- // console.log('repeat', ctx.repeat, 'rate', ctx.rate, 'scrollRate', ctx.scrollRate, '1 - rate', 1 - ctx.rate, '1 - scrollRate', 1 - ctx.scrollRate, 'scrollRate >= rate', ctx.scrollRate >= ctx.rate, '1 - scrollRate >= 1 - rate', 1 - ctx.scrollRate >= 1 - ctx.rate);
398
- // console.log(ctx.rate, 'deltaRate', ctx.deltaRate, 'reviousRate', ctx.previousRate)
399
- if (ctx.zone === 'out') {
400
- return ctx.scrollRate >= ctx.rate;
401
- } else {
402
- // 'in'
403
- if (ctx.repeat) {
404
- return ctx.scrollRate < ctx.rate || (ctx.scrollTop === 0 && ctx.scrollRate >= ctx.rate);
405
- } else {
406
- return false;
407
- }
408
- }
409
- };
410
- //*/
411
- const onScroll = () => {
412
- const scrollTop = html.scrollTop || body.scrollTop;
413
- const pageHeight = Math.max(...[body.clientHeight, body.scrollHeight, html.scrollHeight, html.clientHeight]);
414
- const viewHeight = Math.min(...[html.clientHeight, body.clientHeight]);
415
- const scrollRate = (scrollTop + viewHeight) / pageHeight;
416
- // console.log('scrollRate ->', scrollRate, 'scrollTop ->', scrollTop);
417
- contexts.forEach(ctx => {
418
- ctx.scrollRate = scrollRate;
419
- ctx.deltaRate = ctx.scrollRate - ctx.previousRate;
420
- ctx.previousRate = ctx.scrollRate;
421
- ctx.scrollTop = scrollTop;
422
- if (canCall(ctx)) {
423
- const repeat = !!_fn(Object.assign({ direction: direction(ctx) }, ctx));
424
- updateStates(ctx, repeat);
425
- }
426
- });
427
- };
428
- // register scorll event
429
- window.addEventListener('scroll', onScroll);
430
- // return disposing (finalizing/releasing) function
431
- return () => {
432
- window.removeEventListener('scroll', onScroll);
433
- };
434
- }
435
- /**
436
- * 指定した時間の経過後に呼び出すコールバックを登録します
437
- *
438
- * @param time - コールバックを呼び出すまでの時間。単位はミリセカンド(ms)
439
- * @param fn - 指定した時間が経過後に呼び出されるコールバック関数
440
- *
441
- * @returns コールバックを呼び出すためのタイマーを停止する関数を返します
442
- *
443
- * @public
444
- */
445
- function onTime(time, fn) {
446
- const timeoutHandler = setTimeout(fn, time);
447
- return () => timeoutHandler && clearTimeout(timeoutHandler);
448
- }
449
- /** @internal */
450
- function hasSuffix(value, suffix) {
451
- return new RegExp(`[0-9]${suffix}$`).test(value);
452
- }
453
- /** @internal */
454
- function randStr(digit = 8) {
455
- return Math.random().toString(32).substring(digit);
456
- }
457
- /**
458
- * Goolge Fonts用のURLを生成
459
- *
460
- * @param fonts - フォント名の配列
461
- * @param texts - 使用するテキストの配列
462
- *
463
- * @remarks
464
- * textsを指定した場合フォントサイズが削減される
465
- *
466
- * @internal
467
- */
468
- function makeGoogleFontUrl(fonts, texts) {
469
- const params = [];
470
- params.push('display=swap');
471
- if (texts) {
472
- texts.forEach(text => params.push(`text=${text}`));
473
- }
474
- fonts.forEach(font => params.push(`family=${font.replace(/['"]/g, '').replace(/ /g, '+')}`));
475
- return `https://fonts.googleapis.com/css2?${params.join('&')}`;
476
- }
477
- /**
478
- * HTML要素を生成
479
- *
480
- * @internal
481
- */
482
- const h = (type, props, ...children) => {
483
- const el = document.createElement(type);
484
- for (const key of Object.keys(props)) {
485
- const v = props[key];
486
- if (key === 'style') {
487
- Object.assign(el.style, v);
488
- }
489
- else {
490
- el.setAttribute(key, v);
491
- }
492
- }
493
- for (const child of children) {
494
- el.appendChild(child);
495
- }
496
- return el;
497
- };
498
- /**
499
- * 非推奨
500
- *
501
- * @deprecated 非推奨
502
- *
503
- * @internal
504
- */
505
- function getGoogleFontsParam() {
506
- return 'family=' + Fonts.map(font => font.replace(/ /g, '+')).join('&family=');
507
- }
508
-
509
499
  /**
510
500
  * Store to handle action setting
511
501
  *
@@ -4737,7 +4727,7 @@ function add_css$n(target) {
4737
4727
  append_styles(target, "svelte-wb7ek", ".text-button-element.svelte-wb7ek{width:100%;height:100%}.text-button-element.svelte-wb7ek > .button{display:flex;justify-content:center;align-items:center;width:100%;height:100%;background-color:transparent;border:none;box-shadow:transparent;box-sizing:border-box;cursor:pointer;transition:box-shadow 0.2s;white-space:pre-wrap;overflow:hidden}.text-button-element.svelte-wb7ek > .button._disabled{cursor:not-allowed !important;opacity:0.2}.text-button-element.svelte-wb7ek > .button:not(._disabled):active{box-shadow:inset 0 0 100px 100px rgba(0, 0, 0, 0.3)}.text-button-element.svelte-wb7ek > .button:not(._disabled):hover{box-shadow:inset 0 0 100px 100px rgba(255, 255, 255, 0.3)}");
4738
4728
  }
4739
4729
 
4740
- // (36:2) <Button onClick={onClick} {style} {eventName}>
4730
+ // (46:2) <Button onClick={onClick} {style} {eventName}>
4741
4731
  function create_default_slot$5(ctx) {
4742
4732
  let rendertext;
4743
4733
  let current;
@@ -4773,9 +4763,6 @@ function create_default_slot$5(ctx) {
4773
4763
 
4774
4764
  function create_fragment$o(ctx) {
4775
4765
  let div;
4776
- let link;
4777
- let link_href_value;
4778
- let t;
4779
4766
  let button;
4780
4767
  let current;
4781
4768
 
@@ -4792,31 +4779,21 @@ function create_fragment$o(ctx) {
4792
4779
  return {
4793
4780
  c() {
4794
4781
  div = element("div");
4795
- link = element("link");
4796
- t = space();
4797
4782
  create_component(button.$$.fragment);
4798
- attr(link, "href", link_href_value = `https://fonts.googleapis.com/css2?${getGoogleFontsParam()}&display=swap&text=${/*text*/ ctx[0]}`);
4799
- attr(link, "rel", "stylesheet");
4800
4783
  attr(div, "class", "text-button-element svelte-wb7ek");
4801
4784
  },
4802
4785
  m(target, anchor) {
4803
4786
  insert(target, div, anchor);
4804
- append(div, link);
4805
- append(div, t);
4806
4787
  mount_component(button, div, null);
4807
4788
  current = true;
4808
4789
  },
4809
4790
  p(ctx, [dirty]) {
4810
- if (!current || dirty & /*text*/ 1 && link_href_value !== (link_href_value = `https://fonts.googleapis.com/css2?${getGoogleFontsParam()}&display=swap&text=${/*text*/ ctx[0]}`)) {
4811
- attr(link, "href", link_href_value);
4812
- }
4813
-
4814
4791
  const button_changes = {};
4815
4792
  if (dirty & /*onClick*/ 2) button_changes.onClick = /*onClick*/ ctx[1];
4816
4793
  if (dirty & /*style*/ 8) button_changes.style = /*style*/ ctx[3];
4817
4794
  if (dirty & /*eventName*/ 4) button_changes.eventName = /*eventName*/ ctx[2];
4818
4795
 
4819
- if (dirty & /*$$scope, text*/ 65) {
4796
+ if (dirty & /*$$scope, text*/ 129) {
4820
4797
  button_changes.$$scope = { dirty, ctx };
4821
4798
  }
4822
4799
 
@@ -4843,6 +4820,7 @@ function instance$o($$self, $$props, $$invalidate) {
4843
4820
  let { text = 'ボタンラベル' } = $$props;
4844
4821
  let { onClick = { operation: 'none', args: [] } } = $$props;
4845
4822
  let { eventName = '' } = $$props;
4823
+ let { font = SYSTEM_FONT } = $$props;
4846
4824
  let { _buttonStyle = 'color:#ffffff; font-size:14px; font-weight:bold; justify-content:center; align-items:center; padding:1px 6px 1px 6px; line-height: 1.5;' } = $$props;
4847
4825
  let { _style = 'background-color: #000000; border-radius:4px; cursor: pointer' } = $$props;
4848
4826
 
@@ -4850,17 +4828,22 @@ function instance$o($$self, $$props, $$invalidate) {
4850
4828
  if ('text' in $$props) $$invalidate(0, text = $$props.text);
4851
4829
  if ('onClick' in $$props) $$invalidate(1, onClick = $$props.onClick);
4852
4830
  if ('eventName' in $$props) $$invalidate(2, eventName = $$props.eventName);
4853
- if ('_buttonStyle' in $$props) $$invalidate(4, _buttonStyle = $$props._buttonStyle);
4854
- if ('_style' in $$props) $$invalidate(5, _style = $$props._style);
4831
+ if ('font' in $$props) $$invalidate(4, font = $$props.font);
4832
+ if ('_buttonStyle' in $$props) $$invalidate(5, _buttonStyle = $$props._buttonStyle);
4833
+ if ('_style' in $$props) $$invalidate(6, _style = $$props._style);
4855
4834
  };
4856
4835
 
4857
4836
  $$self.$$.update = () => {
4858
- if ($$self.$$.dirty & /*_buttonStyle, _style*/ 48) {
4859
- $$invalidate(3, style = [..._buttonStyle.split(';'), ..._style.split(';')].filter(Boolean).join(';'));
4837
+ if ($$self.$$.dirty & /*font*/ 16) {
4838
+ addFont(font);
4839
+ }
4840
+
4841
+ if ($$self.$$.dirty & /*_buttonStyle, _style, font*/ 112) {
4842
+ $$invalidate(3, style = [..._buttonStyle.split(';'), ..._style.split(';'), `font-family:${font}`].filter(prop => prop).join(';'));
4860
4843
  }
4861
4844
  };
4862
4845
 
4863
- return [text, onClick, eventName, style, _buttonStyle, _style];
4846
+ return [text, onClick, eventName, style, font, _buttonStyle, _style];
4864
4847
  }
4865
4848
 
4866
4849
  class TextButtonElement extends SvelteComponent {
@@ -4877,8 +4860,9 @@ class TextButtonElement extends SvelteComponent {
4877
4860
  text: 0,
4878
4861
  onClick: 1,
4879
4862
  eventName: 2,
4880
- _buttonStyle: 4,
4881
- _style: 5
4863
+ font: 4,
4864
+ _buttonStyle: 5,
4865
+ _style: 6
4882
4866
  },
4883
4867
  add_css$n
4884
4868
  );
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plaidev/karte-action-sdk",
3
- "version": "1.1.180-28042066.2d66783f",
3
+ "version": "1.1.181-28042089.f7e0349f",
4
4
  "author": "Plaid Inc.",
5
5
  "license": "Apache-2.0",
6
6
  "module": "./dist/index.es.js",