@pure-ds/core 0.6.10 → 0.7.1

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 (132) hide show
  1. package/.github/copilot-instructions.md +6 -1
  2. package/custom-elements.json +803 -16
  3. package/dist/types/pds.d.ts +1 -0
  4. package/dist/types/public/assets/js/pds-ask.d.ts +2 -0
  5. package/dist/types/public/assets/js/pds-ask.d.ts.map +1 -0
  6. package/dist/types/public/assets/js/pds-auto-definer.d.ts +14 -0
  7. package/dist/types/public/assets/js/pds-auto-definer.d.ts.map +1 -0
  8. package/dist/types/public/assets/js/pds-autocomplete.d.ts +79 -0
  9. package/dist/types/public/assets/js/pds-autocomplete.d.ts.map +1 -0
  10. package/dist/types/public/assets/js/pds-enhancers.d.ts +7 -0
  11. package/dist/types/public/assets/js/pds-enhancers.d.ts.map +1 -0
  12. package/dist/types/public/assets/js/pds-manager.d.ts +98 -1
  13. package/dist/types/public/assets/js/pds-manager.d.ts.map +1 -1
  14. package/dist/types/public/assets/js/pds-toast.d.ts +8 -0
  15. package/dist/types/public/assets/js/pds-toast.d.ts.map +1 -0
  16. package/dist/types/public/assets/js/pds.d.ts.map +1 -1
  17. package/dist/types/public/assets/pds/components/pds-drawer.d.ts +1 -143
  18. package/dist/types/public/assets/pds/components/pds-drawer.d.ts.map +1 -1
  19. package/dist/types/public/assets/pds/components/pds-form.d.ts.map +1 -1
  20. package/dist/types/public/assets/pds/components/pds-icon.d.ts.map +1 -1
  21. package/dist/types/public/assets/pds/components/pds-live-converter.d.ts +8 -0
  22. package/dist/types/public/assets/pds/components/pds-live-converter.d.ts.map +1 -0
  23. package/dist/types/public/assets/pds/components/pds-live-importer.d.ts +2 -0
  24. package/dist/types/public/assets/pds/components/pds-live-importer.d.ts.map +1 -0
  25. package/dist/types/public/assets/pds/components/pds-live-template-canvas.d.ts +2 -0
  26. package/dist/types/public/assets/pds/components/pds-live-template-canvas.d.ts.map +1 -0
  27. package/dist/types/public/assets/pds/components/pds-omnibox.d.ts.map +1 -1
  28. package/dist/types/public/assets/pds/components/pds-richtext.d.ts.map +1 -1
  29. package/dist/types/public/assets/pds/components/pds-scrollrow.d.ts +1 -63
  30. package/dist/types/public/assets/pds/components/pds-scrollrow.d.ts.map +1 -1
  31. package/dist/types/public/assets/pds/components/pds-splitpanel.d.ts +1 -89
  32. package/dist/types/public/assets/pds/components/pds-splitpanel.d.ts.map +1 -1
  33. package/dist/types/public/assets/pds/components/pds-theme.d.ts +1 -22
  34. package/dist/types/public/assets/pds/components/pds-theme.d.ts.map +1 -1
  35. package/dist/types/public/assets/pds/components/pds-toaster.d.ts +1 -1
  36. package/dist/types/public/assets/pds/components/pds-toaster.d.ts.map +1 -1
  37. package/dist/types/public/assets/pds/components/pds-treeview.d.ts +37 -0
  38. package/dist/types/public/assets/pds/components/pds-treeview.d.ts.map +1 -0
  39. package/dist/types/public/assets/pds/components/pds-upload.d.ts.map +1 -1
  40. package/dist/types/src/js/common/ask.d.ts.map +1 -1
  41. package/dist/types/src/js/common/toast.d.ts +8 -0
  42. package/dist/types/src/js/common/toast.d.ts.map +1 -1
  43. package/dist/types/src/js/pds-ask.d.ts +2 -0
  44. package/dist/types/src/js/pds-ask.d.ts.map +1 -0
  45. package/dist/types/src/js/pds-auto-definer.d.ts +2 -0
  46. package/dist/types/src/js/pds-auto-definer.d.ts.map +1 -0
  47. package/dist/types/src/js/pds-autocomplete.d.ts +2 -0
  48. package/dist/types/src/js/pds-autocomplete.d.ts.map +1 -0
  49. package/dist/types/src/js/pds-core/pds-enhancers.d.ts.map +1 -1
  50. package/dist/types/src/js/pds-core/pds-generator.d.ts.map +1 -1
  51. package/dist/types/src/js/pds-core/pds-live.d.ts +2 -1
  52. package/dist/types/src/js/pds-core/pds-live.d.ts.map +1 -1
  53. package/dist/types/src/js/pds-core/pds-start-helpers.d.ts.map +1 -1
  54. package/dist/types/src/js/pds-enhancers.d.ts +2 -0
  55. package/dist/types/src/js/pds-enhancers.d.ts.map +1 -0
  56. package/dist/types/src/js/pds-live-manager/conversion-service.d.ts +66 -0
  57. package/dist/types/src/js/pds-live-manager/conversion-service.d.ts.map +1 -0
  58. package/dist/types/src/js/pds-live-manager/import-contract.d.ts +15 -0
  59. package/dist/types/src/js/pds-live-manager/import-contract.d.ts.map +1 -0
  60. package/dist/types/src/js/pds-live-manager/import-history-service.d.ts +32 -0
  61. package/dist/types/src/js/pds-live-manager/import-history-service.d.ts.map +1 -0
  62. package/dist/types/src/js/pds-live-manager/import-service.d.ts +21 -0
  63. package/dist/types/src/js/pds-live-manager/import-service.d.ts.map +1 -0
  64. package/dist/types/src/js/pds-live-manager/template-service.d.ts +17 -0
  65. package/dist/types/src/js/pds-live-manager/template-service.d.ts.map +1 -0
  66. package/dist/types/src/js/pds-manager.d.ts +4 -0
  67. package/dist/types/src/js/pds-toast.d.ts +2 -0
  68. package/dist/types/src/js/pds-toast.d.ts.map +1 -0
  69. package/dist/types/src/js/pds.d.ts.map +1 -1
  70. package/package.json +11 -5
  71. package/packages/pds-cli/README.md +60 -0
  72. package/packages/pds-cli/bin/pds-import.js +176 -0
  73. package/packages/pds-cli/bin/pds-static.js +27 -1
  74. package/packages/pds-cli/bin/postinstall.mjs +17 -8
  75. package/packages/pds-cli/bin/templates/bootstrap/pds.config.js +1 -5
  76. package/packages/pds-cli/bin/templates/bootstrap/public/index.html +2 -1
  77. package/packages/pds-cli/bin/templates/starter-templates.js +1 -3
  78. package/public/assets/js/app.js +9 -163
  79. package/public/assets/js/pds-ask.js +25 -0
  80. package/public/assets/js/pds-auto-definer.js +1 -0
  81. package/public/assets/js/pds-autocomplete.js +7 -0
  82. package/public/assets/js/pds-enhancers.js +1 -0
  83. package/public/assets/js/pds-manager.js +370 -267
  84. package/public/assets/js/pds-toast.js +1 -0
  85. package/public/assets/js/pds.js +2 -32
  86. package/public/assets/pds/components/pds-calendar.js +2 -2
  87. package/public/assets/pds/components/pds-drawer.js +1 -1
  88. package/public/assets/pds/components/pds-form.js +7 -6
  89. package/public/assets/pds/components/pds-icon.js +12 -9
  90. package/public/assets/pds/components/pds-live-converter.js +47 -0
  91. package/public/assets/pds/components/pds-live-edit.js +758 -44
  92. package/public/assets/pds/components/pds-live-importer.js +773 -0
  93. package/public/assets/pds/components/pds-live-template-canvas.js +172 -0
  94. package/public/assets/pds/components/pds-omnibox.js +147 -3
  95. package/public/assets/pds/components/pds-richtext.js +2 -0
  96. package/public/assets/pds/components/pds-scrollrow.js +61 -2
  97. package/public/assets/pds/components/pds-splitpanel.js +3 -1
  98. package/public/assets/pds/components/pds-theme.js +2 -0
  99. package/public/assets/pds/components/pds-toaster.js +52 -5
  100. package/public/assets/pds/components/pds-treeview.js +974 -0
  101. package/public/assets/pds/components/pds-upload.js +2 -0
  102. package/public/assets/pds/core/pds-ask.js +25 -0
  103. package/public/assets/pds/core/pds-auto-definer.js +1 -0
  104. package/public/assets/pds/core/pds-autocomplete.js +7 -0
  105. package/public/assets/pds/core/pds-enhancers.js +1 -0
  106. package/public/assets/pds/core/pds-manager.js +3646 -0
  107. package/public/assets/pds/core/pds-toast.js +1 -0
  108. package/public/assets/pds/core.js +2 -0
  109. package/public/assets/pds/custom-elements.json +803 -16
  110. package/public/assets/pds/pds-css-complete.json +7 -2
  111. package/public/assets/pds/templates/commerce-scroll-explorer.html +115 -0
  112. package/public/assets/pds/templates/content-brand-showcase.html +110 -0
  113. package/public/assets/pds/templates/feedback-ops-dashboard.html +91 -0
  114. package/public/assets/pds/templates/release-readiness-radar.html +69 -0
  115. package/public/assets/pds/templates/support-command-center.html +92 -0
  116. package/public/assets/pds/templates/templates.json +53 -0
  117. package/public/assets/pds/templates/workspace-settings-lab.html +131 -0
  118. package/public/assets/pds/vscode-custom-data.json +54 -4
  119. package/readme.md +38 -1
  120. package/src/js/pds-core/pds-config.js +9 -9
  121. package/src/js/pds-core/pds-enhancers.js +146 -0
  122. package/src/js/pds-core/pds-generator.js +170 -29
  123. package/src/js/pds-core/pds-live.js +456 -13
  124. package/src/js/pds-core/pds-start-helpers.js +5 -1
  125. package/src/js/pds-live-manager/conversion-service.js +3135 -0
  126. package/src/js/pds-live-manager/import-contract.js +57 -0
  127. package/src/js/pds-live-manager/import-history-service.js +145 -0
  128. package/src/js/pds-live-manager/import-service.js +255 -0
  129. package/src/js/pds-live-manager/tailwind-conversion-rules.json +383 -0
  130. package/src/js/pds-live-manager/template-service.js +170 -0
  131. package/src/js/pds.d.ts +1 -0
  132. package/src/js/pds.js +192 -12
