@plaidev/karte-action-sdk 1.1.123 → 1.1.124-27946655.bba7dcb4

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
@@ -6,10 +6,6 @@ import { setContext, getContext, createEventDispatcher, onMount, onDestroy as on
6
6
  /** @internal */
7
7
  const NOOP = (_args) => { }; // eslint-disable-line @typescript-eslint/no-unused-vars
8
8
  /** @internal */
9
- const isPreview = () => {
10
- return false;
11
- };
12
- /** @internal */
13
9
  const handleFocus = (node) => (e) => {
14
10
  if (node) {
15
11
  // trap focus
@@ -292,13 +288,11 @@ const state = writable('/');
292
288
  * 現在のステートを設定する
293
289
  *
294
290
  * @param stateId - 表示するステートID
295
- * @param force - 強制的にステートを設定するフラグ。デフォルトは `false`
291
+ * @param options - オプション。`options.disableInPreview`でプレビュー時のステート遷移を無効化できます。
296
292
  *
297
293
  * @public
298
294
  */
299
- function setState$1(stateId, force = false) {
300
- if (!force && isPreview())
301
- return;
295
+ function setState$1(stateId, options) {
302
296
  state.set(stateId);
303
297
  }
304
298
  /**
@@ -703,15 +697,14 @@ const ACTION_CHANGE_STATE_EVENT = `KARTE-ACTION-CHANGE-STATE-${actionId}`;
703
697
  /** @internal */
704
698
  const handleState = (event) => {
705
699
  if (event.detail.actionId === actionId || event.detail.actionId === ALL_ACTION_ID) {
706
- setState$1(event.detail.to, event.detail.force);
700
+ setState$1(event.detail.to, { disableInPreview: event.detail.disableInPreview });
707
701
  }
708
702
  };
709
703
  /** @internal */
710
704
  const initialize = (setting) => {
711
705
  const newSetting = setActionSetting(setting);
712
706
  if (newSetting.initialState) {
713
- const force = true;
714
- setState$1(setting?.initialState, force);
707
+ setState$1(setting?.initialState);
715
708
  }
716
709
  if (newSetting.autoStart) {
717
710
  setStopped(!newSetting.autoStart);
@@ -962,9 +955,15 @@ const setAutoStart = (on = true) => {
962
955
  const MESSAGES_LIMIT = 1000;
963
956
  const EVENTS_LIMIT = 1000;
964
957
  // 実行ログ
965
- let messages = [];
958
+ let logs = [];
966
959
  // KARTEイベント
967
960
  let events = [];
961
+ function getLogs() {
962
+ return logs;
963
+ }
964
+ function getEvents() {
965
+ return events;
966
+ }
968
967
  // iframe内の場合は親windowを参照する
969
968
  function w(w) {
970
969
  return w.parent === w ? w : w.parent;
@@ -987,7 +986,6 @@ const logger = {
987
986
  },
988
987
  warn: (...messages) => {
989
988
  const log = { level: 'warn', message: formatLog(messages), date: new Date() };
990
- console.log('aaaaaaaaa', w);
991
989
  w(window).postMessage({ type: 'KARTE-ACTION-LOGGER', detail: { method: 'log', log } }, '*');
992
990
  },
993
991
  event: (name, values) => {
@@ -1014,18 +1012,18 @@ function listenLogger() {
1014
1012
  return;
1015
1013
  }
1016
1014
  if (detail.method === 'clear') {
1017
- messages = [];
1015
+ logs = [];
1018
1016
  }
1019
1017
  else if (detail.method === 'clearEvents') {
1020
1018
  events = [];
1021
1019
  }
1022
1020
  else if (detail.method === 'log') {
1023
- if (MESSAGES_LIMIT <= messages.length) {
1024
- messages.shift();
1021
+ if (MESSAGES_LIMIT <= logs.length) {
1022
+ logs.shift();
1025
1023
  }
1026
1024
  const { level, message } = detail.log;
1027
1025
  const log = { level, message, date: new Date() };
1028
- messages.push(log);
1026
+ logs.push(log);
1029
1027
  }
1030
1028
  else if (detail.method === 'event') {
1031
1029
  if (EVENTS_LIMIT <= events.length) {
@@ -1487,6 +1485,103 @@ const FormRatingButtonTypes = ['star', 'face'];
1487
1485
  /** @internal */
1488
1486
  const DefaultFormRatingButtonType = 'star';
1489
1487
 
1488
+ const DEFAULT_COLLECTION_ENDPOINT = typeof __FLYER_GEN_COLLECTION_API_ENDPOINT__ === 'string'
1489
+ ? __FLYER_GEN_COLLECTION_API_ENDPOINT__
1490
+ : 'https://t.karte.io/collection';
1491
+ /**
1492
+ * アクションテーブルを管理するメソッドを取得する
1493
+ *
1494
+ * @param config - 設定情報
1495
+ *
1496
+ * @returns メソッドを返します
1497
+ *
1498
+ * @public
1499
+ */
1500
+ function collection$1(config) {
1501
+ const endpoint = config.endpoint || DEFAULT_COLLECTION_ENDPOINT;
1502
+ const api_key = config.api_key;
1503
+ const table = config.table;
1504
+ return {
1505
+ get(key, cb) {
1506
+ if (Array.isArray(key)) {
1507
+ return request(`${endpoint}/getByKeys`, {
1508
+ api_key,
1509
+ name: table,
1510
+ keys: key,
1511
+ }, cb);
1512
+ }
1513
+ else {
1514
+ request(`${endpoint}/getByKey`, {
1515
+ api_key,
1516
+ name: table,
1517
+ key,
1518
+ }, cb);
1519
+ }
1520
+ },
1521
+ getByQuery(query_name, params, options, cb) {
1522
+ request(`${endpoint}/getByQuery`, {
1523
+ api_key,
1524
+ name: table,
1525
+ query_name,
1526
+ params,
1527
+ options,
1528
+ }, cb);
1529
+ },
1530
+ set(key, value, cb) {
1531
+ request(`${endpoint}/set`, {
1532
+ api_key,
1533
+ name: table,
1534
+ key,
1535
+ value,
1536
+ }, cb);
1537
+ },
1538
+ };
1539
+ }
1540
+ function request(url, data, cb) {
1541
+ fetch(url, {
1542
+ method: 'POST',
1543
+ headers: {
1544
+ 'Content-Type': 'text/plain;charset=UTF-8',
1545
+ },
1546
+ body: JSON.stringify({ ...data }),
1547
+ }).then(response => {
1548
+ if (!response.ok) {
1549
+ return cb(new Error(`fail to request collection api. reason: ${response.status}`));
1550
+ }
1551
+ return cb(null, response.json());
1552
+ });
1553
+ }
1554
+ const loadActionTableRow = async (config, api_key, endpoint) => {
1555
+ return new Promise((resolve, reject) => collection$1({ endpoint, api_key, table: config.default.table_name }).get(config.default.key, (err, data) => (err ? reject(err) : resolve(data))));
1556
+ };
1557
+ const loadActionTableRows = async (config, api_key, endpoint) => {
1558
+ return new Promise((resolve, reject) => collection$1({ endpoint, api_key, table: config.default.table_name }).get(config.default.key, (err, data) => (err ? reject(err) : resolve(data))));
1559
+ };
1560
+ const loadActionTableQuery = async (config, api_key, endpoint) => {
1561
+ return new Promise((resolve, reject) => collection$1({ endpoint, api_key, table: config.default.table_name }).getByQuery(config.default.query_name, config.default.params, null, (err, data) => (err ? reject(err) : resolve(data))));
1562
+ };
1563
+ const loadActionTable = async (config, api_key, endpoint) => {
1564
+ const results = await Promise.all(config
1565
+ .filter(c => c.resolver === 'action-table-row' ||
1566
+ c.resolver === 'action-table-rows' ||
1567
+ c.resolver === 'action-table-query')
1568
+ .map(c => {
1569
+ if (c.resolver === 'action-table-row') {
1570
+ loadActionTableRow(c, api_key, endpoint);
1571
+ }
1572
+ else if (c.resolver === 'action-table-rows') {
1573
+ loadActionTableRows(c, api_key, endpoint);
1574
+ }
1575
+ else if (c.resolver === 'action-table-query') {
1576
+ loadActionTableQuery(c, api_key, endpoint);
1577
+ }
1578
+ }));
1579
+ return config.reduce((acc, c, i) => {
1580
+ acc[c.name] = results[i];
1581
+ return acc;
1582
+ }, {});
1583
+ };
1584
+
1490
1585
  /**
1491
1586
  * アクションが作成 (create) される前にフックする関数
1492
1587
  *
@@ -1576,6 +1671,7 @@ function create(App, options = {
1576
1671
  send: () => { },
1577
1672
  props: {},
1578
1673
  variables: {},
1674
+ localVariablesQuery: undefined,
1579
1675
  }) {
1580
1676
  let app = null;
1581
1677
  const data = {
@@ -1588,7 +1684,7 @@ function create(App, options = {
1588
1684
  // NOTE: onCreateより前にListenする必要がある
1589
1685
  window.addEventListener(ACTION_DESTROY_EVENT, () => {
1590
1686
  const { onDestroyHandlers } = getInternalHandlers();
1591
- onDestroyHandlers && onDestroyHandlers.forEach(h => h(actionProps));
1687
+ onDestroyHandlers?.forEach(h => h(actionProps));
1592
1688
  // 複数回onDestroyを呼ばないようにする処理
1593
1689
  window.removeEventListener('beforeunload', dispatchDestroyEvent);
1594
1690
  });
@@ -1599,6 +1695,10 @@ function create(App, options = {
1599
1695
  shortenId: data.shorten_id || null,
1600
1696
  campaignId: data.campaign_id || null,
1601
1697
  });
1698
+ // ActionTable APIへの非同期リクエスト
1699
+ if (options.localVariablesQuery && data.api_key) {
1700
+ loadActionTable(options.localVariablesQuery, data.api_key).then(result => setCustomVariables(result));
1701
+ }
1602
1702
  const close = (trigger = 'none') => {
1603
1703
  if (!app) {
1604
1704
  return;
@@ -1837,7 +1937,7 @@ function createFog({ color = '#000', opacity = '50%', zIndex = 999, onclick, })
1837
1937
  */
1838
1938
  function getActionShadowRoot() {
1839
1939
  const root = document.querySelector(`.${KARTE_ACTION_ROOT}[data-${KARTE_ACTION_RID}='${actionId}']`);
1840
- if (!root || !root.shadowRoot) {
1940
+ if (!root?.shadowRoot) {
1841
1941
  return null;
1842
1942
  }
1843
1943
  return root.shadowRoot;
@@ -1870,7 +1970,7 @@ async function fixFontFaceIssue(href, cssRules) {
1870
1970
  const rules = [];
1871
1971
  const fixedRules = [];
1872
1972
  Array.from(css.cssRules).forEach(cssRule => {
1873
- if (cssRule.type != 5) {
1973
+ if (cssRule.type !== 5) {
1874
1974
  rules.push(cssRule.cssText);
1875
1975
  }
1876
1976
  // type 5 is @font-face
@@ -1980,6 +2080,7 @@ function createApp(App, options = {
1980
2080
  send: () => { },
1981
2081
  props: {},
1982
2082
  variables: {},
2083
+ localVariablesQuery: undefined,
1983
2084
  }) {
1984
2085
  let app = null;
1985
2086
  const close = () => {
@@ -2015,80 +2116,6 @@ function createApp(App, options = {
2015
2116
  };
2016
2117
  }
2017
2118
 
2018
- const DEFAULT_COLLECTION_ENDPOINT = typeof __FLYER_GEN_COLLECTION_API_ENDPOINT__ === 'string'
2019
- ? __FLYER_GEN_COLLECTION_API_ENDPOINT__
2020
- : 'https://t.karte.io/collection';
2021
- /**
2022
- * アクションテーブルを管理するメソッドを取得する
2023
- *
2024
- * @param config - 設定情報
2025
- *
2026
- * @returns メソッドを返します
2027
- *
2028
- * @public
2029
- */
2030
- function collection$1(config) {
2031
- const endpoint = config.endpoint || DEFAULT_COLLECTION_ENDPOINT;
2032
- const api_key = config.api_key;
2033
- const table = config.table;
2034
- return {
2035
- get(key, cb) {
2036
- if (Array.isArray(key)) {
2037
- return request(`${endpoint}/getByKeys`, {
2038
- api_key,
2039
- name: table,
2040
- keys: key,
2041
- }, cb);
2042
- }
2043
- else {
2044
- request(`${endpoint}/getByKey`, {
2045
- api_key,
2046
- name: table,
2047
- key,
2048
- }, cb);
2049
- }
2050
- },
2051
- getByQuery(query_name, params, options, cb) {
2052
- request(`${endpoint}/getByQuery`, {
2053
- api_key,
2054
- name: table,
2055
- query_name,
2056
- params,
2057
- options,
2058
- }, cb);
2059
- },
2060
- set(key, value, cb) {
2061
- request(`${endpoint}/set`, {
2062
- api_key,
2063
- name: table,
2064
- key,
2065
- value,
2066
- }, cb);
2067
- },
2068
- };
2069
- }
2070
- function request(url, data, cb) {
2071
- const xhr = new XMLHttpRequest();
2072
- xhr.onreadystatechange = () => {
2073
- if (xhr.readyState != 4) {
2074
- return;
2075
- }
2076
- if (xhr.status != 200) {
2077
- return cb(new Error(`fail to send collection api request. reason: ${xhr.responseText}`));
2078
- }
2079
- try {
2080
- data = JSON.parse(xhr.responseText);
2081
- return cb(null, data);
2082
- }
2083
- catch (err) {
2084
- return cb(err);
2085
- }
2086
- };
2087
- xhr.open('POST', url);
2088
- xhr.setRequestHeader('Content-Type', 'text/plain;charset=UTF-8');
2089
- xhr.send(JSON.stringify({ ...data }));
2090
- }
2091
-
2092
2119
  /**
2093
2120
  * Widget API 互換のインターフェース
2094
2121
  */
@@ -7887,4 +7914,4 @@ class ImageBlock extends SvelteComponent {
7887
7914
  }
7888
7915
  }
7889
7916
 
7890
- export { Alignments, AnimationStyles, BackgroundSizes, ClipPaths, Cursors, DefaultFormButtonStyle, DefaultFormRatingButtonType, DefaultFormSelectStyle, DefaultListBackground, DefaultListBackgroundNone, DefaultListBackgroundStripe, DefaultListSeparator, DefaultListSeparatorBorder, DefaultListSeparatorGap, DefaultListSeparatorNone, DefaultModalPlacement, DefaultSlideButton, DefaultSlideNavigationButton, Directions, Elasticities, ElasticityStyle, EmbedElement, Flex, FlexItem, FormCheckBoxes, FormRadioButtons, FormRatingButtonTypes, FormRatingButtons, FormSelect, FormTextarea, Grid, GridItem, GridModalState, ImageBlock, ImageElement, Justifies, KARTE_MODAL_ROOT, LengthUnits, List, ListBackgroundTypes, ListDirections, ListItem, ListSeparatorTypes, MediaQueries, Modal, ModalPositions, MovieVimeoElement, MovieYouTubeElement, ObjectFits, OnClickOperationOptions, Overflows, PropTypes, Repeats, Slide, SlideItem, State, StateItem, TextBlock, TextButtonBlock, TextButtonElement, TextDirections, TextElement, WritingModes, applyCss, applyGlobalCss, close, closeAction, closed, collection$1 as collection, create, createApp, createFog, customHandlers, customVariables, destroy, destroyed, ensureModalRoot, events, finalize, formData, getActionShadowRoot, getCustomHandlers, getCustomVariables, getState$1 as getState, getStates, getStoreState, getSystem, hideOnScroll, hideOnTime, initialize, isClosed, isOpened, listenConsoleLogger, listenLogger, loadGlobalScript, loadGlobalStyle, loadStyle, logger, messages, onChangeState, onClose, onCreate, onDestroy, onScroll, onShow, onTime, opened, setActionSetting, setAutoStart, setClosed, setCustomHandlers, setCustomVariables, setState$1 as setState, show, showAction, showModal, showOnScroll, showOnTime, state, stopped, updateCustomHandlers, updateCustomVariables, widget };
7917
+ export { Alignments, AnimationStyles, BackgroundSizes, ClipPaths, Cursors, DefaultFormButtonStyle, DefaultFormRatingButtonType, DefaultFormSelectStyle, DefaultListBackground, DefaultListBackgroundNone, DefaultListBackgroundStripe, DefaultListSeparator, DefaultListSeparatorBorder, DefaultListSeparatorGap, DefaultListSeparatorNone, DefaultModalPlacement, DefaultSlideButton, DefaultSlideNavigationButton, Directions, Elasticities, ElasticityStyle, EmbedElement, Flex, FlexItem, FormCheckBoxes, FormRadioButtons, FormRatingButtonTypes, FormRatingButtons, FormSelect, FormTextarea, Grid, GridItem, GridModalState, ImageBlock, ImageElement, Justifies, KARTE_MODAL_ROOT, LengthUnits, List, ListBackgroundTypes, ListDirections, ListItem, ListSeparatorTypes, MediaQueries, Modal, ModalPositions, MovieVimeoElement, MovieYouTubeElement, ObjectFits, OnClickOperationOptions, Overflows, PropTypes, Repeats, Slide, SlideItem, State, StateItem, TextBlock, TextButtonBlock, TextButtonElement, TextDirections, TextElement, WritingModes, applyCss, applyGlobalCss, close, closeAction, closed, collection$1 as collection, create, createApp, createFog, customHandlers, customVariables, destroy, destroyed, ensureModalRoot, finalize, formData, getActionShadowRoot, getCustomHandlers, getCustomVariables, getEvents, getLogs, getState$1 as getState, getStates, getStoreState, getSystem, hideOnScroll, hideOnTime, initialize, isClosed, isOpened, listenConsoleLogger, listenLogger, loadActionTable, loadActionTableQuery, loadActionTableRow, loadActionTableRows, loadGlobalScript, loadGlobalStyle, loadStyle, logger, onChangeState, onClose, onCreate, onDestroy, onScroll, onShow, onTime, opened, setActionSetting, setAutoStart, setClosed, setCustomHandlers, setCustomVariables, setState$1 as setState, show, showAction, showModal, showOnScroll, showOnTime, state, stopped, updateCustomHandlers, updateCustomVariables, widget };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plaidev/karte-action-sdk",
3
- "version": "1.1.123",
3
+ "version": "1.1.124-27946655.bba7dcb4",
4
4
  "author": "Plaid Inc.",
5
5
  "license": "Apache-2.0",
6
6
  "module": "./dist/index.es.js",