@plaidev/karte-action-sdk 1.1.180-28042066.2d66783f → 1.1.181-28042947.ba6a2943

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.es.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { writable, get } from 'svelte/store';
2
2
  import { onMount as onMount$1, onDestroy as onDestroy$1, beforeUpdate as beforeUpdate$1, afterUpdate as afterUpdate$1, tick as tick$1, setContext, getContext, createEventDispatcher } from 'svelte';
3
- import { SvelteComponent, init, safe_not_equal, element, insert, noop, detach, component_subscribe, attr, create_slot, create_component, space, mount_component, update_slot_base, get_all_dirty_from_scope, get_slot_changes, transition_in, transition_out, destroy_component, append_styles, empty, group_outros, check_outros, listen, null_to_empty, is_function, add_render_callback, create_in_transition, binding_callbacks, set_style, svg_element, append, destroy_each, text, set_data, src_url_equal, HtmlTag, construct_svelte_component, subscribe } from 'svelte/internal';
3
+ import { SvelteComponent, init, safe_not_equal, element, insert, noop, detach, component_subscribe, attr, create_slot, create_component, space, mount_component, update_slot_base, get_all_dirty_from_scope, get_slot_changes, transition_in, transition_out, destroy_component, append_styles, empty, group_outros, check_outros, listen, assign, set_attributes, toggle_class, get_spread_update, null_to_empty, prevent_default, is_function, add_render_callback, create_in_transition, binding_callbacks, set_style, svg_element, append, destroy_each, text, set_data, src_url_equal, HtmlTag, construct_svelte_component, subscribe } from 'svelte/internal';
4
4
  import { linear, elasticOut, cubicOut } from 'svelte/easing';
5
5
 
6
6
  /** @internal */
@@ -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
  */
@@ -253,258 +480,21 @@ const DefaultSlideButton = {
253
480
  type: 'icon',
254
481
  icon: 'chevron-left',
255
482
  color: '#999',
256
- fill: '#999',
257
- size: '20px',
258
- };
259
- /** @internal */
260
- const DefaultSlideNavigationButton = {
261
- type: 'circle',
262
- size: '8px',
263
- color: '#ddd',
264
- colorActive: '#666',
265
- };
266
- /** @internal */
267
- const DefaultFormButtonColor = {
268
- main: '#2aab9f',
269
- sub: '#fff',
270
- };
271
-
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(';');
483
+ fill: '#999',
484
+ size: '20px',
346
485
  };
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
486
  /** @internal */
450
- function hasSuffix(value, suffix) {
451
- return new RegExp(`[0-9]${suffix}$`).test(value);
452
- }
487
+ const DefaultSlideNavigationButton = {
488
+ type: 'circle',
489
+ size: '8px',
490
+ color: '#ddd',
491
+ colorActive: '#666',
492
+ };
453
493
  /** @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;
494
+ const DefaultFormButtonColor = {
495
+ main: '#2aab9f',
496
+ sub: '#fff',
497
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
498
 
509
499
  /**
510
500
  * Store to handle action setting
@@ -2963,27 +2953,73 @@ class BackgroundOverlay extends SvelteComponent {
2963
2953
  }
2964
2954
  }
2965
2955
 
2956
+ /**
2957
+ * data属性とカスタムのイベントハンドラによるstopPropagation。
2958
+ * デフォルトのstopPropagationだと伝播先のpreventDefaultも無効化されてしまうため、それの対策。
2959
+ */
2960
+ function createDataAttrKey(eventName) {
2961
+ return `data-stop-propagation-${eventName}-${actionId}`;
2962
+ }
2963
+ function dataAttrStopPropagation(eventName) {
2964
+ const dataAttr = createDataAttrKey(eventName);
2965
+ return {
2966
+ [dataAttr]: true,
2967
+ };
2968
+ }
2969
+ function checkStopPropagation(eventName, handler) {
2970
+ const dataAttr = createDataAttrKey(eventName);
2971
+ return function (event) {
2972
+ let el = event.target;
2973
+ do {
2974
+ const _el = el;
2975
+ if (_el === this) {
2976
+ // handlerの中で伝播先のDOMが同期的に消されると
2977
+ // preventDefaultが呼ばれずにデフォルトの挙動だけ残ってしまう
2978
+ setTimeout(() => {
2979
+ handler(event);
2980
+ }, 0);
2981
+ break;
2982
+ }
2983
+ if (_el.hasAttribute(dataAttr))
2984
+ break;
2985
+ el = el.parentElement || el.parentNode;
2986
+ } while (el !== null && el.nodeType === 1);
2987
+ };
2988
+ }
2989
+
2966
2990
  /* src/components/Button.svelte generated by Svelte v3.53.1 */