package/src/js/pds.js CHANGED
@@ -1,7 +1,5 @@
1
1
  /// <reference path="./pds.d.ts" />
2
2
 
3
- import { AutoComplete } from "pure-web/ac";
4
-
5
3
  /**
6
4
  * Public PDS runtime object exported to consumers.
7
5
  *
@@ -53,10 +51,7 @@ import {
53
51
  } from "./pds-core/pds-runtime.js";
54
52
  import { registry } from "./pds-core/pds-registry.js";
55
53
  import { enums } from "./pds-core/pds-enums.js";
56
- import { ask } from "./common/ask.js";
57
- import { toast } from "./common/toast.js";
58
54
  import * as common from "./common/common.js";
59
- import { defaultPDSEnhancers } from "./pds-core/pds-enhancers.js";
60
55
  import { resolvePublicAssetURL } from "./pds-core/pds-paths.js";
61
56
  import {
62
57
  ensureAbsoluteAssetURL,
@@ -71,6 +66,125 @@ import {
71
66
  resolveThemePreference,
72
67
  } from "./pds-core/pds-theme-utils.js";
73
68
 
69
+ let __autoCompletePromise = null;
70
+ let __askPromise = null;
71
+ let __toastPromise = null;
72
+ let __defaultEnhancersPromise = null;
73
+
74
+ function __resolveExternalRuntimeModuleURL(filename, overrideURL) {
75
+ if (overrideURL && typeof overrideURL === "string") {
76
+ return overrideURL;
77
+ }
78
+ const assetRootURL = resolveRuntimeAssetRoot(PDS.currentConfig || {}, {
79
+ resolvePublicAssetURL,
80
+ });
81
+ return `${assetRootURL}core/${filename}`;
82
+ }
83
+
84
+ async function __loadDefaultEnhancers() {
85
+ if (Array.isArray(PDS.defaultEnhancers) && PDS.defaultEnhancers.length > 0) {
86
+ return PDS.defaultEnhancers;
87
+ }
88
+ if (!__defaultEnhancersPromise) {
89
+ const enhancersModuleURL = __resolveExternalRuntimeModuleURL(
90
+ "pds-enhancers.js",
91
+ PDS.currentConfig?.enhancersURL
92
+ );
93
+ __defaultEnhancersPromise = import(enhancersModuleURL)
94
+ .then((mod) => {
95
+ const enhancers = Array.isArray(mod?.defaultPDSEnhancers)
96
+ ? mod.defaultPDSEnhancers
97
+ : [];
98
+ PDS.defaultEnhancers = enhancers;
99
+ return enhancers;
100
+ })
101
+ .catch((error) => {
102
+ __defaultEnhancersPromise = null;
103
+ throw error;
104
+ });
105
+ }
106
+ return __defaultEnhancersPromise;
107
+ }
108
+
109
+ async function __loadAsk() {
110
+ if (typeof PDS.ask === "function" && PDS.ask !== __lazyAsk) {
111
+ return PDS.ask;
112
+ }
113
+ if (!__askPromise) {
114
+ const askModuleURL = __resolveExternalRuntimeModuleURL(
115
+ "pds-ask.js",
116
+ PDS.currentConfig?.askURL
117
+ );
118
+ __askPromise = import(askModuleURL)
119
+ .then((mod) => {
120
+ const impl = mod?.ask;
121
+ if (typeof impl !== "function") {
122
+ throw new Error("Failed to load ask helper");
123
+ }
124
+ PDS.ask = impl;
125
+ return impl;
126
+ })
127
+ .catch((error) => {
128
+ __askPromise = null;
129
+ throw error;
130
+ });
131
+ }
132
+ return __askPromise;
133
+ }
134
+
135
+ async function __loadToast() {
136
+ if (typeof PDS.toast === "function" && PDS.toast !== __lazyToast) {
137
+ return PDS.toast;
138
+ }
139
+ if (!__toastPromise) {
140
+ const toastModuleURL = __resolveExternalRuntimeModuleURL(
141
+ "pds-toast.js",
142
+ PDS.currentConfig?.toastURL
143
+ );
144
+ __toastPromise = import(toastModuleURL)
145
+ .then((mod) => {
146
+ const impl = mod?.toast;
147
+ if (typeof impl !== "function") {
148
+ throw new Error("Failed to load toast helper");
149
+ }
150
+ PDS.toast = impl;
151
+ return impl;
152
+ })
153
+ .catch((error) => {
154
+ __toastPromise = null;
155
+ throw error;
156
+ });
157
+ }
158
+ return __toastPromise;
159
+ }
160
+
161
+ async function __lazyAsk(...args) {
162
+ const askImpl = await __loadAsk();
163
+ return askImpl(...args);
164
+ }
165
+
166
+ async function __lazyToast(...args) {
167
+ const toastImpl = await __loadToast();
168
+ return toastImpl(...args);
169
+ }
170
+
171
+ __lazyToast.success = async (...args) => {
172
+ const toastImpl = await __loadToast();
173
+ return toastImpl.success(...args);
174
+ };
175
+ __lazyToast.error = async (...args) => {
176
+ const toastImpl = await __loadToast();
177
+ return toastImpl.error(...args);
178
+ };
179
+ __lazyToast.warning = async (...args) => {
180
+ const toastImpl = await __loadToast();
181
+ return toastImpl.warning(...args);
182
+ };
183
+ __lazyToast.info = async (...args) => {
184
+ const toastImpl = await __loadToast();
185
+ return toastImpl.info(...args);
186
+ };
187
+
74
188
  const __defaultLog = function (level = "log", message, ...data) {
75
189
  const isStaticMode = Boolean(PDS.registry && !PDS.registry.isLive);
76
190
  const debug =
@@ -145,10 +259,41 @@ PDS.createStylesheet = createStylesheet;
145
259
 
146
260
  /** Return true when running inside a live/designer-backed environment */
