@plaidev/karte-action-sdk 1.1.176 → 1.1.177-28039844.a230804c

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,8 +1,33 @@
1
- import 'svelte/easing';
2
1
  import { writable, get } from 'svelte/store';
3
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';
4
3
  import { SvelteComponent, init, safe_not_equal, create_slot, update_slot_base, get_all_dirty_from_scope, get_slot_changes, transition_in, transition_out, append_styles, empty, insert_hydration, group_outros, check_outros, detach, component_subscribe, element, space, claim_element, children, claim_space, attr, noop, listen, null_to_empty, is_function, create_component, claim_component, mount_component, destroy_component, add_render_callback, create_in_transition, binding_callbacks, set_style, svg_element, claim_svg_element, append_hydration, destroy_each, text, claim_text, set_data, src_url_equal, HtmlTagHydration, claim_html_tag, construct_svelte_component, subscribe } from 'svelte/internal';
4
+ import 'svelte/easing';
5
+
6
+ /** @internal */
7
+ const ACTION_HOOK_LABEL = '__ACTION_HOOK__';
8
+ /** @internal */
9
+ const KARTE_ACTION_ROOT = 'karte-action-root';
10
+ /** @internal */
11
+ const KARTE_ACTION_RID = 'karte-action-rid';
12
+ /** @internal */
13
+ const KARTE_ACTION_SHORTEN_ID = 'karte-action-id';
14
+ /** @internal */
15
+ const ALL_ACTION_ID = 'KARTE_ALL_ACTION_ID';
16
+ /** @internal */
17
+ const ALL_ACTION_SHORTEN_ID = 'KARTE_ALL_ACTION_SHORTEN_ID';
18
+ // -------- The following codes are deprecated --------
19
+ /**
20
+ * 非推奨
21
+ *
22
+ * @deprecated 非推奨
23
+ *
24
+ * @internal
25
+ */
26
+ const KARTE_MODAL_ROOT = 'karte-modal-root';
5
27
 
28
+ /**
29
+ * 静的変数に関連するコードを管理する
30
+ */
6
31
  /** @internal */