2967
2991
 
2968
2992
  function add_css$r(target) {
2969
2993
  append_styles(target, "svelte-1tg0tf", ".button.svelte-1tg0tf{display:block;text-decoration:none;color:inherit;border:none;background:none;margin:0;padding:0}.button.svelte-1tg0tf:link,.button.svelte-1tg0tf:visited,.button.svelte-1tg0tf:active,.button.svelte-1tg0tf:hover{color:inherit}");
2970
2994
  }
2971
2995
 
2972
- // (49:0) {:else}
2996
+ // (50:0) {:else}
2973
2997
  function create_else_block$3(ctx) {
2974
2998
  let button;
2975
2999
  let current;
2976
3000
  let mounted;
2977
3001
  let dispose;
2978
- const default_slot_template = /*#slots*/ ctx[10].default;
2979
- const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[9], null);
3002
+ const default_slot_template = /*#slots*/ ctx[9].default;
3003
+ const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[8], null);
3004
+
3005
+ let button_levels = [
3006
+ { class: BUTTON_CLASS },
3007
+ { style: /*style*/ ctx[1] },
3008
+ dataAttrStopPropagation('click')
3009
+ ];
3010
+
3011
+ let button_data = {};
3012
+
3013
+ for (let i = 0; i < button_levels.length; i += 1) {
3014
+ button_data = assign(button_data, button_levels[i]);
3015
+ }
2980
3016
 
