sonamu 0.7.21 → 0.7.23

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 (200) hide show
  1. package/dist/ai/agents/agent.d.ts +6 -1
  2. package/dist/ai/agents/agent.d.ts.map +1 -1
  3. package/dist/ai/agents/agent.js +20 -5
  4. package/dist/api/base-frame.d.ts +4 -0
  5. package/dist/api/base-frame.d.ts.map +1 -1
  6. package/dist/api/base-frame.js +9 -1
  7. package/dist/api/caster.d.ts.map +1 -1
  8. package/dist/api/caster.js +2 -2
  9. package/dist/api/config.d.ts +35 -3
  10. package/dist/api/config.d.ts.map +1 -1
  11. package/dist/api/config.js +1 -1
  12. package/dist/api/decorators.d.ts +4 -4
  13. package/dist/api/decorators.d.ts.map +1 -1
  14. package/dist/api/decorators.js +80 -18
  15. package/dist/api/index.d.ts +1 -0
  16. package/dist/api/index.d.ts.map +1 -1
  17. package/dist/api/index.js +2 -1
  18. package/dist/api/secret.d.ts +7 -0
  19. package/dist/api/secret.d.ts.map +1 -0
  20. package/dist/api/secret.js +17 -0
  21. package/dist/api/sonamu.d.ts +17 -8
  22. package/dist/api/sonamu.d.ts.map +1 -1
  23. package/dist/api/sonamu.js +265 -47
  24. package/dist/cache/cache-manager.d.ts +11 -0
  25. package/dist/cache/cache-manager.d.ts.map +1 -0
  26. package/dist/cache/cache-manager.js +22 -0
  27. package/dist/cache/decorator.d.ts +31 -0
  28. package/dist/cache/decorator.d.ts.map +1 -0
  29. package/dist/cache/decorator.js +86 -0
  30. package/dist/cache/drivers.d.ts +33 -0
  31. package/dist/cache/drivers.d.ts.map +1 -0
  32. package/dist/cache/drivers.js +36 -0
  33. package/dist/cache/index.d.ts +4 -0
  34. package/dist/cache/index.d.ts.map +1 -0
  35. package/dist/cache/index.js +8 -0
  36. package/dist/cache/types.d.ts +28 -0
  37. package/dist/cache/types.d.ts.map +1 -0
  38. package/dist/cache/types.js +6 -0
  39. package/dist/database/base-model.d.ts +4 -2
  40. package/dist/database/base-model.d.ts.map +1 -1
  41. package/dist/database/base-model.js +9 -4
  42. package/dist/database/code-generator.d.ts +3 -1
  43. package/dist/database/code-generator.d.ts.map +1 -1
  44. package/dist/database/code-generator.js +3 -2
  45. package/dist/database/db.d.ts +1 -1
  46. package/dist/database/db.d.ts.map +1 -1
  47. package/dist/database/db.js +5 -5
  48. package/dist/database/knex.d.ts +3 -0
  49. package/dist/database/knex.d.ts.map +1 -0
  50. package/dist/database/knex.js +29 -0
  51. package/dist/database/puri.types.d.ts.map +1 -1
  52. package/dist/database/puri.types.js +1 -1
  53. package/dist/database/upsert-builder.d.ts.map +1 -1
  54. package/dist/database/upsert-builder.js +49 -5
  55. package/dist/index.d.ts +4 -0
  56. package/dist/index.d.ts.map +1 -1
  57. package/dist/index.js +4 -1
  58. package/dist/logger/category.d.ts +4 -0
  59. package/dist/logger/category.d.ts.map +1 -0
  60. package/dist/logger/category.js +34 -0
  61. package/dist/logger/configure.d.ts +9 -0
  62. package/dist/logger/configure.d.ts.map +1 -0
  63. package/dist/logger/configure.js +115 -0
  64. package/dist/migration/code-generation.d.ts +5 -1
  65. package/dist/migration/code-generation.d.ts.map +1 -1
  66. package/dist/migration/code-generation.js +13 -7
  67. package/dist/migration/migrator.d.ts +1 -1
  68. package/dist/migration/migrator.d.ts.map +1 -1
  69. package/dist/migration/migrator.js +7 -7
  70. package/dist/migration/postgresql-schema-reader.d.ts.map +1 -1
  71. package/dist/migration/postgresql-schema-reader.js +5 -3
  72. package/dist/naite/naite.d.ts +0 -4
  73. package/dist/naite/naite.d.ts.map +1 -1
  74. package/dist/naite/naite.js +11 -19
  75. package/dist/ssr/index.d.ts +4 -0
  76. package/dist/ssr/index.d.ts.map +1 -0
  77. package/dist/ssr/index.js +4 -0
  78. package/dist/ssr/registry.d.ts +10 -0
  79. package/dist/ssr/registry.d.ts.map +1 -0
  80. package/dist/ssr/registry.js +43 -0
  81. package/dist/ssr/renderer.d.ts +6 -0
  82. package/dist/ssr/renderer.d.ts.map +1 -0
  83. package/dist/ssr/renderer.js +70 -0
  84. package/dist/ssr/types.d.ts +19 -0
  85. package/dist/ssr/types.d.ts.map +1 -0
  86. package/dist/ssr/types.js +4 -0
  87. package/dist/syncer/syncer.d.ts +1 -0
  88. package/dist/syncer/syncer.d.ts.map +1 -1
  89. package/dist/syncer/syncer.js +58 -1
  90. package/dist/tasks/decorator.d.ts +1 -0
  91. package/dist/tasks/decorator.d.ts.map +1 -1
  92. package/dist/tasks/decorator.js +9 -7
  93. package/dist/tasks/step-wrapper.d.ts +5 -0
  94. package/dist/tasks/step-wrapper.d.ts.map +1 -1
  95. package/dist/tasks/step-wrapper.js +11 -6
  96. package/dist/tasks/workflow-manager.d.ts +2 -0
  97. package/dist/tasks/workflow-manager.d.ts.map +1 -1
  98. package/dist/tasks/workflow-manager.js +5 -2
  99. package/dist/template/implementations/entry-server.template.d.ts +17 -0
  100. package/dist/template/implementations/entry-server.template.d.ts.map +1 -0
  101. package/dist/template/implementations/entry-server.template.js +78 -0
  102. package/dist/template/implementations/model.template.d.ts.map +1 -1
  103. package/dist/template/implementations/model.template.js +5 -3
  104. package/dist/template/implementations/queries.template.d.ts +17 -0
  105. package/dist/template/implementations/queries.template.d.ts.map +1 -0
  106. package/dist/template/implementations/queries.template.js +83 -0
  107. package/dist/template/implementations/view_enums_select.template.d.ts.map +1 -1
  108. package/dist/template/implementations/view_enums_select.template.js +34 -20
  109. package/dist/template/implementations/view_form.template.d.ts +2 -1
  110. package/dist/template/implementations/view_form.template.d.ts.map +1 -1
  111. package/dist/template/implementations/view_form.template.js +301 -129
  112. package/dist/template/implementations/view_id_async_select.template.d.ts.map +1 -1
  113. package/dist/template/implementations/view_id_async_select.template.js +136 -57
  114. package/dist/template/implementations/view_list.template.d.ts +2 -0
  115. package/dist/template/implementations/view_list.template.d.ts.map +1 -1
  116. package/dist/template/implementations/view_list.template.js +392 -227
  117. package/dist/template/implementations/view_search_input.template.d.ts.map +1 -1
  118. package/dist/template/implementations/view_search_input.template.js +46 -30
  119. package/dist/template/zod-converter.d.ts.map +1 -1
  120. package/dist/template/zod-converter.js +2 -2
  121. package/dist/testing/bootstrap.d.ts +28 -0
  122. package/dist/testing/bootstrap.d.ts.map +1 -0
  123. package/dist/testing/bootstrap.js +120 -0
  124. package/dist/testing/fixture-loader.d.ts +21 -0
  125. package/dist/testing/fixture-loader.d.ts.map +1 -0
  126. package/dist/testing/fixture-loader.js +28 -0
  127. package/dist/testing/fixture-manager.d.ts +1 -1
  128. package/dist/testing/fixture-manager.d.ts.map +1 -1
  129. package/dist/testing/fixture-manager.js +7 -7
  130. package/dist/testing/index.d.ts +4 -0
  131. package/dist/testing/index.d.ts.map +1 -0
  132. package/dist/testing/index.js +5 -0
  133. package/dist/testing/naite-vitest-reporter.d.ts +12 -0
  134. package/dist/testing/naite-vitest-reporter.d.ts.map +1 -0
  135. package/dist/testing/naite-vitest-reporter.js +17 -0
  136. package/dist/types/types.d.ts +5 -6
  137. package/dist/types/types.d.ts.map +1 -1
  138. package/dist/types/types.js +7 -8
  139. package/dist/ui/ai-client.d.ts +3 -1
  140. package/dist/ui/ai-client.d.ts.map +1 -1
  141. package/dist/ui/ai-client.js +27 -8
  142. package/dist/ui-web/assets/index-CTYv3qL6.js +92 -0
  143. package/dist/ui-web/index.html +1 -1
  144. package/package.json +43 -20
  145. package/src/ai/agents/agent.ts +38 -19
  146. package/src/api/base-frame.ts +8 -0
  147. package/src/api/caster.ts +6 -1
  148. package/src/api/config.ts +38 -4
  149. package/src/api/decorators.ts +106 -20
  150. package/src/api/index.ts +1 -0
  151. package/src/api/secret.ts +23 -0
  152. package/src/api/sonamu.ts +334 -61
  153. package/src/cache/cache-manager.ts +23 -0
  154. package/src/cache/decorator.ts +116 -0
  155. package/src/cache/drivers.ts +42 -0
  156. package/src/cache/index.ts +16 -0
  157. package/src/cache/types.ts +32 -0
  158. package/src/database/base-model.ts +7 -3
  159. package/src/database/code-generator.ts +3 -1
  160. package/src/database/db.ts +5 -5
  161. package/src/database/knex.ts +34 -0
  162. package/src/database/puri.types.ts +2 -3
  163. package/src/database/upsert-builder.ts +58 -4
  164. package/src/index.ts +4 -0
  165. package/src/logger/category.ts +42 -0
  166. package/src/logger/configure.ts +132 -0
  167. package/src/migration/code-generation.ts +19 -6
  168. package/src/migration/migrator.ts +7 -6
  169. package/src/migration/postgresql-schema-reader.ts +7 -2
  170. package/src/naite/naite.ts +10 -18
  171. package/src/shared/web.shared.ts.txt +1 -1
  172. package/src/ssr/index.ts +13 -0
  173. package/src/ssr/registry.ts +52 -0
  174. package/src/ssr/renderer.ts +105 -0
  175. package/src/ssr/types.ts +20 -0
  176. package/src/syncer/syncer.ts +59 -0
  177. package/src/tasks/decorator.ts +20 -4
  178. package/src/tasks/step-wrapper.ts +14 -5
  179. package/src/tasks/workflow-manager.ts +9 -1
  180. package/src/template/implementations/entry-server.template.ts +81 -0
  181. package/src/template/implementations/model.template.ts +4 -2
  182. package/src/template/implementations/queries.template.ts +111 -0
  183. package/src/template/implementations/view_enums_select.template.ts +33 -19
  184. package/src/template/implementations/view_form.template.ts +324 -145
  185. package/src/template/implementations/view_id_async_select.template.ts +145 -56
  186. package/src/template/implementations/view_list.template.ts +446 -236
  187. package/src/template/implementations/view_search_input.template.ts +45 -29
  188. package/src/template/zod-converter.ts +4 -1
  189. package/src/testing/bootstrap.ts +176 -0
  190. package/src/testing/fixture-loader.ts +28 -0
  191. package/src/testing/fixture-manager.ts +7 -6
  192. package/src/testing/index.ts +3 -0
  193. package/src/testing/naite-vitest-reporter.ts +18 -0
  194. package/src/types/types.ts +4 -5
  195. package/src/ui/ai-client.ts +82 -50
  196. package/dist/template/implementations/view_enums_dropdown.template.d.ts +0 -17
  197. package/dist/template/implementations/view_enums_dropdown.template.d.ts.map +0 -1
  198. package/dist/template/implementations/view_enums_dropdown.template.js +0 -50
  199. package/dist/ui-web/assets/index-B87IyofX.js +0 -92
  200. package/src/template/implementations/view_enums_dropdown.template.ts +0 -53