147
261
  PDS.isLiveMode = () => registry.isLive;
148
- PDS.ask = ask;
149
- PDS.toast = toast;
262
+ PDS.ask = __lazyAsk;
263
+ PDS.toast = __lazyToast;
150
264
  PDS.common = common;
151
- PDS.AutoComplete = AutoComplete;
265
+ PDS.AutoComplete = null;
266
+ PDS.loadAutoComplete = async () => {
267
+ if (PDS.AutoComplete && typeof PDS.AutoComplete.connect === "function") {
268
+ return PDS.AutoComplete;
269
+ }
270
+
271
+ const autoCompleteModuleURL = __resolveExternalRuntimeModuleURL(
272
+ "pds-autocomplete.js",
273
+ PDS.currentConfig?.autoCompleteURL
274
+ );
275
+
276
+ if (!__autoCompletePromise) {
277
+ __autoCompletePromise = import(autoCompleteModuleURL)
278
+ .then((mod) => {
279
+ const autoCompleteCtor =
280
+ mod?.AutoComplete ||
281
+ mod?.default?.AutoComplete ||
282
+ mod?.default ||
283
+ null;
284
+ if (!autoCompleteCtor) {
285
+ throw new Error("AutoComplete export not found in module");
286
+ }
287
+ PDS.AutoComplete = autoCompleteCtor;
288
+ return autoCompleteCtor;
289
+ })
290
+ .catch((error) => {
291
+ __autoCompletePromise = null;
292
+ throw error;
293
+ });
294
+ }
295
+ return __autoCompletePromise;
296
+ };
152
297
 