2981
3017
  return {
2982
3018
  c() {
2983
3019
  button = element("button");
2984
3020
  if (default_slot) default_slot.c();
2985
- attr(button, "class", "" + (null_to_empty(BUTTON_CLASS) + " svelte-1tg0tf"));
2986
- attr(button, "style", /*style*/ ctx[1]);
3021
+ set_attributes(button, button_data);
3022
+ toggle_class(button, "svelte-1tg0tf", true);
2987
3023
  },
2988
3024
  m(target, anchor) {
2989
3025
  insert(target, button, anchor);
@@ -2992,32 +3028,37 @@ function create_else_block$3(ctx) {
2992
3028
  default_slot.m(button, null);
2993
3029
  }
2994
3030
 
3031
+ if (button.autofocus) button.focus();
2995
3032
  current = true;
2996
3033
 
2997
3034
  if (!mounted) {
2998
- dispose = listen(button, "click", /*handleClickButton*/ ctx[3]);
3035
+ dispose = listen(button, "click", checkStopPropagation('click', /*handleClick*/ ctx[3]));
2999
3036
  mounted = true;
3000
3037
  }
3001
3038
  },
3002
3039
  p(ctx, dirty) {
3003
3040
  if (default_slot) {
3004
- if (default_slot.p && (!current || dirty & /*$$scope*/ 512)) {
3041
+ if (default_slot.p && (!current || dirty & /*$$scope*/ 256)) {
3005
3042
  update_slot_base(
3006
3043
  default_slot,
3007
3044
  default_slot_template,
3008
3045
  ctx,
3009
- /*$$scope*/ ctx[9],
3046
+ /*$$scope*/ ctx[8],
3010
3047
  !current
3011
- ? get_all_dirty_from_scope(/*$$scope*/ ctx[9])
3012
- : get_slot_changes(default_slot_template, /*$$scope*/ ctx[9], dirty, null),
3048
+ ? get_all_dirty_from_scope(/*$$scope*/ ctx[8])
3049
+ : get_slot_changes(default_slot_template, /*$$scope*/ ctx[8], dirty, null),
3013
3050
  null
3014
3051
  );
3015
3052
  }
3016
3053
  }
3017
3054
 
3018
- if (!current || dirty & /*style*/ 2) {
3019
- attr(button, "style", /*style*/ ctx[1]);
3020
- }
3055
+ set_attributes(button, button_data = get_spread_update(button_levels, [
3056
+ { class: BUTTON_CLASS },
3057
+ (!current || dirty & /*style*/ 2) && { style: /*style*/ ctx[1] },
3058
+ dataAttrStopPropagation('click')
3059
+ ]));
3060
+
3061
+ toggle_class(button, "svelte-1tg0tf", true);
3021
3062
  },
3022
3063
  i(local) {
3023
3064
  if (current) return;
@@ -3037,12 +3078,12 @@ function create_else_block$3(ctx) {
3037
3078
  };
3038
3079
  }
3039
3080
 
3040
- // (45:39)
3081
+ // (46:39)
3041
3082
  function create_if_block_2(ctx) {
3042
3083
  let div;
3043
3084
  let current;
3044
- const default_slot_template = /*#slots*/ ctx[10].default;
3045
- const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[9], null);
3085
+ const default_slot_template = /*#slots*/ ctx[9].default;
3086
+ const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[8], null);
3046
3087
 
3047
3088
  return {
3048
3089
  c() {
@@ -3062,15 +3103,15 @@ function create_if_block_2(ctx) {
3062
3103
  },
3063
3104
  p(ctx, dirty) {
3064
3105
  if (default_slot) {
3065
- if (default_slot.p && (!current || dirty & /*$$scope*/ 512)) {
3106
+ if (default_slot.p && (!current || dirty & /*$$scope*/ 256)) {
3066
3107
  update_slot_base(
3067
3108
  default_slot,
3068
3109
  default_slot_template,
3069
3110
  ctx,
3070
- /*$$scope*/ ctx[9],
3111
+ /*$$scope*/ ctx[8],
3071
3112
  !current
3072
- ? get_all_dirty_from_scope(/*$$scope*/ ctx[9])
3073
- : get_slot_changes(default_slot_template, /*$$scope*/ ctx[9], dirty, null),
3113
+ ? get_all_dirty_from_scope(/*$$scope*/ ctx[8])
3114
+ : get_slot_changes(default_slot_template, /*$$scope*/ ctx[8], dirty, null),
3074
3115
  null
3075
3116
  );
3076
3117
  }
@@ -3096,7 +3137,7 @@ function create_if_block_2(ctx) {
3096
3137
  };
3097
3138
  }
3098
3139
 
3099
- // (41:41)
3140
+ // (35:41)
3100
3141
  function create_if_block_1$2(ctx) {
3101
3142
  let a;
3102
3143
  let a_href_value;
@@ -3104,17 +3145,33 @@ function create_if_block_1$2(ctx) {
3104
3145
  let current;
3105
3146
  let mounted;
3106
3147
  let dispose;
3107
- const default_slot_template = /*#slots*/ ctx[10].default;
3108
- const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[9], null);
3148
+ const default_slot_template = /*#slots*/ ctx[9].default;
3149
+ const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[8], null);
3150
+
3151
+ let a_levels = [
3152
+ { class: BUTTON_CLASS },
3153
+ { style: /*style*/ ctx[1] },
3154
+ {
3155
+ href: a_href_value = /*onClick*/ ctx[0].args[0]
3156
+ },
3157
+ {
3158
+ target: a_target_value = /*onClick*/ ctx[0].args[1] === true ? '_blank' : null
3159
+ },
3160
+ dataAttrStopPropagation('click')
3161
+ ];
3162
+
3163
+ let a_data = {};
3164
+
3165
+ for (let i = 0; i < a_levels.length; i += 1) {
3166
+ a_data = assign(a_data, a_levels[i]);
3167
+ }
3109
3168
 
3110
3169
  return {
3111
3170
  c() {
3112
3171
  a = element("a");
3113
3172
  if (default_slot) default_slot.c();
3114
- attr(a, "class", "" + (null_to_empty(BUTTON_CLASS) + " svelte-1tg0tf"));
3115
- attr(a, "style", /*style*/ ctx[1]);
3116
- attr(a, "href", a_href_value = /*onClick*/ ctx[0].args[0]);
3117
- attr(a, "target", a_target_value = /*onClick*/ ctx[0].args[1] === true ? '_blank' : null);
3173
+ set_attributes(a, a_data);
3174
+ toggle_class(a, "svelte-1tg0tf", true);
3118
3175
  },
3119
3176
  m(target, anchor) {
3120
3177
  insert(target, a, anchor);
@@ -3126,37 +3183,35 @@ function create_if_block_1$2(ctx) {
3126
3183
  current = true;
3127
3184
 
3128
3185
  if (!mounted) {
3129
- dispose = listen(a, "click", /*handleClickAnchor*/ ctx[4]);
3186
+ dispose = listen(a, "click", prevent_default(checkStopPropagation('click', /*handleClick*/ ctx[3])));
3130
3187
  mounted = true;
3131
3188
  }
3132
3189
  },
3133
3190
  p(ctx, dirty) {
3134
3191
  if (default_slot) {
3135
- if (default_slot.p && (!current || dirty & /*$$scope*/ 512)) {
3192
+ if (default_slot.p && (!current || dirty & /*$$scope*/ 256)) {
3136
3193
  update_slot_base(
3137
3194
  default_slot,
3138
3195
  default_slot_template,
3139
3196
  ctx,
3140
- /*$$scope*/ ctx[9],
3197
+ /*$$scope*/ ctx[8],
3141
3198
  !current
3142
- ? get_all_dirty_from_scope(/*$$scope*/ ctx[9])
3143
- : get_slot_changes(default_slot_template, /*$$scope*/ ctx[9], dirty, null),
3199
+ ? get_all_dirty_from_scope(/*$$scope*/ ctx[8])
3200
+ : get_slot_changes(default_slot_template, /*$$scope*/ ctx[8], dirty, null),
3144
3201
  null
3145
3202
  );
3146
3203
  }
3147
3204
  }
3148
3205
 
3149
- if (!current || dirty & /*style*/ 2) {
3150
- attr(a, "style", /*style*/ ctx[1]);
3151
- }
3152
-
3153
- if (!current || dirty & /*onClick*/ 1 && a_href_value !== (a_href_value = /*onClick*/ ctx[0].args[0])) {
3154
- attr(a, "href", a_href_value);
3155
- }
3206
+ set_attributes(a, a_data = get_spread_update(a_levels, [
3207
+ { class: BUTTON_CLASS },
3208
+ (!current || dirty & /*style*/ 2) && { style: /*style*/ ctx[1] },
3209
+ (!current || dirty & /*onClick*/ 1 && a_href_value !== (a_href_value = /*onClick*/ ctx[0].args[0])) && { href: a_href_value },
3210
+ (!current || dirty & /*onClick*/ 1 && a_target_value !== (a_target_value = /*onClick*/ ctx[0].args[1] === true ? '_blank' : null)) && { target: a_target_value },
3211
+ dataAttrStopPropagation('click')
3212
+ ]));
3156
3213
 
3157
- if (!current || dirty & /*onClick*/ 1 && a_target_value !== (a_target_value = /*onClick*/ ctx[0].args[1] === true ? '_blank' : null)) {
3158
- attr(a, "target", a_target_value);
3159
- }
3214
+ toggle_class(a, "svelte-1tg0tf", true);
3160
3215
  },
3161
3216
  i(local) {
3162
3217
  if (current) return;
@@ -3176,12 +3231,12 @@ function create_if_block_1$2(ctx) {
3176
3231
  };
3177
3232
  }
3178
3233
 
3179
- // (37:0) {#if disabled}
3234
+ // (31:0) {#if disabled}
3180
3235
  function create_if_block$6(ctx) {
3181
3236
  let div;
3182
3237
  let current;
3183
- const default_slot_template = /*#slots*/ ctx[10].default;
3184
- const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[9], null);
3238
+ const default_slot_template = /*#slots*/ ctx[9].default;
3239
+ const default_slot = create_slot(default_slot_template, ctx, /*$$scope*/ ctx[8], null);
3185
3240
 
3186
3241
  return {
3187
3242
  c() {
@@ -3201,15 +3256,15 @@ function create_if_block$6(ctx) {
3201
3256
  },
3202
3257
  p(ctx, dirty) {
3203
3258
  if (default_slot) {
3204
- if (default_slot.p && (!current || dirty & /*$$scope*/ 512)) {
3259
+ if (default_slot.p && (!current || dirty & /*$$scope*/ 256)) {
3205
3260
  update_slot_base(
3206
3261
  default_slot,
3207
3262
  default_slot_template,
3208
3263
  ctx,
3209
- /*$$scope*/ ctx[9],
3264
+ /*$$scope*/ ctx[8],
3210
3265
  !current
3211
- ? get_all_dirty_from_scope(/*$$scope*/ ctx[9])
3212
- : get_slot_changes(default_slot_template, /*$$scope*/ ctx[9], dirty, null),
3266
+ ? get_all_dirty_from_scope(/*$$scope*/ ctx[8])
3267
+ : get_slot_changes(default_slot_template, /*$$scope*/ ctx[8], dirty, null),
3213
3268
  null
3214
3269
  );
3215
3270
  }
@@ -3317,17 +3372,7 @@ function instance$u($$self, $$props, $$invalidate) {
3317
3372
  let { eventValue = undefined } = $$props;
3318
3373
  let { style = '' } = $$props;
3319
3374
 
3320
- function handleClickButton() {
3321
- if (eventName) {
3322
- send_event(eventName, eventValue);
3323
- }
3324
-
3325
- execOnClickOperation(onClick);
3326
- }
3327
-
3328
- function handleClickAnchor(e) {
3329
- e.preventDefault();
3330
-
3375
+ function handleClick() {
3331
3376
  if (eventName) {
3332
3377
  send_event(eventName, eventValue);
3333
3378
  }
@@ -3337,18 +3382,18 @@ function instance$u($$self, $$props, $$invalidate) {
3337
3382
 
3338
3383
  const { path: statePath } = getStateItemContext() ?? { path: '/' };
3339
3384
  const valuesAreValid = getValuesAreValidReader(statePath);
3340
- component_subscribe($$self, valuesAreValid, value => $$invalidate(8, $valuesAreValid = value));
3385
+ component_subscribe($$self, valuesAreValid, value => $$invalidate(7, $valuesAreValid = value));
3341
3386
 
3342
3387
  $$self.$$set = $$props => {
3343
3388
  if ('onClick' in $$props) $$invalidate(0, onClick = $$props.onClick);
3344
- if ('eventName' in $$props) $$invalidate(6, eventName = $$props.eventName);
3345
- if ('eventValue' in $$props) $$invalidate(7, eventValue = $$props.eventValue);
3389
+ if ('eventName' in $$props) $$invalidate(5, eventName = $$props.eventName);
3390
+ if ('eventValue' in $$props) $$invalidate(6, eventValue = $$props.eventValue);
3346
3391
  if ('style' in $$props) $$invalidate(1, style = $$props.style);
3347
- if ('$$scope' in $$props) $$invalidate(9, $$scope = $$props.$$scope);
3392
+ if ('$$scope' in $$props) $$invalidate(8, $$scope = $$props.$$scope);
3348
3393
  };
3349
3394
 
3350
3395
  $$self.$$.update = () => {
3351
- if ($$self.$$.dirty & /*onClick, $valuesAreValid*/ 257) {
3396
+ if ($$self.$$.dirty & /*onClick, $valuesAreValid*/ 129) {
3352
3397
  $$invalidate(2, disabled = (() => {
3353
3398
  let isEnabled = true;
3354
3399
 
@@ -3367,8 +3412,7 @@ function instance$u($$self, $$props, $$invalidate) {
3367
3412
  onClick,
3368
3413
  style,
3369
3414
  disabled,
3370
- handleClickButton,
3371
- handleClickAnchor,
3415
+ handleClick,
3372
3416
  valuesAreValid,
3373
3417
  eventName,
3374
3418
  eventValue,
@@ -3390,8 +3434,8 @@ class Button extends SvelteComponent {
3390
3434
  safe_not_equal,
3391
3435
  {
3392
3436
  onClick: 0,
3393
- eventName: 6,
3394
- eventValue: 7,
3437
+ eventName: 5,
3438
+ eventValue: 6,
3395
3439
  style: 1
3396
3440
  },
3397
3441
  add_css$r
@@ -4737,7 +4781,7 @@ function add_css$n(target) {
4737
4781
  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
4782
  }
4739
4783
 
4740
- // (36:2) <Button onClick={onClick} {style} {eventName}>
4784
+ // (46:2) <Button onClick={onClick} {style} {eventName}>
4741
4785
  function create_default_slot$5(ctx) {
4742
4786
  let rendertext;
4743
4787
  let current;
@@ -4773,9 +4817,6 @@ function create_default_slot$5(ctx) {
4773
4817
 
4774
4818
  function create_fragment$o(ctx) {
4775
4819
  let div;
4776
- let link;
4777
- let link_href_value;
4778
- let t;
4779
4820
  let button;
4780
4821
  let current;
4781
4822
 
@@ -4792,31 +4833,21 @@ function create_fragment$o(ctx) {
4792
4833
  return {
4793
4834
  c() {
4794
4835
  div = element("div");
4795
- link = element("link");
4796
- t = space();
4797
4836
  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
4837
  attr(div, "class", "text-button-element svelte-wb7ek");
4801
4838
  },
4802
4839
  m(target, anchor) {
4803
4840
  insert(target, div, anchor);
4804
- append(div, link);
4805
- append(div, t);
4806
4841
  mount_component(button, div, null);
4807
4842
  current = true;
4808
4843
  },
4809
4844
  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
4845
  const button_changes = {};
4815
4846
  if (dirty & /*onClick*/ 2) button_changes.onClick = /*onClick*/ ctx[1];
4816
4847
  if (dirty & /*style*/ 8) button_changes.style = /*style*/ ctx[3];
4817
4848
  if (dirty & /*eventName*/ 4) button_changes.eventName = /*eventName*/ ctx[2];
4818
4849
 
4819
- if (dirty & /*$$scope, text*/ 65) {
4850
+ if (dirty & /*$$scope, text*/ 129) {
4820
4851
  button_changes.$$scope = { dirty, ctx };
4821
4852
  }
4822
4853
 
@@ -4843,6 +4874,7 @@ function instance$o($$self, $$props, $$invalidate) {
4843
4874
  let { text = 'ボタンラベル' } = $$props;
4844
4875
  let { onClick = { operation: 'none', args: [] } } = $$props;
4845
4876
  let { eventName = '' } = $$props;
4877
+ let { font = SYSTEM_FONT } = $$props;
4846
4878
  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
4879
  let { _style = 'background-color: #000000; border-radius:4px; cursor: pointer' } = $$props;
4848
4880
 
@@ -4850,17 +4882,22 @@ function instance$o($$self, $$props, $$invalidate) {
4850
4882
  if ('text' in $$props) $$invalidate(0, text = $$props.text);
4851
4883
  if ('onClick' in $$props) $$invalidate(1, onClick = $$props.onClick);
4852
4884
  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);
4885
+ if ('font' in $$props) $$invalidate(4, font = $$props.font);
4886
+ if ('_buttonStyle' in $$props) $$invalidate(5, _buttonStyle = $$props._buttonStyle);
4887
+ if ('_style' in $$props) $$invalidate(6, _style = $$props._style);
4855
4888
  };
4856
4889
 
4857
4890
  $$self.$$.update = () => {
4858
- if ($$self.$$.dirty & /*_buttonStyle, _style*/ 48) {
4859
- $$invalidate(3, style = [..._buttonStyle.split(';'), ..._style.split(';')].filter(Boolean).join(';'));
4891
+ if ($$self.$$.dirty & /*font*/ 16) {
4892
+ addFont(font);
4893
+ }
4894
+
4895
+ if ($$self.$$.dirty & /*_buttonStyle, _style, font*/ 112) {
4896
+ $$invalidate(3, style = [..._buttonStyle.split(';'), ..._style.split(';'), `font-family:${font}`].filter(prop => prop).join(';'));
4860
4897
  }
4861
4898
  };
4862
4899
 
4863
- return [text, onClick, eventName, style, _buttonStyle, _style];
4900
+ return [text, onClick, eventName, style, font, _buttonStyle, _style];
4864
4901
  }
4865
4902
 
4866
4903
  class TextButtonElement extends SvelteComponent {
@@ -4877,8 +4914,9 @@ class TextButtonElement extends SvelteComponent {
4877
4914
  text: 0,
4878
4915
  onClick: 1,
4879
4916
  eventName: 2,
4880
- _buttonStyle: 4,
4881
- _style: 5
4917
+ font: 4,
4918
+ _buttonStyle: 5,
4919
+ _style: 6
4882
4920
  },
4883
4921
  add_css$n
4884
4922
  );
@@ -7277,7 +7315,7 @@ function get_each_context(ctx, list, i) {
7277
7315
  return child_ctx;
7278
7316
  }
7279
7317
 
7280
- // (369:2) {#if isVisiblePrevButton}
7318
+ // (371:2) {#if isVisiblePrevButton}
7281
7319
  function create_if_block_1(ctx) {
7282
7320
  let div1;
7283
7321
  let div0;
@@ -7328,7 +7366,7 @@ function create_if_block_1(ctx) {
7328
7366
  };
7329
7367
  }
7330
7368
 
7331
- // (378:2) {#if isVisibleNextButton}
7369
+ // (380:2) {#if isVisibleNextButton}
7332
7370
  function create_if_block$1(ctx) {
7333
7371
  let div1;
7334
7372
  let div0;
@@ -7379,7 +7417,7 @@ function create_if_block$1(ctx) {
7379
7417
  };
7380
7418
  }
7381
7419
 
7382
- // (391:4) {#each items as _, i}
7420
+ // (393:4) {#each items as _, i}
7383
7421
  function create_each_block(ctx) {
7384
7422
  let div1;
7385
7423
  let div0;
@@ -7452,6 +7490,13 @@ function create_fragment$b(ctx) {
7452
7490
  each_blocks[i] = create_each_block(get_each_context(ctx, each_value, i));
7453
7491
  }
7454
7492
 
7493
+ let div3_levels = [{ class: "root" }, dataAttrStopPropagation('click')];
7494
+ let div3_data = {};
7495
+
7496
+ for (let i = 0; i < div3_levels.length; i += 1) {
7497
+ div3_data = assign(div3_data, div3_levels[i]);
7498
+ }
7499
+
7455
7500
  return {
7456
7501
  c() {
7457
7502
  div3 = element("div");
@@ -7475,7 +7520,8 @@ function create_fragment$b(ctx) {
7475
7520
  attr(div1, "style", /*_style*/ ctx[0]);
7476
7521
  attr(div2, "class", "navigation svelte-1wlcw5a");
7477
7522
  attr(div2, "style", /*navigationStyle*/ ctx[4]);
7478
- attr(div3, "class", "root svelte-1wlcw5a");
7523
+ set_attributes(div3, div3_data);
7524
+ toggle_class(div3, "svelte-1wlcw5a", true);
7479
7525
  },
7480
7526
  m(target, anchor) {
7481
7527
  insert(target, div3, anchor);
@@ -7581,6 +7627,9 @@ function create_fragment$b(ctx) {
7581
7627
  if (!current || dirty[0] & /*navigationStyle*/ 16) {
7582
7628
  attr(div2, "style", /*navigationStyle*/ ctx[4]);
7583
7629
  }
7630
+
7631
+ set_attributes(div3, div3_data = get_spread_update(div3_levels, [{ class: "root" }, dataAttrStopPropagation('click')]));
7632
+ toggle_class(div3, "svelte-1wlcw5a", true);
7584
7633
  },
7585
7634
  i(local) {
7586
7635
  if (current) return;
@@ -7834,7 +7883,9 @@ function instance$b($$self, $$props, $$invalidate) {
7834
7883
  }
7835
7884
 
7836
7885
  function handleTouchMove(event) {
7886
+ // ウィンドウのスクロールを防ぐ
7837
7887
  event.preventDefault();
7888
+
7838
7889
  const clientX = event.touches[0].clientX;
7839
7890
  const timeStamp = event.timeStamp;
7840
7891
  handleMoving(clientX, timeStamp);