@superblocksteam/library 2.0.11-next.12 → 2.0.11-next.13

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 (41) hide show
  1. package/dist/{allPaths-B2pTjiXe.js → allPaths-DGMrcGYt.js} +2 -2
  2. package/dist/{allPaths-B2pTjiXe.js.map → allPaths-DGMrcGYt.js.map} +1 -1
  3. package/dist/{allPaths-BJohi6Qg.js → allPaths-nl-QZWn1.js} +2 -2
  4. package/dist/{allPaths-BJohi6Qg.js.map → allPaths-nl-QZWn1.js.map} +1 -1
  5. package/dist/{allPathsLoader-5JfP8Sty.js → allPathsLoader-BIuTbNcY.js} +3 -3
  6. package/dist/{allPathsLoader-B3qvIWfC.js.map → allPathsLoader-BIuTbNcY.js.map} +1 -1
  7. package/dist/{allPathsLoader-B3qvIWfC.js → allPathsLoader-Tf9x8dtV.js} +3 -3
  8. package/dist/{allPathsLoader-5JfP8Sty.js.map → allPathsLoader-Tf9x8dtV.js.map} +1 -1
  9. package/dist/{devtools-consolidated-B16gTh1V.js → devtools-consolidated-Brbj1JeD.js} +2 -2
  10. package/dist/{devtools-consolidated-B16gTh1V.js.map → devtools-consolidated-Brbj1JeD.js.map} +1 -1
  11. package/dist/{index-Con-eMFy.js → index-CCewmzC_.js} +71 -29
  12. package/dist/{index-Con-eMFy.js.map → index-CCewmzC_.js.map} +1 -1
  13. package/dist/index.js +2 -2
  14. package/dist/{splitPathsBySizeLoader-RJiv0Kw-.js → splitPathsBySizeLoader-BM6L8m2i.js} +2 -2
  15. package/dist/{splitPathsBySizeLoader-RJiv0Kw-.js.map → splitPathsBySizeLoader-BM6L8m2i.js.map} +1 -1
  16. package/dist/{splitPathsBySizeLoader-COQS0jY_.js → splitPathsBySizeLoader-C3MBiqmb.js} +2 -2
  17. package/dist/{splitPathsBySizeLoader-COQS0jY_.js.map → splitPathsBySizeLoader-C3MBiqmb.js.map} +1 -1
  18. package/dist-types/edit-mode/features/runtime-entities-manager.d.ts +22 -22
  19. package/dist-types/lib/internal-details/lib/features/component-registry.d.ts +8 -0
  20. package/dist-types/lib/internal-details/sb-wrapper.d.ts +45 -2
  21. package/dist-types/lib/internal-details/sb-wrapper.test.d.ts +1 -0
  22. package/dist-types/lib/user-facing/components/button/index.d.ts +41 -1
  23. package/dist-types/lib/user-facing/components/checkbox/index.d.ts +47 -1
  24. package/dist-types/lib/user-facing/components/column/index.d.ts +30 -1
  25. package/dist-types/lib/user-facing/components/container/index.d.ts +32 -1
  26. package/dist-types/lib/user-facing/components/custom/index.d.ts +1 -2
  27. package/dist-types/lib/user-facing/components/custom/register-custom-component.d.ts +1 -1
  28. package/dist-types/lib/user-facing/components/date-picker/index.d.ts +71 -2
  29. package/dist-types/lib/user-facing/components/dropdown/index.d.ts +75 -2
  30. package/dist-types/lib/user-facing/components/icon/index.d.ts +24 -1
  31. package/dist-types/lib/user-facing/components/image/index.d.ts +33 -1
  32. package/dist-types/lib/user-facing/components/input/editor-template.d.ts +3 -0
  33. package/dist-types/lib/user-facing/components/input/index.d.ts +94 -1
  34. package/dist-types/lib/user-facing/components/modal/index.d.ts +39 -1
  35. package/dist-types/lib/user-facing/components/page/index.d.ts +19 -1
  36. package/dist-types/lib/user-facing/components/section/index.d.ts +24 -1
  37. package/dist-types/lib/user-facing/components/slideout/index.d.ts +39 -1
  38. package/dist-types/lib/user-facing/components/switch/index.d.ts +48 -1
  39. package/dist-types/lib/user-facing/components/table/index.d.ts +361 -1
  40. package/dist-types/lib/user-facing/components/text/index.d.ts +56 -1
  41. package/package.json +2 -2
@@ -1,6 +1,6 @@
1
1
  import { I as IconSvgPaths16 } from "./index-BxzKdlqH.js";
2
2
  import { I as IconSvgPaths20 } from "./index-DIn-fanT.js";