@@ -1 +1 @@
1
- {"version":3,"file":"view_id_async_select.template.d.ts","sourceRoot":"","sources":["../../../src/template/implementations/view_id_async_select.template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACpF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,qBAAa,8BAA+B,SAAQ,QAAQ;;IAK1D,gBAAgB,CAAC,KAAK,EAAE,iBAAiB;;;;IAOzC,MAAM,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,eAAe,CAAC,sBAAsB,CAAC;;;;;;CA2FxE"}
1
+ {"version":3,"file":"view_id_async_select.template.d.ts","sourceRoot":"","sources":["../../../src/template/implementations/view_id_async_select.template.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACpF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,qBAAa,8BAA+B,SAAQ,QAAQ;;IAK1D,gBAAgB,CAAC,KAAK,EAAE,iBAAiB;;;;IAOzC,MAAM,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,eAAe,CAAC,sBAAsB,CAAC;;;;;;CAoLxE"}
@@ -13,86 +13,165 @@ export class Template__view_id_async_select extends Template {
13
13
  render({ entityId, textField }) {
14
14
  const names = EntityManager.getNamesFromId(entityId);
15
15
  const entity = EntityManager.get(entityId);
16
+ // textField가 지정되지 않은 경우 모든 subset에 공통으로 있는 필드 찾기
16
17
  if (!textField) {
17
- const pickedProp = entity.props.find((prop)=>[
18
- "name",
19
- "title"
20
- ].includes(prop.name));
21
- if (pickedProp) {
22
- textField = pickedProp.name;
23
- } else {
24
- const candidateProp = entity.props.find((prop)=>prop.type === "string");
25
- if (candidateProp) {
26
- textField = candidateProp.name;
18
+ const subsetKeys = Object.keys(entity.subsets);
19
+ if (subsetKeys.length > 0) {
20
+ // 모든 subset에 공통으로 포함된 직접 필드만 추출
21
+ const commonFields = subsetKeys.reduce((common, key)=>{
22
+ const fields = entity.subsets[key].filter((path)=>!path.includes(".")) // 직접 필드만
23
+ .map((path)=>path);
24
+ return common.filter((field)=>fields.includes(field));
25
+ }, entity.subsets[subsetKeys[0]].filter((path)=>!path.includes(".")));
26
+ // 우선순위: name > title > 첫 번째 string 타입
27
+ const pickedProp = entity.props.find((prop)=>[
28
+ "name",
29
+ "title"
30
+ ].includes(prop.name) && commonFields.includes(prop.name));
31
+ if (pickedProp) {
32
+ textField = pickedProp.name;
27
33
  } else {
28
- console.log("textField 찾을 수 없음");
34
+ const candidateProp = entity.props.find((prop)=>prop.type === "string" && commonFields.includes(prop.name));
35
+ if (candidateProp) {
36
+ textField = candidateProp.name;
37
+ } else {
38
+ // 공통 필드가 없으면 id 사용
39
+ textField = "id";
40
+ console.log(`Warning: ${entityId}에 모든 subset에 공통으로 포함된 string 필드가 없어 id를 사용합니다`);
41
+ }
29
42
  }
30
43
  }
31
44
  }
32
45
  return {
33
46
  ...this.getTargetAndPath(names),
34
47
  body: `
35
- import React, { useState, useEffect, SyntheticEvent } from "react";
36
- import { DropdownProps, DropdownItemProps, DropdownOnSearchChangeData, Dropdown } from "semantic-ui-react";
48
+ import React, { useState, useEffect, useMemo, useCallback } from "react";
49
+ import { AsyncSelect, AsyncSelectOption, MultiSelect, MultiSelectOption } from "@sonamu-kit/react-components/components";
37
50
  import { ${names.capital}SubsetKey, ${names.capital}SubsetMapping } from "@/services/sonamu.generated";
38
51
  import { ${names.capital}Service } from "@/services/services.generated";
39
52
  import { ${names.capital}ListParams } from "@/services/${names.fs}/${names.fs}.types";
40
53
 
41
- export function ${names.capital}IdAsyncSelect<T extends ${names.capital}SubsetKey>(
42
- { subset, baseListParams, textField, valueField, ...props }: DropdownProps & {
43
- subset: T;
44
- baseListParams?: ${names.capital}ListParams;
45
- textField${textField ? "?" : ""}: keyof ${names.capital}SubsetMapping[T];
46
- valueField?: keyof ${names.capital}SubsetMapping[T];
47
- },
48
- ) {
49
- const [options, setOptions] = useState<DropdownItemProps[]>([]);
54
+ export type ${names.capital}IdAsyncSelectProps<T extends ${names.capital}SubsetKey> = {
55
+ subset: T;
56
+ baseListParams?: ${names.capital}ListParams;
57
+ textField${textField ? "?" : ""}: keyof ${names.capital}SubsetMapping[T];
58
+ valueField?: keyof ${names.capital}SubsetMapping[T];
59
+ placeholder?: string;
60
+ clearable?: boolean;
61
+ disabled?: boolean;
62
+ className?: string;
63
+ multiple?: boolean;
64
+ } & (
65
+ | {
66
+ multiple?: false;
67
+ value?: number | null;
68
+ onChange?: (e: React.SyntheticEvent | null, data: { value: number | undefined }) => void;
69
+ }
70
+ | {
71
+ multiple: true;
72
+ value?: number[];
73
+ onChange?: (e: React.SyntheticEvent | null, data: { value: number[] }) => void;
74
+ }
75
+ );
76
+
77
+ export function ${names.capital}IdAsyncSelect<T extends ${names.capital}SubsetKey>({
78
+ subset,
79
+ value,
80
+ onChange,
81
+ baseListParams,
82
+ textField,
83
+ valueField,
84
+ placeholder = "${entity.title ?? names.constant}",
85
+ clearable,
86
+ disabled,
87
+ className,
88
+ multiple = false,
89
+ }: ${names.capital}IdAsyncSelectProps<T>) {
50
90
  const [listParams, setListParams] = useState<${names.capital}ListParams>(
51
- baseListParams ?? {},
91
+ baseListParams ?? {}
52
92
  );
53
93
 
54
- const { data, error } = ${names.capital}Service.use${names.capitalPlural}(subset, listParams);
55
- const { rows: ${names.camelPlural}, total } = data ?? {};
94
+ const { data, isLoading } = ${names.capital}Service.use${names.capitalPlural}(subset, listParams);
95
+ const { rows: ${names.camelPlural} } = data ?? {};
56
96
 
57
- useEffect(() => {
58
- setOptions(
59
- (${names.camelPlural} ?? []).map((${names.camel}) => {
60
- return {
61
- key: ${names.camel}.id,
62
- value: ${names.camel}[valueField ?? 'id'] as string | number,
63
- text: String(${names.camel}[textField${textField ? ` ?? '${textField}'` : ""}]),
64
- };
65
- }),
66
- );
67
- }, [${names.camelPlural}]);
97
+ // 옵션 생성
98
+ const options = useMemo(() => {
99
+ return (${names.camelPlural} ?? []).map((${names.camel}) => {
100
+ // textField가 지정되지 않은 경우 기본값 사용
101
+ const label = (() => {
102
+ if (textField) {
103
+ return String(${names.camel}[textField]);
104
+ }
105
+ return String(${names.camel}.${textField || "id"});
106
+ })();
107
+
108
+ return {
109
+ value: String(${names.camel}[valueField ?? "id"] as number),
110
+ label,
111
+ };
112
+ });
113
+ }, [${names.camelPlural}, textField, valueField]);
68
114
 
115
+ // baseListParams 변경 시 반영
69
116
  useEffect(() => {
70
- setListParams({
71
- ...listParams,
117
+ setListParams((prev) => ({
118
+ ...prev,
72
119
  ...baseListParams,
73
- });
120
+ }));
74
121
  }, [baseListParams]);
75
122
 
76
- const handleSearchChange = (
77
- e: SyntheticEvent<HTMLElement, Event>,
78
- data: DropdownOnSearchChangeData,
79
- ) => {
80
- setListParams({
81
- ...listParams,
82
- keyword: data.searchQuery,
83
- });
123
+ // 검색어 변경 핸들러
124
+ const handleSearch = useCallback((keyword: string) => {
125
+ setListParams((prev) => ({
126
+ ...prev,
127
+ keyword: keyword || undefined,
128
+ }));
129
+ }, []);
130
+
131
+ // Multiple select
132
+ if (multiple) {
133
+ const multiValue = Array.isArray(value) ? value.map(String) : [];
134
+
135
+ const handleMultiChange = (selectedValues: string[]) => {
136
+ if (onChange) {
137
+ const numericValues = selectedValues.map(Number);
138
+ (onChange as (e: React.SyntheticEvent | null, data: { value: number[] }) => void)(null, { value: numericValues });
139
+ }
140
+ };
141
+
142
+ return (
143
+ <MultiSelect
144
+ options={options}
145
+ onValueChange={handleMultiChange}
146
+ defaultValue={multiValue}
147
+ placeholder={placeholder}
148
+ disabled={disabled}
149
+ className={className}
150
+ />
151
+ );
152
+ }
153
+
154
+ // Single select
155
+ const singleValue = typeof value === "number" ? value : undefined;
156
+
157
+ const handleSingleChange = (e: React.SyntheticEvent | null, data: { value: string | undefined }) => {
158
+ if (onChange) {
159
+ const numericValue = data.value ? Number(data.value) : undefined;
160
+ (onChange as (e: React.SyntheticEvent | null, data: { value: number | undefined }) => void)(e, { value: numericValue });
161
+ }
84
162
  };
85
163
 
86
164
  return (
87
- <Dropdown
88
- placeholder="${entity.title ?? names.constant}"
89
- selection
90
- options={options}
91
- onSearchChange={handleSearchChange}
92
- disabled={!${names.camelPlural}}
93
- loading={!${names.camelPlural}}
94
- selectOnBlur={false}
95
- {...props}
165
+ <AsyncSelect
166
+ options={options as AsyncSelectOption<string>[]}
167
+ value={singleValue !== undefined ? String(singleValue) : undefined}
168
+ onChange={handleSingleChange}
169
+ isLoading={isLoading}
170
+ placeholder={placeholder}
171
+ clearable={clearable}
172
+ disabled={disabled}
173
+ className={className}
174
+ onSearch={handleSearch}
96
175
  />
97
176
  );
98
177
  }
@@ -102,4 +181,4 @@ export function ${names.capital}IdAsyncSelect<T extends ${names.capital}SubsetKe
102
181
  }
103
182
  }
104
183
 
105
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9pbXBsZW1lbnRhdGlvbnMvdmlld19pZF9hc3luY19zZWxlY3QudGVtcGxhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW50aXR5TWFuYWdlciwgdHlwZSBFbnRpdHlOYW1lc1JlY29yZCB9IGZyb20gXCIuLi8uLi9lbnRpdHkvZW50aXR5LW1hbmFnZXJcIjtcbmltcG9ydCB0eXBlIHsgVGVtcGxhdGVPcHRpb25zIH0gZnJvbSBcIi4uLy4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBUZW1wbGF0ZSB9IGZyb20gXCIuLi90ZW1wbGF0ZVwiO1xuXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVfX3ZpZXdfaWRfYXN5bmNfc2VsZWN0IGV4dGVuZHMgVGVtcGxhdGUge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcInZpZXdfaWRfYXN5bmNfc2VsZWN0XCIpO1xuICB9XG5cbiAgZ2V0VGFyZ2V0QW5kUGF0aChuYW1lczogRW50aXR5TmFtZXNSZWNvcmQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGFyZ2V0OiBcIndlYi9zcmMvY29tcG9uZW50c1wiLFxuICAgICAgcGF0aDogYCR7bmFtZXMuZnN9LyR7bmFtZXMuY2FwaXRhbH1JZEFzeW5jU2VsZWN0LnRzeGAsXG4gICAgfTtcbiAgfVxuXG4gIHJlbmRlcih7IGVudGl0eUlkLCB0ZXh0RmllbGQgfTogVGVtcGxhdGVPcHRpb25zW1widmlld19pZF9hc3luY19zZWxlY3RcIl0pIHtcbiAgICBjb25zdCBuYW1lcyA9IEVudGl0eU1hbmFnZXIuZ2V0TmFtZXNGcm9tSWQoZW50aXR5SWQpO1xuXG4gICAgY29uc3QgZW50aXR5ID0gRW50aXR5TWFuYWdlci5nZXQoZW50aXR5SWQpO1xuICAgIGlmICghdGV4dEZpZWxkKSB7XG4gICAgICBjb25zdCBwaWNrZWRQcm9wID0gZW50aXR5LnByb3BzLmZpbmQoKHByb3ApID0+IFtcIm5hbWVcIiwgXCJ0aXRsZVwiXS5pbmNsdWRlcyhwcm9wLm5hbWUpKTtcbiAgICAgIGlmIChwaWNrZWRQcm9wKSB7XG4gICAgICAgIHRleHRGaWVsZCA9IHBpY2tlZFByb3AubmFtZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGNhbmRpZGF0ZVByb3AgPSBlbnRpdHkucHJvcHMuZmluZCgocHJvcCkgPT4gcHJvcC50eXBlID09PSBcInN0cmluZ1wiKTtcbiAgICAgICAgaWYgKGNhbmRpZGF0ZVByb3ApIHtcbiAgICAgICAgICB0ZXh0RmllbGQgPSBjYW5kaWRhdGVQcm9wLm5hbWU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc29sZS5sb2coXCJ0ZXh0RmllbGQg7LC+7J2EIOyImCDsl4bsnYxcIik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5nZXRUYXJnZXRBbmRQYXRoKG5hbWVzKSxcbiAgICAgIGJvZHk6IGBcbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0LCBTeW50aGV0aWNFdmVudCB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgRHJvcGRvd25Qcm9wcywgRHJvcGRvd25JdGVtUHJvcHMsIERyb3Bkb3duT25TZWFyY2hDaGFuZ2VEYXRhLCBEcm9wZG93biB9IGZyb20gXCJzZW1hbnRpYy11aS1yZWFjdFwiO1xuaW1wb3J0IHsgJHtuYW1lcy5jYXBpdGFsfVN1YnNldEtleSwgJHtcbiAgICAgICAgbmFtZXMuY2FwaXRhbFxuICAgICAgfVN1YnNldE1hcHBpbmcgfSBmcm9tIFwiQC9zZXJ2aWNlcy9zb25hbXUuZ2VuZXJhdGVkXCI7XG5pbXBvcnQgeyAke25hbWVzLmNhcGl0YWx9U2VydmljZSB9IGZyb20gXCJAL3NlcnZpY2VzL3NlcnZpY2VzLmdlbmVyYXRlZFwiO1xuaW1wb3J0IHsgJHtuYW1lcy5jYXBpdGFsfUxpc3RQYXJhbXMgfSBmcm9tIFwiQC9zZXJ2aWNlcy8ke25hbWVzLmZzfS8ke25hbWVzLmZzfS50eXBlc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gJHtuYW1lcy5jYXBpdGFsfUlkQXN5bmNTZWxlY3Q8VCBleHRlbmRzICR7bmFtZXMuY2FwaXRhbH1TdWJzZXRLZXk+KFxuICB7IHN1YnNldCwgYmFzZUxpc3RQYXJhbXMsIHRleHRGaWVsZCwgdmFsdWVGaWVsZCwgLi4ucHJvcHMgfTogRHJvcGRvd25Qcm9wcyAmIHtcbiAgICBzdWJzZXQ6IFQ7XG4gICAgYmFzZUxpc3RQYXJhbXM/OiAke25hbWVzLmNhcGl0YWx9TGlzdFBhcmFtcztcbiAgICB0ZXh0RmllbGQke3RleHRGaWVsZCA/IFwiP1wiIDogXCJcIn06IGtleW9mICR7bmFtZXMuY2FwaXRhbH1TdWJzZXRNYXBwaW5nW1RdO1xuICAgIHZhbHVlRmllbGQ/OiBrZXlvZiAke25hbWVzLmNhcGl0YWx9U3Vic2V0TWFwcGluZ1tUXTtcbiAgfSxcbikge1xuICBjb25zdCBbb3B0aW9ucywgc2V0T3B0aW9uc10gPSB1c2VTdGF0ZTxEcm9wZG93bkl0ZW1Qcm9wc1tdPihbXSk7XG4gIGNvbnN0IFtsaXN0UGFyYW1zLCBzZXRMaXN0UGFyYW1zXSA9IHVzZVN0YXRlPCR7bmFtZXMuY2FwaXRhbH1MaXN0UGFyYW1zPihcbiAgICBiYXNlTGlzdFBhcmFtcyA/PyB7fSxcbiAgKTtcblxuICBjb25zdCB7IGRhdGEsIGVycm9yIH0gPSAke25hbWVzLmNhcGl0YWx9U2VydmljZS51c2Uke25hbWVzLmNhcGl0YWxQbHVyYWx9KHN1YnNldCwgbGlzdFBhcmFtcyk7XG4gIGNvbnN0IHsgcm93czogJHtuYW1lcy5jYW1lbFBsdXJhbH0sIHRvdGFsIH0gPSBkYXRhID8/IHt9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0T3B0aW9ucyhcbiAgICAgICgke25hbWVzLmNhbWVsUGx1cmFsfSA/PyBbXSkubWFwKCgke25hbWVzLmNhbWVsfSkgPT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGtleTogJHtuYW1lcy5jYW1lbH0uaWQsXG4gICAgICAgICAgdmFsdWU6ICR7bmFtZXMuY2FtZWx9W3ZhbHVlRmllbGQgPz8gJ2lkJ10gYXMgc3RyaW5nIHwgbnVtYmVyLFxuICAgICAgICAgIHRleHQ6IFN0cmluZygke25hbWVzLmNhbWVsfVt0ZXh0RmllbGQke3RleHRGaWVsZCA/IGAgPz8gJyR7dGV4dEZpZWxkfSdgIDogXCJcIn1dKSxcbiAgICAgICAgfTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH0sIFske25hbWVzLmNhbWVsUGx1cmFsfV0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0TGlzdFBhcmFtcyh7XG4gICAgICAuLi5saXN0UGFyYW1zLFxuICAgICAgLi4uYmFzZUxpc3RQYXJhbXMsXG4gICAgfSk7XG4gIH0sIFtiYXNlTGlzdFBhcmFtc10pO1xuXG4gIGNvbnN0IGhhbmRsZVNlYXJjaENoYW5nZSA9IChcbiAgICBlOiBTeW50aGV0aWNFdmVudDxIVE1MRWxlbWVudCwgRXZlbnQ+LFxuICAgIGRhdGE6IERyb3Bkb3duT25TZWFyY2hDaGFuZ2VEYXRhLFxuICApID0+IHtcbiAgICBzZXRMaXN0UGFyYW1zKHtcbiAgICAgIC4uLmxpc3RQYXJhbXMsXG4gICAgICBrZXl3b3JkOiBkYXRhLnNlYXJjaFF1ZXJ5LFxuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPERyb3Bkb3duXG4gICAgICBwbGFjZWhvbGRlcj1cIiR7ZW50aXR5LnRpdGxlID8/IG5hbWVzLmNvbnN0YW50fVwiXG4gICAgICBzZWxlY3Rpb25cbiAgICAgIG9wdGlvbnM9e29wdGlvbnN9XG4gICAgICBvblNlYXJjaENoYW5nZT17aGFuZGxlU2VhcmNoQ2hhbmdlfVxuICAgICAgZGlzYWJsZWQ9eyEke25hbWVzLmNhbWVsUGx1cmFsfX1cbiAgICAgIGxvYWRpbmc9eyEke25hbWVzLmNhbWVsUGx1cmFsfX1cbiAgICAgIHNlbGVjdE9uQmx1cj17ZmFsc2V9XG4gICAgICB7Li4ucHJvcHN9XG4gICAgLz5cbiAgKTtcbn1cbiAgICAgIGAudHJpbSgpLFxuICAgICAgaW1wb3J0S2V5czogW10sXG4gICAgfTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIkVudGl0eU1hbmFnZXIiLCJUZW1wbGF0ZSIsIlRlbXBsYXRlX192aWV3X2lkX2FzeW5jX3NlbGVjdCIsImdldFRhcmdldEFuZFBhdGgiLCJuYW1lcyIsInRhcmdldCIsInBhdGgiLCJmcyIsImNhcGl0YWwiLCJyZW5kZXIiLCJlbnRpdHlJZCIsInRleHRGaWVsZCIsImdldE5hbWVzRnJvbUlkIiwiZW50aXR5IiwiZ2V0IiwicGlja2VkUHJvcCIsInByb3BzIiwiZmluZCIsInByb3AiLCJpbmNsdWRlcyIsIm5hbWUiLCJjYW5kaWRhdGVQcm9wIiwidHlwZSIsImNvbnNvbGUiLCJsb2ciLCJib2R5IiwiY2FwaXRhbFBsdXJhbCIsImNhbWVsUGx1cmFsIiwiY2FtZWwiLCJ0aXRsZSIsImNvbnN0YW50IiwidHJpbSIsImltcG9ydEtleXMiXSwibWFwcGluZ3MiOiJBQUFBLFNBQVNBLGFBQWEsUUFBZ0MsaUNBQThCO0FBRXBGLFNBQVNDLFFBQVEsUUFBUSxpQkFBYztBQUV2QyxPQUFPLE1BQU1DLHVDQUF1Q0Q7SUFDbEQsYUFBYztRQUNaLEtBQUssQ0FBQztJQUNSO0lBRUFFLGlCQUFpQkMsS0FBd0IsRUFBRTtRQUN6QyxPQUFPO1lBQ0xDLFFBQVE7WUFDUkMsTUFBTSxHQUFHRixNQUFNRyxFQUFFLENBQUMsQ0FBQyxFQUFFSCxNQUFNSSxPQUFPLENBQUMsaUJBQWlCLENBQUM7UUFDdkQ7SUFDRjtJQUVBQyxPQUFPLEVBQUVDLFFBQVEsRUFBRUMsU0FBUyxFQUEyQyxFQUFFO1FBQ3ZFLE1BQU1QLFFBQVFKLGNBQWNZLGNBQWMsQ0FBQ0Y7UUFFM0MsTUFBTUcsU0FBU2IsY0FBY2MsR0FBRyxDQUFDSjtRQUNqQyxJQUFJLENBQUNDLFdBQVc7WUFDZCxNQUFNSSxhQUFhRixPQUFPRyxLQUFLLENBQUNDLElBQUksQ0FBQyxDQUFDQyxPQUFTO29CQUFDO29CQUFRO2lCQUFRLENBQUNDLFFBQVEsQ0FBQ0QsS0FBS0UsSUFBSTtZQUNuRixJQUFJTCxZQUFZO2dCQUNkSixZQUFZSSxXQUFXSyxJQUFJO1lBQzdCLE9BQU87Z0JBQ0wsTUFBTUMsZ0JBQWdCUixPQUFPRyxLQUFLLENBQUNDLElBQUksQ0FBQyxDQUFDQyxPQUFTQSxLQUFLSSxJQUFJLEtBQUs7Z0JBQ2hFLElBQUlELGVBQWU7b0JBQ2pCVixZQUFZVSxjQUFjRCxJQUFJO2dCQUNoQyxPQUFPO29CQUNMRyxRQUFRQyxHQUFHLENBQUM7Z0JBQ2Q7WUFDRjtRQUNGO1FBRUEsT0FBTztZQUNMLEdBQUcsSUFBSSxDQUFDckIsZ0JBQWdCLENBQUNDLE1BQU07WUFDL0JxQixNQUFNLENBQUM7OztTQUdKLEVBQUVyQixNQUFNSSxPQUFPLENBQUMsV0FBVyxFQUM1QkosTUFBTUksT0FBTyxDQUNkO1NBQ0UsRUFBRUosTUFBTUksT0FBTyxDQUFDO1NBQ2hCLEVBQUVKLE1BQU1JLE9BQU8sQ0FBQyw4QkFBOEIsRUFBRUosTUFBTUcsRUFBRSxDQUFDLENBQUMsRUFBRUgsTUFBTUcsRUFBRSxDQUFDOztnQkFFOUQsRUFBRUgsTUFBTUksT0FBTyxDQUFDLHdCQUF3QixFQUFFSixNQUFNSSxPQUFPLENBQUM7OztxQkFHbkQsRUFBRUosTUFBTUksT0FBTyxDQUFDO2FBQ3hCLEVBQUVHLFlBQVksTUFBTSxHQUFHLFFBQVEsRUFBRVAsTUFBTUksT0FBTyxDQUFDO3VCQUNyQyxFQUFFSixNQUFNSSxPQUFPLENBQUM7Ozs7K0NBSVEsRUFBRUosTUFBTUksT0FBTyxDQUFDOzs7OzBCQUlyQyxFQUFFSixNQUFNSSxPQUFPLENBQUMsV0FBVyxFQUFFSixNQUFNc0IsYUFBYSxDQUFDO2dCQUMzRCxFQUFFdEIsTUFBTXVCLFdBQVcsQ0FBQzs7OztPQUk3QixFQUFFdkIsTUFBTXVCLFdBQVcsQ0FBQyxhQUFhLEVBQUV2QixNQUFNd0IsS0FBSyxDQUFDOztlQUV2QyxFQUFFeEIsTUFBTXdCLEtBQUssQ0FBQztpQkFDWixFQUFFeEIsTUFBTXdCLEtBQUssQ0FBQzt1QkFDUixFQUFFeEIsTUFBTXdCLEtBQUssQ0FBQyxVQUFVLEVBQUVqQixZQUFZLENBQUMsS0FBSyxFQUFFQSxVQUFVLENBQUMsQ0FBQyxHQUFHLEdBQUc7Ozs7TUFJakYsRUFBRVAsTUFBTXVCLFdBQVcsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O21CQXFCUCxFQUFFZCxPQUFPZ0IsS0FBSyxJQUFJekIsTUFBTTBCLFFBQVEsQ0FBQzs7OztpQkFJbkMsRUFBRTFCLE1BQU11QixXQUFXLENBQUM7Z0JBQ3JCLEVBQUV2QixNQUFNdUIsV0FBVyxDQUFDOzs7Ozs7TUFNOUIsQ0FBQyxDQUFDSSxJQUFJO1lBQ05DLFlBQVksRUFBRTtRQUNoQjtJQUNGO0FBQ0YifQ==
184
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy90ZW1wbGF0ZS9pbXBsZW1lbnRhdGlvbnMvdmlld19pZF9hc3luY19zZWxlY3QudGVtcGxhdGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRW50aXR5TWFuYWdlciwgdHlwZSBFbnRpdHlOYW1lc1JlY29yZCB9IGZyb20gXCIuLi8uLi9lbnRpdHkvZW50aXR5LW1hbmFnZXJcIjtcbmltcG9ydCB0eXBlIHsgVGVtcGxhdGVPcHRpb25zIH0gZnJvbSBcIi4uLy4uL3R5cGVzL3R5cGVzXCI7XG5pbXBvcnQgeyBUZW1wbGF0ZSB9IGZyb20gXCIuLi90ZW1wbGF0ZVwiO1xuXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVfX3ZpZXdfaWRfYXN5bmNfc2VsZWN0IGV4dGVuZHMgVGVtcGxhdGUge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcInZpZXdfaWRfYXN5bmNfc2VsZWN0XCIpO1xuICB9XG5cbiAgZ2V0VGFyZ2V0QW5kUGF0aChuYW1lczogRW50aXR5TmFtZXNSZWNvcmQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGFyZ2V0OiBcIndlYi9zcmMvY29tcG9uZW50c1wiLFxuICAgICAgcGF0aDogYCR7bmFtZXMuZnN9LyR7bmFtZXMuY2FwaXRhbH1JZEFzeW5jU2VsZWN0LnRzeGAsXG4gICAgfTtcbiAgfVxuXG4gIHJlbmRlcih7IGVudGl0eUlkLCB0ZXh0RmllbGQgfTogVGVtcGxhdGVPcHRpb25zW1widmlld19pZF9hc3luY19zZWxlY3RcIl0pIHtcbiAgICBjb25zdCBuYW1lcyA9IEVudGl0eU1hbmFnZXIuZ2V0TmFtZXNGcm9tSWQoZW50aXR5SWQpO1xuXG4gICAgY29uc3QgZW50aXR5ID0gRW50aXR5TWFuYWdlci5nZXQoZW50aXR5SWQpO1xuXG4gICAgLy8gdGV4dEZpZWxk6rCAIOyngOygleuQmOyngCDslYrsnYAg6rK97JqwIOuqqOuToCBzdWJzZXTsl5Ag6rO17Ya17Jy866GcIOyeiOuKlCDtlYTrk5wg7LC+6riwXG4gICAgaWYgKCF0ZXh0RmllbGQpIHtcbiAgICAgIGNvbnN0IHN1YnNldEtleXMgPSBPYmplY3Qua2V5cyhlbnRpdHkuc3Vic2V0cyk7XG4gICAgICBpZiAoc3Vic2V0S2V5cy5sZW5ndGggPiAwKSB7XG4gICAgICAgIC8vIOuqqOuToCBzdWJzZXTsl5Ag6rO17Ya17Jy866GcIO2PrO2VqOuQnCDsp4HsoJEg7ZWE65Oc66eMIOy2lOy2nFxuICAgICAgICBjb25zdCBjb21tb25GaWVsZHMgPSBzdWJzZXRLZXlzLnJlZHVjZShcbiAgICAgICAgICAoY29tbW9uLCBrZXkpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGZpZWxkcyA9IGVudGl0eS5zdWJzZXRzW2tleV1cbiAgICAgICAgICAgICAgLmZpbHRlcigocGF0aCkgPT4gIXBhdGguaW5jbHVkZXMoXCIuXCIpKSAvLyDsp4HsoJEg7ZWE65Oc66eMXG4gICAgICAgICAgICAgIC5tYXAoKHBhdGgpID0+IHBhdGgpO1xuICAgICAgICAgICAgcmV0dXJuIGNvbW1vbi5maWx0ZXIoKGZpZWxkKSA9PiBmaWVsZHMuaW5jbHVkZXMoZmllbGQpKTtcbiAgICAgICAgICB9LFxuICAgICAgICAgIGVudGl0eS5zdWJzZXRzW3N1YnNldEtleXNbMF1dLmZpbHRlcigocGF0aCkgPT4gIXBhdGguaW5jbHVkZXMoXCIuXCIpKSxcbiAgICAgICAgKTtcblxuICAgICAgICAvLyDsmrDshKDsiJzsnIQ6IG5hbWUgPiB0aXRsZSA+IOyyqyDrsojsp7ggc3RyaW5nIO2DgOyehVxuICAgICAgICBjb25zdCBwaWNrZWRQcm9wID0gZW50aXR5LnByb3BzLmZpbmQoXG4gICAgICAgICAgKHByb3ApID0+IFtcIm5hbWVcIiwgXCJ0aXRsZVwiXS5pbmNsdWRlcyhwcm9wLm5hbWUpICYmIGNvbW1vbkZpZWxkcy5pbmNsdWRlcyhwcm9wLm5hbWUpLFxuICAgICAgICApO1xuICAgICAgICBpZiAocGlja2VkUHJvcCkge1xuICAgICAgICAgIHRleHRGaWVsZCA9IHBpY2tlZFByb3AubmFtZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBjYW5kaWRhdGVQcm9wID0gZW50aXR5LnByb3BzLmZpbmQoXG4gICAgICAgICAgICAocHJvcCkgPT4gcHJvcC50eXBlID09PSBcInN0cmluZ1wiICYmIGNvbW1vbkZpZWxkcy5pbmNsdWRlcyhwcm9wLm5hbWUpLFxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKGNhbmRpZGF0ZVByb3ApIHtcbiAgICAgICAgICAgIHRleHRGaWVsZCA9IGNhbmRpZGF0ZVByb3AubmFtZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy8g6rO17Ya1IO2VhOuTnOqwgCDsl4bsnLzrqbQgaWQg7IKs7JqpXG4gICAgICAgICAgICB0ZXh0RmllbGQgPSBcImlkXCI7XG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcbiAgICAgICAgICAgICAgYFdhcm5pbmc6ICR7ZW50aXR5SWR97JeQIOuqqOuToCBzdWJzZXTsl5Ag6rO17Ya17Jy866GcIO2PrO2VqOuQnCBzdHJpbmcg7ZWE65Oc6rCAIOyXhuyWtCBpZOulvCDsgqzsmqntlanri4jri6RgLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4udGhpcy5nZXRUYXJnZXRBbmRQYXRoKG5hbWVzKSxcbiAgICAgIGJvZHk6IGBcbmltcG9ydCBSZWFjdCwgeyB1c2VTdGF0ZSwgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VDYWxsYmFjayB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgQXN5bmNTZWxlY3QsIEFzeW5jU2VsZWN0T3B0aW9uLCBNdWx0aVNlbGVjdCwgTXVsdGlTZWxlY3RPcHRpb24gfSBmcm9tIFwiQHNvbmFtdS1raXQvcmVhY3QtY29tcG9uZW50cy9jb21wb25lbnRzXCI7XG5pbXBvcnQgeyAke25hbWVzLmNhcGl0YWx9U3Vic2V0S2V5LCAke25hbWVzLmNhcGl0YWx9U3Vic2V0TWFwcGluZyB9IGZyb20gXCJAL3NlcnZpY2VzL3NvbmFtdS5nZW5lcmF0ZWRcIjtcbmltcG9ydCB7ICR7bmFtZXMuY2FwaXRhbH1TZXJ2aWNlIH0gZnJvbSBcIkAvc2VydmljZXMvc2VydmljZXMuZ2VuZXJhdGVkXCI7XG5pbXBvcnQgeyAke25hbWVzLmNhcGl0YWx9TGlzdFBhcmFtcyB9IGZyb20gXCJAL3NlcnZpY2VzLyR7bmFtZXMuZnN9LyR7bmFtZXMuZnN9LnR5cGVzXCI7XG5cbmV4cG9ydCB0eXBlICR7bmFtZXMuY2FwaXRhbH1JZEFzeW5jU2VsZWN0UHJvcHM8VCBleHRlbmRzICR7bmFtZXMuY2FwaXRhbH1TdWJzZXRLZXk+ID0ge1xuICBzdWJzZXQ6IFQ7XG4gIGJhc2VMaXN0UGFyYW1zPzogJHtuYW1lcy5jYXBpdGFsfUxpc3RQYXJhbXM7XG4gIHRleHRGaWVsZCR7dGV4dEZpZWxkID8gXCI/XCIgOiBcIlwifToga2V5b2YgJHtuYW1lcy5jYXBpdGFsfVN1YnNldE1hcHBpbmdbVF07XG4gIHZhbHVlRmllbGQ/OiBrZXlvZiAke25hbWVzLmNhcGl0YWx9U3Vic2V0TWFwcGluZ1tUXTtcbiAgcGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIGNsZWFyYWJsZT86IGJvb2xlYW47XG4gIGRpc2FibGVkPzogYm9vbGVhbjtcbiAgY2xhc3NOYW1lPzogc3RyaW5nO1xuICBtdWx0aXBsZT86IGJvb2xlYW47XG59ICYgKFxuICB8IHtcbiAgICAgIG11bHRpcGxlPzogZmFsc2U7XG4gICAgICB2YWx1ZT86IG51bWJlciB8IG51bGw7XG4gICAgICBvbkNoYW5nZT86IChlOiBSZWFjdC5TeW50aGV0aWNFdmVudCB8IG51bGwsIGRhdGE6IHsgdmFsdWU6IG51bWJlciB8IHVuZGVmaW5lZCB9KSA9PiB2b2lkO1xuICAgIH1cbiAgfCB7XG4gICAgICBtdWx0aXBsZTogdHJ1ZTtcbiAgICAgIHZhbHVlPzogbnVtYmVyW107XG4gICAgICBvbkNoYW5nZT86IChlOiBSZWFjdC5TeW50aGV0aWNFdmVudCB8IG51bGwsIGRhdGE6IHsgdmFsdWU6IG51bWJlcltdIH0pID0+IHZvaWQ7XG4gICAgfVxuKTtcblxuZXhwb3J0IGZ1bmN0aW9uICR7bmFtZXMuY2FwaXRhbH1JZEFzeW5jU2VsZWN0PFQgZXh0ZW5kcyAke25hbWVzLmNhcGl0YWx9U3Vic2V0S2V5Pih7XG4gIHN1YnNldCxcbiAgdmFsdWUsXG4gIG9uQ2hhbmdlLFxuICBiYXNlTGlzdFBhcmFtcyxcbiAgdGV4dEZpZWxkLFxuICB2YWx1ZUZpZWxkLFxuICBwbGFjZWhvbGRlciA9IFwiJHtlbnRpdHkudGl0bGUgPz8gbmFtZXMuY29uc3RhbnR9XCIsXG4gIGNsZWFyYWJsZSxcbiAgZGlzYWJsZWQsXG4gIGNsYXNzTmFtZSxcbiAgbXVsdGlwbGUgPSBmYWxzZSxcbn06ICR7bmFtZXMuY2FwaXRhbH1JZEFzeW5jU2VsZWN0UHJvcHM8VD4pIHtcbiAgY29uc3QgW2xpc3RQYXJhbXMsIHNldExpc3RQYXJhbXNdID0gdXNlU3RhdGU8JHtuYW1lcy5jYXBpdGFsfUxpc3RQYXJhbXM+KFxuICAgIGJhc2VMaXN0UGFyYW1zID8/IHt9XG4gICk7XG5cbiAgY29uc3QgeyBkYXRhLCBpc0xvYWRpbmcgfSA9ICR7bmFtZXMuY2FwaXRhbH1TZXJ2aWNlLnVzZSR7bmFtZXMuY2FwaXRhbFBsdXJhbH0oc3Vic2V0LCBsaXN0UGFyYW1zKTtcbiAgY29uc3QgeyByb3dzOiAke25hbWVzLmNhbWVsUGx1cmFsfSB9ID0gZGF0YSA/PyB7fTtcblxuICAvLyDsmLXshZgg7IOd7ISxXG4gIGNvbnN0IG9wdGlvbnMgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4gKCR7bmFtZXMuY2FtZWxQbHVyYWx9ID8/IFtdKS5tYXAoKCR7bmFtZXMuY2FtZWx9KSA9PiB7XG4gICAgICAvLyB0ZXh0RmllbGTqsIAg7KeA7KCV65CY7KeAIOyViuydgCDqsr3smrAg6riw67O46rCSIOyCrOyaqVxuICAgICAgY29uc3QgbGFiZWwgPSAoKCkgPT4ge1xuICAgICAgICBpZiAodGV4dEZpZWxkKSB7XG4gICAgICAgICAgcmV0dXJuIFN0cmluZygke25hbWVzLmNhbWVsfVt0ZXh0RmllbGRdKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gU3RyaW5nKCR7bmFtZXMuY2FtZWx9LiR7dGV4dEZpZWxkIHx8IFwiaWRcIn0pO1xuICAgICAgfSkoKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsdWU6IFN0cmluZygke25hbWVzLmNhbWVsfVt2YWx1ZUZpZWxkID8/IFwiaWRcIl0gYXMgbnVtYmVyKSxcbiAgICAgICAgbGFiZWwsXG4gICAgICB9O1xuICAgIH0pO1xuICB9LCBbJHtuYW1lcy5jYW1lbFBsdXJhbH0sIHRleHRGaWVsZCwgdmFsdWVGaWVsZF0pO1xuXG4gIC8vIGJhc2VMaXN0UGFyYW1zIOuzgOqyvSDsi5wg67CY7JiBXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0TGlzdFBhcmFtcygocHJldikgPT4gKHtcbiAgICAgIC4uLnByZXYsXG4gICAgICAuLi5iYXNlTGlzdFBhcmFtcyxcbiAgICB9KSk7XG4gIH0sIFtiYXNlTGlzdFBhcmFtc10pO1xuXG4gIC8vIOqygOyDieyWtCDrs4Dqsr0g7ZW465Ok65+sXG4gIGNvbnN0IGhhbmRsZVNlYXJjaCA9IHVzZUNhbGxiYWNrKChrZXl3b3JkOiBzdHJpbmcpID0+IHtcbiAgICBzZXRMaXN0UGFyYW1zKChwcmV2KSA9PiAoe1xuICAgICAgLi4ucHJldixcbiAgICAgIGtleXdvcmQ6IGtleXdvcmQgfHwgdW5kZWZpbmVkLFxuICAgIH0pKTtcbiAgfSwgW10pO1xuXG4gIC8vIE11bHRpcGxlIHNlbGVjdFxuICBpZiAobXVsdGlwbGUpIHtcbiAgICBjb25zdCBtdWx0aVZhbHVlID0gQXJyYXkuaXNBcnJheSh2YWx1ZSkgPyB2YWx1ZS5tYXAoU3RyaW5nKSA6IFtdO1xuXG4gICAgY29uc3QgaGFuZGxlTXVsdGlDaGFuZ2UgPSAoc2VsZWN0ZWRWYWx1ZXM6IHN0cmluZ1tdKSA9PiB7XG4gICAgICBpZiAob25DaGFuZ2UpIHtcbiAgICAgICAgY29uc3QgbnVtZXJpY1ZhbHVlcyA9IHNlbGVjdGVkVmFsdWVzLm1hcChOdW1iZXIpO1xuICAgICAgICAob25DaGFuZ2UgYXMgKGU6IFJlYWN0LlN5bnRoZXRpY0V2ZW50IHwgbnVsbCwgZGF0YTogeyB2YWx1ZTogbnVtYmVyW10gfSkgPT4gdm9pZCkobnVsbCwgeyB2YWx1ZTogbnVtZXJpY1ZhbHVlcyB9KTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgIDxNdWx0aVNlbGVjdFxuICAgICAgICBvcHRpb25zPXtvcHRpb25zfVxuICAgICAgICBvblZhbHVlQ2hhbmdlPXtoYW5kbGVNdWx0aUNoYW5nZX1cbiAgICAgICAgZGVmYXVsdFZhbHVlPXttdWx0aVZhbHVlfVxuICAgICAgICBwbGFjZWhvbGRlcj17cGxhY2Vob2xkZXJ9XG4gICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWV9XG4gICAgICAvPlxuICAgICk7XG4gIH1cblxuICAvLyBTaW5nbGUgc2VsZWN0XG4gIGNvbnN0IHNpbmdsZVZhbHVlID0gdHlwZW9mIHZhbHVlID09PSBcIm51bWJlclwiID8gdmFsdWUgOiB1bmRlZmluZWQ7XG5cbiAgY29uc3QgaGFuZGxlU2luZ2xlQ2hhbmdlID0gKGU6IFJlYWN0LlN5bnRoZXRpY0V2ZW50IHwgbnVsbCwgZGF0YTogeyB2YWx1ZTogc3RyaW5nIHwgdW5kZWZpbmVkIH0pID0+IHtcbiAgICBpZiAob25DaGFuZ2UpIHtcbiAgICAgIGNvbnN0IG51bWVyaWNWYWx1ZSA9IGRhdGEudmFsdWUgPyBOdW1iZXIoZGF0YS52YWx1ZSkgOiB1bmRlZmluZWQ7XG4gICAgICAob25DaGFuZ2UgYXMgKGU6IFJlYWN0LlN5bnRoZXRpY0V2ZW50IHwgbnVsbCwgZGF0YTogeyB2YWx1ZTogbnVtYmVyIHwgdW5kZWZpbmVkIH0pID0+IHZvaWQpKGUsIHsgdmFsdWU6IG51bWVyaWNWYWx1ZSB9KTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8QXN5bmNTZWxlY3RcbiAgICAgIG9wdGlvbnM9e29wdGlvbnMgYXMgQXN5bmNTZWxlY3RPcHRpb248c3RyaW5nPltdfVxuICAgICAgdmFsdWU9e3NpbmdsZVZhbHVlICE9PSB1bmRlZmluZWQgPyBTdHJpbmcoc2luZ2xlVmFsdWUpIDogdW5kZWZpbmVkfVxuICAgICAgb25DaGFuZ2U9e2hhbmRsZVNpbmdsZUNoYW5nZX1cbiAgICAgIGlzTG9hZGluZz17aXNMb2FkaW5nfVxuICAgICAgcGxhY2Vob2xkZXI9e3BsYWNlaG9sZGVyfVxuICAgICAgY2xlYXJhYmxlPXtjbGVhcmFibGV9XG4gICAgICBkaXNhYmxlZD17ZGlzYWJsZWR9XG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZX1cbiAgICAgIG9uU2VhcmNoPXtoYW5kbGVTZWFyY2h9XG4gICAgLz5cbiAgKTtcbn1cbiAgICAgIGAudHJpbSgpLFxuICAgICAgaW1wb3J0S2V5czogW10sXG4gICAgfTtcbiAgfVxufVxuIl0sIm5hbWVzIjpbIkVudGl0eU1hbmFnZXIiLCJUZW1wbGF0ZSIsIlRlbXBsYXRlX192aWV3X2lkX2FzeW5jX3NlbGVjdCIsImdldFRhcmdldEFuZFBhdGgiLCJuYW1lcyIsInRhcmdldCIsInBhdGgiLCJmcyIsImNhcGl0YWwiLCJyZW5kZXIiLCJlbnRpdHlJZCIsInRleHRGaWVsZCIsImdldE5hbWVzRnJvbUlkIiwiZW50aXR5IiwiZ2V0Iiwic3Vic2V0S2V5cyIsIk9iamVjdCIsImtleXMiLCJzdWJzZXRzIiwibGVuZ3RoIiwiY29tbW9uRmllbGRzIiwicmVkdWNlIiwiY29tbW9uIiwia2V5IiwiZmllbGRzIiwiZmlsdGVyIiwiaW5jbHVkZXMiLCJtYXAiLCJmaWVsZCIsInBpY2tlZFByb3AiLCJwcm9wcyIsImZpbmQiLCJwcm9wIiwibmFtZSIsImNhbmRpZGF0ZVByb3AiLCJ0eXBlIiwiY29uc29sZSIsImxvZyIsImJvZHkiLCJ0aXRsZSIsImNvbnN0YW50IiwiY2FwaXRhbFBsdXJhbCIsImNhbWVsUGx1cmFsIiwi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
@@ -15,6 +15,8 @@ export declare class Template__view_list extends Template {
15
15
  getDefault(columns: RenderingNode[]): {
16
16
  orderBy: string;
17
17
  search: string;
18
+ hasSearch: boolean;
19
+ hasOrderBy: boolean;
18
20
  };
19
21
  render({ entityId }: TemplateOptions["view_list"]): Promise<{
20
22
  body: string;
@@ -1 +1 @@
1
- {"version":3,"file":"view_list.template.d.ts","sourceRoot":"","sources":["../../../src/template/implementations/view_list.template.ts"],"names":[],"mappings":"AAIA,OAAO,EAAiB,KAAK,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACpF,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAIrF,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGvC,qBAAa,mBAAoB,SAAQ,QAAQ;;IAK/C,gBAAgB,CAAC,KAAK,EAAE,iBAAiB;;;;IAOzC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,GAAE,OAAc,EAAE,SAAS,GAAE,MAAW;IAMpF,YAAY,CACV,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,iBAAiB,EACxB,SAAS,GAAE,MAAc,EACzB,WAAW,GAAE,OAAe,GAC3B,MAAM;IA4DT,kBAAkB,CAChB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,iBAAiB,GACvB,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE;IAwBpB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,iBAAiB;IAiCjF,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,iBAAiB;IAkC3E,UAAU,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG;QACpC,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;KAChB;IAgBK,MAAM,CAAC,EAAE,QAAQ,EAAE,EAAE,eAAe,CAAC,WAAW,CAAC;;;;;;;;;;CAgUxD"}
1
+ {"version":3,"file":"view_list.template.d.ts","sourceRoot":"","sources":["../../../src/template/implementations/view_list.template.ts"],"names":[],"mappings":"AAGA,OAAO,EAAiB,KAAK,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACpF,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAGrF,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,qBAAa,mBAAoB,SAAQ,QAAQ;;IAK/C,gBAAgB,CAAC,KAAK,EAAE,iBAAiB;;;;IAOzC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,GAAE,OAAc,EAAE,SAAS,GAAE,MAAW;IAMpF,YAAY,CACV,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,iBAAiB,EACxB,SAAS,GAAE,MAAc,EACzB,WAAW,GAAE,OAAe,GAC3B,MAAM;IAqFT,kBAAkB,CAChB,QAAQ,EAAE,MAAM,EAChB,GAAG,EAAE,aAAa,EAClB,KAAK,EAAE,iBAAiB,GACvB,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE;IAwBpB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,iBAAiB;IAiCjF,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,iBAAiB;IAkC3E,UAAU,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG;QACpC,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,OAAO,CAAC;QACnB,UAAU,EAAE,OAAO,CAAC;KACrB;IAoBK,MAAM,CAAC,EAAE,QAAQ,EAAE,EAAE,eAAe,CAAC,WAAW,CAAC;;;;;;;;;;CAsfxD"}