153
298
  function __emitPDSReady(detail) {
154
299
  const hasCustomEvent = typeof CustomEvent === "function";
@@ -180,9 +325,34 @@ function __emitPDSReady(detail) {
180
325
  }
181
326
  }
182
327
 
183
- if (typeof window !== "undefined") {
184
- // @ts-ignore
185
- window.PDS = PDS;
328
+ function __emitPDSConfigChanged(detail = {}) {
329
+ const hasCustomEvent = typeof CustomEvent === "function";
330
+ const payload = {
331
+ at: Date.now(),
332
+ ...detail,
333
+ };
334
+
335
+ try {
336
+ const changedEvent = hasCustomEvent
337
+ ? new CustomEvent("pds:config-changed", { detail: payload })
338
+ : new Event("pds:config-changed");
339
+ PDS.dispatchEvent(changedEvent);
340
+ } catch (e) {}
341
+
342
+ if (typeof document !== "undefined") {
343
+ if (hasCustomEvent) {
344
+ const eventOptions = { detail: payload, bubbles: true, composed: true };
345
+ try {
346
+ document.dispatchEvent(
347
+ new CustomEvent("pds:config-changed", eventOptions)
348
+ );
349
+ } catch (e) {}
350
+ } else {
351
+ try {
352
+ document.dispatchEvent(new Event("pds:config-changed"));
353
+ } catch (e) {}
354
+ }
355
+ }
186
356
  }
187
357
 
188
358
  // ---------------------------------------------------------------------------
@@ -324,7 +494,7 @@ Object.defineProperty(PDS, "theme", {
324
494
  * enhancements that can be applied to vanilla markup. Consumers can override
325
495
  * or add to these via the `enhancers` option of PDS.start({ mode }).
326
496
  */
327
- PDS.defaultEnhancers = defaultPDSEnhancers;
497
+ PDS.defaultEnhancers = [];
328
498
 
329
499
  /**
330
500
  * Initialize PDS in live mode with the given configuration (new unified shape).
@@ -382,6 +552,7 @@ async function start(config) {
382
552
  const { startLive } = await import(managerUrl);
383
553
  return startLive(PDS, rest, {
384
554
  emitReady: __emitPDSReady,
555
+ emitConfigChanged: __emitPDSConfigChanged,
385
556
  applyResolvedTheme: __applyResolvedTheme,
386
557
  setupSystemListenerIfNeeded: __setupSystemListenerIfNeeded,
387
558
  });
@@ -490,6 +661,10 @@ async function staticInit(config) {
490
661
  (s) => s._pds !== true
491
662
  );
492
663
  document.adoptedStyleSheets = [...others, stylesSheet];
664
+ __emitPDSConfigChanged({
665
+ mode: "static",
666
+ source: "static:styles-applied",
667
+ });
493
668
  }
494
669
  } catch (e) {
495
670
  __defaultLog.call(PDS, "warn", "Failed to apply static styles:", e);
@@ -500,10 +675,15 @@ async function staticInit(config) {
500
675
  let autoDefiner = null;
501
676
  let mergedEnhancers = [];
502
677
  try {
678
+ const defaultPDSEnhancers = await __loadDefaultEnhancers();
503
679
  const res = await setupAutoDefinerAndEnhancers({
504
680
  autoDefineBaseURL,
505
681
  autoDefinePreload,
506
682
  autoDefineMapper,
683
+ autoDefinerModuleURL: __resolveExternalRuntimeModuleURL(
684
+ "pds-auto-definer.js",
685
+ cfgAuto?.moduleURL || PDS.currentConfig?.autoDefinerURL
686
+ ),
507
687
  enhancers: userEnhancers,
508
688
  autoDefineOverrides: cfgAuto || null,
509
689
  autoDefinePreferModule: !(cfgAuto && cfgAuto.baseURL),