7
32
  const PropTypes = [
8
33
  'BooleanKeyword',
@@ -247,6 +272,10 @@ const NOOP = (_args) => { }; // eslint-disable-line @typescript-eslint/no-unused
247
272
  const isPreview = () => {
248
273
  return true;
249
274
  };
275
+ // prettier-ignore
276
+ /** @internal */
277
+ const actionId = ALL_ACTION_ID
278
+ ;
250
279
  /** @internal */
251
280
  const handleFocus = (node) => (e) => {
252
281
  if (node) {
@@ -445,6 +474,23 @@ function hasSuffix(value, suffix) {
445
474
  function getGoogleFontsParam() {
446
475
  return 'family=' + Fonts.map(font => font.replace(/ /g, '+')).join('&family=');
447
476
  }
477
+ /** @internal */
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
+ };
448
494
 
449
495
  /**
450
496
  * Store to handle action setting
@@ -807,385 +853,109 @@ function resetVariables() {
807
853
  */
808
854
  const formData = writable({});
809
855
 
810
- function isEmpty(value) {
811
- if (Array.isArray(value)) {
812
- return value.length === 0;
813
- }
814
- else {
815
- return !value;
816
- }
817
- }
856
+ /**
857
+ * アクションのログの記録の管理
858
+ */
859
+ const MESSAGES_LIMIT = 1000;
860
+ const EVENTS_LIMIT = 1000;
861
+ // 実行ログ
862
+ let logs = [];
863
+ // KARTEイベント
864
+ let events = [];
818
865
  /** @internal */
819
- function registerInput({ name, statePath, validator = () => true, initialValue, }) {
820
- const writableValue = {
821
- subscribe(run) {
822
- return formData.subscribe(formData => {
823
- run(formData[name]?.value);
824
- });
825
- },
826
- set(value) {
827
- formData.update(prev => ({
828
- ...prev,
829
- [name]: {
830
- statePath,
831
- value,
832
- isValid: validator(value),
833
- },
834
- }));
835
- },
836
- update(updater) {
837
- formData.update(prev => {
838
- const prevValue = prev[name]?.value;
839
- return {
840
- ...prev,
841
- [name]: {
842
- statePath,
843
- value: updater(prevValue),
844
- isValid: validator(prevValue),
845
- },
846
- };
847
- });
848
- },
849
- };
850
- if (isEmpty(get(writableValue))) {
851
- writableValue.set(initialValue);
852
- }
853
- return writableValue;
866
+ function getLogs() {
867
+ return logs;
854
868
  }
855
869
  /** @internal */
856
- const getValuesAreValidReader = statePath => ({
857
- subscribe(callback) {
858
- return formData.subscribe(formData => {
859
- const valuesAreValid = Object.entries(formData)
860
- .filter(([_, { statePath: s }]) => s === statePath) // eslint-disable-line @typescript-eslint/no-unused-vars
861
- .every(([_, { isValid }]) => isValid); // eslint-disable-line @typescript-eslint/no-unused-vars
862
- callback(valuesAreValid);
863
- });
870
+ function getEvents() {
871
+ return events;
872
+ }
873
+ // iframe内の場合は親windowを参照する
874
+ function w(w) {
875
+ return w.parent === w ? w : w.parent;
876
+ }
877
+ /**
878
+ * ログを送信する関数群
879
+ *
880
+ * @internal
881
+ */
882
+ const logger = {
883
+ info: (...messages) => {
884
+ const log = cloneToJson({ level: 'info', messages, date: new Date() });
885
+ w(window).postMessage({ type: 'KARTE-ACTION-LOGGER', detail: { method: 'log', log } }, '*');
864
886
  },
865
- });
866
- function formDataToEventValues(campaignId, formData) {
867
- const questions = [];
868
- const answersMap = {};
869
- Object.entries(formData).forEach(([name, dataItem]) => {
870
- questions.push(name);
871
- const value = dataItem.value;
872
- const answerKey = `question_${name}`;
873
- if (Array.isArray(value)) {
874
- answersMap[answerKey] = {
875
- choices: value,
876
- };
887
+ log: (...messages) => {
888
+ const log = cloneToJson({ level: 'info', messages, date: new Date() });
889
+ w(window).postMessage({ type: 'KARTE-ACTION-LOGGER', detail: { method: 'log', log } }, '*');
890
+ },
891
+ error: (...messages) => {
892
+ const log = cloneToJson({ level: 'error', messages, date: new Date() });
893
+ w(window).postMessage({ type: 'KARTE-ACTION-LOGGER', detail: { method: 'log', log } }, '*');
894
+ },
895
+ warn: (...messages) => {
896
+ const log = cloneToJson({ level: 'warn', messages, date: new Date() });
897
+ w(window).postMessage({ type: 'KARTE-ACTION-LOGGER', detail: { method: 'log', log } }, '*');
898
+ },
899
+ system: (...messages) => {
900
+ const log = cloneToJson({ level: 'system', messages, date: new Date() });
901
+ w(window).postMessage({ type: 'KARTE-ACTION-LOGGER', detail: { method: 'log', log } }, '*');
902
+ },
903
+ event: (name, values) => {
904
+ const event = values ? { name, values, date: new Date() } : { name, date: new Date() };
905
+ w(window).postMessage({
906
+ type: 'KARTE-ACTION-LOGGER',
907
+ detail: { method: 'event', event, values: values },
908
+ }, '*');
909
+ },
910
+ clear: () => {
911
+ w(window).postMessage({ type: 'KARTE-ACTION-LOGGER', detail: { method: 'clear' } }, '*');
912
+ },
913
+ clearEvents: () => {
914
+ w(window).postMessage({ type: 'KARTE-ACTION-LOGGER', detail: { method: 'clearEvents' } }, '*');
915
+ },
916
+ };
917
+ /**
918
+ * メッセージを実行ログに表示する
919
+ *
920
+ * @internal
921
+ */
922
+ function listenLogger() {
923
+ const handler = (event) => {
924
+ const { type, detail } = event.data;
925
+ if (event.origin !== location.origin) {
926
+ return;
877
927
  }
878
- else if (typeof value === 'string') {
879
- answersMap[answerKey] = {
880
- free_answer: value,
881
- };
928
+ if (type !== 'KARTE-ACTION-LOGGER') {
929
+ return;
930
+ }
931
+ if (detail.method === 'clear') {
932
+ logs = [];
933
+ }
934
+ else if (detail.method === 'clearEvents') {
935
+ events = [];
936
+ }
937
+ else if (detail.method === 'log') {
938
+ if (MESSAGES_LIMIT <= logs.length) {
939
+ logs.shift();
940
+ }
941
+ const { level, messages } = detail.log;
942
+ const log = { level, messages, date: new Date() };
943
+ logs.push(log);
944
+ }
945
+ else if (detail.method === 'event') {
946
+ if (EVENTS_LIMIT <= events.length) {
947
+ events.shift();
948
+ }
949
+ const { name, values } = detail.event;
950
+ const karteEvent = values
951
+ ? { name, values, date: new Date() }
952
+ : { name, date: new Date() };
953
+ events.push(karteEvent);
882
954
  }
883
- });
884
- return {
885
- [campaignId]: {
886
- questions,
887
- ...answersMap,
888
- },
889
- };
890
- }
891
- /** @internal */
892
- function submit() {
893
- const systemConfig = getSystem();
894
- const campaignId = systemConfig.campaignId;
895
- if (campaignId) {
896
- const formData$1 = get(formData);
897
- const values = formDataToEventValues(campaignId, formData$1);
898
- return values;
899
- }
900
- {
901
- const formData$1 = get(formData);
902
- const values = formDataToEventValues('mock', formData$1);
903
- console.log('values: ', values);
904
- return values;
905
- }
906
- }
907
-
908
- /** @internal */
909
- const ALL_ACTION_ID = 'KARTE_ALL_ACTION_ID';
910
- /** @internal */
911
- const ALL_ACTION_SHORTEN_ID = 'KARTE_ALL_ACTION_SHORTEN_ID';
912
- // prettier-ignore
913
- /** @internal */
914
- const actionId = ALL_ACTION_ID
915
- ;
916
- /** @internal */
917
- const ACTION_SHOW_EVENT = `KARTE-ACTION-SHOW-${actionId}`;
918
- /** @internal */
919
- const ACTION_CLOSE_EVENT = `KARTE-ACTION-CLOSE-${actionId}`;
920
- /** @internal */
921
- const ACTION_DESTROY_EVENT = `KARTE-ACTION-DESTROY-${actionId}`;
922
- /** @internal */
923
- const ACTION_CHANGE_STATE_EVENT = `KARTE-ACTION-CHANGE-STATE-${actionId}`;
924
- /** @internal */
925
- const handleState = (event) => {
926
- if (event.detail.actionId === actionId || event.detail.actionId === ALL_ACTION_ID) {
927
- send_event('_message_state_changed', { state: event.detail.to });
928
- setState$1(event.detail.to, { disableInPreview: event.detail.disableInPreview });
929
- }
930
- };
931
- /** @internal */
932
- const initialize = (setting) => {
933
- const newSetting = setSetting(setting);
934
- if (newSetting.initialState) {
935
- setState$1(newSetting.initialState);
936
- }
937
- setOpened(true);
938
- setClosed(false); // deprecated
939
- return () => finalize();
940
- };
941
- /** @internal */
942
- const finalize = () => {
943
- resetSetting();
944
- };
945
- /** @internal */
946
- const send_event = (event_name, values) => {
947
- const setting = getSetting();
948
- setting?.send?.(event_name, values);
949
- };
950
- function _moveTo(to) {
951
- window.dispatchEvent(new CustomEvent(ACTION_CHANGE_STATE_EVENT, { detail: { to, actionId } }));
952
- }
953
- /** @internal */
954
- const moveTo = (to) => () => {
955
- _moveTo(to);
956
- };
957
- /** @internal */
958
- const linkTo = (to, targetBlank = true) => () => {
959
- send_event('message_click', { url: to, state: getState$1() });
960
- if (targetBlank) {
961
- window.open(to);
962
- }
963
- else {
964
- location.href = to;
965
- }
966
- };
967
- /** @internal */
968
- const closeApp = (trigger) => () => {
969
- window.dispatchEvent(new CustomEvent(ACTION_CLOSE_EVENT, { detail: { trigger } }));
970
- };
971
- /** @internal */
972
- const runScript = (handlerName) => () => {
973
- const handlers = getEventHandlers();
974
- const handler = handlers[handlerName];
975
- if (!handler)
976
- return;
977
- try {
978
- handler();
979
- }
980
- catch (e) {
981
- console.warn('Failed to run custom handler', handlerName, e);
982
- }
983
- };
984
- /** @internal */
985
- const submitForm = (to) => () => {
986
- const values = submit();
987
- send_event('_answer_question', values);
988
- _moveTo(to);
989
- };
990
- /** @internal */
991
- const execOnClickOperation = (onClickOperation) => {
992
- if (onClickOperation.operation === 'linkTo') {
993
- linkTo(...onClickOperation.args)();
994
- }
995
- else if (onClickOperation.operation === 'moveTo') {
996
- moveTo(...onClickOperation.args)();
997
- }
998
- else if (onClickOperation.operation === 'closeApp') {
999
- closeApp(onClickOperation.args[0] || 'button')();
1000
- }
1001
- else if (onClickOperation.operation === 'runScript') {
1002
- runScript(onClickOperation.args[0])();
1003
- }
1004
- else if (onClickOperation.operation === 'submitForm') {
1005
- submitForm(onClickOperation.args[0])();
1006
- }
1007
- };
1008
- /** @internal */
1009
- const haveFunction = (onClickOperation) => {
1010
- return onClickOperation.operation !== 'none';
1011
- };
1012
- /**
1013
- * The function to activate svelte animation.
1014
- *
1015
- * @param node - A target node of animation. This argument is passed by svelte, by default.
1016
- * @param customAnimationOptions - A custom animation option object
1017
- *
1018
- * @see {@link https://svelte.dev/docs#template-syntax-element-directives-transition-fn-custom-transition-functions| Custom transition functions} for detail documentation
1019
- *
1020
- * @internal
1021
- */
1022
- function customAnimation(node, { transform, animationStyle, delay = 0, duration = 1000 }) {
1023
- {
1024
- return {};
1025
- }
1026
- }
1027
- /**
1028
- * ES Modules に対応していない JavaScript をページに読み込む
1029
- *
1030
- * @param src - JavaScript ファイルのリンク URL
1031
- *
1032
- * @public
1033
- */
1034
- async function loadGlobalScript(src) {
1035
- return new Promise((resolve, reject) => {
1036
- const script = document.createElement('script');
1037
- script.src = src;
1038
- document.body.appendChild(script);
1039
- script.addEventListener('load', () => resolve(script));
1040
- script.addEventListener('error', () => reject(script));
1041
- });
1042
- }
1043
- /**
1044
- * グローバル CSS をページに適用する
1045
- *
1046
- * @param css - CSS
1047
- *
1048
- * @public
1049
- */
1050
- async function applyGlobalCss(css) {
1051
- return new Promise((resolve, reject) => {
1052
- const style = document.createElement('style');
1053
- style.textContent = css;
1054
- document.body.appendChild(style);
1055
- style.addEventListener('load', () => resolve(style));
1056
- style.addEventListener('error', () => reject(style));
1057
- });
1058
- }
1059
- /**
1060
- * style ファイルをページに読み込む
1061
- *
1062
- * @param href - style ファイルのリンク URL
1063
- *
1064
- * @public
1065
- */
1066
- async function loadGlobalStyle(href) {
1067
- return new Promise((resolve, reject) => {
1068
- const link = document.createElement('link');
1069
- link.rel = 'stylesheet';
1070
- link.href = href;
1071
- document.body.appendChild(link);
1072
- link.addEventListener('load', () => resolve(link));
1073
- link.addEventListener('error', () => reject(link));
1074
- });
1075
- }
1076
- // @internal
1077
- function getCssVariables(data) {
1078
- return Object.entries(data)
1079
- .filter(([key, value]) => {
1080
- return ['string', 'number'].includes(typeof value) && key.startsWith('--');
1081
- })
1082
- .map(([key, value]) => `${key}:${value}`)
1083
- .join(';');
1084
- }
1085
-
1086
- /**
1087
- * アクションのログの記録の管理
1088
- */
1089
- const MESSAGES_LIMIT = 1000;
1090
- const EVENTS_LIMIT = 1000;
1091
- // 実行ログ
1092
- let logs = [];
1093
- // KARTEイベント
1094
- let events = [];
1095
- /** @internal */
1096
- function getLogs() {
1097
- return logs;
1098
- }
1099
- /** @internal */
1100
- function getEvents() {
1101
- return events;
1102
- }
1103
- // iframe内の場合は親windowを参照する
1104
- function w(w) {
1105
- return w.parent === w ? w : w.parent;
1106
- }
1107
- /**
1108
- * ログを送信する関数群
1109
- *
1110
- * @internal
1111
- */
1112
- const logger = {
1113
- info: (...messages) => {
1114
- const log = cloneToJson({ level: 'info', messages, date: new Date() });
1115
- w(window).postMessage({ type: 'KARTE-ACTION-LOGGER', detail: { method: 'log', log } }, '*');
1116
- },
1117
- log: (...messages) => {
1118
- const log = cloneToJson({ level: 'info', messages, date: new Date() });
1119
- w(window).postMessage({ type: 'KARTE-ACTION-LOGGER', detail: { method: 'log', log } }, '*');
1120
- },
1121
- error: (...messages) => {
1122
- const log = cloneToJson({ level: 'error', messages, date: new Date() });
1123
- w(window).postMessage({ type: 'KARTE-ACTION-LOGGER', detail: { method: 'log', log } }, '*');
1124
- },
1125
- warn: (...messages) => {
1126
- const log = cloneToJson({ level: 'warn', messages, date: new Date() });
1127
- w(window).postMessage({ type: 'KARTE-ACTION-LOGGER', detail: { method: 'log', log } }, '*');
1128
- },
1129
- system: (...messages) => {
1130
- const log = cloneToJson({ level: 'system', messages, date: new Date() });
1131
- w(window).postMessage({ type: 'KARTE-ACTION-LOGGER', detail: { method: 'log', log } }, '*');
1132
- },
1133
- event: (name, values) => {
1134
- const event = values ? { name, values, date: new Date() } : { name, date: new Date() };
1135
- w(window).postMessage({
1136
- type: 'KARTE-ACTION-LOGGER',
1137
- detail: { method: 'event', event, values: values },
1138
- }, '*');
1139
- },
1140
- clear: () => {
1141
- w(window).postMessage({ type: 'KARTE-ACTION-LOGGER', detail: { method: 'clear' } }, '*');
1142
- },
1143
- clearEvents: () => {
1144
- w(window).postMessage({ type: 'KARTE-ACTION-LOGGER', detail: { method: 'clearEvents' } }, '*');
1145
- },
1146
- };
1147
- /**
1148
- * メッセージを実行ログに表示する
1149
- *
1150
- * @internal
1151
- */
1152
- function listenLogger() {
1153
- const handler = (event) => {
1154
- const { type, detail } = event.data;
1155
- if (event.origin !== location.origin) {
1156
- return;
1157
- }
1158
- if (type !== 'KARTE-ACTION-LOGGER') {
1159
- return;
1160
- }
1161
- if (detail.method === 'clear') {
1162
- logs = [];
1163
- }
1164
- else if (detail.method === 'clearEvents') {
1165
- events = [];
1166
- }
1167
- else if (detail.method === 'log') {
1168
- if (MESSAGES_LIMIT <= logs.length) {
1169
- logs.shift();
1170
- }
1171
- const { level, messages } = detail.log;
1172
- const log = { level, messages, date: new Date() };
1173
- logs.push(log);
1174
- }
1175
- else if (detail.method === 'event') {
1176
- if (EVENTS_LIMIT <= events.length) {
1177
- events.shift();
1178
- }
1179
- const { name, values } = detail.event;
1180
- const karteEvent = values
1181
- ? { name, values, date: new Date() }
1182
- : { name, date: new Date() };
1183
- events.push(karteEvent);
1184
- }
1185
- };
1186
- window.addEventListener('message', handler, false);
1187
- return () => {
1188
- window.removeEventListener('message', handler, false);
955
+ };
956
+ window.addEventListener('message', handler, false);
957
+ return () => {
958
+ window.removeEventListener('message', handler, false);
1189
959
  };
1190
960
  }
1191
961
  const { info, log, error, warn } = console;
@@ -1229,6 +999,9 @@ function cloneToJson(data) {
1229
999
  }
1230
1000
  }
1231
1001
 
1002
+ /**
1003
+ * モーダル(ポップアップ)のロジックを管理する
1004
+ */
1232
1005
  function doPresent({ direction, deltaRate }, downFn, upFn, condition = false) {
1233
1006
  if (direction === 'down' && deltaRate > 0) {
1234
1007
  downFn();
@@ -1321,6 +1094,23 @@ function showOnTime(props, show = NOOP) {
1321
1094
  : null;
1322
1095
  }
1323
1096
 
1097
+ /** @internal */
1098
+ const ACTION_DESTROY_EVENT = `KARTE-ACTION-DESTROY-${actionId}`;
1099
+ /** @internal */
1100
+ const ACTION_SHOW_EVENT = `KARTE-ACTION-SHOW-${actionId}`;
1101
+ /** @internal */
1102
+ const ACTION_CLOSE_EVENT = `KARTE-ACTION-CLOSE-${actionId}`;
1103
+ /** @internal */
1104
+ const ACTION_CHANGE_STATE_EVENT = `KARTE-ACTION-CHANGE-STATE-${actionId}`;
1105
+ /** @internal */
1106
+ const send_event = (event_name, values) => {
1107
+ const setting = getSetting();
1108
+ setting?.send?.(event_name, values);
1109
+ };
1110
+
1111
+ /**
1112
+ * アクションテーブルに関連するコードの管理
1113
+ */
1324
1114
  const DEFAULT_COLLECTION_ENDPOINT = typeof __FLYER_GEN_COLLECTION_API_ENDPOINT__ === 'string'
1325
1115
  ? __FLYER_GEN_COLLECTION_API_ENDPOINT__
1326
1116
  : 'https://t.karte.io/collection';
@@ -1413,83 +1203,34 @@ const loadActionTable = async (config, api_key, endpoint) => {
1413
1203
  }, {});
1414
1204
  };
1415
1205
 
1416
- /** @internal */
1417
- const ACTION_HOOK_LABEL = '__ACTION_HOOK__';
1418
- /**
1419
- * アクションが作成 (create) される前にフックする関数
1420
- *
1421
- * @param fn - 呼び出されるフック関数
1422
- *
1423
- * @public
1424
- */
1425
- function onCreate(fn) {
1426
- let { onCreateHandlers } = getInternalHandlers();
1427
- if (!onCreateHandlers) {
1428
- onCreateHandlers = [];
1429
- }
1430
- onCreateHandlers.push(fn);
1431
- setInternalHandlers({ onCreateHandlers });
1432
- }
1433
1206
  /**
1434
- * アクションが表示 (show) された後にフックする関数
1435
- *
1436
- * @param fn - 呼び出されるフック関数
1437
- *
1438
- * @public
1439
- */
1440
- function onShow(fn) {
1441
- let { onShowHandlers } = getInternalHandlers();
1442
- if (!onShowHandlers) {
1443
- onShowHandlers = [];
1444
- }
1445
- onShowHandlers.push(fn);
1446
- setInternalHandlers({ onShowHandlers });
1447
- }
1448
- /**
1449
- * アクションがクローズ (close) される前にフックする関数
1207
+ * Edgeが起動するアクションに関連するコードを管理する
1450
1208
  *
1451
- * @param fn - 呼び出されるフック関数
1209
+ * アクションのCreate, Destroyの状態はここで管理する。
1452
1210
  *
1453
- * @public
1211
+ * FIXME: モーダルなどの機能ごとのコードを分離したい
1454
1212
  */
1455
- function onClose(fn) {
1456
- let { onCloseHandlers } = getInternalHandlers();
1457
- if (!onCloseHandlers) {
1458
- onCloseHandlers = [];
1459
- }
1460
- onCloseHandlers.push(fn);
1461
- setInternalHandlers({ onCloseHandlers });
1462
- }
1463
- /**
1464
- * アクションが破棄 (destroy) される前にフックする関数
1465
- *
1466
- * @param fn - 呼び出されるフック関数
1467
- *
1468
- * @public
1469
- */
1470
- function onDestroy(fn) {
1471
- let { onDestroyHandlers } = getInternalHandlers();
1472
- if (!onDestroyHandlers) {
1473
- onDestroyHandlers = [];
1213
+ /** @internal */
1214
+ const handleState = (event) => {
1215
+ if (event.detail.actionId === actionId || event.detail.actionId === ALL_ACTION_ID) {
1216
+ send_event('_message_state_changed', { state: event.detail.to });
1217
+ setState$1(event.detail.to, { disableInPreview: event.detail.disableInPreview });
1474
1218
  }
1475
- onDestroyHandlers.push(fn);
1476
- setInternalHandlers({ onDestroyHandlers });
1477
- }
1478
- /**
1479
- * アクションのステートが変更された (changeState) 後にフックする関数
1480
- *
1481
- * @param fn - 呼び出されるフック関数
1482
- *
1483
- * @public
1484
- */
1485
- function onChangeState(fn) {
1486
- let { onChangeStateHandlers } = getInternalHandlers();
1487
- if (!onChangeStateHandlers) {
1488
- onChangeStateHandlers = [];
1219
+ };
1220
+ /** @internal */
1221
+ const initialize = (setting) => {
1222
+ const newSetting = setSetting(setting);
1223
+ if (newSetting.initialState) {
1224
+ setState$1(newSetting.initialState);
1489
1225
  }
1490
- onChangeStateHandlers.push(fn);
1491
- setInternalHandlers({ onChangeStateHandlers });
1492
- }
1226
+ setOpened(true);
1227
+ setClosed(false); // deprecated
1228
+ return () => finalize();
1229
+ };
1230
+ /** @internal */
1231
+ const finalize = () => {
1232
+ resetSetting();
1233
+ };
1493
1234
  /**
1494
1235
  * アクションを作成する
1495
1236
  *
@@ -1681,6 +1422,29 @@ function create(App, options = {
1681
1422
  };
1682
1423
  return appCleanup;
1683
1424
  }
1425
+ /** @internal */
1426
+ function ensureActionRoot(useShadow = true) {
1427
+ const systemConfig = getSystem();
1428
+ const rootAttrs = {
1429
+ class: `${KARTE_ACTION_ROOT} ${KARTE_MODAL_ROOT}`,
1430
+ [`data-${KARTE_ACTION_RID}`]: actionId,
1431
+ [`data-${KARTE_ACTION_SHORTEN_ID}`]: systemConfig.shortenId
1432
+ ? systemConfig.shortenId
1433
+ : ALL_ACTION_SHORTEN_ID,
1434
+ };
1435
+ let el = document.querySelector(`.${KARTE_MODAL_ROOT}[data-${KARTE_ACTION_RID}='${actionId}']`);
1436
+ if (el == null) {
1437
+ el = h('div', rootAttrs);
1438
+ document.body.appendChild(el);
1439
+ }
1440
+ const isShadow = !!document.body.attachShadow && useShadow;
1441
+ if (isShadow) {
1442
+ return el.shadowRoot ?? el.attachShadow({ mode: 'open' });
1443
+ }
1444
+ else {
1445
+ return el;
1446
+ }
1447
+ }
1684
1448
  /**
1685
1449
  * Dispatch the event to destroy KARTE action
1686
1450
  *
@@ -1700,71 +1464,111 @@ function destroyAction() {
1700
1464
  dispatchDestroyEvent();
1701
1465
  }
1702
1466
  /**
1703
- * アクションを表示する
1467
+ * アクションが作成 (create) される前にフックする関数
1468
+ *
1469
+ * @param fn - 呼び出されるフック関数
1704
1470
  *
1705
1471
  * @public
1706
1472
  */
1707
- function showAction() {
1708
- const event = new CustomEvent(ACTION_SHOW_EVENT, { detail: { trigger: 'custom' } });
1709
- window.dispatchEvent(event);
1473
+ function onCreate(fn) {
1474
+ let { onCreateHandlers } = getInternalHandlers();
1475
+ if (!onCreateHandlers) {
1476
+ onCreateHandlers = [];
1477
+ }
1478
+ onCreateHandlers.push(fn);
1479
+ setInternalHandlers({ onCreateHandlers });
1480
+ }
1481
+ /**
1482
+ * アクションが破棄 (destroy) される前にフックする関数
1483
+ *
1484
+ * @param fn - 呼び出されるフック関数
1485
+ *
1486
+ * @public
1487
+ */
1488
+ function onDestroy(fn) {
1489
+ let { onDestroyHandlers } = getInternalHandlers();
1490
+ if (!onDestroyHandlers) {
1491
+ onDestroyHandlers = [];
1492
+ }
1493
+ onDestroyHandlers.push(fn);
1494
+ setInternalHandlers({ onDestroyHandlers });
1495
+ }
1496
+ /**
1497
+ * 非推奨
1498
+ *
1499
+ * @deprecated 非推奨
1500
+ *
1501
+ * @internal
1502
+ */
1503
+ const showModal = create;
1504
+ /**
1505
+ * 非推奨
1506
+ *
1507
+ * @deprecated 非推奨
1508
+ *
1509
+ * @internal
1510
+ */
1511
+ const ensureModalRoot = ensureActionRoot;
1512
+ /**
1513
+ * 非推奨
1514
+ *
1515
+ * @deprecated 非推奨
1516
+ *
1517
+ * @internal
1518
+ */
1519
+ function createApp(App, options = {
1520
+ send: () => { },
1521
+ publish: () => { },
1522
+ props: {},
1523
+ variables: {},
1524
+ localVariablesQuery: undefined,
1525
+ }) {
1526
+ let app = null;
1527
+ const close = () => {
1528
+ if (app) {
1529
+ app.$destroy();
1530
+ app = null;
1531
+ }
1532
+ };
1533
+ const appArgs = {
1534
+ target: null,
1535
+ props: {
1536
+ send: options.send,
1537
+ publish: options.publish,
1538
+ close,
1539
+ data: {
1540
+ ...options.props,
1541
+ ...options.variables,
1542
+ },
1543
+ },
1544
+ };
1545
+ {
1546
+ const win = ensureModalRoot(false);
1547
+ appArgs.target = win;
1548
+ appArgs.hydrate = true;
1549
+ }
1550
+ return {
1551
+ close,
1552
+ show: () => {
1553
+ if (app) {
1554
+ return;
1555
+ }
1556
+ options.send('message_open');
1557
+ app = new App(appArgs);
1558
+ },
1559
+ };
1710
1560
  }
1711
1561
  /**
1712
- * アクションを閉じる
1562
+ * 非推奨
1713
1563
  *
1714
- * @param trigger - 閉じた時のトリガー。デフォルト `'none'`
1564
+ * @deprecated 非推奨
1715
1565
  *
1716
- * @public
1566
+ * @internal
1717
1567
  */
1718
- function closeAction(trigger = 'none') {
1719
- const event = new CustomEvent(ACTION_CLOSE_EVENT, { detail: { trigger } });
1720
- window.dispatchEvent(event);
1721
- }
1722
- /** @internal */
1723
- const KARTE_ACTION_ROOT = 'karte-action-root';
1724
- /** @internal */
1725
- const KARTE_ACTION_RID = 'karte-action-rid';
1726
- /** @internal */
1727
- const KARTE_ACTION_SHORTEN_ID = 'karte-action-id';
1728
- /** @internal */
1729
- function ensureActionRoot(useShadow = true) {
1730
- const systemConfig = getSystem();
1731
- const rootAttrs = {
1732
- class: `${KARTE_ACTION_ROOT} ${KARTE_MODAL_ROOT}`,
1733
- [`data-${KARTE_ACTION_RID}`]: actionId,
1734
- [`data-${KARTE_ACTION_SHORTEN_ID}`]: systemConfig.shortenId
1735
- ? systemConfig.shortenId
1736
- : ALL_ACTION_SHORTEN_ID,
1737
- };
1738
- let el = document.querySelector(`.${KARTE_MODAL_ROOT}[data-${KARTE_ACTION_RID}='${actionId}']`);
1739
- if (el == null) {
1740
- el = h('div', rootAttrs);
1741
- document.body.appendChild(el);
1742
- }
1743
- const isShadow = !!document.body.attachShadow && useShadow;
1744
- if (isShadow) {
1745
- return el.shadowRoot ?? el.attachShadow({ mode: 'open' });
1746
- }
1747
- else {
1748
- return el;
1749
- }
1568
+ function destroy() {
1569
+ setDestroyed(true);
1570
+ dispatchDestroyEvent();
1750
1571
  }
1751
- /** @internal */
1752
- const h = (type, props, ...children) => {
1753
- const el = document.createElement(type);
1754
- for (const key of Object.keys(props)) {
1755
- const v = props[key];
1756
- if (key === 'style') {
1757
- Object.assign(el.style, v);
1758
- }
1759
- else {
1760
- el.setAttribute(key, v);
1761
- }
1762
- }
1763
- for (const child of children) {
1764
- el.appendChild(child);
1765
- }
1766
- return el;
1767
- };
1768
1572
  /**
1769
1573
  * 非推奨
1770
1574
  *
@@ -1797,19 +1601,129 @@ function createFog({ color = '#000', opacity = '50%', zIndex = 999, onclick, })
1797
1601
  root.appendChild(fog);
1798
1602
  return { fog, close };
1799
1603
  }
1604
+
1800
1605
  /**
1801
- * アクションのルートの DOM 要素を取得する
1606
+ * スクリプト接客が利用するコードの管理
1607
+ */
1608
+ /**
1609
+ * ES Modules に対応していない JavaScript をページに読み込む
1802
1610
  *
1803
- * @returns アクションがルートの DOM 要素 を持つ場合は DOM 要素を返します。ない場合は `null` を返します
1611
+ * @param src - JavaScript ファイルのリンク URL
1804
1612
  *
1805
1613
  * @public
1806
1614
  */
1807
- function getActionRoot() {
1808
- const root = document.querySelector(`.${KARTE_ACTION_ROOT}[data-${KARTE_ACTION_RID}='${actionId}']`);
1809
- if (!root?.shadowRoot) {
1810
- return null;
1615
+ async function loadGlobalScript(src) {
1616
+ return new Promise((resolve, reject) => {
1617
+ const script = document.createElement('script');
1618
+ script.src = src;
1619
+ document.body.appendChild(script);
1620
+ script.addEventListener('load', () => resolve(script));
1621
+ script.addEventListener('error', () => reject(script));
1622
+ });
1623
+ }
1624
+ /**
1625
+ * グローバル CSS をページに適用する
1626
+ *
1627
+ * @param css - CSS
1628
+ *
1629
+ * @public
1630
+ */
1631
+ async function applyGlobalCss(css) {
1632
+ return new Promise((resolve, reject) => {
1633
+ const style = document.createElement('style');
1634
+ style.textContent = css;
1635
+ document.body.appendChild(style);
1636
+ style.addEventListener('load', () => resolve(style));
1637
+ style.addEventListener('error', () => reject(style));
1638
+ });
1639
+ }
1640
+ /**
1641
+ * style ファイルをページに読み込む
1642
+ *
1643
+ * @param href - style ファイルのリンク URL
1644
+ *
1645
+ * @public
1646
+ */
1647
+ async function loadGlobalStyle(href) {
1648
+ return new Promise((resolve, reject) => {
1649
+ const link = document.createElement('link');
1650
+ link.rel = 'stylesheet';
1651
+ link.href = href;
1652
+ document.body.appendChild(link);
1653
+ link.addEventListener('load', () => resolve(link));
1654
+ link.addEventListener('error', () => reject(link));
1655
+ });
1656
+ }
1657
+
1658
+ /**
1659
+ * モーダル(ポップアップ)に関連するコードの管理
1660
+ *
1661
+ * アクションのShow, Close, ChangeStateの状態はここで管理する。
1662
+ */
1663
+ /**
1664
+ * アクションが表示 (show) された後にフックする関数
1665
+ *
1666
+ * @param fn - 呼び出されるフック関数
1667
+ *
1668
+ * @public
1669
+ */
1670
+ function onShow(fn) {
1671
+ let { onShowHandlers } = getInternalHandlers();
1672
+ if (!onShowHandlers) {
1673
+ onShowHandlers = [];
1811
1674
  }
1812
- return root.shadowRoot;
1675
+ onShowHandlers.push(fn);
1676
+ setInternalHandlers({ onShowHandlers });
1677
+ }
1678
+ /**
1679
+ * アクションがクローズ (close) される前にフックする関数
1680
+ *
1681
+ * @param fn - 呼び出されるフック関数
1682
+ *
1683
+ * @public
1684
+ */
1685
+ function onClose(fn) {
1686
+ let { onCloseHandlers } = getInternalHandlers();
1687
+ if (!onCloseHandlers) {
1688
+ onCloseHandlers = [];
1689
+ }
1690
+ onCloseHandlers.push(fn);
1691
+ setInternalHandlers({ onCloseHandlers });
1692
+ }
1693
+ /**
1694
+ * アクションのステートが変更された (changeState) 後にフックする関数
1695
+ *
1696
+ * @param fn - 呼び出されるフック関数
1697
+ *
1698
+ * @public
1699
+ */
1700
+ function onChangeState(fn) {
1701
+ let { onChangeStateHandlers } = getInternalHandlers();
1702
+ if (!onChangeStateHandlers) {
1703
+ onChangeStateHandlers = [];
1704
+ }
1705
+ onChangeStateHandlers.push(fn);
1706
+ setInternalHandlers({ onChangeStateHandlers });
1707
+ }
1708
+ /**
1709
+ * アクションを表示する
1710
+ *
1711
+ * @public
1712
+ */
1713
+ function showAction() {
1714
+ const event = new CustomEvent(ACTION_SHOW_EVENT, { detail: { trigger: 'custom' } });
1715
+ window.dispatchEvent(event);
1716
+ }
1717
+ /**
1718
+ * アクションを閉じる
1719
+ *
1720
+ * @param trigger - 閉じた時のトリガー。デフォルト `'none'`
1721
+ *
1722
+ * @public
1723
+ */
1724
+ function closeAction(trigger = 'none') {
1725
+ const event = new CustomEvent(ACTION_CLOSE_EVENT, { detail: { trigger } });
1726
+ window.dispatchEvent(event);
1813
1727
  }
1814
1728
  /**
1815
1729
  * アクションに CSS を適用する
@@ -1824,7 +1738,7 @@ async function applyCss(css) {
1824
1738
  return new Promise((resolve, reject) => {
1825
1739
  const style = document.createElement('style');
1826
1740
  style.textContent = css;
1827
- const shadowRoot = getActionShadowRoot();
1741
+ const shadowRoot = getActionRoot();
1828
1742
  if (!shadowRoot)
1829
1743
  return;
1830
1744
  shadowRoot.append(style);
@@ -1863,125 +1777,59 @@ async function fixFontFaceIssue(href, cssRules) {
1863
1777
  * @public
1864
1778
  */
1865
1779
  async function loadStyle(href) {
1866
- const sr = getActionShadowRoot();
1780
+ const sr = getActionRoot();
1867
1781
  if (!sr)
1868
1782
  return;
1869
1783
  let cssRules = '';
1870
1784
  try {
1871
1785
  const res = await fetch(href);
1872
- cssRules = await res.text();
1873
- }
1874
- catch (e) {
1875
- // pass
1876
- }
1877
- if (!cssRules)
1878
- return;
1879
- // Chromeのバグで、Shadow Rootの@font-faceを絶対パスで指定する必要がある
1880
- // @see https://stackoverflow.com/a/63717709
1881
- const [rules, fontFaceRules] = await fixFontFaceIssue(href, cssRules);
1882
- const css = new CSSStyleSheet();
1883
- // @ts-ignore
1884
- await css.replace(rules);
1885
- const fontFaceCss = new CSSStyleSheet();
1886
- // @ts-ignore
1887
- await fontFaceCss.replace(fontFaceRules);
1888
- // @ts-ignore
1889
- sr.adoptedStyleSheets = [...sr.adoptedStyleSheets, css, fontFaceCss];
1890
- // Chromeのバグで、ページとShadow Rootの両方に、@font-faceを設定する必要がある
1891
- // @see https://stackoverflow.com/a/63717709
1892
- // @ts-ignore
1893
- document.adoptedStyleSheets = [...document.adoptedStyleSheets, css, fontFaceCss];
1894
- }
1895
- // -------- The following codes are deprecated --------
1896
- /**
1897
- * 非推奨
1898
- *
1899
- * @deprecated 非推奨
1900
- *
1901
- * @internal
1902
- */
1903
- const showModal = create;
1904
- /**
1905
- * 非推奨
1906
- *
1907
- * @deprecated 非推奨
1908
- *
1909
- * @internal
1910
- */
1911
- const KARTE_MODAL_ROOT = 'karte-modal-root';
1912
- /**
1913
- * 非推奨
1914
- *
1915
- * @deprecated 非推奨
1916
- *
1917
- * @internal
1918
- */
1919
- const ensureModalRoot = ensureActionRoot;
1920
- /**
1921
- * 非推奨
1922
- *
1923
- * @deprecated 非推奨
1924
- *
1925
- * @internal
1926
- */
1927
- const show = showAction;
1928
- /**
1929
- * 非推奨
1930
- *
1931
- * @deprecated 非推奨
1932
- *
1933
- * @internal
1934
- */
1935
- const close = closeAction;
1786
+ cssRules = await res.text();
1787
+ }
1788
+ catch (e) {
1789
+ // pass
1790
+ }
1791
+ if (!cssRules)
1792
+ return;
1793
+ // Chromeのバグで、Shadow Rootの@font-faceを絶対パスで指定する必要がある
1794
+ // @see https://stackoverflow.com/a/63717709
1795
+ const [rules, fontFaceRules] = await fixFontFaceIssue(href, cssRules);
1796
+ const css = new CSSStyleSheet();
1797
+ // @ts-ignore
1798
+ await css.replace(rules);
1799
+ const fontFaceCss = new CSSStyleSheet();
1800
+ // @ts-ignore
1801
+ await fontFaceCss.replace(fontFaceRules);
1802
+ // @ts-ignore
1803
+ sr.adoptedStyleSheets = [...sr.adoptedStyleSheets, css, fontFaceCss];
1804
+ // Chromeのバグで、ページとShadow Rootの両方に、@font-faceを設定する必要がある
1805
+ // @see https://stackoverflow.com/a/63717709
1806
+ // @ts-ignore
1807
+ document.adoptedStyleSheets = [...document.adoptedStyleSheets, css, fontFaceCss];
1808
+ }
1809
+ // @internal
1810
+ function getCssVariables(data) {
1811
+ return Object.entries(data)
1812
+ .filter(([key, value]) => {
1813
+ return ['string', 'number'].includes(typeof value) && key.startsWith('--');
1814
+ })
1815
+ .map(([key, value]) => `${key}:${value}`)
1816
+ .join(';');
1817
+ }
1936
1818
  /**
1937
- * 非推奨
1819
+ * アクションのルートの DOM 要素を取得する
1938
1820
  *
1939
- * @deprecated 非推奨
1821
+ * @returns アクションがルートの DOM 要素 を持つ場合は DOM 要素を返します。ない場合は `null` を返します
1940
1822
  *
1941
- * @internal
1823
+ * @public
1942
1824
  */
1943
- function createApp(App, options = {
1944
- send: () => { },
1945
- publish: () => { },
1946
- props: {},
1947
- variables: {},
1948
- localVariablesQuery: undefined,
1949
- }) {
1950
- let app = null;
1951
- const close = () => {
1952
- if (app) {
1953
- app.$destroy();
1954
- app = null;
1955
- }
1956
- };
1957
- const appArgs = {
1958
- target: null,
1959
- props: {
1960
- send: options.send,
1961
- publish: options.publish,
1962
- close,
1963
- data: {
1964
- ...options.props,
1965
- ...options.variables,
1966
- },
1967
- },
1968
- };
1969
- {
1970
- const win = ensureModalRoot(false);
1971
- appArgs.target = win;
1972
- appArgs.hydrate = true;
1825
+ function getActionRoot() {
1826
+ const root = document.querySelector(`.${KARTE_ACTION_ROOT}[data-${KARTE_ACTION_RID}='${actionId}']`);
1827
+ if (!root?.shadowRoot) {
1828
+ return null;
1973
1829
  }
1974
- return {
1975
- close,
1976
- show: () => {
1977
- if (app) {
1978
- return;
1979
- }
1980
- options.send('message_open');
1981
- app = new App(appArgs);
1982
- },
1983
- };
1830
+ return root.shadowRoot;
1984
1831
  }
1832
+ // -------- The following codes are deprecated --------
1985
1833
  /**
1986
1834
  * 非推奨
1987
1835
  *
@@ -1989,13 +1837,7 @@ function createApp(App, options = {
1989
1837
  *
1990
1838
  * @internal
1991
1839
  */
1992
- function getActionShadowRoot() {
1993
- const root = document.querySelector(`.${KARTE_ACTION_ROOT}[data-${KARTE_ACTION_RID}='${actionId}']`);
1994
- if (!root?.shadowRoot) {
1995
- return null;
1996
- }
1997
- return root.shadowRoot;
1998
- }
1840
+ const show = showAction;
1999
1841
  /**
2000
1842
  * 非推奨
2001
1843
  *
@@ -2003,13 +1845,10 @@ function getActionShadowRoot() {
2003
1845
  *
2004
1846
  * @internal
2005
1847
  */
2006
- function destroy() {
2007
- setDestroyed(true);
2008
- dispatchDestroyEvent();
2009
- }
1848
+ const close = closeAction;
2010
1849
 
2011
1850
  /**
2012
- * Widget API 互換のインターフェース
1851
+ * エディタv1のWidget API 互換のインターフェース
2013
1852
  */
2014
1853
  const STORE_LS_KEY_PREFIX = 'krt___';
2015
1854
  const valCallbacks = {};
@@ -2543,6 +2382,185 @@ class StateItem extends SvelteComponent {
2543
2382
  }
2544
2383
  }
2545
2384
 
2385
+ function isEmpty(value) {
2386
+ if (Array.isArray(value)) {
2387
+ return value.length === 0;
2388
+ }
2389
+ else {
2390
+ return !value;
2391
+ }
2392
+ }
2393
+ /** @internal */
2394
+ function registerInput({ name, statePath, validator = () => true, initialValue, }) {
2395
+ const writableValue = {
2396
+ subscribe(run) {
2397
+ return formData.subscribe(formData => {
2398
+ run(formData[name]?.value);
2399
+ });
2400
+ },
2401
+ set(value) {
2402
+ formData.update(prev => ({
2403
+ ...prev,
2404
+ [name]: {
2405
+ statePath,
2406
+ value,
2407
+ isValid: validator(value),
2408
+ },
2409
+ }));
2410
+ },
2411
+ update(updater) {
2412
+ formData.update(prev => {
2413
+ const prevValue = prev[name]?.value;
2414
+ return {
2415
+ ...prev,
2416
+ [name]: {
2417
+ statePath,
2418
+ value: updater(prevValue),
2419
+ isValid: validator(prevValue),
2420
+ },
2421
+ };
2422
+ });
2423
+ },
2424
+ };
2425
+ if (isEmpty(get(writableValue))) {
2426
+ writableValue.set(initialValue);
2427
+ }
2428
+ return writableValue;
2429
+ }
2430
+ /** @internal */
2431
+ const getValuesAreValidReader = statePath => ({
2432
+ subscribe(callback) {
2433
+ return formData.subscribe(formData => {
2434
+ const valuesAreValid = Object.entries(formData)
2435
+ .filter(([_, { statePath: s }]) => s === statePath) // eslint-disable-line @typescript-eslint/no-unused-vars
2436
+ .every(([_, { isValid }]) => isValid); // eslint-disable-line @typescript-eslint/no-unused-vars
2437
+ callback(valuesAreValid);
2438
+ });
2439
+ },
2440
+ });
2441
+ function formDataToEventValues(campaignId, formData) {
2442
+ const questions = [];
2443
+ const answersMap = {};
2444
+ Object.entries(formData).forEach(([name, dataItem]) => {
2445
+ questions.push(name);
2446
+ const value = dataItem.value;
2447
+ const answerKey = `question_${name}`;
2448
+ if (Array.isArray(value)) {
2449
+ answersMap[answerKey] = {
2450
+ choices: value,
2451
+ };
2452
+ }
2453
+ else if (typeof value === 'string') {
2454
+ answersMap[answerKey] = {
2455
+ free_answer: value,
2456
+ };
2457
+ }
2458
+ });
2459
+ return {
2460
+ [campaignId]: {
2461
+ questions,
2462
+ ...answersMap,
2463
+ },
2464
+ };
2465
+ }
2466
+ /** @internal */
2467
+ function submit() {
2468
+ const systemConfig = getSystem();
2469
+ const campaignId = systemConfig.campaignId;
2470
+ if (campaignId) {
2471
+ const formData$1 = get(formData);
2472
+ const values = formDataToEventValues(campaignId, formData$1);
2473
+ return values;
2474
+ }
2475
+ {
2476
+ const formData$1 = get(formData);
2477
+ const values = formDataToEventValues('mock', formData$1);
2478
+ console.log('values: ', values);
2479
+ return values;
2480
+ }
2481
+ }
2482
+
2483
+ /**
2484
+ * モーダル(ポップアップ)のコンポーネントが利用するコードの管理
2485
+ */
2486
+ function _moveTo(to) {
2487
+ window.dispatchEvent(new CustomEvent(ACTION_CHANGE_STATE_EVENT, { detail: { to, actionId } }));
2488
+ }
2489
+ /** @internal */
2490
+ const moveTo = (to) => () => {
2491
+ _moveTo(to);
2492
+ };
2493
+ /** @internal */
2494
+ const linkTo = (to, targetBlank = true) => () => {
2495
+ send_event('message_click', { url: to, state: getState$1() });
2496
+ if (targetBlank) {
2497
+ window.open(to);
2498
+ }
2499
+ else {
2500
+ location.href = to;
2501
+ }
2502
+ };
2503
+ /** @internal */
2504
+ const closeApp = (trigger) => () => {
2505
+ window.dispatchEvent(new CustomEvent(ACTION_CLOSE_EVENT, { detail: { trigger } }));
2506
+ };
2507
+ /** @internal */
2508
+ const runScript = (handlerName) => () => {
2509
+ const handlers = getEventHandlers();
2510
+ const handler = handlers[handlerName];
2511
+ if (!handler)
2512
+ return;
2513
+ try {
2514
+ handler();
2515
+ }
2516
+ catch (e) {
2517
+ console.warn('Failed to run custom handler', handlerName, e);
2518
+ }
2519
+ };
2520
+ /** @internal */
2521
+ const submitForm = (to) => () => {
2522
+ const values = submit();
2523
+ send_event('_answer_question', values);
2524
+ _moveTo(to);
2525
+ };
2526
+ /** @internal */
2527
+ const execOnClickOperation = (onClickOperation) => {
2528
+ if (onClickOperation.operation === 'linkTo') {
2529
+ linkTo(...onClickOperation.args)();
2530
+ }
2531
+ else if (onClickOperation.operation === 'moveTo') {
2532
+ moveTo(...onClickOperation.args)();
2533
+ }
2534
+ else if (onClickOperation.operation === 'closeApp') {
2535
+ closeApp(onClickOperation.args[0] || 'button')();
2536
+ }
2537
+ else if (onClickOperation.operation === 'runScript') {
2538
+ runScript(onClickOperation.args[0])();
2539
+ }
2540
+ else if (onClickOperation.operation === 'submitForm') {
2541
+ submitForm(onClickOperation.args[0])();
2542
+ }
2543
+ };
2544
+ /** @internal */
2545
+ const haveFunction = (onClickOperation) => {
2546
+ return onClickOperation.operation !== 'none';
2547
+ };
2548
+ /**
2549
+ * The function to activate svelte animation.
2550
+ *
2551
+ * @param node - A target node of animation. This argument is passed by svelte, by default.
2552
+ * @param customAnimationOptions - A custom animation option object
2553
+ *
2554
+ * @see {@link https://svelte.dev/docs#template-syntax-element-directives-transition-fn-custom-transition-functions| Custom transition functions} for detail documentation
2555
+ *
2556
+ * @internal
2557
+ */
2558
+ function customAnimation(node, { transform, animationStyle, delay = 0, duration = 1000 }) {
2559
+ {
2560
+ return {};
2561
+ }
2562
+ }
2563
+
2546
2564
  /* src/components/BackgroundOverray.svelte generated by Svelte v3.53.1 */
2547
2565
 
2548
2566
  function add_css$s(target) {
@@ -2650,8 +2668,8 @@ function add_css$r(target) {
2650
2668
  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}");
2651
2669
  }
2652
2670
 
2653
- // (48:0) {:else}
2654
- function create_else_block$2(ctx) {
2671
+ // (49:0) {:else}
2672
+ function create_else_block$3(ctx) {
2655
2673
  let button;
2656
2674
  let current;
2657
2675
  let mounted;
@@ -2728,7 +2746,7 @@ function create_else_block$2(ctx) {
2728
2746
  };
2729
2747
  }
2730
2748
 
2731
- // (44:39)
2749
+ // (45:39)
2732
2750
  function create_if_block_2(ctx) {
2733
2751
  let div;
2734
2752
  let current;
@@ -2797,7 +2815,7 @@ function create_if_block_2(ctx) {
2797
2815
  };
2798
2816
  }
2799
2817
 
2800
- // (40:41)
2818
+ // (41:41)
2801
2819
  function create_if_block_1$2(ctx) {
2802
2820
  let a;
2803
2821
  let a_href_value;
@@ -2893,7 +2911,7 @@ function create_if_block_1$2(ctx) {
2893
2911
  };
2894
2912
  }
2895
2913
 
2896
- // (36:0) {#if disabled}
2914
+ // (37:0) {#if disabled}
2897
2915
  function create_if_block$6(ctx) {
2898
2916
  let div;
2899
2917
  let current;
@@ -2967,7 +2985,7 @@ function create_fragment$u(ctx) {
2967
2985
  let if_block;
2968
2986
  let if_block_anchor;
2969
2987
  let current;
2970
- const if_block_creators = [create_if_block$6, create_if_block_1$2, create_if_block_2, create_else_block$2];
2988
+ const if_block_creators = [create_if_block$6, create_if_block_1$2, create_if_block_2, create_else_block$3];
2971
2989
  const if_blocks = [];
2972
2990
 
2973
2991
  function select_block_type(ctx, dirty) {
@@ -3136,7 +3154,7 @@ function add_css$q(target) {
3136
3154
  append_styles(target, "svelte-yyiwdt", ".modal.svelte-yyiwdt{position:fixed;box-sizing:border-box;z-index:2147483647;display:flex}.modal.svelte-yyiwdt > .button{flex:auto;display:flex}.close.svelte-yyiwdt{position:absolute;top:0;right:0}.close.svelte-yyiwdt > .button{position:absolute;display:flex;justify-content:center;align-items:center;background-color:transparent;border:none;cursor:pointer;padding:0;transition:all 0.25s}.close.svelte-yyiwdt > .button:hover{transform:rotate(90deg)}.modal-content.svelte-yyiwdt{flex:auto;display:flex;justify-content:center;align-items:center}");
3137
3155
  }
3138
3156
 
3139
- // (144:0) {#if visible}
3157
+ // (146:0) {#if visible}
3140
3158
  function create_if_block$5(ctx) {
3141
3159
  let div;
3142
3160
  let button;
@@ -3231,7 +3249,7 @@ function create_if_block$5(ctx) {
3231
3249
  };
3232
3250
  }
3233
3251
 
3234
- // (161:6) {#if closable}
3252
+ // (163:6) {#if closable}
3235
3253
  function create_if_block_1$1(ctx) {
3236
3254
  let div;
3237
3255
  let button;
@@ -3303,7 +3321,7 @@ function create_if_block_1$1(ctx) {
3303
3321
  };
3304
3322
  }
3305
3323
 
3306
- // (163:10) <Button onClick={onClose} style={_closeStyle} eventName={closeEventName} eventValue={closeEventValue}>
3324
+ // (165:10) <Button onClick={onClose} style={_closeStyle} eventName={closeEventName} eventValue={closeEventValue}>
3307
3325
  function create_default_slot_1$1(ctx) {
3308
3326
  let svg;
3309
3327
  let path;
@@ -3360,7 +3378,7 @@ function create_default_slot_1$1(ctx) {
3360
3378
  };
3361
3379
  }
3362
3380
 
3363
- // (160:4) <Button {onClick} eventName={clickEventName} eventValue={clickEventValue}>
3381
+ // (162:4) <Button {onClick} eventName={clickEventName} eventValue={clickEventValue}>
3364
3382
  function create_default_slot$6(ctx) {
3365
3383
  let t;
3366
3384
  let div;
@@ -4068,7 +4086,7 @@ function get_each_context$6(ctx, list, i) {
4068
4086
  }
4069
4087
 
4070
4088
  // (13:2) {:else}
4071
- function create_else_block$1(ctx) {
4089
+ function create_else_block$2(ctx) {
4072
4090
  let t_value = /*item*/ ctx[2] + "";
4073
4091
  let t;
4074
4092
 
@@ -4121,7 +4139,7 @@ function create_each_block$6(ctx) {
4121
4139
  if (dirty & /*items*/ 1) show_if = null;
4122
4140
  if (show_if == null) show_if = !!/*item*/ ctx[2].match(regexp);
4123
4141
  if (show_if) return create_if_block$4;
4124
- return create_else_block$1;
4142
+ return create_else_block$2;
4125
4143
  }
4126
4144
 
4127
4145
  let current_block_type = select_block_type(ctx, -1);
@@ -4254,159 +4272,163 @@ class RenderText extends SvelteComponent {
4254
4272
  /* src/components/TextElement.svelte generated by Svelte v3.53.1 */
4255
4273
 
4256
4274
  function add_css$o(target) {
4257
- append_styles(target, "svelte-13cs3g2", ".text-element-wrapper.svelte-13cs3g2.svelte-13cs3g2{position:relative;height:100%}.text-element.svelte-13cs3g2.svelte-13cs3g2{display:flex;position:relative;width:100%;height:100%;box-sizing:border-box;white-space:pre-wrap;overflow:auto}.text-element-inner.svelte-13cs3g2.svelte-13cs3g2{width:100%;height:auto}.text-direction-vertical.svelte-13cs3g2.svelte-13cs3g2{writing-mode:vertical-rl}.text-direction-vertical.svelte-13cs3g2 .text-element-inner.svelte-13cs3g2{width:auto;height:100%}.tooltip.svelte-13cs3g2.svelte-13cs3g2{display:none;position:absolute;bottom:-40px;left:50%;transform:translateX(-50%);color:#fff;background-color:#3d4948;white-space:nowrap;padding:4px 8px 4px 8px;border-radius:4px;font-size:12px;z-index:2147483647}.tooltip.svelte-13cs3g2.svelte-13cs3g2:before{content:'';position:absolute;top:-13px;left:50%;margin-left:-7px;border:7px solid transparent;border-bottom:7px solid #3d4948}.tooltip.show.svelte-13cs3g2.svelte-13cs3g2{display:block}.tooltip-error.svelte-13cs3g2.svelte-13cs3g2{background-color:#c00}.tooltip-error.svelte-13cs3g2.svelte-13cs3g2:before{border-bottom:7px solid #c00}");
4275
+ append_styles(target, "svelte-600oh0", ".text-element-wrapper.svelte-600oh0.svelte-600oh0{position:relative;height:100%}.text-element.svelte-600oh0.svelte-600oh0{display:flex;position:relative;width:100%;height:100%;box-sizing:border-box;white-space:pre-wrap;overflow:auto;margin:0px;padding:0px}.text-link-element.svelte-600oh0.svelte-600oh0{text-decoration:none;color:inherit}.text-element-inner.svelte-600oh0.svelte-600oh0{width:100%;height:auto}.text-direction-vertical.svelte-600oh0.svelte-600oh0{writing-mode:vertical-rl}.text-direction-vertical.svelte-600oh0 .text-element-inner.svelte-600oh0{width:auto;height:100%}.tooltip.svelte-600oh0.svelte-600oh0{display:none;position:absolute;bottom:-40px;left:50%;transform:translateX(-50%);color:#fff;background-color:#3d4948;white-space:nowrap;padding:4px 8px 4px 8px;border-radius:4px;font-size:12px;z-index:2147483647}.tooltip.svelte-600oh0.svelte-600oh0:before{content:'';position:absolute;top:-13px;left:50%;margin-left:-7px;border:7px solid transparent;border-bottom:7px solid #3d4948}.tooltip.show.svelte-600oh0.svelte-600oh0{display:block}.tooltip-error.svelte-600oh0.svelte-600oh0{background-color:#c00}.tooltip-error.svelte-600oh0.svelte-600oh0:before{border-bottom:7px solid #c00}");
4258
4276
  }
4259
4277
 
4260
- // (58:2) {#if enableCopy}
4261
- function create_if_block$3(ctx) {
4262
- let div0;
4263
- let t0;
4264
- let t1;
4278
+ // (78:2) {:else}
4279
+ function create_else_block$1(ctx) {
4265
4280
  let div1;
4266
- let t2;
4281
+ let div0;
4282
+ let rendertext;
4283
+ let div1_class_value;
4284
+ let current;
4285
+ rendertext = new RenderText({ props: { text: /*text*/ ctx[0] } });
4267
4286
 
4268
4287
  return {
4269
4288
  c() {
4270
- div0 = element("div");
4271
- t0 = text("コピーしました");
4272
- t1 = space();
4273
4289
  div1 = element("div");
4274
- t2 = text("コピーできませんでした");
4290
+ div0 = element("div");
4291
+ create_component(rendertext.$$.fragment);
4275
4292
  this.h();
4276
4293
  },
4277
4294
  l(nodes) {
4278
- div0 = claim_element(nodes, "DIV", { class: true });
4295
+ div1 = claim_element(nodes, "DIV", { class: true, style: true });
4296
+ var div1_nodes = children(div1);
4297
+ div0 = claim_element(div1_nodes, "DIV", { class: true });
4279
4298
  var div0_nodes = children(div0);
4280
- t0 = claim_text(div0_nodes, "コピーしました");
4299
+ claim_component(rendertext.$$.fragment, div0_nodes);
4281
4300
  div0_nodes.forEach(detach);
4282
- t1 = claim_space(nodes);
4283
- div1 = claim_element(nodes, "DIV", { class: true });
4284
- var div1_nodes = children(div1);
4285
- t2 = claim_text(div1_nodes, "コピーできませんでした");
4286
4301
  div1_nodes.forEach(detach);
4287
4302
  this.h();
4288
4303
  },
4289
4304
  h() {
4290
- attr(div0, "class", "tooltip svelte-13cs3g2");
4291
- attr(div1, "class", "tooltip tooltip-error svelte-13cs3g2");
4305
+ attr(div0, "class", "text-element-inner svelte-600oh0");
4306
+ attr(div1, "class", div1_class_value = "" + (null_to_empty(`text-element text-direction-${/*textDirection*/ ctx[1]}`) + " svelte-600oh0"));
4307
+ attr(div1, "style", /*style*/ ctx[5]);
4292
4308
  },
4293
4309
  m(target, anchor) {
4294
- insert_hydration(target, div0, anchor);
4295
- append_hydration(div0, t0);
4296
- /*div0_binding*/ ctx[9](div0);
4297
- insert_hydration(target, t1, anchor);
4298
4310
  insert_hydration(target, div1, anchor);
4299
- append_hydration(div1, t2);
4300
- /*div1_binding*/ ctx[10](div1);
4311
+ append_hydration(div1, div0);
4312
+ mount_component(rendertext, div0, null);
4313
+ current = true;
4314
+ },
4315
+ p(ctx, dirty) {
4316
+ const rendertext_changes = {};
4317
+ if (dirty & /*text*/ 1) rendertext_changes.text = /*text*/ ctx[0];
4318
+ rendertext.$set(rendertext_changes);
4319
+
4320
+ if (!current || dirty & /*textDirection*/ 2 && div1_class_value !== (div1_class_value = "" + (null_to_empty(`text-element text-direction-${/*textDirection*/ ctx[1]}`) + " svelte-600oh0"))) {
4321
+ attr(div1, "class", div1_class_value);
4322
+ }
4323
+
4324
+ if (!current || dirty & /*style*/ 32) {
4325
+ attr(div1, "style", /*style*/ ctx[5]);
4326
+ }
4327
+ },
4328
+ i(local) {
4329
+ if (current) return;
4330
+ transition_in(rendertext.$$.fragment, local);
4331
+ current = true;
4332
+ },
4333
+ o(local) {
4334
+ transition_out(rendertext.$$.fragment, local);
4335
+ current = false;
4301
4336
  },
4302
- p: noop,
4303
4337
  d(detaching) {
4304
- if (detaching) detach(div0);
4305
- /*div0_binding*/ ctx[9](null);
4306
- if (detaching) detach(t1);
4307
4338
  if (detaching) detach(div1);
4308
- /*div1_binding*/ ctx[10](null);
4339
+ destroy_component(rendertext);
4309
4340
  }
4310
4341
  };
4311
4342
  }
4312
4343
 
4313
- function create_fragment$p(ctx) {
4314
- let div2;
4315
- let link;
4316
- let link_href_value;
4317
- let t0;
4318
- let div1;
4344
+ // (69:2) {#if enableCopy}
4345
+ function create_if_block$3(ctx) {
4346
+ let a;
4319
4347
  let div0;
4320
4348
  let rendertext;
4321
- let div1_class_value;
4349
+ let a_class_value;
4350
+ let t0;
4351
+ let div1;
4322
4352
  let t1;
4353
+ let t2;
4354
+ let div2;
4355
+ let t3;
4323
4356
  let current;
4324
4357
  let mounted;
4325
4358
  let dispose;
4326
4359
  rendertext = new RenderText({ props: { text: /*text*/ ctx[0] } });
4327
- let if_block = /*enableCopy*/ ctx[1] && create_if_block$3(ctx);
4328
4360
 
4329
4361
  return {
4330
4362
  c() {
4331
- div2 = element("div");
4332
- link = element("link");
4333
- t0 = space();
4334
- div1 = element("div");
4363
+ a = element("a");
4335
4364
  div0 = element("div");
4336
4365
  create_component(rendertext.$$.fragment);
4337
- t1 = space();
4338
- if (if_block) if_block.c();
4366
+ t0 = space();
4367
+ div1 = element("div");
4368
+ t1 = text("コピーしました");
4369
+ t2 = space();
4370
+ div2 = element("div");
4371
+ t3 = text("コピーできませんでした");
4339
4372
  this.h();
4340
4373
  },
4341
4374
  l(nodes) {
4342
- div2 = claim_element(nodes, "DIV", { class: true });
4343
- var div2_nodes = children(div2);
4344
- link = claim_element(div2_nodes, "LINK", { href: true, rel: true });
4345
- t0 = claim_space(div2_nodes);
4346
- div1 = claim_element(div2_nodes, "DIV", { class: true, style: true });
4347
- var div1_nodes = children(div1);
4348
- div0 = claim_element(div1_nodes, "DIV", { class: true });
4375
+ a = claim_element(nodes, "A", { href: true, class: true, style: true });
4376
+ var a_nodes = children(a);
4377
+ div0 = claim_element(a_nodes, "DIV", { class: true });
4349
4378
  var div0_nodes = children(div0);
4350
4379
  claim_component(rendertext.$$.fragment, div0_nodes);
4351
4380
  div0_nodes.forEach(detach);
4381
+ a_nodes.forEach(detach);
4382
+ t0 = claim_space(nodes);
4383
+ div1 = claim_element(nodes, "DIV", { class: true });
4384
+ var div1_nodes = children(div1);
4385
+ t1 = claim_text(div1_nodes, "コピーしました");
4352
4386
  div1_nodes.forEach(detach);
4353
- t1 = claim_space(div2_nodes);
4354
- if (if_block) if_block.l(div2_nodes);
4387
+ t2 = claim_space(nodes);
4388
+ div2 = claim_element(nodes, "DIV", { class: true });
4389
+ var div2_nodes = children(div2);
4390
+ t3 = claim_text(div2_nodes, "コピーできませんでした");
4355
4391
  div2_nodes.forEach(detach);
4356
4392
  this.h();
4357
4393
  },
4358
4394
  h() {
4359
- attr(link, "href", link_href_value = `https://fonts.googleapis.com/css2?${getGoogleFontsParam()}&display=swap&text=${/*text*/ ctx[0]}`);
4360
- attr(link, "rel", "stylesheet");
4361
- attr(div0, "class", "text-element-inner svelte-13cs3g2");
4362
- attr(div1, "class", div1_class_value = "" + (null_to_empty(`text-element text-direction-${/*textDirection*/ ctx[2]}`) + " svelte-13cs3g2"));
4363
- attr(div1, "style", /*style*/ ctx[5]);
4364
- attr(div2, "class", "text-element-wrapper svelte-13cs3g2");
4395
+ attr(div0, "class", "text-element-inner svelte-600oh0");
4396
+ attr(a, "href", '');
4397
+ attr(a, "class", a_class_value = "" + (null_to_empty(`text-element text-link-element text-direction-${/*textDirection*/ ctx[1]}`) + " svelte-600oh0"));
4398
+ attr(a, "style", /*style*/ ctx[5]);
4399
+ attr(div1, "class", "tooltip svelte-600oh0");
4400
+ attr(div2, "class", "tooltip tooltip-error svelte-600oh0");
4365
4401
  },
4366
4402
  m(target, anchor) {
4367
- insert_hydration(target, div2, anchor);
4368
- append_hydration(div2, link);
4369
- append_hydration(div2, t0);
4370
- append_hydration(div2, div1);
4371
- append_hydration(div1, div0);
4403
+ insert_hydration(target, a, anchor);
4404
+ append_hydration(a, div0);
4372
4405
  mount_component(rendertext, div0, null);
4373
- append_hydration(div2, t1);
4374
- if (if_block) if_block.m(div2, null);
4406
+ insert_hydration(target, t0, anchor);
4407
+ insert_hydration(target, div1, anchor);
4408
+ append_hydration(div1, t1);
4409
+ /*div1_binding*/ ctx[10](div1);
4410
+ insert_hydration(target, t2, anchor);
4411
+ insert_hydration(target, div2, anchor);
4412
+ append_hydration(div2, t3);
4413
+ /*div2_binding*/ ctx[11](div2);
4375
4414
  current = true;
4376
4415
 
4377
4416
  if (!mounted) {
4378
- dispose = listen(div1, "click", /*click*/ ctx[6]);
4417
+ dispose = listen(a, "click", /*onCopy*/ ctx[6]);
4379
4418
  mounted = true;
4380
4419
  }
4381
4420
  },
4382
- p(ctx, [dirty]) {
4383
- if (!current || dirty & /*text*/ 1 && link_href_value !== (link_href_value = `https://fonts.googleapis.com/css2?${getGoogleFontsParam()}&display=swap&text=${/*text*/ ctx[0]}`)) {
4384
- attr(link, "href", link_href_value);
4385
- }
4386
-
4421
+ p(ctx, dirty) {
4387
4422
  const rendertext_changes = {};
4388
4423
  if (dirty & /*text*/ 1) rendertext_changes.text = /*text*/ ctx[0];
4389
4424
  rendertext.$set(rendertext_changes);
4390
4425
 
4391
- if (!current || dirty & /*textDirection*/ 4 && div1_class_value !== (div1_class_value = "" + (null_to_empty(`text-element text-direction-${/*textDirection*/ ctx[2]}`) + " svelte-13cs3g2"))) {
4392
- attr(div1, "class", div1_class_value);
4426
+ if (!current || dirty & /*textDirection*/ 2 && a_class_value !== (a_class_value = "" + (null_to_empty(`text-element text-link-element text-direction-${/*textDirection*/ ctx[1]}`) + " svelte-600oh0"))) {
4427
+ attr(a, "class", a_class_value);
4393
4428
  }
4394
4429
 
4395
4430
  if (!current || dirty & /*style*/ 32) {
4396
- attr(div1, "style", /*style*/ ctx[5]);
4397
- }
4398
-
4399
- if (/*enableCopy*/ ctx[1]) {
4400
- if (if_block) {
4401
- if_block.p(ctx, dirty);
4402
- } else {
4403
- if_block = create_if_block$3(ctx);
4404
- if_block.c();
4405
- if_block.m(div2, null);
4406
- }
4407
- } else if (if_block) {
4408
- if_block.d(1);
4409
- if_block = null;
4431
+ attr(a, "style", /*style*/ ctx[5]);
4410
4432
  }
4411
4433
  },
4412
4434
  i(local) {
@@ -4419,53 +4441,159 @@ function create_fragment$p(ctx) {
4419
4441
  current = false;
4420
4442
  },
4421
4443
  d(detaching) {
4422
- if (detaching) detach(div2);
4444
+ if (detaching) detach(a);
4423
4445
  destroy_component(rendertext);
4424
- if (if_block) if_block.d();
4446
+ if (detaching) detach(t0);
4447
+ if (detaching) detach(div1);
4448
+ /*div1_binding*/ ctx[10](null);
4449
+ if (detaching) detach(t2);
4450
+ if (detaching) detach(div2);
4451
+ /*div2_binding*/ ctx[11](null);
4425
4452
  mounted = false;
4426
4453
  dispose();
4427
4454
  }
4428
4455
  };
4429
4456
  }
4430
4457
 
4458
+ function create_fragment$p(ctx) {
4459
+ let div;
4460
+ let link;
4461
+ let link_href_value;
4462
+ let t;
4463
+ let current_block_type_index;
4464
+ let if_block;
4465
+ let current;
4466
+ const if_block_creators = [create_if_block$3, create_else_block$1];
4467
+ const if_blocks = [];
4468
+
4469
+ function select_block_type(ctx, dirty) {
4470
+ if (/*enableCopy*/ ctx[2]) return 0;
4471
+ return 1;
4472
+ }
4473
+
4474
+ current_block_type_index = select_block_type(ctx);
4475
+ if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
4476
+
4477
+ return {
4478
+ c() {
4479
+ div = element("div");
4480
+ link = element("link");
4481
+ t = space();
4482
+ if_block.c();
4483
+ this.h();
4484
+ },
4485
+ l(nodes) {
4486
+ div = claim_element(nodes, "DIV", { class: true });
4487
+ var div_nodes = children(div);
4488
+ link = claim_element(div_nodes, "LINK", { href: true, rel: true });
4489
+ t = claim_space(div_nodes);
4490
+ if_block.l(div_nodes);
4491
+ div_nodes.forEach(detach);
4492
+ this.h();
4493
+ },
4494
+ h() {
4495
+ attr(link, "href", link_href_value = `https://fonts.googleapis.com/css2?${getGoogleFontsParam()}&display=swap&text=${/*text*/ ctx[0]}`);
4496
+ attr(link, "rel", "stylesheet");
4497
+ attr(div, "class", "text-element-wrapper svelte-600oh0");
4498
+ },
4499
+ m(target, anchor) {
4500
+ insert_hydration(target, div, anchor);
4501
+ append_hydration(div, link);
4502
+ append_hydration(div, t);
4503
+ if_blocks[current_block_type_index].m(div, null);
4504
+ current = true;
4505
+ },
4506
+ p(ctx, [dirty]) {
4507
+ if (!current || dirty & /*text*/ 1 && link_href_value !== (link_href_value = `https://fonts.googleapis.com/css2?${getGoogleFontsParam()}&display=swap&text=${/*text*/ ctx[0]}`)) {
4508
+ attr(link, "href", link_href_value);
4509
+ }
4510
+
4511
+ let previous_block_index = current_block_type_index;
4512
+ current_block_type_index = select_block_type(ctx);
4513
+
4514
+ if (current_block_type_index === previous_block_index) {
4515
+ if_blocks[current_block_type_index].p(ctx, dirty);
4516
+ } else {
4517
+ group_outros();
4518
+
4519
+ transition_out(if_blocks[previous_block_index], 1, 1, () => {
4520
+ if_blocks[previous_block_index] = null;
4521
+ });
4522
+
4523
+ check_outros();
4524
+ if_block = if_blocks[current_block_type_index];
4525
+
4526
+ if (!if_block) {
4527
+ if_block = if_blocks[current_block_type_index] = if_block_creators[current_block_type_index](ctx);
4528
+ if_block.c();
4529
+ } else {
4530
+ if_block.p(ctx, dirty);
4531
+ }
4532
+
4533
+ transition_in(if_block, 1);
4534
+ if_block.m(div, null);
4535
+ }
4536
+ },
4537
+ i(local) {
4538
+ if (current) return;
4539
+ transition_in(if_block);
4540
+ current = true;
4541
+ },
4542
+ o(local) {
4543
+ transition_out(if_block);
4544
+ current = false;
4545
+ },
4546
+ d(detaching) {
4547
+ if (detaching) detach(div);
4548
+ if_blocks[current_block_type_index].d();
4549
+ }
4550
+ };
4551
+ }
4552
+
4431
4553
  function instance$p($$self, $$props, $$invalidate) {
4432
4554
  let style;
4433
4555
  let { text = 'サンプルSample' } = $$props;
4556
+ let { _textStyle = 'font-size:12px; line-height: 1.5;' } = $$props;
4557
+ let { textDirection = 'horizontal' } = $$props;
4558
+ let { _style = '' } = $$props;
4434
4559
  let { enableCopy = false } = $$props;
4560
+ let { eventName = '' } = $$props;
4561
+ let eventValue = undefined;
4435
4562
  let tooltipEl;
4436
4563
  let tooltipErrorEl;
4437
4564
 
4438
- const click = async () => {
4439
- if (enableCopy) {
4440
- try {
4441
- await navigator.clipboard.writeText(text);
4442
- tooltipEl.classList.add('show');
4443
- } catch(err) {
4444
- tooltipErrorEl.classList.add('show');
4445
- }
4446
-
4447
- setTimeout(
4448
- () => {
4449
- tooltipEl.classList.remove('show');
4450
- tooltipErrorEl.classList.remove('show');
4451
- },
4452
- 1000
4453
- );
4565
+ const onCopy = async e => {
4566
+ e.preventDefault();
4567
+
4568
+ try {
4569
+ await navigator.clipboard.writeText(text);
4570
+
4571
+ if (eventName) {
4572
+ send_event(eventName, eventValue);
4573
+ }
4574
+
4575
+ tooltipEl.classList.add('show');
4576
+ } catch(err) {
4577
+ tooltipErrorEl.classList.add('show');
4454
4578
  }
4455
- };
4456
4579
 
4457
- let { _textStyle = 'font-size:12px; line-height: 1.5;' } = $$props;
4458
- let { textDirection = 'horizontal' } = $$props;
4459
- let { _style = '' } = $$props;
4580
+ setTimeout(
4581
+ () => {
4582
+ tooltipEl.classList.remove('show');
4583
+ tooltipErrorEl.classList.remove('show');
4584
+ },
4585
+ 1000
4586
+ );
4587
+ };
4460
4588
 
4461
- function div0_binding($$value) {
4589
+ function div1_binding($$value) {
4462
4590
  binding_callbacks[$$value ? 'unshift' : 'push'](() => {
4463
4591
  tooltipEl = $$value;
4464
4592
  $$invalidate(3, tooltipEl);
4465
4593
  });
4466
4594
  }
4467
4595
 
4468
- function div1_binding($$value) {
4596
+ function div2_binding($$value) {
4469
4597
  binding_callbacks[$$value ? 'unshift' : 'push'](() => {
4470
4598
  tooltipErrorEl = $$value;
4471
4599
  $$invalidate(4, tooltipErrorEl);
@@ -4474,10 +4602,11 @@ function instance$p($$self, $$props, $$invalidate) {
4474
4602
 
4475
4603
  $$self.$$set = $$props => {
4476
4604
  if ('text' in $$props) $$invalidate(0, text = $$props.text);
4477
- if ('enableCopy' in $$props) $$invalidate(1, enableCopy = $$props.enableCopy);
4478
4605
  if ('_textStyle' in $$props) $$invalidate(7, _textStyle = $$props._textStyle);
4479
- if ('textDirection' in $$props) $$invalidate(2, textDirection = $$props.textDirection);
4606
+ if ('textDirection' in $$props) $$invalidate(1, textDirection = $$props.textDirection);
4480
4607
  if ('_style' in $$props) $$invalidate(8, _style = $$props._style);
4608
+ if ('enableCopy' in $$props) $$invalidate(2, enableCopy = $$props.enableCopy);
4609
+ if ('eventName' in $$props) $$invalidate(9, eventName = $$props.eventName);
4481
4610
  };
4482
4611
 
4483
4612
  $$self.$$.update = () => {
@@ -4488,16 +4617,17 @@ function instance$p($$self, $$props, $$invalidate) {
4488
4617
 
4489
4618
  return [
4490
4619
  text,
4491
- enableCopy,
4492
4620
  textDirection,
4621
+ enableCopy,
4493
4622
  tooltipEl,
4494
4623
  tooltipErrorEl,
4495
4624
  style,
4496
- click,
4625
+ onCopy,
4497
4626
  _textStyle,
4498
4627
  _style,
4499
- div0_binding,
4500
- div1_binding
4628
+ eventName,
4629
+ div1_binding,
4630
+ div2_binding
4501
4631
  ];
4502
4632
  }
4503
4633
 
@@ -4513,10 +4643,11 @@ class TextElement extends SvelteComponent {
4513
4643
  safe_not_equal,
4514
4644
  {
4515
4645
  text: 0,
4516
- enableCopy: 1,
4517
4646
  _textStyle: 7,
4518
- textDirection: 2,
4519
- _style: 8
4647
+ textDirection: 1,
4648
+ _style: 8,
4649
+ enableCopy: 2,
4650
+ eventName: 9
4520
4651
  },
4521
4652
  add_css$o
4522
4653
  );