3
- import { p as pascalCase, b as IconSize } from "./index-Con-eMFy.js";
3
+ import { p as pascalCase, b as IconSize } from "./index-CCewmzC_.js";
4
4
  function getIconPaths(name, size) {
5
5
  var key = pascalCase(name);
6
6
  return size === IconSize.STANDARD ? IconSvgPaths16[key] : IconSvgPaths20[key];
@@ -14,4 +14,4 @@ export {
14
14
  getIconPaths,
15
15
  iconNameToPathsRecordKey
16
16
  };
17
- //# sourceMappingURL=allPaths-B2pTjiXe.js.map
17
+ //# sourceMappingURL=allPaths-DGMrcGYt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"allPaths-B2pTjiXe.js","sources":["../../../node_modules/.pnpm/@blueprintjs+icons@5.20.0_@types+react@18.3.18_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@blueprintjs/icons/lib/esm/allPaths.js"],"sourcesContent":["/*\n * Copyright 2021 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { pascalCase } from \"change-case\";\nimport * as IconSvgPaths16 from \"./generated/16px/paths\";\nimport * as IconSvgPaths20 from \"./generated/20px/paths\";\nimport { IconSize } from \"./iconTypes\";\nexport { IconSvgPaths16, IconSvgPaths20 };\n/**\n * Get the list of vector paths that define a given icon. These path strings are used to render `<path>`\n * elements inside an `<svg>` icon element. For full implementation details and nuances, see the icon component\n * handlebars template and `generate-icon-components` script in the __@blueprintjs/icons__ package.\n *\n * Note: this function loads all icon definitions __statically__, which means every icon is included in your\n * JS bundle. Only use this API if your app is likely to use all Blueprint icons at runtime. If you are looking for a\n * dynamic icon loader which loads icon definitions on-demand, use `{ Icons } from \"@blueprintjs/icons\"` instead.\n */\nexport function getIconPaths(name, size) {\n var key = pascalCase(name);\n return size === IconSize.STANDARD ? IconSvgPaths16[key] : IconSvgPaths20[key];\n}\n/**\n * Type safe string literal conversion of snake-case icon names to PascalCase icon names.\n * This is useful for indexing into the SVG paths record to extract a single icon's SVG path definition.\n *\n * @deprecated use `getIconPaths` instead\n */\nexport function iconNameToPathsRecordKey(name) {\n return pascalCase(name);\n}\n//# sourceMappingURL=allPaths.js.map"],"names":[],"mappings":";;;AA6BO,SAAS,aAAa,MAAM,MAAM;AACrC,MAAI,MAAM,WAAW,IAAI;AACzB,SAAO,SAAS,SAAS,WAAW,eAAe,GAAG,IAAI,eAAe,GAAG;AAChF;AAOO,SAAS,yBAAyB,MAAM;AAC3C,SAAO,WAAW,IAAI;AAC1B;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"allPaths-DGMrcGYt.js","sources":["../../../node_modules/.pnpm/@blueprintjs+icons@5.20.0_@types+react@18.3.18_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@blueprintjs/icons/lib/esm/allPaths.js"],"sourcesContent":["/*\n * Copyright 2021 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { pascalCase } from \"change-case\";\nimport * as IconSvgPaths16 from \"./generated/16px/paths\";\nimport * as IconSvgPaths20 from \"./generated/20px/paths\";\nimport { IconSize } from \"./iconTypes\";\nexport { IconSvgPaths16, IconSvgPaths20 };\n/**\n * Get the list of vector paths that define a given icon. These path strings are used to render `<path>`\n * elements inside an `<svg>` icon element. For full implementation details and nuances, see the icon component\n * handlebars template and `generate-icon-components` script in the __@blueprintjs/icons__ package.\n *\n * Note: this function loads all icon definitions __statically__, which means every icon is included in your\n * JS bundle. Only use this API if your app is likely to use all Blueprint icons at runtime. If you are looking for a\n * dynamic icon loader which loads icon definitions on-demand, use `{ Icons } from \"@blueprintjs/icons\"` instead.\n */\nexport function getIconPaths(name, size) {\n var key = pascalCase(name);\n return size === IconSize.STANDARD ? IconSvgPaths16[key] : IconSvgPaths20[key];\n}\n/**\n * Type safe string literal conversion of snake-case icon names to PascalCase icon names.\n * This is useful for indexing into the SVG paths record to extract a single icon's SVG path definition.\n *\n * @deprecated use `getIconPaths` instead\n */\nexport function iconNameToPathsRecordKey(name) {\n return pascalCase(name);\n}\n//# sourceMappingURL=allPaths.js.map"],"names":[],"mappings":";;;AA6BO,SAAS,aAAa,MAAM,MAAM;AACrC,MAAI,MAAM,WAAW,IAAI;AACzB,SAAO,SAAS,SAAS,WAAW,eAAe,GAAG,IAAI,eAAe,GAAG;AAChF;AAOO,SAAS,yBAAyB,MAAM;AAC3C,SAAO,WAAW,IAAI;AAC1B;","x_google_ignoreList":[0]}
@@ -1,6 +1,6 @@
1
1
  import { I as IconSvgPaths16 } from "./index-DIJYif9G.js";
2
2
  import { I as IconSvgPaths20 } from "./index-LHtbj0-V.js";
3
- import { p as pascalCase, I as IconSize } from "./index-Con-eMFy.js";
3
+ import { p as pascalCase, I as IconSize } from "./index-CCewmzC_.js";
4
4
  function getIconPaths(name, size) {
5
5
  var key = pascalCase(name);
6
6
  return size === IconSize.STANDARD ? IconSvgPaths16[key] : IconSvgPaths20[key];
@@ -14,4 +14,4 @@ export {
14
14
  getIconPaths,
15
15
  iconNameToPathsRecordKey
16
16
  };
17
- //# sourceMappingURL=allPaths-BJohi6Qg.js.map
17
+ //# sourceMappingURL=allPaths-nl-QZWn1.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"allPaths-BJohi6Qg.js","sources":["../../../node_modules/.pnpm/@blueprintjs+icons@5.18.1_@types+react@18.3.18_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@blueprintjs/icons/lib/esm/allPaths.js"],"sourcesContent":["/*\n * Copyright 2021 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { pascalCase } from \"change-case\";\nimport * as IconSvgPaths16 from \"./generated/16px/paths\";\nimport * as IconSvgPaths20 from \"./generated/20px/paths\";\nimport { IconSize } from \"./iconTypes\";\nexport { IconSvgPaths16, IconSvgPaths20 };\n/**\n * Get the list of vector paths that define a given icon. These path strings are used to render `<path>`\n * elements inside an `<svg>` icon element. For full implementation details and nuances, see the icon component\n * handlebars template and `generate-icon-components` script in the __@blueprintjs/icons__ package.\n *\n * Note: this function loads all icon definitions __statically__, which means every icon is included in your\n * JS bundle. Only use this API if your app is likely to use all Blueprint icons at runtime. If you are looking for a\n * dynamic icon loader which loads icon definitions on-demand, use `{ Icons } from \"@blueprintjs/icons\"` instead.\n */\nexport function getIconPaths(name, size) {\n var key = pascalCase(name);\n return size === IconSize.STANDARD ? IconSvgPaths16[key] : IconSvgPaths20[key];\n}\n/**\n * Type safe string literal conversion of snake-case icon names to PascalCase icon names.\n * This is useful for indexing into the SVG paths record to extract a single icon's SVG path definition.\n *\n * @deprecated use `getIconPaths` instead\n */\nexport function iconNameToPathsRecordKey(name) {\n return pascalCase(name);\n}\n//# sourceMappingURL=allPaths.js.map"],"names":[],"mappings":";;;AA6BO,SAAS,aAAa,MAAM,MAAM;AACrC,MAAI,MAAM,WAAW,IAAI;AACzB,SAAO,SAAS,SAAS,WAAW,eAAe,GAAG,IAAI,eAAe,GAAG;AAChF;AAOO,SAAS,yBAAyB,MAAM;AAC3C,SAAO,WAAW,IAAI;AAC1B;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"allPaths-nl-QZWn1.js","sources":["../../../node_modules/.pnpm/@blueprintjs+icons@5.18.1_@types+react@18.3.18_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@blueprintjs/icons/lib/esm/allPaths.js"],"sourcesContent":["/*\n * Copyright 2021 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { pascalCase } from \"change-case\";\nimport * as IconSvgPaths16 from \"./generated/16px/paths\";\nimport * as IconSvgPaths20 from \"./generated/20px/paths\";\nimport { IconSize } from \"./iconTypes\";\nexport { IconSvgPaths16, IconSvgPaths20 };\n/**\n * Get the list of vector paths that define a given icon. These path strings are used to render `<path>`\n * elements inside an `<svg>` icon element. For full implementation details and nuances, see the icon component\n * handlebars template and `generate-icon-components` script in the __@blueprintjs/icons__ package.\n *\n * Note: this function loads all icon definitions __statically__, which means every icon is included in your\n * JS bundle. Only use this API if your app is likely to use all Blueprint icons at runtime. If you are looking for a\n * dynamic icon loader which loads icon definitions on-demand, use `{ Icons } from \"@blueprintjs/icons\"` instead.\n */\nexport function getIconPaths(name, size) {\n var key = pascalCase(name);\n return size === IconSize.STANDARD ? IconSvgPaths16[key] : IconSvgPaths20[key];\n}\n/**\n * Type safe string literal conversion of snake-case icon names to PascalCase icon names.\n * This is useful for indexing into the SVG paths record to extract a single icon's SVG path definition.\n *\n * @deprecated use `getIconPaths` instead\n */\nexport function iconNameToPathsRecordKey(name) {\n return pascalCase(name);\n}\n//# sourceMappingURL=allPaths.js.map"],"names":[],"mappings":";;;AA6BO,SAAS,aAAa,MAAM,MAAM;AACrC,MAAI,MAAM,WAAW,IAAI;AACzB,SAAO,SAAS,SAAS,WAAW,eAAe,GAAG,IAAI,eAAe,GAAG;AAChF;AAOO,SAAS,yBAAyB,MAAM;AAC3C,SAAO,WAAW,IAAI;AAC1B;","x_google_ignoreList":[0]}
@@ -1,4 +1,4 @@
1
- import { _ as __awaiter, a as __generator } from "./index-Con-eMFy.js";
1
+ import { _ as __awaiter, a as __generator } from "./index-CCewmzC_.js";
2
2
  var allPathsLoader = function(name, size) {
3
3
  return __awaiter(void 0, void 0, void 0, function() {
4
4
  var getIconPaths;
@@ -7,7 +7,7 @@ var allPathsLoader = function(name, size) {
7
7
  case 0:
8
8
  return [4, import(
9
9
  /* webpackChunkName: "blueprint-icons-all-paths" */
10
- "./allPaths-BJohi6Qg.js"
10
+ "./allPaths-DGMrcGYt.js"
11
11
  )];
12
12
  case 1:
13
13
  getIconPaths = _a.sent().getIconPaths;
@@ -19,4 +19,4 @@ var allPathsLoader = function(name, size) {
19
19
  export {
20
20
  allPathsLoader
21
21
  };
22
- //# sourceMappingURL=allPathsLoader-5JfP8Sty.js.map
22
+ //# sourceMappingURL=allPathsLoader-BIuTbNcY.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"allPathsLoader-B3qvIWfC.js","sources":["../../../node_modules/.pnpm/@blueprintjs+icons@5.20.0_@types+react@18.3.18_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@blueprintjs/icons/lib/esm/paths-loaders/allPathsLoader.js"],"sourcesContent":["/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { __awaiter, __generator } from \"tslib\";\n/**\n * A simple module loader which concatenates all icon paths into a single chunk.\n */\nexport var allPathsLoader = function (name, size) { return __awaiter(void 0, void 0, void 0, function () {\n var getIconPaths;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, import(\n /* webpackChunkName: \"blueprint-icons-all-paths\" */\n \"../allPaths\")];\n case 1:\n getIconPaths = (_a.sent()).getIconPaths;\n return [2 /*return*/, getIconPaths(name, size)];\n }\n });\n}); };\n//# sourceMappingURL=allPathsLoader.js.map"],"names":[],"mappings":";AAmBU,IAAC,iBAAiB,SAAU,MAAM,MAAM;AAAE,SAAO,UAAU,QAAQ,QAAQ,QAAQ,WAAY;AACrG,QAAI;AACJ,WAAO,YAAY,MAAM,SAAU,IAAI;AACnC,cAAQ,GAAG,OAAK;AAAA,QACZ,KAAK;AAAG,iBAAO,CAAC,GAAa;AAAA;AAAA,YAEzB;AAAA,UAAa,CAAC;AAAA,QAClB,KAAK;AACD,yBAAgB,GAAG,KAAI,EAAI;AAC3B,iBAAO,CAAC,GAAc,aAAa,MAAM,IAAI,CAAC;AAAA,MAC9D;AAAA,IACA,CAAK;AAAA,EACL,CAAC;AAAE;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"allPathsLoader-BIuTbNcY.js","sources":["../../../node_modules/.pnpm/@blueprintjs+icons@5.20.0_@types+react@18.3.18_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@blueprintjs/icons/lib/esm/paths-loaders/allPathsLoader.js"],"sourcesContent":["/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { __awaiter, __generator } from \"tslib\";\n/**\n * A simple module loader which concatenates all icon paths into a single chunk.\n */\nexport var allPathsLoader = function (name, size) { return __awaiter(void 0, void 0, void 0, function () {\n var getIconPaths;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, import(\n /* webpackChunkName: \"blueprint-icons-all-paths\" */\n \"../allPaths\")];\n case 1:\n getIconPaths = (_a.sent()).getIconPaths;\n return [2 /*return*/, getIconPaths(name, size)];\n }\n });\n}); };\n//# sourceMappingURL=allPathsLoader.js.map"],"names":[],"mappings":";AAmBU,IAAC,iBAAiB,SAAU,MAAM,MAAM;AAAE,SAAO,UAAU,QAAQ,QAAQ,QAAQ,WAAY;AACrG,QAAI;AACJ,WAAO,YAAY,MAAM,SAAU,IAAI;AACnC,cAAQ,GAAG,OAAK;AAAA,QACZ,KAAK;AAAG,iBAAO,CAAC,GAAa;AAAA;AAAA,YAEzB;AAAA,UAAa,CAAC;AAAA,QAClB,KAAK;AACD,yBAAgB,GAAG,KAAI,EAAI;AAC3B,iBAAO,CAAC,GAAc,aAAa,MAAM,IAAI,CAAC;AAAA,MAC9D;AAAA,IACA,CAAK;AAAA,EACL,CAAC;AAAE;","x_google_ignoreList":[0]}
@@ -1,4 +1,4 @@
1
- import { _ as __awaiter, a as __generator } from "./index-Con-eMFy.js";
1
+ import { _ as __awaiter, a as __generator } from "./index-CCewmzC_.js";
2
2
  var allPathsLoader = function(name, size) {
3
3
  return __awaiter(void 0, void 0, void 0, function() {
4
4
  var getIconPaths;
@@ -7,7 +7,7 @@ var allPathsLoader = function(name, size) {
7
7
  case 0:
8
8
  return [4, import(
9
9
  /* webpackChunkName: "blueprint-icons-all-paths" */
10
- "./allPaths-B2pTjiXe.js"
10
+ "./allPaths-nl-QZWn1.js"
11
11
  )];
12
12
  case 1:
13
13
  getIconPaths = _a.sent().getIconPaths;
@@ -19,4 +19,4 @@ var allPathsLoader = function(name, size) {
19
19
  export {
20
20
  allPathsLoader
21
21
  };
22
- //# sourceMappingURL=allPathsLoader-B3qvIWfC.js.map
22
+ //# sourceMappingURL=allPathsLoader-Tf9x8dtV.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"allPathsLoader-5JfP8Sty.js","sources":["../../../node_modules/.pnpm/@blueprintjs+icons@5.18.1_@types+react@18.3.18_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@blueprintjs/icons/lib/esm/paths-loaders/allPathsLoader.js"],"sourcesContent":["/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { __awaiter, __generator } from \"tslib\";\n/**\n * A simple module loader which concatenates all icon paths into a single chunk.\n */\nexport var allPathsLoader = function (name, size) { return __awaiter(void 0, void 0, void 0, function () {\n var getIconPaths;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, import(\n /* webpackChunkName: \"blueprint-icons-all-paths\" */\n \"../allPaths\")];\n case 1:\n getIconPaths = (_a.sent()).getIconPaths;\n return [2 /*return*/, getIconPaths(name, size)];\n }\n });\n}); };\n//# sourceMappingURL=allPathsLoader.js.map"],"names":[],"mappings":";AAmBU,IAAC,iBAAiB,SAAU,MAAM,MAAM;AAAE,SAAO,UAAU,QAAQ,QAAQ,QAAQ,WAAY;AACrG,QAAI;AACJ,WAAO,YAAY,MAAM,SAAU,IAAI;AACnC,cAAQ,GAAG,OAAK;AAAA,QACZ,KAAK;AAAG,iBAAO,CAAC,GAAa;AAAA;AAAA,YAEzB;AAAA,UAAa,CAAC;AAAA,QAClB,KAAK;AACD,yBAAgB,GAAG,KAAI,EAAI;AAC3B,iBAAO,CAAC,GAAc,aAAa,MAAM,IAAI,CAAC;AAAA,MAC9D;AAAA,IACA,CAAK;AAAA,EACL,CAAC;AAAE;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"allPathsLoader-Tf9x8dtV.js","sources":["../../../node_modules/.pnpm/@blueprintjs+icons@5.18.1_@types+react@18.3.18_react-dom@18.3.1_react@18.3.1__react@18.3.1/node_modules/@blueprintjs/icons/lib/esm/paths-loaders/allPathsLoader.js"],"sourcesContent":["/*\n * Copyright 2023 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nimport { __awaiter, __generator } from \"tslib\";\n/**\n * A simple module loader which concatenates all icon paths into a single chunk.\n */\nexport var allPathsLoader = function (name, size) { return __awaiter(void 0, void 0, void 0, function () {\n var getIconPaths;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, import(\n /* webpackChunkName: \"blueprint-icons-all-paths\" */\n \"../allPaths\")];\n case 1:\n getIconPaths = (_a.sent()).getIconPaths;\n return [2 /*return*/, getIconPaths(name, size)];\n }\n });\n}); };\n//# sourceMappingURL=allPathsLoader.js.map"],"names":[],"mappings":";AAmBU,IAAC,iBAAiB,SAAU,MAAM,MAAM;AAAE,SAAO,UAAU,QAAQ,QAAQ,QAAQ,WAAY;AACrG,QAAI;AACJ,WAAO,YAAY,MAAM,SAAU,IAAI;AACnC,cAAQ,GAAG,OAAK;AAAA,QACZ,KAAK;AAAG,iBAAO,CAAC,GAAa;AAAA;AAAA,YAEzB;AAAA,UAAa,CAAC;AAAA,QAClB,KAAK;AACD,yBAAgB,GAAG,KAAI,EAAI;AAC3B,iBAAO,CAAC,GAAc,aAAa,MAAM,IAAI,CAAC;AAAA,MAC9D;AAAA,IACA,CAAK;AAAA,EACL,CAAC;AAAE;","x_google_ignoreList":[0]}
@@ -1,7 +1,7 @@
1
1
  var __defProp = Object.defineProperty;
2
2
  var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
3
3
  var __publicField = (obj, key, value) => __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
4
- import { t as toJS, o as observer, j as jsxRuntimeExports, m as makeAutoObservable } from "./index-Con-eMFy.js";
4
+ import { t as toJS, o as observer, j as jsxRuntimeExports, m as makeAutoObservable } from "./index-CCewmzC_.js";
5
5
  import { useRef, createElement, useState, useEffect, useId, useCallback } from "react";
6
6
  import { createPortal } from "react-dom";
7
7
  const isBoolean = (data) => {
@@ -587,4 +587,4 @@ export {
587
587
  initializeCustomDevTools,
588
588
  setRegisteredStores
589
589
  };
590
- //# sourceMappingURL=devtools-consolidated-B16gTh1V.js.map
590
+ //# sourceMappingURL=devtools-consolidated-Brbj1JeD.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"devtools-consolidated-B16gTh1V.js","sources":["../../../node_modules/.pnpm/react-json-view-lite@2.4.1_react@18.3.1/node_modules/react-json-view-lite/dist/index.modern.js","../src/lib/internal-details/lib/devtools/serialize-store-data.tsx","../src/lib/internal-details/lib/devtools/devtools-consolidated.tsx"],"sourcesContent":["import { createElement, useRef, useState, useEffect, useId } from 'react';\n\nconst isBoolean = data => {\n return typeof data === 'boolean' || data instanceof Boolean;\n};\nconst isNumber = data => {\n return typeof data === 'number' || data instanceof Number;\n};\nconst isBigInt = data => {\n return typeof data === 'bigint' || data instanceof BigInt;\n};\nconst isDate = data => {\n return !!data && data instanceof Date;\n};\nconst isString = data => {\n return typeof data === 'string' || data instanceof String;\n};\nconst isArray = data => {\n return Array.isArray(data);\n};\nconst isObject = data => {\n return typeof data === 'object' && data !== null;\n};\nconst isFunction = data => {\n return !!data && data instanceof Object && typeof data === 'function';\n};\n\nfunction quoteString(value, quoted) {\n if (quoted === void 0) {\n quoted = false;\n }\n return !value || quoted ? `\"${value}\"` : value;\n}\nfunction quoteStringValue(value, quoted, stringify) {\n if (stringify) {\n return JSON.stringify(value);\n }\n return quoted ? `\"${value}\"` : value;\n}\nfunction ExpandableObject(_ref) {\n let {\n field,\n value,\n data,\n lastElement,\n openBracket,\n closeBracket,\n level,\n style,\n shouldExpandNode,\n clickToExpandNode,\n outerRef,\n beforeExpandChange\n } = _ref;\n const shouldExpandNodeCalledRef = useRef(false);\n const [expanded, setExpanded] = useState(() => shouldExpandNode(level, value, field));\n const expanderButtonRef = useRef(null);\n useEffect(() => {\n if (!shouldExpandNodeCalledRef.current) {\n shouldExpandNodeCalledRef.current = true;\n } else {\n setExpanded(shouldExpandNode(level, value, field));\n }\n }, [shouldExpandNode]);\n const contentsId = useId();\n if (data.length === 0) {\n return EmptyObject({\n field,\n openBracket,\n closeBracket,\n lastElement,\n style\n });\n }\n const expanderIconStyle = expanded ? style.collapseIcon : style.expandIcon;\n const ariaLabel = expanded ? style.ariaLables.collapseJson : style.ariaLables.expandJson;\n const childLevel = level + 1;\n const lastIndex = data.length - 1;\n const setExpandWithCallback = newExpandValue => {\n if (expanded !== newExpandValue && (!beforeExpandChange || beforeExpandChange({\n level,\n value,\n field,\n newExpandValue\n }))) {\n setExpanded(newExpandValue);\n }\n };\n const onKeyDown = e => {\n if (e.key === 'ArrowRight' || e.key === 'ArrowLeft') {\n e.preventDefault();\n setExpandWithCallback(e.key === 'ArrowRight');\n } else if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n const direction = e.key === 'ArrowUp' ? -1 : 1;\n if (!outerRef.current) return;\n const buttonElements = outerRef.current.querySelectorAll('[role=button]');\n let currentIndex = -1;\n for (let i = 0; i < buttonElements.length; i++) {\n if (buttonElements[i].tabIndex === 0) {\n currentIndex = i;\n break;\n }\n }\n if (currentIndex < 0) {\n return;\n }\n const nextIndex = (currentIndex + direction + buttonElements.length) % buttonElements.length;\n buttonElements[currentIndex].tabIndex = -1;\n buttonElements[nextIndex].tabIndex = 0;\n buttonElements[nextIndex].focus();\n }\n };\n const onClick = () => {\n var _outerRef$current;\n setExpandWithCallback(!expanded);\n const buttonElement = expanderButtonRef.current;\n if (!buttonElement) return;\n const prevButtonElement = (_outerRef$current = outerRef.current) === null || _outerRef$current === void 0 ? void 0 : _outerRef$current.querySelector('[role=button][tabindex=\"0\"]');\n if (prevButtonElement) {\n prevButtonElement.tabIndex = -1;\n }\n buttonElement.tabIndex = 0;\n buttonElement.focus();\n };\n return /*#__PURE__*/createElement(\"div\", {\n className: style.basicChildStyle,\n role: 'treeitem',\n \"aria-expanded\": expanded,\n \"aria-selected\": undefined\n }, /*#__PURE__*/createElement(\"span\", {\n className: expanderIconStyle,\n onClick: onClick,\n onKeyDown: onKeyDown,\n role: 'button',\n \"aria-label\": ariaLabel,\n \"aria-expanded\": expanded,\n \"aria-controls\": expanded ? contentsId : undefined,\n ref: expanderButtonRef,\n tabIndex: level === 0 ? 0 : -1\n }), (field || field === '') && (clickToExpandNode ? (\n /*#__PURE__*/\n createElement(\"span\", {\n className: style.clickableLabel,\n onClick: onClick,\n onKeyDown: onKeyDown\n }, quoteString(field, style.quotesForFieldNames), \":\")) : (/*#__PURE__*/createElement(\"span\", {\n className: style.label\n }, quoteString(field, style.quotesForFieldNames), \":\"))), /*#__PURE__*/createElement(\"span\", {\n className: style.punctuation\n }, openBracket), expanded ? (/*#__PURE__*/createElement(\"ul\", {\n id: contentsId,\n role: 'group',\n className: style.childFieldsContainer\n }, data.map((dataElement, index) => (/*#__PURE__*/createElement(DataRender, {\n key: dataElement[0] || index,\n field: dataElement[0],\n value: dataElement[1],\n style: style,\n lastElement: index === lastIndex,\n level: childLevel,\n shouldExpandNode: shouldExpandNode,\n clickToExpandNode: clickToExpandNode,\n outerRef: outerRef\n }))))) : (\n /*#__PURE__*/\n createElement(\"span\", {\n className: style.collapsedContent,\n onClick: onClick,\n onKeyDown: onKeyDown\n })), /*#__PURE__*/createElement(\"span\", {\n className: style.punctuation\n }, closeBracket), !lastElement && /*#__PURE__*/createElement(\"span\", {\n className: style.punctuation\n }, \",\"));\n}\nfunction EmptyObject(_ref2) {\n let {\n field,\n openBracket,\n closeBracket,\n lastElement,\n style\n } = _ref2;\n return /*#__PURE__*/createElement(\"div\", {\n className: style.basicChildStyle,\n role: 'treeitem',\n \"aria-selected\": undefined\n }, (field || field === '') && (/*#__PURE__*/createElement(\"span\", {\n className: style.label\n }, quoteString(field, style.quotesForFieldNames), \":\")), /*#__PURE__*/createElement(\"span\", {\n className: style.punctuation\n }, openBracket), /*#__PURE__*/createElement(\"span\", {\n className: style.punctuation\n }, closeBracket), !lastElement && /*#__PURE__*/createElement(\"span\", {\n className: style.punctuation\n }, \",\"));\n}\nfunction JsonObject(_ref3) {\n let {\n field,\n value,\n style,\n lastElement,\n shouldExpandNode,\n clickToExpandNode,\n level,\n outerRef,\n beforeExpandChange\n } = _ref3;\n return ExpandableObject({\n field,\n value,\n lastElement: lastElement || false,\n level,\n openBracket: '{',\n closeBracket: '}',\n style,\n shouldExpandNode,\n clickToExpandNode,\n data: Object.keys(value).map(key => [key, value[key]]),\n outerRef,\n beforeExpandChange\n });\n}\nfunction JsonArray(_ref4) {\n let {\n field,\n value,\n style,\n lastElement,\n level,\n shouldExpandNode,\n clickToExpandNode,\n outerRef,\n beforeExpandChange\n } = _ref4;\n return ExpandableObject({\n field,\n value,\n lastElement: lastElement || false,\n level,\n openBracket: '[',\n closeBracket: ']',\n style,\n shouldExpandNode,\n clickToExpandNode,\n data: value.map(element => [undefined, element]),\n outerRef,\n beforeExpandChange\n });\n}\nfunction JsonPrimitiveValue(_ref5) {\n let {\n field,\n value,\n style,\n lastElement\n } = _ref5;\n let stringValue;\n let valueStyle = style.otherValue;\n if (value === null) {\n stringValue = 'null';\n valueStyle = style.nullValue;\n } else if (value === undefined) {\n stringValue = 'undefined';\n valueStyle = style.undefinedValue;\n } else if (isString(value)) {\n stringValue = quoteStringValue(value, !style.noQuotesForStringValues, style.stringifyStringValues);\n valueStyle = style.stringValue;\n } else if (isBoolean(value)) {\n stringValue = value ? 'true' : 'false';\n valueStyle = style.booleanValue;\n } else if (isNumber(value)) {\n stringValue = value.toString();\n valueStyle = style.numberValue;\n } else if (isBigInt(value)) {\n stringValue = `${value.toString()}n`;\n valueStyle = style.numberValue;\n } else if (isDate(value)) {\n stringValue = value.toISOString();\n } else if (isFunction(value)) {\n stringValue = 'function() { }';\n } else {\n stringValue = value.toString();\n }\n return /*#__PURE__*/createElement(\"div\", {\n className: style.basicChildStyle,\n role: 'treeitem',\n \"aria-selected\": undefined\n }, (field || field === '') && (/*#__PURE__*/createElement(\"span\", {\n className: style.label\n }, quoteString(field, style.quotesForFieldNames), \":\")), /*#__PURE__*/createElement(\"span\", {\n className: valueStyle\n }, stringValue), !lastElement && /*#__PURE__*/createElement(\"span\", {\n className: style.punctuation\n }, \",\"));\n}\nfunction DataRender(props) {\n const value = props.value;\n if (isArray(value)) {\n return /*#__PURE__*/createElement(JsonArray, Object.assign({}, props));\n }\n if (isObject(value) && !isDate(value) && !isFunction(value)) {\n return /*#__PURE__*/createElement(JsonObject, Object.assign({}, props));\n }\n return /*#__PURE__*/createElement(JsonPrimitiveValue, Object.assign({}, props));\n}\n\nvar styles = {\"container-base\":\"_GzYRV\",\"punctuation-base\":\"_3eOF8\",\"pointer\":\"_1MFti\",\"expander-base\":\"_f10Tu _1MFti\",\"expand-icon\":\"_1UmXx\",\"collapse-icon\":\"_1LId0\",\"collapsed-content-base\":\"_1pNG9 _1MFti\",\"container-light\":\"_2IvMF _GzYRV\",\"basic-element-style\":\"_2bkNM\",\"child-fields-container\":\"_1BXBN\",\"label-light\":\"_1MGIk\",\"clickable-label-light\":\"_2YKJg _1MGIk _1MFti\",\"punctuation-light\":\"_3uHL6 _3eOF8\",\"value-null-light\":\"_2T6PJ\",\"value-undefined-light\":\"_1Gho6\",\"value-string-light\":\"_vGjyY\",\"value-number-light\":\"_1bQdo\",\"value-boolean-light\":\"_3zQKs\",\"value-other-light\":\"_1xvuR\",\"collapse-icon-light\":\"_oLqym _f10Tu _1MFti _1LId0\",\"expand-icon-light\":\"_2AXVT _f10Tu _1MFti _1UmXx\",\"collapsed-content-light\":\"_2KJWg _1pNG9 _1MFti\",\"container-dark\":\"_11RoI _GzYRV\",\"expand-icon-dark\":\"_17H2C _f10Tu _1MFti _1UmXx\",\"collapse-icon-dark\":\"_3QHg2 _f10Tu _1MFti _1LId0\",\"collapsed-content-dark\":\"_3fDAz _1pNG9 _1MFti\",\"label-dark\":\"_2bSDX\",\"clickable-label-dark\":\"_1RQEj _2bSDX _1MFti\",\"punctuation-dark\":\"_gsbQL _3eOF8\",\"value-null-dark\":\"_LaAZe\",\"value-undefined-dark\":\"_GTKgm\",\"value-string-dark\":\"_Chy1W\",\"value-number-dark\":\"_2bveF\",\"value-boolean-dark\":\"_2vRm-\",\"value-other-dark\":\"_1prJR\"};\n\nconst defaultAriaLables = {\n collapseJson: 'collapse JSON',\n expandJson: 'expand JSON'\n};\nconst defaultStyles = {\n container: styles['container-light'],\n basicChildStyle: styles['basic-element-style'],\n childFieldsContainer: styles['child-fields-container'],\n label: styles['label-light'],\n clickableLabel: styles['clickable-label-light'],\n nullValue: styles['value-null-light'],\n undefinedValue: styles['value-undefined-light'],\n stringValue: styles['value-string-light'],\n booleanValue: styles['value-boolean-light'],\n numberValue: styles['value-number-light'],\n otherValue: styles['value-other-light'],\n punctuation: styles['punctuation-light'],\n collapseIcon: styles['collapse-icon-light'],\n expandIcon: styles['expand-icon-light'],\n collapsedContent: styles['collapsed-content-light'],\n noQuotesForStringValues: false,\n quotesForFieldNames: false,\n ariaLables: defaultAriaLables,\n stringifyStringValues: false\n};\nconst darkStyles = {\n container: styles['container-dark'],\n basicChildStyle: styles['basic-element-style'],\n childFieldsContainer: styles['child-fields-container'],\n label: styles['label-dark'],\n clickableLabel: styles['clickable-label-dark'],\n nullValue: styles['value-null-dark'],\n undefinedValue: styles['value-undefined-dark'],\n stringValue: styles['value-string-dark'],\n booleanValue: styles['value-boolean-dark'],\n numberValue: styles['value-number-dark'],\n otherValue: styles['value-other-dark'],\n punctuation: styles['punctuation-dark'],\n collapseIcon: styles['collapse-icon-dark'],\n expandIcon: styles['expand-icon-dark'],\n collapsedContent: styles['collapsed-content-dark'],\n noQuotesForStringValues: false,\n quotesForFieldNames: false,\n ariaLables: defaultAriaLables,\n stringifyStringValues: false\n};\nconst allExpanded = () => true;\nconst collapseAllNested = level => level < 1;\nconst JsonView = _ref => {\n let {\n data,\n style = defaultStyles,\n shouldExpandNode = allExpanded,\n clickToExpandNode = false,\n beforeExpandChange,\n ...ariaAttrs\n } = _ref;\n const outerRef = useRef(null);\n return /*#__PURE__*/createElement(\"div\", Object.assign({\n \"aria-label\": 'JSON view'\n }, ariaAttrs, {\n className: style.container,\n ref: outerRef,\n role: 'tree'\n }), /*#__PURE__*/createElement(DataRender, {\n value: data,\n style: {\n ...defaultStyles,\n ...style\n },\n lastElement: true,\n level: 0,\n shouldExpandNode: shouldExpandNode,\n clickToExpandNode: clickToExpandNode,\n outerRef: outerRef,\n beforeExpandChange: beforeExpandChange\n }));\n};\n\nexport { JsonView, allExpanded, collapseAllNested, darkStyles, defaultStyles };\n//# sourceMappingURL=index.modern.js.map\n","import { toJS } from \"mobx\";\n\nexport function serializeStoreData(\n stores_: Record<string, any>,\n): Record<string, any> {\n try {\n const stores = toJS(stores_);\n const seen = new Set();\n function serialize(obj: any): any {\n if (obj === null || typeof obj !== \"object\") {\n return obj;\n }\n\n if (seen.has(obj)) {\n return \"[Already Seen]\";\n }\n\n // Create new path for this branch of recursion\n seen.add(obj);\n\n if (Array.isArray(obj)) {\n return obj.map(serialize);\n }\n\n const result: any = {};\n\n for (const key of Object.keys(obj)) {\n if (typeof obj[key] === \"function\") {\n result[key] = \"[Function]\";\n }\n\n try {\n const descriptor = Object.getOwnPropertyDescriptor(obj, key);\n if (descriptor && descriptor.get) {\n try {\n result[key] = serialize(obj[key]);\n } catch {\n result[key] = \"[Getter Error]\";\n }\n } else {\n result[key] = serialize(obj[key]);\n }\n } catch {\n result[key] = \"[Access Error]\";\n }\n }\n\n // Add type information\n if (obj.constructor && obj.constructor.name !== \"Object\") {\n result.__type__ = obj.constructor.name;\n }\n\n return result;\n }\n\n return serialize(stores);\n } catch (error) {\n return {\n error: `Error serializing data: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n };\n }\n}\n","import { makeAutoObservable } from \"mobx\";\nimport { observer } from \"mobx-react-lite\";\nimport React, { useCallback, useEffect } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { JsonView } from \"react-json-view-lite\";\nimport \"react-json-view-lite/dist/index.css\";\nimport { serializeStoreData } from \"./serialize-store-data.js\";\n\n// ============================================================================\n// STATE MANAGEMENT\n// ============================================================================\n\nclass DevToolsState {\n isVisible = false;\n\n constructor() {\n makeAutoObservable(this);\n }\n\n show() {\n this.isVisible = true;\n }\n\n hide() {\n this.isVisible = false;\n }\n\n toggle() {\n this.isVisible = !this.isVisible;\n }\n}\n\nconst devToolsState = new DevToolsState();\n\n// ============================================================================\n// KEYBOARD SHORTCUT MANAGER\n// ============================================================================\n\nclass KeyboardShortcutManager {\n private isListening = false;\n private shortcutKeys = {\n key: \"KeyD\",\n ctrlKey: true,\n shiftKey: true,\n altKey: false,\n };\n\n constructor() {\n this.handleKeyDown = this.handleKeyDown.bind(this);\n }\n\n private handleKeyDown(event: KeyboardEvent) {\n const { ctrlKey, shiftKey, altKey, metaKey } = event;\n const isModifierMatch = (ctrlKey || metaKey) && shiftKey && !altKey;\n const isKeyMatch = event.code === this.shortcutKeys.key;\n if (isModifierMatch && isKeyMatch) {\n event.preventDefault();\n event.stopPropagation();\n devToolsState.toggle();\n }\n }\n\n private handleEscapeKey = (event: KeyboardEvent) => {\n if (event.key === \"Escape\" && devToolsState.isVisible) {\n event.preventDefault();\n devToolsState.hide();\n }\n };\n\n startListening() {\n if (this.isListening) return;\n\n this.isListening = true;\n document.addEventListener(\"keydown\", this.handleKeyDown, true);\n document.addEventListener(\"keydown\", this.handleEscapeKey, true);\n }\n\n stopListening() {\n if (!this.isListening) return;\n\n this.isListening = false;\n document.removeEventListener(\"keydown\", this.handleKeyDown, true);\n document.removeEventListener(\"keydown\", this.handleEscapeKey, true);\n }\n\n updateShortcut(options: Partial<typeof this.shortcutKeys>) {\n this.shortcutKeys = { ...this.shortcutKeys, ...options };\n }\n}\n\nconst keyboardShortcutManager = new KeyboardShortcutManager();\n\n// ============================================================================\n// STORE ACCESS\n// ============================================================================\n\n// This will be populated by the registerStores function\nlet registeredStores: Record<string, any> = {};\n\nexport function setRegisteredStores(stores: Record<string, any>) {\n registeredStores = stores;\n}\n\nfunction getRegisteredStores() {\n return registeredStores;\n}\n\n// ============================================================================\n// DEVTOOLS PANEL COMPONENT\n// ============================================================================\n\nconst overlayStyles: React.CSSProperties = {\n position: \"fixed\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: \"rgba(0, 0, 0, 0.5)\",\n zIndex: 9999,\n};\n\nconst panelStyles: React.CSSProperties = {\n position: \"fixed\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n width: \"90vw\",\n height: \"90vh\",\n backgroundColor: \"#fff\",\n zIndex: 10000,\n display: \"flex\",\n flexDirection: \"column\",\n borderRadius: 12,\n};\n\nconst headerStyles: React.CSSProperties = {\n padding: 12,\n borderBottom: \"1px solid #ccc\",\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n};\n\nconst closeButtonStyles: React.CSSProperties = {\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n};\n\nconst contentStyles: React.CSSProperties = {\n padding: 8,\n display: \"flex\",\n flex: 1,\n overflow: \"auto\",\n flexDirection: \"column\",\n};\n\nconst DevToolsPanelContent: React.FC = observer(() => {\n const stores = getRegisteredStores();\n const storeNames = Object.keys(stores);\n\n const serializedData = serializeStoreData(stores);\n const onClose = useCallback(() => {\n devToolsState.hide();\n }, []);\n\n return createPortal(\n <>\n <div style={overlayStyles} onClick={onClose} />\n <div style={panelStyles}>\n <div style={headerStyles}>\n <h3>\n MobX DevTools ({storeNames.length} store\n {storeNames.length !== 1 ? \"s\" : \"\"})\n </h3>\n <button\n style={closeButtonStyles}\n onClick={onClose}\n title=\"Close (ESC)\"\n >\n ×\n </button>\n </div>\n {storeNames.length === 0 ? (\n <div>No stores registered yet.</div>\n ) : (\n <div style={contentStyles}>\n <JsonView\n data={serializedData}\n clickToExpandNode={true}\n shouldExpandNode={(level) => level < 2}\n />\n </div>\n )}\n </div>\n </>,\n document.body,\n );\n});\n\n// ============================================================================\n// PROVIDER COMPONENT\n// ============================================================================\n\nexport const CustomDevTools: React.FC = observer(() => {\n useEffect(() => {\n if (devToolsState.isVisible) {\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n devToolsState.hide();\n }\n };\n document.addEventListener(\"keydown\", handleEscape);\n return () => document.removeEventListener(\"keydown\", handleEscape);\n }\n }, []);\n\n if (!devToolsState.isVisible) {\n return null;\n }\n\n return <DevToolsPanelContent />;\n});\n\n// ============================================================================\n// INITIALIZATION\n// ============================================================================\n\nexport function initializeCustomDevTools() {\n keyboardShortcutManager.startListening();\n console.log(\n \"[CustomDevTools] Initialized - Press Ctrl+Shift+D (or Cmd+Shift+D) to open\",\n );\n}\n"],"names":["jsxs","Fragment","jsx"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"devtools-consolidated-Brbj1JeD.js","sources":["../../../node_modules/.pnpm/react-json-view-lite@2.4.1_react@18.3.1/node_modules/react-json-view-lite/dist/index.modern.js","../src/lib/internal-details/lib/devtools/serialize-store-data.tsx","../src/lib/internal-details/lib/devtools/devtools-consolidated.tsx"],"sourcesContent":["import { createElement, useRef, useState, useEffect, useId } from 'react';\n\nconst isBoolean = data => {\n return typeof data === 'boolean' || data instanceof Boolean;\n};\nconst isNumber = data => {\n return typeof data === 'number' || data instanceof Number;\n};\nconst isBigInt = data => {\n return typeof data === 'bigint' || data instanceof BigInt;\n};\nconst isDate = data => {\n return !!data && data instanceof Date;\n};\nconst isString = data => {\n return typeof data === 'string' || data instanceof String;\n};\nconst isArray = data => {\n return Array.isArray(data);\n};\nconst isObject = data => {\n return typeof data === 'object' && data !== null;\n};\nconst isFunction = data => {\n return !!data && data instanceof Object && typeof data === 'function';\n};\n\nfunction quoteString(value, quoted) {\n if (quoted === void 0) {\n quoted = false;\n }\n return !value || quoted ? `\"${value}\"` : value;\n}\nfunction quoteStringValue(value, quoted, stringify) {\n if (stringify) {\n return JSON.stringify(value);\n }\n return quoted ? `\"${value}\"` : value;\n}\nfunction ExpandableObject(_ref) {\n let {\n field,\n value,\n data,\n lastElement,\n openBracket,\n closeBracket,\n level,\n style,\n shouldExpandNode,\n clickToExpandNode,\n outerRef,\n beforeExpandChange\n } = _ref;\n const shouldExpandNodeCalledRef = useRef(false);\n const [expanded, setExpanded] = useState(() => shouldExpandNode(level, value, field));\n const expanderButtonRef = useRef(null);\n useEffect(() => {\n if (!shouldExpandNodeCalledRef.current) {\n shouldExpandNodeCalledRef.current = true;\n } else {\n setExpanded(shouldExpandNode(level, value, field));\n }\n }, [shouldExpandNode]);\n const contentsId = useId();\n if (data.length === 0) {\n return EmptyObject({\n field,\n openBracket,\n closeBracket,\n lastElement,\n style\n });\n }\n const expanderIconStyle = expanded ? style.collapseIcon : style.expandIcon;\n const ariaLabel = expanded ? style.ariaLables.collapseJson : style.ariaLables.expandJson;\n const childLevel = level + 1;\n const lastIndex = data.length - 1;\n const setExpandWithCallback = newExpandValue => {\n if (expanded !== newExpandValue && (!beforeExpandChange || beforeExpandChange({\n level,\n value,\n field,\n newExpandValue\n }))) {\n setExpanded(newExpandValue);\n }\n };\n const onKeyDown = e => {\n if (e.key === 'ArrowRight' || e.key === 'ArrowLeft') {\n e.preventDefault();\n setExpandWithCallback(e.key === 'ArrowRight');\n } else if (e.key === 'ArrowUp' || e.key === 'ArrowDown') {\n e.preventDefault();\n const direction = e.key === 'ArrowUp' ? -1 : 1;\n if (!outerRef.current) return;\n const buttonElements = outerRef.current.querySelectorAll('[role=button]');\n let currentIndex = -1;\n for (let i = 0; i < buttonElements.length; i++) {\n if (buttonElements[i].tabIndex === 0) {\n currentIndex = i;\n break;\n }\n }\n if (currentIndex < 0) {\n return;\n }\n const nextIndex = (currentIndex + direction + buttonElements.length) % buttonElements.length;\n buttonElements[currentIndex].tabIndex = -1;\n buttonElements[nextIndex].tabIndex = 0;\n buttonElements[nextIndex].focus();\n }\n };\n const onClick = () => {\n var _outerRef$current;\n setExpandWithCallback(!expanded);\n const buttonElement = expanderButtonRef.current;\n if (!buttonElement) return;\n const prevButtonElement = (_outerRef$current = outerRef.current) === null || _outerRef$current === void 0 ? void 0 : _outerRef$current.querySelector('[role=button][tabindex=\"0\"]');\n if (prevButtonElement) {\n prevButtonElement.tabIndex = -1;\n }\n buttonElement.tabIndex = 0;\n buttonElement.focus();\n };\n return /*#__PURE__*/createElement(\"div\", {\n className: style.basicChildStyle,\n role: 'treeitem',\n \"aria-expanded\": expanded,\n \"aria-selected\": undefined\n }, /*#__PURE__*/createElement(\"span\", {\n className: expanderIconStyle,\n onClick: onClick,\n onKeyDown: onKeyDown,\n role: 'button',\n \"aria-label\": ariaLabel,\n \"aria-expanded\": expanded,\n \"aria-controls\": expanded ? contentsId : undefined,\n ref: expanderButtonRef,\n tabIndex: level === 0 ? 0 : -1\n }), (field || field === '') && (clickToExpandNode ? (\n /*#__PURE__*/\n createElement(\"span\", {\n className: style.clickableLabel,\n onClick: onClick,\n onKeyDown: onKeyDown\n }, quoteString(field, style.quotesForFieldNames), \":\")) : (/*#__PURE__*/createElement(\"span\", {\n className: style.label\n }, quoteString(field, style.quotesForFieldNames), \":\"))), /*#__PURE__*/createElement(\"span\", {\n className: style.punctuation\n }, openBracket), expanded ? (/*#__PURE__*/createElement(\"ul\", {\n id: contentsId,\n role: 'group',\n className: style.childFieldsContainer\n }, data.map((dataElement, index) => (/*#__PURE__*/createElement(DataRender, {\n key: dataElement[0] || index,\n field: dataElement[0],\n value: dataElement[1],\n style: style,\n lastElement: index === lastIndex,\n level: childLevel,\n shouldExpandNode: shouldExpandNode,\n clickToExpandNode: clickToExpandNode,\n outerRef: outerRef\n }))))) : (\n /*#__PURE__*/\n createElement(\"span\", {\n className: style.collapsedContent,\n onClick: onClick,\n onKeyDown: onKeyDown\n })), /*#__PURE__*/createElement(\"span\", {\n className: style.punctuation\n }, closeBracket), !lastElement && /*#__PURE__*/createElement(\"span\", {\n className: style.punctuation\n }, \",\"));\n}\nfunction EmptyObject(_ref2) {\n let {\n field,\n openBracket,\n closeBracket,\n lastElement,\n style\n } = _ref2;\n return /*#__PURE__*/createElement(\"div\", {\n className: style.basicChildStyle,\n role: 'treeitem',\n \"aria-selected\": undefined\n }, (field || field === '') && (/*#__PURE__*/createElement(\"span\", {\n className: style.label\n }, quoteString(field, style.quotesForFieldNames), \":\")), /*#__PURE__*/createElement(\"span\", {\n className: style.punctuation\n }, openBracket), /*#__PURE__*/createElement(\"span\", {\n className: style.punctuation\n }, closeBracket), !lastElement && /*#__PURE__*/createElement(\"span\", {\n className: style.punctuation\n }, \",\"));\n}\nfunction JsonObject(_ref3) {\n let {\n field,\n value,\n style,\n lastElement,\n shouldExpandNode,\n clickToExpandNode,\n level,\n outerRef,\n beforeExpandChange\n } = _ref3;\n return ExpandableObject({\n field,\n value,\n lastElement: lastElement || false,\n level,\n openBracket: '{',\n closeBracket: '}',\n style,\n shouldExpandNode,\n clickToExpandNode,\n data: Object.keys(value).map(key => [key, value[key]]),\n outerRef,\n beforeExpandChange\n });\n}\nfunction JsonArray(_ref4) {\n let {\n field,\n value,\n style,\n lastElement,\n level,\n shouldExpandNode,\n clickToExpandNode,\n outerRef,\n beforeExpandChange\n } = _ref4;\n return ExpandableObject({\n field,\n value,\n lastElement: lastElement || false,\n level,\n openBracket: '[',\n closeBracket: ']',\n style,\n shouldExpandNode,\n clickToExpandNode,\n data: value.map(element => [undefined, element]),\n outerRef,\n beforeExpandChange\n });\n}\nfunction JsonPrimitiveValue(_ref5) {\n let {\n field,\n value,\n style,\n lastElement\n } = _ref5;\n let stringValue;\n let valueStyle = style.otherValue;\n if (value === null) {\n stringValue = 'null';\n valueStyle = style.nullValue;\n } else if (value === undefined) {\n stringValue = 'undefined';\n valueStyle = style.undefinedValue;\n } else if (isString(value)) {\n stringValue = quoteStringValue(value, !style.noQuotesForStringValues, style.stringifyStringValues);\n valueStyle = style.stringValue;\n } else if (isBoolean(value)) {\n stringValue = value ? 'true' : 'false';\n valueStyle = style.booleanValue;\n } else if (isNumber(value)) {\n stringValue = value.toString();\n valueStyle = style.numberValue;\n } else if (isBigInt(value)) {\n stringValue = `${value.toString()}n`;\n valueStyle = style.numberValue;\n } else if (isDate(value)) {\n stringValue = value.toISOString();\n } else if (isFunction(value)) {\n stringValue = 'function() { }';\n } else {\n stringValue = value.toString();\n }\n return /*#__PURE__*/createElement(\"div\", {\n className: style.basicChildStyle,\n role: 'treeitem',\n \"aria-selected\": undefined\n }, (field || field === '') && (/*#__PURE__*/createElement(\"span\", {\n className: style.label\n }, quoteString(field, style.quotesForFieldNames), \":\")), /*#__PURE__*/createElement(\"span\", {\n className: valueStyle\n }, stringValue), !lastElement && /*#__PURE__*/createElement(\"span\", {\n className: style.punctuation\n }, \",\"));\n}\nfunction DataRender(props) {\n const value = props.value;\n if (isArray(value)) {\n return /*#__PURE__*/createElement(JsonArray, Object.assign({}, props));\n }\n if (isObject(value) && !isDate(value) && !isFunction(value)) {\n return /*#__PURE__*/createElement(JsonObject, Object.assign({}, props));\n }\n return /*#__PURE__*/createElement(JsonPrimitiveValue, Object.assign({}, props));\n}\n\nvar styles = {\"container-base\":\"_GzYRV\",\"punctuation-base\":\"_3eOF8\",\"pointer\":\"_1MFti\",\"expander-base\":\"_f10Tu _1MFti\",\"expand-icon\":\"_1UmXx\",\"collapse-icon\":\"_1LId0\",\"collapsed-content-base\":\"_1pNG9 _1MFti\",\"container-light\":\"_2IvMF _GzYRV\",\"basic-element-style\":\"_2bkNM\",\"child-fields-container\":\"_1BXBN\",\"label-light\":\"_1MGIk\",\"clickable-label-light\":\"_2YKJg _1MGIk _1MFti\",\"punctuation-light\":\"_3uHL6 _3eOF8\",\"value-null-light\":\"_2T6PJ\",\"value-undefined-light\":\"_1Gho6\",\"value-string-light\":\"_vGjyY\",\"value-number-light\":\"_1bQdo\",\"value-boolean-light\":\"_3zQKs\",\"value-other-light\":\"_1xvuR\",\"collapse-icon-light\":\"_oLqym _f10Tu _1MFti _1LId0\",\"expand-icon-light\":\"_2AXVT _f10Tu _1MFti _1UmXx\",\"collapsed-content-light\":\"_2KJWg _1pNG9 _1MFti\",\"container-dark\":\"_11RoI _GzYRV\",\"expand-icon-dark\":\"_17H2C _f10Tu _1MFti _1UmXx\",\"collapse-icon-dark\":\"_3QHg2 _f10Tu _1MFti _1LId0\",\"collapsed-content-dark\":\"_3fDAz _1pNG9 _1MFti\",\"label-dark\":\"_2bSDX\",\"clickable-label-dark\":\"_1RQEj _2bSDX _1MFti\",\"punctuation-dark\":\"_gsbQL _3eOF8\",\"value-null-dark\":\"_LaAZe\",\"value-undefined-dark\":\"_GTKgm\",\"value-string-dark\":\"_Chy1W\",\"value-number-dark\":\"_2bveF\",\"value-boolean-dark\":\"_2vRm-\",\"value-other-dark\":\"_1prJR\"};\n\nconst defaultAriaLables = {\n collapseJson: 'collapse JSON',\n expandJson: 'expand JSON'\n};\nconst defaultStyles = {\n container: styles['container-light'],\n basicChildStyle: styles['basic-element-style'],\n childFieldsContainer: styles['child-fields-container'],\n label: styles['label-light'],\n clickableLabel: styles['clickable-label-light'],\n nullValue: styles['value-null-light'],\n undefinedValue: styles['value-undefined-light'],\n stringValue: styles['value-string-light'],\n booleanValue: styles['value-boolean-light'],\n numberValue: styles['value-number-light'],\n otherValue: styles['value-other-light'],\n punctuation: styles['punctuation-light'],\n collapseIcon: styles['collapse-icon-light'],\n expandIcon: styles['expand-icon-light'],\n collapsedContent: styles['collapsed-content-light'],\n noQuotesForStringValues: false,\n quotesForFieldNames: false,\n ariaLables: defaultAriaLables,\n stringifyStringValues: false\n};\nconst darkStyles = {\n container: styles['container-dark'],\n basicChildStyle: styles['basic-element-style'],\n childFieldsContainer: styles['child-fields-container'],\n label: styles['label-dark'],\n clickableLabel: styles['clickable-label-dark'],\n nullValue: styles['value-null-dark'],\n undefinedValue: styles['value-undefined-dark'],\n stringValue: styles['value-string-dark'],\n booleanValue: styles['value-boolean-dark'],\n numberValue: styles['value-number-dark'],\n otherValue: styles['value-other-dark'],\n punctuation: styles['punctuation-dark'],\n collapseIcon: styles['collapse-icon-dark'],\n expandIcon: styles['expand-icon-dark'],\n collapsedContent: styles['collapsed-content-dark'],\n noQuotesForStringValues: false,\n quotesForFieldNames: false,\n ariaLables: defaultAriaLables,\n stringifyStringValues: false\n};\nconst allExpanded = () => true;\nconst collapseAllNested = level => level < 1;\nconst JsonView = _ref => {\n let {\n data,\n style = defaultStyles,\n shouldExpandNode = allExpanded,\n clickToExpandNode = false,\n beforeExpandChange,\n ...ariaAttrs\n } = _ref;\n const outerRef = useRef(null);\n return /*#__PURE__*/createElement(\"div\", Object.assign({\n \"aria-label\": 'JSON view'\n }, ariaAttrs, {\n className: style.container,\n ref: outerRef,\n role: 'tree'\n }), /*#__PURE__*/createElement(DataRender, {\n value: data,\n style: {\n ...defaultStyles,\n ...style\n },\n lastElement: true,\n level: 0,\n shouldExpandNode: shouldExpandNode,\n clickToExpandNode: clickToExpandNode,\n outerRef: outerRef,\n beforeExpandChange: beforeExpandChange\n }));\n};\n\nexport { JsonView, allExpanded, collapseAllNested, darkStyles, defaultStyles };\n//# sourceMappingURL=index.modern.js.map\n","import { toJS } from \"mobx\";\n\nexport function serializeStoreData(\n stores_: Record<string, any>,\n): Record<string, any> {\n try {\n const stores = toJS(stores_);\n const seen = new Set();\n function serialize(obj: any): any {\n if (obj === null || typeof obj !== \"object\") {\n return obj;\n }\n\n if (seen.has(obj)) {\n return \"[Already Seen]\";\n }\n\n // Create new path for this branch of recursion\n seen.add(obj);\n\n if (Array.isArray(obj)) {\n return obj.map(serialize);\n }\n\n const result: any = {};\n\n for (const key of Object.keys(obj)) {\n if (typeof obj[key] === \"function\") {\n result[key] = \"[Function]\";\n }\n\n try {\n const descriptor = Object.getOwnPropertyDescriptor(obj, key);\n if (descriptor && descriptor.get) {\n try {\n result[key] = serialize(obj[key]);\n } catch {\n result[key] = \"[Getter Error]\";\n }\n } else {\n result[key] = serialize(obj[key]);\n }\n } catch {\n result[key] = \"[Access Error]\";\n }\n }\n\n // Add type information\n if (obj.constructor && obj.constructor.name !== \"Object\") {\n result.__type__ = obj.constructor.name;\n }\n\n return result;\n }\n\n return serialize(stores);\n } catch (error) {\n return {\n error: `Error serializing data: ${error instanceof Error ? error.message : \"Unknown error\"}`,\n };\n }\n}\n","import { makeAutoObservable } from \"mobx\";\nimport { observer } from \"mobx-react-lite\";\nimport React, { useCallback, useEffect } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { JsonView } from \"react-json-view-lite\";\nimport \"react-json-view-lite/dist/index.css\";\nimport { serializeStoreData } from \"./serialize-store-data.js\";\n\n// ============================================================================\n// STATE MANAGEMENT\n// ============================================================================\n\nclass DevToolsState {\n isVisible = false;\n\n constructor() {\n makeAutoObservable(this);\n }\n\n show() {\n this.isVisible = true;\n }\n\n hide() {\n this.isVisible = false;\n }\n\n toggle() {\n this.isVisible = !this.isVisible;\n }\n}\n\nconst devToolsState = new DevToolsState();\n\n// ============================================================================\n// KEYBOARD SHORTCUT MANAGER\n// ============================================================================\n\nclass KeyboardShortcutManager {\n private isListening = false;\n private shortcutKeys = {\n key: \"KeyD\",\n ctrlKey: true,\n shiftKey: true,\n altKey: false,\n };\n\n constructor() {\n this.handleKeyDown = this.handleKeyDown.bind(this);\n }\n\n private handleKeyDown(event: KeyboardEvent) {\n const { ctrlKey, shiftKey, altKey, metaKey } = event;\n const isModifierMatch = (ctrlKey || metaKey) && shiftKey && !altKey;\n const isKeyMatch = event.code === this.shortcutKeys.key;\n if (isModifierMatch && isKeyMatch) {\n event.preventDefault();\n event.stopPropagation();\n devToolsState.toggle();\n }\n }\n\n private handleEscapeKey = (event: KeyboardEvent) => {\n if (event.key === \"Escape\" && devToolsState.isVisible) {\n event.preventDefault();\n devToolsState.hide();\n }\n };\n\n startListening() {\n if (this.isListening) return;\n\n this.isListening = true;\n document.addEventListener(\"keydown\", this.handleKeyDown, true);\n document.addEventListener(\"keydown\", this.handleEscapeKey, true);\n }\n\n stopListening() {\n if (!this.isListening) return;\n\n this.isListening = false;\n document.removeEventListener(\"keydown\", this.handleKeyDown, true);\n document.removeEventListener(\"keydown\", this.handleEscapeKey, true);\n }\n\n updateShortcut(options: Partial<typeof this.shortcutKeys>) {\n this.shortcutKeys = { ...this.shortcutKeys, ...options };\n }\n}\n\nconst keyboardShortcutManager = new KeyboardShortcutManager();\n\n// ============================================================================\n// STORE ACCESS\n// ============================================================================\n\n// This will be populated by the registerStores function\nlet registeredStores: Record<string, any> = {};\n\nexport function setRegisteredStores(stores: Record<string, any>) {\n registeredStores = stores;\n}\n\nfunction getRegisteredStores() {\n return registeredStores;\n}\n\n// ============================================================================\n// DEVTOOLS PANEL COMPONENT\n// ============================================================================\n\nconst overlayStyles: React.CSSProperties = {\n position: \"fixed\",\n top: 0,\n left: 0,\n right: 0,\n bottom: 0,\n backgroundColor: \"rgba(0, 0, 0, 0.5)\",\n zIndex: 9999,\n};\n\nconst panelStyles: React.CSSProperties = {\n position: \"fixed\",\n top: \"50%\",\n left: \"50%\",\n transform: \"translate(-50%, -50%)\",\n width: \"90vw\",\n height: \"90vh\",\n backgroundColor: \"#fff\",\n zIndex: 10000,\n display: \"flex\",\n flexDirection: \"column\",\n borderRadius: 12,\n};\n\nconst headerStyles: React.CSSProperties = {\n padding: 12,\n borderBottom: \"1px solid #ccc\",\n display: \"flex\",\n justifyContent: \"space-between\",\n alignItems: \"center\",\n};\n\nconst closeButtonStyles: React.CSSProperties = {\n background: \"none\",\n border: \"none\",\n cursor: \"pointer\",\n};\n\nconst contentStyles: React.CSSProperties = {\n padding: 8,\n display: \"flex\",\n flex: 1,\n overflow: \"auto\",\n flexDirection: \"column\",\n};\n\nconst DevToolsPanelContent: React.FC = observer(() => {\n const stores = getRegisteredStores();\n const storeNames = Object.keys(stores);\n\n const serializedData = serializeStoreData(stores);\n const onClose = useCallback(() => {\n devToolsState.hide();\n }, []);\n\n return createPortal(\n <>\n <div style={overlayStyles} onClick={onClose} />\n <div style={panelStyles}>\n <div style={headerStyles}>\n <h3>\n MobX DevTools ({storeNames.length} store\n {storeNames.length !== 1 ? \"s\" : \"\"})\n </h3>\n <button\n style={closeButtonStyles}\n onClick={onClose}\n title=\"Close (ESC)\"\n >\n ×\n </button>\n </div>\n {storeNames.length === 0 ? (\n <div>No stores registered yet.</div>\n ) : (\n <div style={contentStyles}>\n <JsonView\n data={serializedData}\n clickToExpandNode={true}\n shouldExpandNode={(level) => level < 2}\n />\n </div>\n )}\n </div>\n </>,\n document.body,\n );\n});\n\n// ============================================================================\n// PROVIDER COMPONENT\n// ============================================================================\n\nexport const CustomDevTools: React.FC = observer(() => {\n useEffect(() => {\n if (devToolsState.isVisible) {\n const handleEscape = (event: KeyboardEvent) => {\n if (event.key === \"Escape\") {\n devToolsState.hide();\n }\n };\n document.addEventListener(\"keydown\", handleEscape);\n return () => document.removeEventListener(\"keydown\", handleEscape);\n }\n }, []);\n\n if (!devToolsState.isVisible) {\n return null;\n }\n\n return <DevToolsPanelContent />;\n});\n\n// ============================================================================\n// INITIALIZATION\n// ============================================================================\n\nexport function initializeCustomDevTools() {\n keyboardShortcutManager.startListening();\n console.log(\n \"[CustomDevTools] Initialized - Press Ctrl+Shift+D (or Cmd+Shift+D) to open\",\n );\n}\n"],"names":["jsxs","Fragment","jsx"],"mappings":"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","x_google_ignoreList":[0]}
@@ -95080,7 +95080,7 @@ function registerStores(stores) {
95080
95080
  internalStores = { ...internalStores, ...stores };
95081
95081
  if (SUPPORTED_MODES.includes("production")) {
95082
95082
  if (Object.keys(internalStores).length === Object.keys(stores).length) {
95083
- import("./devtools-consolidated-B16gTh1V.js").then(({ initializeCustomDevTools, setRegisteredStores }) => {
95083
+ import("./devtools-consolidated-Brbj1JeD.js").then(({ initializeCustomDevTools, setRegisteredStores }) => {
95084
95084
  setRegisteredStores(internalStores);
95085
95085
  initializeCustomDevTools();
95086
95086
  }).catch((error) => {
@@ -95093,7 +95093,7 @@ function registerStores(stores) {
95093
95093
  }
95094
95094
  }
95095
95095
  const DevToolsInternal = React__default.lazy(() => {
95096
- return import("./devtools-consolidated-B16gTh1V.js").then((module2) => ({
95096
+ return import("./devtools-consolidated-Brbj1JeD.js").then((module2) => ({
95097
95097
  default: module2.CustomDevTools
95098
95098
  }));
95099
95099
  });
@@ -97232,6 +97232,7 @@ class ComponentRegistry {
97232
97232
  __publicField(this, "_customComponentRegistry", /* @__PURE__ */ new Map());
97233
97233
  __publicField(this, "_managedPropsRegistry", /* @__PURE__ */ new Map());
97234
97234
  __publicField(this, "_internalPropsRegistry", /* @__PURE__ */ new Map());
97235
+ __publicField(this, "_editorTemplatesRegistry", /* @__PURE__ */ new Map());
97235
97236
  this.rootStore = rootStore2;
97236
97237
  makeAutoObservable(this);
97237
97238
  startEditorSync({
@@ -97252,6 +97253,7 @@ class ComponentRegistry {
97252
97253
  deleteCustomComponent(type5) {
97253
97254
  this._customComponentRegistry.delete(type5);
97254
97255
  this._managedPropsRegistry.delete(type5);
97256
+ this._editorTemplatesRegistry.delete(type5);
97255
97257
  }
97256
97258
  renameCustomComponent(oldName, newName) {
97257
97259
  const component = this._customComponentRegistry.get(oldName);
@@ -97271,6 +97273,13 @@ class ComponentRegistry {
97271
97273
  deleteManagedProps(type5) {
97272
97274
  this._managedPropsRegistry.delete(type5);
97273
97275
  }
97276
+ addEditorTemplate(type5, template) {
97277
+ const existingTemplates = this._editorTemplatesRegistry.get(type5) ?? [];
97278
+ this._editorTemplatesRegistry.set(type5, [...existingTemplates, template]);
97279
+ }
97280
+ getEditorTemplates(type5) {
97281
+ return this._editorTemplatesRegistry.get(type5);
97282
+ }
97274
97283
  addInternalProps(type5, props2) {
97275
97284
  this._internalPropsRegistry.set(type5, props2);
97276
97285
  }
@@ -102633,14 +102642,14 @@ function getLoaderFn$1(options) {
102633
102642
  if (!(loader === "all")) return [3, 3];
102634
102643
  return [4, import(
102635
102644
  /* webpackChunkName: "blueprint-icons-all-paths-loader" */
102636
- "./allPathsLoader-5JfP8Sty.js"
102645
+ "./allPathsLoader-Tf9x8dtV.js"
102637
102646
  )];
102638
102647
  case 2:
102639
102648
  return [2, _b2.sent().allPathsLoader];
102640
102649
  case 3:
102641
102650
  return [4, import(
102642
102651
  /* webpackChunkName: "blueprint-icons-split-paths-by-size-loader" */
102643
- "./splitPathsBySizeLoader-COQS0jY_.js"
102652
+ "./splitPathsBySizeLoader-C3MBiqmb.js"
102644
102653
  )];
102645
102654
  case 4:
102646
102655
  return [2, _b2.sent().splitPathsBySizeLoader];
@@ -128320,29 +128329,46 @@ function getTriggerComponent({
128320
128329
  throw new Error("Unhandled component type: " + componentType);
128321
128330
  }
128322
128331
  function getComponentBaseProperties(componentType, parentInfo) {
128323
- var _a2, _b2;
128332
+ var _a2, _b2, _c2, _d2;
128324
128333
  const customComponents = rootStore.componentRegistry.customComponentList;
128325
- const properties2 = {};
128334
+ let properties2 = {};
128326
128335
  let children = [];
128327
- const shouldProvideAName = componentType === "Input" || componentType === "Dropdown" || componentType === "DatePicker" || componentType === "Checkbox" || componentType === "Switch" || componentType === "Modal" || componentType === "Slideout" || componentType === "Table" || // Components not yet implemented
128328
- componentType === "Form" || componentType === "Radio" || componentType === "RichText" || componentType === "FilePicker" || componentType === "CodeEditor" || componentType === "Chat" || // Components that can be implicitly created when dropping on a page or section
128329
- componentType === "Section" || componentType === "Column" || // All components dropped in a grid
128330
- parentInfo.isGridLike || // All custom components
128331
- customComponents.includes(componentType);
128336
+ const editorTemplates = rootStore.componentRegistry.getEditorTemplates(componentType);
128337
+ if (editorTemplates && editorTemplates.length > 1) {
128338
+ throw new Error(
128339
+ `Multiple editor templates are not supported yet. Found ${editorTemplates.length} for component type: ${componentType}.`
128340
+ );
128341
+ }
128342
+ const context2 = {
128343
+ generateUniqueName: getUniqueName
128344
+ };
128345
+ const editorTemplateOnCreate = (_b2 = (_a2 = editorTemplates == null ? void 0 : editorTemplates[0]) == null ? void 0 : _a2.create) == null ? void 0 : _b2.call(_a2, context2);
128346
+ if (editorTemplateOnCreate && Array.isArray(editorTemplateOnCreate)) {
128347
+ throw new Error(
128348
+ `Multiple creates for on editor template are not supported yet. Found ${editorTemplateOnCreate.length} for component type: ${componentType}.`
128349
+ );
128350
+ }
128351
+ if (editorTemplateOnCreate && editorTemplateOnCreate.bind) {
128352
+ properties2.name = Property.Static(editorTemplateOnCreate.bind);
128353
+ } else {
128354
+ const shouldProvideAName = (
128355
+ // TODO: migrate these components
128356
+ componentType === "Dropdown" || componentType === "DatePicker" || componentType === "Checkbox" || componentType === "Switch" || componentType === "Modal" || componentType === "Slideout" || componentType === "Table" || // All components dropped in a grid
128357
+ parentInfo.isGridLike || // All custom components
128358
+ customComponents.includes(componentType)
128359
+ );
128360
+ if (shouldProvideAName) {
128361
+ properties2.name = Property.Static(getUniqueName(componentType));
128362
+ }
128363
+ }
128332
128364
  const isContainer = componentType === "Section" || componentType === "Column" || componentType === "Container" || componentType === "Modal" || componentType === "Slideout";
128333
128365
  if (isContainer && componentType !== "Modal" && componentType !== "Slideout") {
128334
128366
  properties2.width = Property.Dimension(Dim.fill());
128335
128367
  }
128336
- if (shouldProvideAName) {
128337
- properties2.name = Property.Static(getUniqueName(componentType));
128338
- }
128339
128368
  switch (componentType) {
128340
128369
  case "Text":
128341
128370
  properties2.text = Property.Static("Hello, world!");
128342
128371
  break;
128343
- case "Input":
128344
- properties2.label = Property.Static("Label");
128345
- break;
128346
128372
  case "Button":
128347
128373
  properties2.label = Property.Static("Submit");
128348
128374
  properties2.onClick = Property.Event([
@@ -128419,7 +128445,7 @@ function getComponentBaseProperties(componentType, parentInfo) {
128419
128445
  ]);
128420
128446
  break;
128421
128447
  case "Modal":
128422
- children = getModalChildren((_a2 = properties2.name) == null ? void 0 : _a2.value);
128448
+ children = getModalChildren((_c2 = properties2.name) == null ? void 0 : _c2.value);
128423
128449
  break;
128424
128450
  case "Slideout":
128425
128451
  children = getSlideoutChildren();
@@ -128444,6 +128470,12 @@ function getComponentBaseProperties(componentType, parentInfo) {
128444
128470
  properties2.searchPlaceholder = Property.Static("Search...");
128445
128471
  break;
128446
128472
  }
128473
+ if (editorTemplateOnCreate == null ? void 0 : editorTemplateOnCreate.properties) {
128474
+ properties2 = {
128475
+ ...properties2,
128476
+ ...editorTemplateOnCreate.properties
128477
+ };
128478
+ }
128447
128479
  const { width, height, ...restProperties } = properties2;
128448
128480
  const safeDimensions = parentInfo.isGridLike ? filterSafeGridDimensionProperties({
128449
128481
  width: width == null ? void 0 : width.value,
@@ -128458,7 +128490,7 @@ function getComponentBaseProperties(componentType, parentInfo) {
128458
128490
  ...safeDimensions
128459
128491
  },
128460
128492
  children,
128461
- name: (_b2 = properties2.name) == null ? void 0 : _b2.value
128493
+ name: (_d2 = properties2.name) == null ? void 0 : _d2.value
128462
128494
  };
128463
128495
  }
128464
128496
  const getUniqueName = (componentType) => {
@@ -128513,7 +128545,6 @@ async function createComponent({
128513
128545
  ...propertiesFromType,
128514
128546
  ...baseProperties
128515
128547
  };
128516
- console.log("creating component", { tagName, properties: properties2 });
128517
128548
  const parentElement = { source: parent };
128518
128549
  const isDetachedComponent = DetachedComponentTypes.has(componentType);
128519
128550
  const needTriggerComponent = isDetachedComponent && !skipTriggerCreation;
@@ -130541,10 +130572,6 @@ function useTrackRuntimeWidget(instanceId, params) {
130541
130572
  );
130542
130573
  }
130543
130574
  const registerComponent$1 = (type5, config2, Component3) => {
130544
- if (typeof window === "undefined") {
130545
- console.log("[] ssr registering component", type5);
130546
- return (props2) => /* @__PURE__ */ jsxRuntimeExports.jsx("div", { ...props2 });
130547
- }
130548
130575
  const managedProps = createManagedPropsList(config2.propertiesDefinition);
130549
130576
  rootStore.onEditorRegistered(() => {
130550
130577
  getEditStore().propertiesPanelManager.setPropertiesDefinition(
@@ -130653,7 +130680,13 @@ const registerComponent$1 = (type5, config2, Component3) => {
130653
130680
  rootStore.componentRegistry.addType(type5, SbComponent);
130654
130681
  }
130655
130682
  rootStore.componentRegistry.addManagedProps(type5, managedProps ?? []);
130656
- return SbComponent;
130683
+ const chainableComponent = Object.assign(SbComponent, {
130684
+ addEditorTemplate: (templateConfig) => {
130685
+ rootStore.componentRegistry.addEditorTemplate(type5, templateConfig);
130686
+ return chainableComponent;
130687
+ }
130688
+ });
130689
+ return chainableComponent;
130657
130690
  };
130658
130691
  function registerEntity(name, config2, Entity) {
130659
130692
  const managedProps = createManagedPropsList(config2.propertiesDefinition);
@@ -132368,6 +132401,15 @@ const Column = registerComponent$1(
132368
132401
  );
132369
132402
  }
132370
132403
  );
132404
+ const editorTemplate = {
132405
+ create: (context2) => ({
132406
+ type: "Input",
132407
+ bind: context2.generateUniqueName("Input"),
132408
+ properties: {
132409
+ label: Property.Static("Label")
132410
+ }
132411
+ })
132412
+ };
132371
132413
  /*!
132372
132414
  * decimal.js v10.5.0
132373
132415
  * An arbitrary-precision Decimal type for JavaScript.
@@ -140032,7 +140074,7 @@ const Input2 = registerComponent$1(
140032
140074
  }
140033
140075
  ) });
140034
140076
  }
140035
- );
140077
+ ).addEditorTemplate(editorTemplate);
140036
140078
  const propertiesDefinition$d = {
140037
140079
  contents: Section$1.category(PropsPanelCategory.Content).children({
140038
140080
  columns: Prop.array().readAndWrite().propertiesPanel({
@@ -159729,14 +159771,14 @@ function getLoaderFn(options) {
159729
159771
  if (!(loader === "all")) return [3, 3];
159730
159772
  return [4, import(
159731
159773
  /* webpackChunkName: "blueprint-icons-all-paths-loader" */
159732
- "./allPathsLoader-B3qvIWfC.js"
159774
+ "./allPathsLoader-BIuTbNcY.js"
159733
159775
  )];
159734
159776
  case 2:
159735
159777
  return [2, _b2.sent().allPathsLoader];
159736
159778
  case 3:
159737
159779
  return [4, import(
159738
159780
  /* webpackChunkName: "blueprint-icons-split-paths-by-size-loader" */
159739
- "./splitPathsBySizeLoader-RJiv0Kw-.js"
159781
+ "./splitPathsBySizeLoader-BM6L8m2i.js"
159740
159782
  )];
159741
159783
  case 4:
159742
159784
  return [2, _b2.sent().splitPathsBySizeLoader];
@@ -200640,4 +200682,4 @@ export {
200640
200682
  setQueryParams as y,
200641
200683
  download as z
200642
200684
  };
200643
- //# sourceMappingURL=index-Con-eMFy.js.map
200685
+ //# sourceMappingURL=index-CCewmzC_.js.map