@simplysm/solid 13.0.64 → 13.0.65

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.
Files changed (123) hide show
  1. package/dist/components/features/address/AddressSearch.d.ts.map +1 -0
  2. package/dist/{features → components/features}/address/AddressSearch.js +2 -2
  3. package/dist/{features → components/features}/address/AddressSearch.js.map +1 -1
  4. package/dist/components/features/crud-detail/CrudDetail.d.ts.map +1 -0
  5. package/dist/components/{data → features}/crud-detail/CrudDetail.js.map +1 -1
  6. package/dist/components/features/crud-detail/CrudDetailAfter.d.ts.map +1 -0
  7. package/dist/components/{data → features}/crud-detail/CrudDetailAfter.js.map +1 -1
  8. package/dist/components/features/crud-detail/CrudDetailBefore.d.ts.map +1 -0
  9. package/dist/components/{data → features}/crud-detail/CrudDetailBefore.js.map +1 -1
  10. package/dist/components/features/crud-detail/CrudDetailTools.d.ts.map +1 -0
  11. package/dist/components/{data → features}/crud-detail/CrudDetailTools.js.map +1 -1
  12. package/dist/components/features/crud-detail/types.d.ts.map +1 -0
  13. package/dist/components/features/crud-sheet/CrudSheet.d.ts.map +1 -0
  14. package/dist/components/{data → features}/crud-sheet/CrudSheet.js +2 -2
  15. package/dist/components/{data → features}/crud-sheet/CrudSheet.js.map +1 -1
  16. package/dist/components/features/crud-sheet/CrudSheetColumn.d.ts.map +1 -0
  17. package/dist/components/{data → features}/crud-sheet/CrudSheetColumn.js +1 -1
  18. package/dist/components/{data → features}/crud-sheet/CrudSheetColumn.js.map +1 -1
  19. package/dist/components/features/crud-sheet/CrudSheetFilter.d.ts.map +1 -0
  20. package/dist/components/{data → features}/crud-sheet/CrudSheetFilter.js.map +1 -1
  21. package/dist/components/features/crud-sheet/CrudSheetHeader.d.ts.map +1 -0
  22. package/dist/components/{data → features}/crud-sheet/CrudSheetHeader.js.map +1 -1
  23. package/dist/components/features/crud-sheet/CrudSheetTools.d.ts.map +1 -0
  24. package/dist/components/{data → features}/crud-sheet/CrudSheetTools.js.map +1 -1
  25. package/dist/components/{data → features}/crud-sheet/types.d.ts +1 -1
  26. package/dist/components/features/crud-sheet/types.d.ts.map +1 -0
  27. package/dist/components/features/data-select-button/DataSelectButton.d.ts.map +1 -0
  28. package/dist/components/{form-control → features}/data-select-button/DataSelectButton.js +2 -2
  29. package/dist/components/{form-control → features}/data-select-button/DataSelectButton.js.map +1 -1
  30. package/dist/components/features/permission-table/PermissionTable.d.ts.map +1 -0
  31. package/dist/components/{data → features}/permission-table/PermissionTable.js +1 -1
  32. package/dist/components/{data → features}/permission-table/PermissionTable.js.map +1 -1
  33. package/dist/components/features/shared-data/SharedDataSelect.d.ts.map +1 -0
  34. package/dist/components/{form-control → features}/shared-data/SharedDataSelect.js +1 -1
  35. package/dist/components/{form-control → features}/shared-data/SharedDataSelect.js.map +1 -1
  36. package/dist/components/features/shared-data/SharedDataSelectButton.d.ts.map +1 -0
  37. package/dist/components/{form-control → features}/shared-data/SharedDataSelectButton.js.map +1 -1
  38. package/dist/components/features/shared-data/SharedDataSelectList.d.ts.map +1 -0
  39. package/dist/components/{form-control → features}/shared-data/SharedDataSelectList.js +1 -1
  40. package/dist/components/{form-control → features}/shared-data/SharedDataSelectList.js.map +1 -1
  41. package/dist/index.d.ts +10 -10
  42. package/dist/index.d.ts.map +1 -1
  43. package/dist/index.js +10 -10
  44. package/dist/index.js.map +1 -1
  45. package/dist/providers/ServiceClientContext.d.ts +5 -5
  46. package/dist/providers/ServiceClientContext.d.ts.map +1 -1
  47. package/dist/providers/ServiceClientProvider.d.ts.map +1 -1
  48. package/dist/providers/ServiceClientProvider.js +12 -8
  49. package/dist/providers/ServiceClientProvider.js.map +2 -2
  50. package/dist/providers/shared-data/SharedDataContext.d.ts +2 -2
  51. package/dist/providers/shared-data/SharedDataContext.d.ts.map +1 -1
  52. package/dist/providers/shared-data/SharedDataProvider.d.ts +1 -2
  53. package/dist/providers/shared-data/SharedDataProvider.d.ts.map +1 -1
  54. package/dist/providers/shared-data/SharedDataProvider.js +22 -12
  55. package/dist/providers/shared-data/SharedDataProvider.js.map +2 -2
  56. package/package.json +5 -3
  57. package/src/{features → components/features}/address/AddressSearch.tsx +2 -2
  58. package/src/components/{data → features}/crud-sheet/CrudSheet.tsx +3 -3
  59. package/src/components/{data → features}/crud-sheet/CrudSheetColumn.tsx +1 -1
  60. package/src/components/{data → features}/crud-sheet/types.ts +1 -1
  61. package/src/components/{form-control → features}/data-select-button/DataSelectButton.tsx +2 -2
  62. package/src/components/{data → features}/permission-table/PermissionTable.tsx +1 -1
  63. package/src/components/{form-control → features}/shared-data/SharedDataSelect.tsx +1 -1
  64. package/src/components/{form-control → features}/shared-data/SharedDataSelectList.tsx +1 -1
  65. package/src/index.ts +20 -14
  66. package/src/providers/ServiceClientContext.ts +5 -5
  67. package/src/providers/ServiceClientProvider.tsx +17 -12
  68. package/src/providers/shared-data/SharedDataContext.ts +2 -2
  69. package/src/providers/shared-data/SharedDataProvider.tsx +29 -17
  70. package/dist/components/data/crud-detail/CrudDetail.d.ts.map +0 -1
  71. package/dist/components/data/crud-detail/CrudDetailAfter.d.ts.map +0 -1
  72. package/dist/components/data/crud-detail/CrudDetailBefore.d.ts.map +0 -1
  73. package/dist/components/data/crud-detail/CrudDetailTools.d.ts.map +0 -1
  74. package/dist/components/data/crud-detail/types.d.ts.map +0 -1
  75. package/dist/components/data/crud-sheet/CrudSheet.d.ts.map +0 -1
  76. package/dist/components/data/crud-sheet/CrudSheetColumn.d.ts.map +0 -1
  77. package/dist/components/data/crud-sheet/CrudSheetFilter.d.ts.map +0 -1
  78. package/dist/components/data/crud-sheet/CrudSheetHeader.d.ts.map +0 -1
  79. package/dist/components/data/crud-sheet/CrudSheetTools.d.ts.map +0 -1
  80. package/dist/components/data/crud-sheet/types.d.ts.map +0 -1
  81. package/dist/components/data/permission-table/PermissionTable.d.ts.map +0 -1
  82. package/dist/components/form-control/data-select-button/DataSelectButton.d.ts.map +0 -1
  83. package/dist/components/form-control/shared-data/SharedDataSelect.d.ts.map +0 -1
  84. package/dist/components/form-control/shared-data/SharedDataSelectButton.d.ts.map +0 -1
  85. package/dist/components/form-control/shared-data/SharedDataSelectList.d.ts.map +0 -1
  86. package/dist/features/address/AddressSearch.d.ts.map +0 -1
  87. /package/dist/{features → components/features}/address/AddressSearch.d.ts +0 -0
  88. /package/dist/components/{data → features}/crud-detail/CrudDetail.d.ts +0 -0
  89. /package/dist/components/{data → features}/crud-detail/CrudDetail.js +0 -0
  90. /package/dist/components/{data → features}/crud-detail/CrudDetailAfter.d.ts +0 -0
  91. /package/dist/components/{data → features}/crud-detail/CrudDetailAfter.js +0 -0
  92. /package/dist/components/{data → features}/crud-detail/CrudDetailBefore.d.ts +0 -0
  93. /package/dist/components/{data → features}/crud-detail/CrudDetailBefore.js +0 -0
  94. /package/dist/components/{data → features}/crud-detail/CrudDetailTools.d.ts +0 -0
  95. /package/dist/components/{data → features}/crud-detail/CrudDetailTools.js +0 -0
  96. /package/dist/components/{data → features}/crud-detail/types.d.ts +0 -0
  97. /package/dist/components/{data → features}/crud-detail/types.js +0 -0
  98. /package/dist/components/{data → features}/crud-detail/types.js.map +0 -0
  99. /package/dist/components/{data → features}/crud-sheet/CrudSheet.d.ts +0 -0
  100. /package/dist/components/{data → features}/crud-sheet/CrudSheetColumn.d.ts +0 -0
  101. /package/dist/components/{data → features}/crud-sheet/CrudSheetFilter.d.ts +0 -0
  102. /package/dist/components/{data → features}/crud-sheet/CrudSheetFilter.js +0 -0
  103. /package/dist/components/{data → features}/crud-sheet/CrudSheetHeader.d.ts +0 -0
  104. /package/dist/components/{data → features}/crud-sheet/CrudSheetHeader.js +0 -0
  105. /package/dist/components/{data → features}/crud-sheet/CrudSheetTools.d.ts +0 -0
  106. /package/dist/components/{data → features}/crud-sheet/CrudSheetTools.js +0 -0
  107. /package/dist/components/{data → features}/crud-sheet/types.js +0 -0
  108. /package/dist/components/{data → features}/crud-sheet/types.js.map +0 -0
  109. /package/dist/components/{form-control → features}/data-select-button/DataSelectButton.d.ts +0 -0
  110. /package/dist/components/{data → features}/permission-table/PermissionTable.d.ts +0 -0
  111. /package/dist/components/{form-control → features}/shared-data/SharedDataSelect.d.ts +0 -0
  112. /package/dist/components/{form-control → features}/shared-data/SharedDataSelectButton.d.ts +0 -0
  113. /package/dist/components/{form-control → features}/shared-data/SharedDataSelectButton.js +0 -0
  114. /package/dist/components/{form-control → features}/shared-data/SharedDataSelectList.d.ts +0 -0
  115. /package/src/components/{data → features}/crud-detail/CrudDetail.tsx +0 -0
  116. /package/src/components/{data → features}/crud-detail/CrudDetailAfter.tsx +0 -0
  117. /package/src/components/{data → features}/crud-detail/CrudDetailBefore.tsx +0 -0
  118. /package/src/components/{data → features}/crud-detail/CrudDetailTools.tsx +0 -0
  119. /package/src/components/{data → features}/crud-detail/types.ts +0 -0
  120. /package/src/components/{data → features}/crud-sheet/CrudSheetFilter.tsx +0 -0
  121. /package/src/components/{data → features}/crud-sheet/CrudSheetHeader.tsx +0 -0
  122. /package/src/components/{data → features}/crud-sheet/CrudSheetTools.tsx +0 -0
  123. /package/src/components/{form-control → features}/shared-data/SharedDataSelectButton.tsx +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"ServiceClientContext.d.ts","sourceRoot":"","sources":["..\\..\\src\\providers\\ServiceClientContext.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAEvF;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,sCAAsC;IACtC,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpF,YAAY;IACZ,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,+CAA+C;IAC/C,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,aAAa,CAAC;IACpC,eAAe;IACf,WAAW,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC;CACvC;AAED,kCAAkC;AAClC,eAAO,MAAM,oBAAoB,mEAA6C,CAAC;AAE/E;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,yBAAyB,CAM5D"}
1
+ {"version":3,"file":"ServiceClientContext.d.ts","sourceRoot":"","sources":["..\\..\\src\\providers\\ServiceClientContext.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAEvF;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,2CAA2C;IAC3C,OAAO,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrF,YAAY;IACZ,KAAK,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,+CAA+C;IAC/C,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,KAAK,aAAa,CAAC;IACrC,eAAe;IACf,WAAW,EAAE,CAAC,GAAG,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC;CACxC;AAED,kCAAkC;AAClC,eAAO,MAAM,oBAAoB,mEAA6C,CAAC;AAE/E;;;;GAIG;AACH,wBAAgB,gBAAgB,IAAI,yBAAyB,CAM5D"}
@@ -1 +1 @@
1
- {"version":3,"file":"ServiceClientProvider.d.ts","sourceRoot":"","sources":["..\\..\\src\\providers\\ServiceClientProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAa,MAAM,UAAU,CAAC;AAU3D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,qBAAqB,EAAE,eAoInC,CAAC"}
1
+ {"version":3,"file":"ServiceClientProvider.d.ts","sourceRoot":"","sources":["..\\..\\src\\providers\\ServiceClientProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,eAAe,EAAa,MAAM,UAAU,CAAC;AAU3D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,eAAO,MAAM,qBAAqB,EAAE,eAyInC,CAAC"}
@@ -17,8 +17,9 @@ const ServiceClientProvider = (props) => {
17
17
  clientMap.clear();
18
18
  });
19
19
  const connect = async (key, options) => {
20
- if (clientMap.has(key)) {
21
- const existing = clientMap.get(key);
20
+ const resolvedKey = key ?? "default";
21
+ if (clientMap.has(resolvedKey)) {
22
+ const existing = clientMap.get(resolvedKey);
22
23
  if (!existing.connected) {
23
24
  throw new Error("\uC774\uBBF8 \uC5F0\uACB0\uC774 \uB04A\uAE34 \uD074\uB77C\uC774\uC5B8\uD2B8\uC640 \uAC19\uC740 \uD0A4\uB85C \uC5F0\uACB0\uC744 \uC2DC\uB3C4\uD558\uC600\uC2B5\uB2C8\uB2E4.");
24
25
  } else {
@@ -83,24 +84,27 @@ const ServiceClientProvider = (props) => {
83
84
  }
84
85
  });
85
86
  await client.connect();
86
- clientMap.set(key, client);
87
+ clientMap.set(resolvedKey, client);
87
88
  };
88
89
  const close = async (key) => {
89
- const client = clientMap.get(key);
90
+ const resolvedKey = key ?? "default";
91
+ const client = clientMap.get(resolvedKey);
90
92
  if (client) {
91
93
  await client.close();
92
- clientMap.delete(key);
94
+ clientMap.delete(resolvedKey);
93
95
  }
94
96
  };
95
97
  const get = (key) => {
96
- const client = clientMap.get(key);
98
+ const resolvedKey = key ?? "default";
99
+ const client = clientMap.get(resolvedKey);
97
100
  if (!client) {
98
- throw new Error(`\uC5F0\uACB0\uD558\uC9C0 \uC54A\uC740 \uD074\uB77C\uC774\uC5B8\uD2B8 \uD0A4\uC785\uB2C8\uB2E4. ${key}`);
101
+ throw new Error(`\uC5F0\uACB0\uD558\uC9C0 \uC54A\uC740 \uD074\uB77C\uC774\uC5B8\uD2B8 \uD0A4\uC785\uB2C8\uB2E4. ${resolvedKey}`);
99
102
  }
100
103
  return client;
101
104
  };
102
105
  const isConnected = (key) => {
103
- const client = clientMap.get(key);
106
+ const resolvedKey = key ?? "default";
107
+ const client = clientMap.get(resolvedKey);
104
108
  return (client == null ? void 0 : client.connected) ?? false;
105
109
  };
106
110
  const contextValue = {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/providers/ServiceClientProvider.tsx"],
4
- "mappings": "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",
5
- "names": ["onCleanup", "createServiceClient", "ServiceClientContext", "useConfig", "useNotification", "ServiceClientProvider", "props", "config", "notification", "clientMap", "Map", "reqProgressMap", "resProgressMap", "client", "values", "close", "clear", "connect", "key", "options", "has", "existing", "get", "connected", "Error", "defaultConfig", "host", "location", "hostname", "port", "Number", "protocol", "startsWith", "ssl", "clientName", "on", "state", "uuid", "id", "info", "set", "percent", "Math", "round", "completedSize", "totalSize", "update", "message", "title", "renotify", "delete", "isConnected", "contextValue", "_$createComponent", "Provider", "value", "children"]
4
+ "mappings": "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",
5
+ "names": ["onCleanup", "createServiceClient", "ServiceClientContext", "useConfig", "useNotification", "ServiceClientProvider", "props", "config", "notification", "clientMap", "Map", "reqProgressMap", "resProgressMap", "client", "values", "close", "clear", "connect", "key", "options", "resolvedKey", "has", "existing", "get", "connected", "Error", "defaultConfig", "host", "location", "hostname", "port", "Number", "protocol", "startsWith", "ssl", "clientName", "on", "state", "uuid", "id", "info", "set", "percent", "Math", "round", "completedSize", "totalSize", "update", "message", "title", "renotify", "delete", "isConnected", "contextValue", "_$createComponent", "Provider", "value", "children"]
6
6
  }
@@ -6,8 +6,8 @@ import { type Accessor } from "solid-js";
6
6
  * SharedDataProvider에 전달하여 서버 데이터 구독을 설정한다.
7
7
  */
8
8
  export interface SharedDataDefinition<TData> {
9
- /** 서비스 연결 key (useServiceClient의 connect key와 동일) */
10
- serviceKey: string;
9
+ /** 서비스 연결 key (생략 "default") */
10
+ serviceKey?: string;
11
11
  /** 데이터 조회 함수 (changeKeys가 있으면 해당 항목만 부분 갱신) */
12
12
  fetch: (changeKeys?: Array<string | number>) => Promise<TData[]>;
13
13
  /** 항목의 고유 key 추출 함수 */
@@ -1 +1 @@
1
- {"version":3,"file":"SharedDataContext.d.ts","sourceRoot":"","sources":["..\\..\\..\\src\\providers\\shared-data\\SharedDataContext.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SharedDataContext.d.ts","sourceRoot":"","sources":["..\\..\\..\\src\\providers\\shared-data\\SharedDataContext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,QAAQ,EAA6B,MAAM,UAAU,CAAC;AAEpE;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB,CAAC,KAAK;IACzC,kCAAkC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,+CAA+C;IAC/C,KAAK,EAAE,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;IACjE,uBAAuB;IACvB,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,MAAM,GAAG,MAAM,CAAC;IACzC,6BAA6B;IAC7B,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO,EAAE,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC;IACtD,oDAAoD;IACpD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,2BAA2B;IAC3B,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,MAAM,CAAC;IACxC,0BAA0B;IAC1B,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC;IACvC,qCAAqC;IACrC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CAC7D;AAED;;;;;GAKG;AACH,MAAM,WAAW,kBAAkB,CAAC,KAAK;IACvC,gBAAgB;IAChB,KAAK,EAAE,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IACzB,oBAAoB;IACpB,GAAG,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,KAAK,KAAK,GAAG,SAAS,CAAC;IAC7D,2CAA2C;IAC3C,IAAI,EAAE,CAAC,UAAU,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,uBAAuB;IACvB,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,MAAM,GAAG,MAAM,CAAC;IACzC,2BAA2B;IAC3B,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,MAAM,CAAC;IACxC,0BAA0B;IAC1B,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC;IACvC,qCAAqC;IACrC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CAC7D;AAED;;;;;;GAMG;AACH,MAAM,MAAM,eAAe,CAAC,WAAW,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI;KACxE,CAAC,IAAI,MAAM,WAAW,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;CAC7D,GAAG;IACF,0BAA0B;IAC1B,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,oBAAoB;IACpB,IAAI,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IACxB,iDAAiD;IACjD,SAAS,EAAE,CACT,EAAE,EAAE,CAAC,MAAM,EAAE;SACV,CAAC,IAAI,MAAM,WAAW,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;KAC/D,KAAK;SACH,CAAC,IAAI,MAAM,WAAW,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;KAC/D,KACE,IAAI,CAAC;CACX,CAAC;AAEF,qBAAqB;AACrB,eAAO,MAAM,iBAAiB,kFAA4D,CAAC;AAE3F;;;;GAIG;AACH,wBAAgB,aAAa,CAC3B,WAAW,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAClE,eAAe,CAAC,WAAW,CAAC,CAMhC"}
@@ -6,7 +6,7 @@ import { type JSX } from "solid-js";
6
6
  * - ServiceClientProvider와 NotificationProvider 내부에서 사용해야 함
7
7
  * - LoggerProvider가 있으면 fetch 실패를 로거에도 기록
8
8
  * - configure() 호출 전: wait, busy, configure만 접근 가능. 데이터 접근 시 throw
9
- * - configure() 호출 후: definitions 각 key마다 서버 이벤트 리스너를 등록하여 실시간 동기화
9
+ * - configure() 호출 후: definitions 등록. 각 key items()/get() 첫 접근 시 서버 이벤트 리스너 등록 + fetch (lazy)
10
10
  * - 동시 fetch 호출 시 version counter로 데이터 역전 방지
11
11
  * - fetch 실패 시 사용자에게 danger 알림 표시
12
12
  * - cleanup 시 모든 이벤트 리스너 자동 해제
@@ -20,7 +20,6 @@ import { type JSX } from "solid-js";
20
20
  * // 자식 컴포넌트에서 나중에 설정:
21
21
  * useSharedData().configure(() => ({
22
22
  * users: {
23
- * serviceKey: "main",
24
23
  * fetch: async (changeKeys) => fetchUsers(changeKeys),
25
24
  * getKey: (item) => item.id,
26
25
  * orderBy: [[(item) => item.name, "asc"]],
@@ -1 +1 @@
1
- {"version":3,"file":"SharedDataProvider.d.ts","sourceRoot":"","sources":["..\\..\\..\\src\\providers\\shared-data\\SharedDataProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,GAAG,EAAuC,MAAM,UAAU,CAAC;AAaxF;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IAAE,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,CA4KhF"}
1
+ {"version":3,"file":"SharedDataProvider.d.ts","sourceRoot":"","sources":["..\\..\\..\\src\\providers\\shared-data\\SharedDataProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,GAAG,EAAuC,MAAM,UAAU,CAAC;AAaxF;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE;IAAE,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,CAyLhF"}
@@ -68,6 +68,20 @@ function SharedDataProvider(props) {
68
68
  const definitions = fn({});
69
69
  currentDefinitions = definitions;
70
70
  for (const [name, def] of Object.entries(definitions)) {
71
+ let ensureInitialized2 = function() {
72
+ if (initialized) return;
73
+ initialized = true;
74
+ void client.addEventListener(SharedDataChangeEvent, {
75
+ name,
76
+ filter: def.filter
77
+ }, async (changeKeys) => {
78
+ await loadData(name, def, changeKeys);
79
+ }).then((key) => {
80
+ listenerKeyMap.set(name, key);
81
+ });
82
+ void loadData(name, def);
83
+ };
84
+ var ensureInitialized = ensureInitialized2;
71
85
  const [items, setItems] = createSignal([]);
72
86
  signalMap.set(name, [items, setItems]);
73
87
  const itemMap = createMemo(() => {
@@ -78,19 +92,15 @@ function SharedDataProvider(props) {
78
92
  return map;
79
93
  });
80
94
  memoMap.set(name, itemMap);
81
- const client = serviceClient.get(def.serviceKey);
82
- void client.addEventListener(SharedDataChangeEvent, {
83
- name,
84
- filter: def.filter
85
- }, async (changeKeys) => {
86
- await loadData(name, def, changeKeys);
87
- }).then((key) => {
88
- listenerKeyMap.set(name, key);
89
- });
90
- void loadData(name, def);
95
+ const client = serviceClient.get(def.serviceKey ?? "default");
96
+ let initialized = false;
91
97
  accessors[name] = {
92
- items,
98
+ items: () => {
99
+ ensureInitialized2();
100
+ return items();
101
+ },
93
102
  get: (key) => {
103
+ ensureInitialized2();
94
104
  if (key === void 0) return void 0;
95
105
  return itemMap().get(key);
96
106
  },
@@ -110,7 +120,7 @@ function SharedDataProvider(props) {
110
120
  const listenerKey = listenerKeyMap.get(name);
111
121
  if (listenerKey != null) {
112
122
  const def = currentDefinitions[name];
113
- const client = serviceClient.get(def.serviceKey);
123
+ const client = serviceClient.get(def.serviceKey ?? "default");
114
124
  void client.removeEventListener(listenerKey);
115
125
  }
116
126
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/providers/shared-data/SharedDataProvider.tsx"],
4
- "mappings": "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",
5
- "names": ["createMemo", "createSignal", "onCleanup", "objEqual", "waitUntil", "SharedDataContext", "SharedDataChangeEvent", "useServiceClient", "useNotification", "useLogger", "SharedDataProvider", "props", "serviceClient", "notification", "logger", "configured", "busyCount", "setBusyCount", "busy", "signalMap", "Map", "memoMap", "listenerKeyMap", "versionMap", "accessors", "currentDefinitions", "ordering", "data", "orderByList", "result", "orderBy", "reverse", "selector", "item", "orderByDesc", "loadData", "name", "def", "changeKeys", "currentVersion", "get", "set", "c", "signal", "Error", "setItems", "resData", "fetch", "prev", "filtered", "filter", "includes", "getKey", "push", "err", "error", "danger", "message", "wait", "configure", "fn", "definitions", "Object", "entries", "items", "itemMap", "map", "client", "serviceKey", "addEventListener", "then", "key", "undefined", "emit", "emitToServer", "info", "getSearchText", "getIsHidden", "getParentKey", "listenerKey", "removeEventListener", "KNOWN_KEYS", "Set", "contextValue", "Proxy", "target", "prop", "has", "_$createComponent", "Provider", "value", "children"]
4
+ "mappings": "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",
5
+ "names": ["createMemo", "createSignal", "onCleanup", "objEqual", "waitUntil", "SharedDataContext", "SharedDataChangeEvent", "useServiceClient", "useNotification", "useLogger", "SharedDataProvider", "props", "serviceClient", "notification", "logger", "configured", "busyCount", "setBusyCount", "busy", "signalMap", "Map", "memoMap", "listenerKeyMap", "versionMap", "accessors", "currentDefinitions", "ordering", "data", "orderByList", "result", "orderBy", "reverse", "selector", "item", "orderByDesc", "loadData", "name", "def", "changeKeys", "currentVersion", "get", "set", "c", "signal", "Error", "setItems", "resData", "fetch", "prev", "filtered", "filter", "includes", "getKey", "push", "err", "error", "danger", "message", "wait", "configure", "fn", "definitions", "Object", "entries", "ensureInitialized", "initialized", "client", "addEventListener", "then", "key", "items", "itemMap", "map", "serviceKey", "undefined", "emit", "emitToServer", "info", "getSearchText", "getIsHidden", "getParentKey", "listenerKey", "removeEventListener", "KNOWN_KEYS", "Set", "contextValue", "Proxy", "target", "prop", "has", "_$createComponent", "Provider", "value", "children"]
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@simplysm/solid",
3
- "version": "13.0.64",
3
+ "version": "13.0.65",
4
4
  "description": "심플리즘 패키지 - SolidJS 라이브러리",
5
5
  "author": "김석래",
6
6
  "license": "Apache-2.0",
@@ -50,8 +50,10 @@
50
50
  "solid-tiptap": "^0.8.0",
51
51
  "tailwind-merge": "^3.5.0",
52
52
  "tailwindcss": "^3.4.19",
53
- "@simplysm/core-common": "13.0.64",
54
- "@simplysm/core-browser": "13.0.64"
53
+ "@simplysm/core-browser": "13.0.65",
54
+ "@simplysm/core-common": "13.0.65",
55
+ "@simplysm/service-client": "13.0.65",
56
+ "@simplysm/service-common": "13.0.65"
55
57
  },
56
58
  "devDependencies": {
57
59
  "@solidjs/testing-library": "^0.8.10"
@@ -1,6 +1,6 @@
1
1
  import { type Component, createSignal, onMount } from "solid-js";
2
- import { BusyContainer } from "../../components/feedback/busy/BusyContainer";
3
- import { useDialogInstance } from "../../components/disclosure/DialogInstanceContext";
2
+ import { BusyContainer } from "../../feedback/busy/BusyContainer";
3
+ import { useDialogInstance } from "../../disclosure/DialogInstanceContext";
4
4
 
5
5
  export interface AddressSearchResult {
6
6
  postNumber: string | undefined;
@@ -14,9 +14,9 @@ import { createControllableStore } from "../../../hooks/createControllableStore"
14
14
  import type { DateTime } from "@simplysm/core-common";
15
15
  import { objClone, objGetChainValue } from "@simplysm/core-common";
16
16
  import "@simplysm/core-common"; // register extensions
17
- import type { SortingDef } from "../sheet/types";
18
- import { DataSheet } from "../sheet/DataSheet";
19
- import { DataSheetColumn } from "../sheet/DataSheetColumn";
17
+ import type { SortingDef } from "../../data/sheet/types";
18
+ import { DataSheet } from "../../data/sheet/DataSheet";
19
+ import { DataSheetColumn } from "../../data/sheet/DataSheetColumn";
20
20
  import { BusyContainer } from "../../feedback/busy/BusyContainer";
21
21
  import { useNotification } from "../../feedback/notification/NotificationContext";
22
22
  import { Button } from "../../form-control/Button";
@@ -1,6 +1,6 @@
1
1
  import type { JSX } from "solid-js";
2
2
  import type { CrudSheetColumnDef, CrudSheetColumnProps } from "./types";
3
- import { normalizeHeader } from "../sheet/sheetUtils";
3
+ import { normalizeHeader } from "../../data/sheet/sheetUtils";
4
4
 
5
5
  export function isCrudSheetColumnDef(value: unknown): value is CrudSheetColumnDef<unknown> {
6
6
  return (
@@ -1,7 +1,7 @@
1
1
  import type { JSX } from "solid-js";
2
2
  import type { SetStoreFunction } from "solid-js/store";
3
3
  import type { ArrayDiffs2Result } from "@simplysm/core-common";
4
- import type { DataSheetColumnProps, SortingDef } from "../sheet/types";
4
+ import type { DataSheetColumnProps, SortingDef } from "../../data/sheet/types";
5
5
 
6
6
  // ── Search ──
7
7
 
@@ -13,7 +13,7 @@ import clsx from "clsx";
13
13
  import { twMerge } from "tailwind-merge";
14
14
  import { IconSearch, IconX } from "@tabler/icons-solidjs";
15
15
  import { Icon } from "../../display/Icon";
16
- import { Invalid } from "../Invalid";
16
+ import { Invalid } from "../../form-control/Invalid";
17
17
  import { useDialog, type DialogShowOptions } from "../../disclosure/DialogContext";
18
18
  import { createControllableSignal } from "../../../hooks/createControllableSignal";
19
19
  import { type ComponentSize, textMuted } from "../../../styles/tokens.styles";
@@ -22,7 +22,7 @@ import {
22
22
  triggerDisabledClass,
23
23
  triggerInsetClass,
24
24
  triggerSizeClasses,
25
- } from "../DropdownTrigger.styles";
25
+ } from "../../form-control/DropdownTrigger.styles";
26
26
 
27
27
  /** 모달에서 반환하는 결과 인터페이스 */
28
28
  export interface DataSelectModalResult<TKey> {
@@ -11,7 +11,7 @@ import {
11
11
  } from "solid-js";
12
12
  import clsx from "clsx";
13
13
  import { twMerge } from "tailwind-merge";
14
- import { DataSheet } from "../sheet/DataSheet";
14
+ import { DataSheet } from "../../data/sheet/DataSheet";
15
15
  import { Checkbox } from "../../form-control/checkbox/Checkbox";
16
16
  import { borderDefault } from "../../../styles/tokens.styles";
17
17
  import type { AppPerm } from "../../../helpers/createAppStructure";
@@ -1,7 +1,7 @@
1
1
  import { createMemo, type JSX, mergeProps, splitProps } from "solid-js";
2
2
  import { IconEdit, IconSearch } from "@tabler/icons-solidjs";
3
3
  import { type SharedDataAccessor } from "../../../providers/shared-data/SharedDataContext";
4
- import { Select, type SelectProps } from "../select/Select";
4
+ import { Select, type SelectProps } from "../../form-control/select/Select";
5
5
  import { Icon } from "../../display/Icon";
6
6
  import { useDialog } from "../../disclosure/DialogContext";
7
7
  import { type ComponentSize } from "../../../styles/tokens.styles";
@@ -1,7 +1,7 @@
1
1
  import { createMemo, type JSX, Show, splitProps } from "solid-js";
2
2
  import { IconExternalLink } from "@tabler/icons-solidjs";
3
3
  import { type SharedDataAccessor } from "../../../providers/shared-data/SharedDataContext";
4
- import { SelectList } from "../select-list/SelectList";
4
+ import { SelectList } from "../../form-control/select-list/SelectList";
5
5
  import { Icon } from "../../display/Icon";
6
6
  import { useDialog } from "../../disclosure/DialogContext";
7
7
 
package/src/index.ts CHANGED
@@ -9,14 +9,6 @@ export * from "./components/form-control/select/Select";
9
9
  // SelectList
10
10
  export * from "./components/form-control/select-list/SelectList";
11
11
 
12
- // DataSelectButton
13
- export * from "./components/form-control/data-select-button/DataSelectButton";
14
-
15
- // SharedData wrappers
16
- export * from "./components/form-control/shared-data/SharedDataSelect";
17
- export * from "./components/form-control/shared-data/SharedDataSelectButton";
18
- export * from "./components/form-control/shared-data/SharedDataSelectList";
19
-
20
12
  // Combobox
21
13
  export * from "./components/form-control/combobox/Combobox";
22
14
 
@@ -68,12 +60,7 @@ export * from "./components/data/Pagination";
68
60
  export * from "./components/data/sheet/DataSheet";
69
61
  export * from "./components/data/sheet/DataSheet.styles";
70
62
  export * from "./components/data/sheet/types";
71
- export * from "./components/data/crud-sheet/CrudSheet";
72
- export * from "./components/data/crud-sheet/types";
73
- export * from "./components/data/crud-detail/CrudDetail";
74
- export * from "./components/data/crud-detail/types";
75
63
  export * from "./components/data/calendar/Calendar";
76
- export * from "./components/data/permission-table/PermissionTable";
77
64
  export * from "./components/data/kanban/Kanban";
78
65
  export * from "./components/data/kanban/KanbanContext";
79
66
 
@@ -186,6 +173,25 @@ export * from "./helpers/createAppStructure";
186
173
  //#region ========== Features ==========
187
174
 
188
175
  // Address
189
- export * from "./features/address/AddressSearch";
176
+ export * from "./components/features/address/AddressSearch";
177
+
178
+ // SharedData wrappers
179
+ export * from "./components/features/shared-data/SharedDataSelect";
180
+ export * from "./components/features/shared-data/SharedDataSelectButton";
181
+ export * from "./components/features/shared-data/SharedDataSelectList";
182
+
183
+ // DataSelectButton
184
+ export * from "./components/features/data-select-button/DataSelectButton";
185
+
186
+ // CrudSheet
187
+ export * from "./components/features/crud-sheet/CrudSheet";
188
+ export * from "./components/features/crud-sheet/types";
189
+
190
+ // CrudDetail
191
+ export * from "./components/features/crud-detail/CrudDetail";
192
+ export * from "./components/features/crud-detail/types";
193
+
194
+ // PermissionTable
195
+ export * from "./components/features/permission-table/PermissionTable";
190
196
 
191
197
  //#endregion
@@ -5,14 +5,14 @@ import type { ServiceClient, ServiceConnectionConfig } from "@simplysm/service-c
5
5
  * WebSocket 서비스 클라이언트 Context 값
6
6
  */
7
7
  export interface ServiceClientContextValue {
8
- /** WebSocket 연결 열기 (key 다중 연결 관리) */
9
- connect: (key: string, options?: Partial<ServiceConnectionConfig>) => Promise<void>;
8
+ /** WebSocket 연결 열기 (key 생략 "default") */
9
+ connect: (key?: string, options?: Partial<ServiceConnectionConfig>) => Promise<void>;
10
10
  /** 연결 닫기 */
11
- close: (key: string) => Promise<void>;
11
+ close: (key?: string) => Promise<void>;
12
12
  /** 연결된 클라이언트 인스턴스 가져오기 (연결되지 않은 key면 에러 발생) */
13
- get: (key: string) => ServiceClient;
13
+ get: (key?: string) => ServiceClient;
14
14
  /** 연결 상태 확인 */
15
- isConnected: (key: string) => boolean;
15
+ isConnected: (key?: string) => boolean;
16
16
  }
17
17
 
18
18
  /** WebSocket 서비스 클라이언트 Context */
@@ -45,11 +45,13 @@ export const ServiceClientProvider: ParentComponent = (props) => {
45
45
  });
46
46
 
47
47
  const connect = async (
48
- key: string,
48
+ key?: string,
49
49
  options?: Partial<ServiceConnectionConfig>,
50
50
  ): Promise<void> => {
51
- if (clientMap.has(key)) {
52
- const existing = clientMap.get(key)!;
51
+ const resolvedKey = key ?? "default";
52
+
53
+ if (clientMap.has(resolvedKey)) {
54
+ const existing = clientMap.get(resolvedKey)!;
53
55
  if (!existing.connected) {
54
56
  throw new Error("이미 연결이 끊긴 클라이언트와 같은 키로 연결을 시도하였습니다.");
55
57
  } else {
@@ -125,27 +127,30 @@ export const ServiceClientProvider: ParentComponent = (props) => {
125
127
  });
126
128
 
127
129
  await client.connect();
128
- clientMap.set(key, client);
130
+ clientMap.set(resolvedKey, client);
129
131
  };
130
132
 
131
- const close = async (key: string): Promise<void> => {
132
- const client = clientMap.get(key);
133
+ const close = async (key?: string): Promise<void> => {
134
+ const resolvedKey = key ?? "default";
135
+ const client = clientMap.get(resolvedKey);
133
136
  if (client) {
134
137
  await client.close();
135
- clientMap.delete(key);
138
+ clientMap.delete(resolvedKey);
136
139
  }
137
140
  };
138
141
 
139
- const get = (key: string): ServiceClient => {
140
- const client = clientMap.get(key);
142
+ const get = (key?: string): ServiceClient => {
143
+ const resolvedKey = key ?? "default";
144
+ const client = clientMap.get(resolvedKey);
141
145
  if (!client) {
142
- throw new Error(`연결하지 않은 클라이언트 키입니다. ${key}`);
146
+ throw new Error(`연결하지 않은 클라이언트 키입니다. ${resolvedKey}`);
143
147
  }
144
148
  return client;
145
149
  };
146
150
 
147
- const isConnected = (key: string): boolean => {
148
- const client = clientMap.get(key);
151
+ const isConnected = (key?: string): boolean => {
152
+ const resolvedKey = key ?? "default";
153
+ const client = clientMap.get(resolvedKey);
149
154
  return client?.connected ?? false;
150
155
  };
151
156
 
@@ -7,8 +7,8 @@ import { type Accessor, createContext, useContext } from "solid-js";
7
7
  * SharedDataProvider에 전달하여 서버 데이터 구독을 설정한다.
8
8
  */
9
9
  export interface SharedDataDefinition<TData> {
10
- /** 서비스 연결 key (useServiceClient의 connect key와 동일) */
11
- serviceKey: string;
10
+ /** 서비스 연결 key (생략 "default") */
11
+ serviceKey?: string;
12
12
  /** 데이터 조회 함수 (changeKeys가 있으면 해당 항목만 부분 갱신) */
13
13
  fetch: (changeKeys?: Array<string | number>) => Promise<TData[]>;
14
14
  /** 항목의 고유 key 추출 함수 */
@@ -18,7 +18,7 @@ import { useLogger } from "../../hooks/useLogger";
18
18
  * - ServiceClientProvider와 NotificationProvider 내부에서 사용해야 함
19
19
  * - LoggerProvider가 있으면 fetch 실패를 로거에도 기록
20
20
  * - configure() 호출 전: wait, busy, configure만 접근 가능. 데이터 접근 시 throw
21
- * - configure() 호출 후: definitions 각 key마다 서버 이벤트 리스너를 등록하여 실시간 동기화
21
+ * - configure() 호출 후: definitions 등록. 각 key items()/get() 첫 접근 시 서버 이벤트 리스너 등록 + fetch (lazy)
22
22
  * - 동시 fetch 호출 시 version counter로 데이터 역전 방지
23
23
  * - fetch 실패 시 사용자에게 danger 알림 표시
24
24
  * - cleanup 시 모든 이벤트 리스너 자동 해제
@@ -32,7 +32,6 @@ import { useLogger } from "../../hooks/useLogger";
32
32
  * // 자식 컴포넌트에서 나중에 설정:
33
33
  * useSharedData().configure(() => ({
34
34
  * users: {
35
- * serviceKey: "main",
36
35
  * fetch: async (changeKeys) => fetchUsers(changeKeys),
37
36
  * getKey: (item) => item.id,
38
37
  * orderBy: [[(item) => item.name, "asc"]],
@@ -143,24 +142,37 @@ export function SharedDataProvider(props: { children: JSX.Element }): JSX.Elemen
143
142
  // eslint-disable-next-line solid/reactivity -- memo 참조를 Map에 저장하는 것은 반응성 접근이 아님
144
143
  memoMap.set(name, itemMap);
145
144
 
146
- const client = serviceClient.get(def.serviceKey);
147
- void client
148
- .addEventListener(
149
- SharedDataChangeEvent,
150
- { name, filter: def.filter },
151
- async (changeKeys) => {
152
- await loadData(name, def, changeKeys);
153
- },
154
- )
155
- .then((key) => {
156
- listenerKeyMap.set(name, key);
157
- });
145
+ const client = serviceClient.get(def.serviceKey ?? "default");
146
+
147
+ let initialized = false;
148
+
149
+ function ensureInitialized() {
150
+ if (initialized) return;
151
+ initialized = true;
158
152
 
159
- void loadData(name, def);
153
+ // TODO: addEventListener가 resolve 전에 unmount되면 listener orphan 가능
154
+ void client
155
+ .addEventListener(
156
+ SharedDataChangeEvent,
157
+ { name, filter: def.filter },
158
+ async (changeKeys) => {
159
+ await loadData(name, def, changeKeys);
160
+ },
161
+ )
162
+ .then((key) => {
163
+ listenerKeyMap.set(name, key);
164
+ });
165
+
166
+ void loadData(name, def);
167
+ }
160
168
 
161
169
  accessors[name] = {
162
- items,
170
+ items: () => {
171
+ ensureInitialized();
172
+ return items();
173
+ },
163
174
  get: (key: string | number | undefined) => {
175
+ ensureInitialized();
164
176
  if (key === undefined) return undefined;
165
177
  return itemMap().get(key);
166
178
  },
@@ -185,7 +197,7 @@ export function SharedDataProvider(props: { children: JSX.Element }): JSX.Elemen
185
197
  const listenerKey = listenerKeyMap.get(name);
186
198
  if (listenerKey != null) {
187
199
  const def = currentDefinitions[name];
188
- const client = serviceClient.get(def.serviceKey);
200
+ const client = serviceClient.get(def.serviceKey ?? "default");
189
201
  void client.removeEventListener(listenerKey);
190
202
  }
191
203
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"CrudDetail.d.ts","sourceRoot":"","sources":["..\\..\\..\\..\\src\\components\\data\\crud-detail\\CrudDetail.tsx"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,GAAG,EAKT,MAAM,UAAU,CAAC;AAoBlB,OAAO,EAAE,eAAe,EAAwB,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,gBAAgB,EAAyB,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAwB,MAAM,mBAAmB,CAAC;AAC1E,OAAO,KAAK,EAKV,eAAe,EAEhB,MAAM,SAAS,CAAC;AAEjB,UAAU,mBAAmB;IAC3B,CAAC,KAAK,SAAS,MAAM,EAAE,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC;IACnE,KAAK,EAAE,OAAO,eAAe,CAAC;IAC9B,MAAM,EAAE,OAAO,gBAAgB,CAAC;IAChC,KAAK,EAAE,OAAO,eAAe,CAAC;CAC/B;AAsUD,eAAO,MAAM,UAAU,EAAgC,mBAAmB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"CrudDetailAfter.d.ts","sourceRoot":"","sources":["..\\..\\..\\..\\src\\components\\data\\crud-detail\\CrudDetailAfter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,kBAAkB,CAMhF;AAGD,wBAAgB,eAAe,CAAC,KAAK,EAAE;IAAE,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,CAK7E"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"CrudDetailBefore.d.ts","sourceRoot":"","sources":["..\\..\\..\\..\\src\\components\\data\\crud-detail\\CrudDetailBefore.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAEnD,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,mBAAmB,CAMlF;AAGD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE;IAAE,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,CAK9E"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"CrudDetailTools.d.ts","sourceRoot":"","sources":["..\\..\\..\\..\\src\\components\\data\\crud-detail\\CrudDetailTools.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,kBAAkB,CAMhF;AAGD,wBAAgB,eAAe,CAAC,KAAK,EAAE;IAAE,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,CAK7E"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["..\\..\\..\\..\\src\\components\\data\\crud-detail\\types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAItD,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,OAAO,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,CAAC,EAAE,QAAQ,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAID,MAAM,WAAW,iBAAiB,CAAC,KAAK;IACtC,IAAI,EAAE,KAAK,CAAC;IACZ,OAAO,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACjC,IAAI,EAAE,MAAM,cAAc,CAAC;IAC3B,IAAI,EAAE,MAAM,OAAO,CAAC;IACpB,UAAU,EAAE,MAAM,OAAO,CAAC;IAC1B,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAID,MAAM,WAAW,eAAe,CAAC,KAAK,SAAS,MAAM;IACnD,IAAI,EAAE,MAAM,OAAO,CAAC;QAAE,IAAI,EAAE,KAAK,CAAC;QAAC,IAAI,EAAE,cAAc,CAAA;KAAE,CAAC,CAAC;IAC3D,QAAQ,EAAE,CAAC,GAAG,EAAE,iBAAiB,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,OAAO,CAAC;IAEzD,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IACvD,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC,CAAC;IAC9D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,IAAI,CAAC,EAAE,KAAK,CAAC;IACb,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,KAAK,IAAI,CAAC;IAErC,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAID,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,mBAAmB,CAAC;IAC5B,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,oBAAoB,CAAC;IAC7B,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,mBAAmB,CAAC;IAC5B,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAC;CACvB"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"CrudSheet.d.ts","sourceRoot":"","sources":["..\\..\\..\\..\\src\\components\\data\\crud-sheet\\CrudSheet.tsx"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,GAAG,EAIT,MAAM,UAAU,CAAC;AAKlB,OAAO,uBAAuB,CAAC;AA2B/B,OAAO,EAAE,eAAe,EAAwB,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,eAAe,EAAwB,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAuB,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,eAAe,EAAwB,MAAM,mBAAmB,CAAC;AAC1E,OAAO,KAAK,EAKV,cAAc,EAGf,MAAM,SAAS,CAAC;AAEjB,UAAU,kBAAkB;IAC1B,CAAC,KAAK,EAAE,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC;IACjG,MAAM,EAAE,OAAO,eAAe,CAAC;IAC/B,MAAM,EAAE,OAAO,eAAe,CAAC;IAC/B,KAAK,EAAE,OAAO,cAAc,CAAC;IAC7B,MAAM,EAAE,OAAO,eAAe,CAAC;CAChC;AAsrBD,eAAO,MAAM,SAAS,EAA+B,kBAAkB,CAAC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"CrudSheetColumn.d.ts","sourceRoot":"","sources":["..\\..\\..\\..\\src\\components\\data\\crud-sheet\\CrudSheetColumn.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,KAAK,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAC;AAGxE,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,kBAAkB,CAAC,OAAO,CAAC,CAMzF;AAGD,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,oBAAoB,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,OAAO,CAmBtF"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"CrudSheetFilter.d.ts","sourceRoot":"","sources":["..\\..\\..\\..\\src\\components\\data\\crud-sheet\\CrudSheetFilter.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,kBAAkB,CAAC,GAAG,CAAC,CAMrF;AAGD,wBAAgB,eAAe,CAAC,OAAO,EAAE,KAAK,EAAE;IAC9C,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,KAAK,GAAG,CAAC,OAAO,CAAC;CAC5D,GAAG,GAAG,CAAC,OAAO,CAKd"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"CrudSheetHeader.d.ts","sourceRoot":"","sources":["..\\..\\..\\..\\src\\components\\data\\crud-sheet\\CrudSheetHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,kBAAkB,CAMhF;AAGD,wBAAgB,eAAe,CAAC,KAAK,EAAE;IAAE,QAAQ,EAAE,GAAG,CAAC,OAAO,CAAA;CAAE,GAAG,GAAG,CAAC,OAAO,CAK7E"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"CrudSheetTools.d.ts","sourceRoot":"","sources":["..\\..\\..\\..\\src\\components\\data\\crud-sheet\\CrudSheetTools.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AACpC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAEjD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,iBAAiB,CAAC,GAAG,CAAC,CAMnF;AAGD,wBAAgB,cAAc,CAAC,MAAM,EAAE,KAAK,EAAE;IAC5C,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,CAAC,OAAO,CAAC;CACrC,GAAG,GAAG,CAAC,OAAO,CAKd"}