@salesforcedevs/docs-components 0.0.2 → 0.0.3-edit

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 (108) hide show
  1. package/lwc.config.json +27 -2
  2. package/package.json +19 -8
  3. package/src/modules/README.md +41 -0
  4. package/src/modules/doc/amfModelParser/amfModelParser.ts +674 -0
  5. package/src/modules/doc/amfReference/amfReference.css +25 -0
  6. package/src/modules/doc/amfReference/amfReference.html +60 -0
  7. package/src/modules/doc/amfReference/amfReference.ts +1494 -0
  8. package/src/modules/doc/amfReference/constants.ts +76 -0
  9. package/src/modules/doc/amfReference/types.ts +125 -0
  10. package/src/modules/doc/amfTopic/amfTopic.css +21 -0
  11. package/src/modules/doc/amfTopic/amfTopic.html +3 -0
  12. package/src/modules/doc/amfTopic/amfTopic.ts +111 -0
  13. package/src/modules/doc/amfTopic/types.ts +56 -0
  14. package/src/modules/doc/amfTopic/utils.ts +136 -0
  15. package/src/modules/doc/breadcrumbItem/breadcrumbItem.css +51 -0
  16. package/src/modules/doc/breadcrumbItem/breadcrumbItem.html +5 -0
  17. package/src/modules/doc/breadcrumbItem/breadcrumbItem.ts +71 -0
  18. package/src/modules/doc/breadcrumbs/breadcrumbs.css +27 -0
  19. package/src/modules/doc/breadcrumbs/breadcrumbs.html +58 -0
  20. package/src/modules/doc/breadcrumbs/breadcrumbs.ts +183 -0
  21. package/src/modules/doc/chat/README.md +179 -0
  22. package/src/modules/doc/chat/chat.css +818 -0
  23. package/src/modules/doc/chat/chat.html +241 -0
  24. package/src/modules/doc/chat/chat.ts +586 -0
  25. package/src/modules/doc/componentPlayground/componentPlayground.css +22 -0
  26. package/src/modules/doc/componentPlayground/componentPlayground.html +20 -0
  27. package/src/modules/doc/componentPlayground/componentPlayground.ts +29 -0
  28. package/src/modules/doc/content/content.css +388 -4
  29. package/src/modules/doc/content/content.html +3 -2
  30. package/src/modules/doc/content/content.ts +319 -45
  31. package/src/modules/doc/contentCallout/contentCallout.css +59 -0
  32. package/src/modules/doc/contentCallout/contentCallout.html +22 -0
  33. package/src/modules/doc/contentCallout/contentCallout.ts +65 -0
  34. package/src/modules/doc/contentLayout/contentLayout.css +1 -0
  35. package/src/modules/doc/contentLayout/contentLayout.html +72 -0
  36. package/src/modules/doc/contentLayout/contentLayout.ts +531 -0
  37. package/src/modules/doc/contentMedia/contentMedia.css +49 -0
  38. package/src/modules/doc/contentMedia/contentMedia.html +23 -0
  39. package/src/modules/doc/contentMedia/contentMedia.ts +34 -0
  40. package/src/modules/doc/doDont/doDont.css +47 -0
  41. package/src/modules/doc/doDont/doDont.html +27 -0
  42. package/src/modules/doc/doDont/doDont.ts +17 -0
  43. package/src/modules/doc/editFile/editFile.css +505 -0
  44. package/src/modules/doc/editFile/editFile.html +164 -0
  45. package/src/modules/doc/editFile/editFile.ts +213 -0
  46. package/src/modules/doc/header/header.css +132 -0
  47. package/src/modules/doc/header/header.html +55 -0
  48. package/src/modules/doc/header/header.ts +120 -0
  49. package/src/modules/doc/heading/heading.css +33 -0
  50. package/src/modules/doc/heading/heading.html +14 -0
  51. package/src/modules/doc/heading/heading.ts +67 -0
  52. package/src/modules/doc/headingAnchor/headingAnchor.css +33 -0
  53. package/src/modules/doc/headingAnchor/headingAnchor.html +19 -0
  54. package/src/modules/doc/headingAnchor/headingAnchor.ts +43 -0
  55. package/src/modules/doc/headingContent/headingContent.css +53 -0
  56. package/src/modules/doc/headingContent/headingContent.html +13 -0
  57. package/src/modules/doc/headingContent/headingContent.ts +30 -0
  58. package/src/modules/doc/lwcContentLayout/lwcContentLayout.css +1 -0
  59. package/src/modules/doc/lwcContentLayout/lwcContentLayout.html +68 -0
  60. package/src/modules/doc/lwcContentLayout/lwcContentLayout.ts +168 -0
  61. package/src/modules/doc/nav/nav.css +8 -2
  62. package/src/modules/doc/nav/nav.html +10 -7
  63. package/src/modules/doc/nav/nav.ts +33 -29
  64. package/src/modules/doc/overview/overview.css +40 -0
  65. package/src/modules/doc/overview/overview.html +34 -0
  66. package/src/modules/doc/overview/overview.ts +12 -0
  67. package/src/modules/doc/phase/phase.css +70 -0
  68. package/src/modules/doc/phase/phase.html +38 -0
  69. package/src/modules/doc/phase/phase.ts +93 -0
  70. package/src/modules/doc/specificationContent/specificationContent.css +36 -0
  71. package/src/modules/doc/specificationContent/specificationContent.html +171 -0
  72. package/src/modules/doc/specificationContent/specificationContent.ts +127 -0
  73. package/src/modules/doc/sprigSurvey/sprigSurvey.html +20 -0
  74. package/src/modules/doc/sprigSurvey/sprigSurvey.scoped.css +16 -0
  75. package/src/modules/doc/sprigSurvey/sprigSurvey.ts +16 -0
  76. package/src/modules/doc/toc/toc.css +14 -0
  77. package/src/modules/doc/toc/toc.html +99 -22
  78. package/src/modules/doc/toc/toc.ts +11 -6
  79. package/src/modules/doc/toolbar/toolbar.css +8 -0
  80. package/src/modules/doc/toolbar/toolbar.html +32 -15
  81. package/src/modules/doc/toolbar/toolbar.ts +69 -30
  82. package/src/modules/doc/versionPicker/versionPicker.css +64 -0
  83. package/src/modules/doc/versionPicker/versionPicker.html +38 -0
  84. package/src/modules/doc/versionPicker/versionPicker.ts +65 -0
  85. package/src/modules/doc/xmlContent/types.ts +120 -0
  86. package/src/modules/doc/xmlContent/utils.ts +163 -0
  87. package/src/modules/doc/xmlContent/xmlContent.css +54 -0
  88. package/src/modules/doc/xmlContent/xmlContent.html +52 -0
  89. package/src/modules/doc/xmlContent/xmlContent.ts +792 -0
  90. package/src/modules/docHelpers/amfStyle/amfStyle.css +355 -0
  91. package/src/modules/docHelpers/contentLayoutStyle/contentLayoutStyle.css +131 -0
  92. package/src/modules/docHelpers/imgStyle/imgStyle.css +59 -0
  93. package/src/modules/docHelpers/status/status.css +22 -0
  94. package/src/modules/docUtils/searchSyncer/searchSyncer.ts +86 -0
  95. package/src/modules/docUtils/utils/__mocks__/coveo.analytics.ts +16 -0
  96. package/src/modules/docUtils/utils/coveo.analytics.d.ts +10 -0
  97. package/src/modules/docUtils/utils/utils.ts +32 -0
  98. package/src/modules/doc/container/__benchmarks__/container.benchmarkrenamed.js +0 -18
  99. package/src/modules/doc/container/container.css +0 -8
  100. package/src/modules/doc/container/container.html +0 -11
  101. package/src/modules/doc/container/container.stories.ts +0 -15
  102. package/src/modules/doc/container/container.ts +0 -164
  103. package/src/modules/doc/content/prismjs.css +0 -184
  104. package/src/modules/doc/content/prismjs.html +0 -3
  105. package/src/modules/doc/content/prismjs.ts +0 -853
  106. package/src/modules/doc/prismcss/prismcss.css +0 -184
  107. package/src/modules/doc/search/search.html +0 -1
  108. package/src/modules/doc/search/search.ts +0 -6
@@ -0,0 +1,32 @@
1
+ import { CoveoAnalyticsClient } from "coveo.analytics/dist/browser.mjs"; // This fix is required for Node 20 upgrade, so that Coveo analytics is loaded properly by LWR.
2
+
3
+ export const oldVersionDocInfo = (latestVersionLink: string) => {
4
+ return {
5
+ title: "Newer Version Available",
6
+ body: `This content describes an older version of this product.
7
+ <a style="font-weight: bold;" href="${latestVersionLink}">View Latest</a>`
8
+ };
9
+ };
10
+
11
+ export function logCoveoPageView(
12
+ coveoOrganizationId: string | undefined,
13
+ coveoAnalyticsToken: string | undefined
14
+ ) {
15
+ if (coveoOrganizationId && coveoAnalyticsToken) {
16
+ const ua = new CoveoAnalyticsClient({
17
+ token: coveoAnalyticsToken,
18
+ endpoint: `https://${coveoOrganizationId}.analytics.org.coveo.com`
19
+ });
20
+ const pathParts = window.location.pathname.split("/");
21
+ let contentType;
22
+ if (pathParts.length >= 2) {
23
+ contentType = pathParts[1];
24
+ }
25
+
26
+ ua.sendViewEvent({
27
+ contentIdKey: "@clickableuri",
28
+ contentType: contentType,
29
+ contentIdValue: window.location.href
30
+ });
31
+ }
32
+ }
@@ -1,18 +0,0 @@
1
- import { createElement } from "lwc";
2
- import Container from "doc/container";
3
-
4
- describe("doc-container", () => {
5
- benchmark("creates and renders", () => {
6
- let element;
7
- run(() => {
8
- element = createElement("doc-container", {
9
- is: Container
10
- });
11
- element.performanceTest = require("../__fixtures__/metadata.json");
12
- document.body.appendChild(element);
13
- });
14
- after(() => {
15
- return element && element.parentElement.removeChild(element);
16
- });
17
- });
18
- });
@@ -1,8 +0,0 @@
1
- div {
2
- display: flex;
3
- }
4
-
5
- doc-nav {
6
- margin-right: 50px;
7
- width: 400px;
8
- }
@@ -1,11 +0,0 @@
1
- <template>
2
- <div if:true={loaded}>
3
- <doc-nav
4
- toc={toc}
5
- available-languages={availableLanguages}
6
- pdf-url={pdfUrl}
7
- available-versions={availableVersions}
8
- ></doc-nav>
9
- <doc-content docs-data={docContent}></doc-content>
10
- </div>
11
- </template>
@@ -1,15 +0,0 @@
1
- export default {
2
- title: "docs/doc-container",
3
- component: "doc-container"
4
- };
5
-
6
- export const Base = (args: any) => {
7
- return `
8
- <doc-container storybook-content-document-id='${args.selectedContentDocumentId}' storybook-content-id='${args.selectedContentId}'></doc-container>
9
- `;
10
- };
11
-
12
- Base.args = {
13
- selectedContentDocumentId: "atlas.en-us.api_action.meta",
14
- selectedContentId: "api_action"
15
- };
@@ -1,164 +0,0 @@
1
- import { LightningElement, api, track } from "lwc";
2
-
3
- const API_MAIN_URL = "https://developer.salesforce.com/docs/get_document/";
4
- const API_DETAIL_URL =
5
- "https://developer.salesforce.com/docs/get_document_content";
6
-
7
- /**
8
- * @element doc-container
9
- */
10
- export default class Container extends LightningElement {
11
- // TODO: We have to evaluate if we can find a better way to do component testing in Storybook.
12
- @api
13
- set storybookContentId(value: string) {
14
- this.selectedContentId = value;
15
- this._isStorybook = true;
16
- }
17
- get storybookContentId() {
18
- return this.selectedContentId;
19
- }
20
- @api
21
- set storybookContentDocumentId(value: string) {
22
- this.selectedContentDocumentId = value;
23
- }
24
- get storybookContentDocumentId() {
25
- return this.selectedContentDocumentId;
26
- }
27
-
28
- @track docData: any; // TODO: We have to define proper TypeScript typings for data payloads
29
-
30
- // Decouple navigation from content
31
-
32
- // Navigation
33
- navigationLoaded = false;
34
- contentLoaded = false;
35
- toc: string[] = [];
36
- availableLanguages: string[] = [];
37
- availableVersions: string[] = [];
38
- pdfUrl: string | undefined;
39
- deliverable: string | undefined;
40
-
41
- // Content
42
- @track docContent: any;
43
-
44
- // Document selections
45
- selectedContentDocumentId: string | undefined;
46
- selectedContentId: string | undefined;
47
- selectedLanguage: string[] = [];
48
- selectedVersion: string[] = [];
49
- selectedVersionUrl: string | undefined;
50
-
51
- _isStorybook = false;
52
-
53
- constructor() {
54
- super();
55
- this.template.addEventListener(
56
- "navclick",
57
- this.handleNavEvent.bind(this)
58
- );
59
- this.template.addEventListener(
60
- "versionselected",
61
- this.handleVersionEvent.bind(this)
62
- );
63
- this.template.addEventListener(
64
- "languageselected",
65
- this.handleLanguageEvent.bind(this)
66
- );
67
- }
68
-
69
- connectedCallback() {
70
- if (!this.navigationLoaded) {
71
- this.fetchDocData("navigation");
72
- } else {
73
- this.fetchDocData("content");
74
- }
75
- }
76
-
77
- handleNavEvent(event: CustomEvent) {
78
- if (event.detail.url) {
79
- let docIdPartials = window.location.pathname.split("/");
80
- if (event.detail.type === "navigation") {
81
- docIdPartials[4] = this.selectedContentId = `${event.detail.url}.htm`;
82
- } else if (event.detail.type === "content") {
83
- docIdPartials[4] = this.selectedContentId = `${event.detail.url}`;
84
- }
85
- const urlRewrite = docIdPartials.join("/");
86
- window.history.pushState("Docs", "Docs", urlRewrite);
87
- this.fetchDocData("content");
88
- }
89
- }
90
-
91
- // TODO: handle language changes to doc_id
92
-
93
- handleLanguageEvent(event: CustomEvent) {
94
- this.selectedLanguage = event.detail;
95
- }
96
-
97
- handleVersionEvent(event: CustomEvent) {
98
- this.selectedVersion = event.detail;
99
- }
100
-
101
- fetchDocData(docType: string) {
102
- let docRestUrl = "";
103
- let isContentDocumentIdFetch = false;
104
-
105
- if (this._isStorybook) {
106
- // TODO: We have to evaluate if we can find a better way to do component testing in Storybook.
107
- docRestUrl = `${API_MAIN_URL}/${this.selectedContentDocumentId}/${this.selectedContentId}`;
108
- isContentDocumentIdFetch = true;
109
- this._isStorybook = false;
110
- } else {
111
- docRestUrl = this.generateCalloutURL(docType);
112
- }
113
-
114
- fetch(docRestUrl)
115
- .then((result) => {
116
- return result.json();
117
- })
118
- .then((json) => {
119
- this.docData = json;
120
- if (docType === "navigation") {
121
- this.toc = this.docData.toc;
122
- this.availableLanguages = this.docData.available_languages;
123
- this.availableVersions = this.docData.available_versions;
124
- this.selectedLanguage = this.docData.language;
125
- this.selectedVersion = this.docData.version;
126
- this.pdfUrl = this.docData.pdf_url;
127
- this.navigationLoaded = true;
128
- this.fetchDocData("content");
129
- } else if (docType === "content") {
130
- this.docContent = this.docData.content;
131
- this.deliverable = this.docData.deliverable;
132
- let urlRewrite = window.location.pathname;
133
- if (urlRewrite.split("/").length < 2) {
134
- urlRewrite = `${window.location.pathname}/${this.deliverable}/${this.docData.toc[0].a_attr.href}`;
135
- }
136
- window.history.pushState("Docs", "Docs", urlRewrite);
137
- this.contentLoaded = true;
138
- }
139
- })
140
- .catch((error) => console.log(error));
141
- }
142
-
143
- // Abstract the callout url creation
144
- generateCalloutURL(docType: string) {
145
- let base, page, docId, deliverable, contentDocumentId;
146
- [
147
- base,
148
- page,
149
- docId,
150
- deliverable,
151
- contentDocumentId
152
- ] = window.location.pathname.split("/");
153
- if (docType === "navigation") {
154
- return API_MAIN_URL + "/" + docId;
155
- } else if (docType === "content") {
156
- return `${API_DETAIL_URL}/${deliverable}/${contentDocumentId}/${this.selectedLanguage.locale}/${this.selectedVersion.doc_version}`;
157
- }
158
- }
159
-
160
- // Render page only with navigation and content are both loaded
161
- get loaded() {
162
- return this.navigationLoaded && this.contentLoaded;
163
- }
164
- }
@@ -1,184 +0,0 @@
1
- code[class*="language-"],
2
- pre[class*="language-"] {
3
- color: #000;
4
- background: 0 0;
5
- font-family: Consolas, Monaco, "Andale Mono", "Ubuntu Mono", monospace;
6
- font-size: 1em;
7
- text-align: left;
8
- white-space: pre;
9
- word-spacing: normal;
10
- word-break: normal;
11
- word-wrap: normal;
12
- line-height: 1.5;
13
- -moz-tab-size: 4;
14
- -o-tab-size: 4;
15
- tab-size: 4;
16
- -webkit-hyphens: none;
17
- -moz-hyphens: none;
18
- -ms-hyphens: none;
19
- hyphens: none;
20
- }
21
- pre[class*="language-"] {
22
- position: relative;
23
- margin: 0.5em 0;
24
- overflow: visible;
25
- padding: 0;
26
- }
27
- pre[class*="language-"] > code {
28
- position: relative;
29
- border-left: 10px solid #358ccb;
30
- box-shadow: -1px 0 0 0 #358ccb, 0 0 0 1px #dfdfdf;
31
- background-color: #fdfdfd;
32
- background-image: linear-gradient(
33
- transparent 50%,
34
- rgba(69, 142, 209, 0.04) 50%
35
- );
36
- background-size: 3em 3em;
37
- background-origin: content-box;
38
- background-attachment: local;
39
- }
40
- code[class*="language-"] {
41
- max-height: inherit;
42
- height: inherit;
43
- padding: 0 1em;
44
- display: block;
45
- overflow: auto;
46
- }
47
- :not(pre) > code[class*="language-"],
48
- pre[class*="language-"] {
49
- background-color: #fdfdfd;
50
- -webkit-box-sizing: border-box;
51
- -moz-box-sizing: border-box;
52
- box-sizing: border-box;
53
- margin-bottom: 1em;
54
- }
55
- :not(pre) > code[class*="language-"] {
56
- position: relative;
57
- padding: 0.2em;
58
- border-radius: 0.3em;
59
- color: #c92c2c;
60
- border: 1px solid rgba(0, 0, 0, 0.1);
61
- display: inline;
62
- white-space: normal;
63
- }
64
- pre[class*="language-"]:after,
65
- pre[class*="language-"]:before {
66
- content: "";
67
- z-index: -2;
68
- display: block;
69
- position: absolute;
70
- bottom: 0.75em;
71
- left: 0.18em;
72
- width: 40%;
73
- height: 20%;
74
- max-height: 13em;
75
- box-shadow: 0 13px 8px #979797;
76
- -webkit-transform: rotate(-2deg);
77
- -moz-transform: rotate(-2deg);
78
- -ms-transform: rotate(-2deg);
79
- -o-transform: rotate(-2deg);
80
- transform: rotate(-2deg);
81
- }
82
- pre[class*="language-"]:after {
83
- right: 0.75em;
84
- left: auto;
85
- -webkit-transform: rotate(2deg);
86
- -moz-transform: rotate(2deg);
87
- -ms-transform: rotate(2deg);
88
- -o-transform: rotate(2deg);
89
- transform: rotate(2deg);
90
- }
91
- .token.block-comment,
92
- .token.cdata,
93
- .token.comment,
94
- .token.doctype,
95
- .token.prolog {
96
- color: #7d8b99;
97
- }
98
- .token.punctuation {
99
- color: #5f6364;
100
- }
101
- .token.boolean,
102
- .token.constant,
103
- .token.deleted,
104
- .token.function-name,
105
- .token.number,
106
- .token.property,
107
- .token.symbol,
108
- .token.tag {
109
- color: #c92c2c;
110
- }
111
- .token.attr-name,
112
- .token.builtin,
113
- .token.char,
114
- .token.function,
115
- .token.inserted,
116
- .token.selector,
117
- .token.string {
118
- color: #2f9c0a;
119
- }
120
- .token.entity,
121
- .token.operator,
122
- .token.url,
123
- .token.variable {
124
- color: #a67f59;
125
- background: rgba(255, 255, 255, 0.5);
126
- }
127
- .token.atrule,
128
- .token.attr-value,
129
- .token.class-name,
130
- .token.keyword {
131
- color: #1990b8;
132
- }
133
- .token.important,
134
- .token.regex {
135
- color: #e90;
136
- }
137
- .language-css .token.string,
138
- .style .token.string {
139
- color: #a67f59;
140
- background: rgba(255, 255, 255, 0.5);
141
- }
142
- .token.important {
143
- font-weight: 400;
144
- }
145
- .token.bold {
146
- font-weight: 700;
147
- }
148
- .token.italic {
149
- font-style: italic;
150
- }
151
- .token.entity {
152
- cursor: help;
153
- }
154
- .token.namespace {
155
- opacity: 0.7;
156
- }
157
- @media screen and (max-width: 767px) {
158
- pre[class*="language-"]:after,
159
- pre[class*="language-"]:before {
160
- bottom: 14px;
161
- box-shadow: none;
162
- }
163
- }
164
- pre[class*="language-"].line-numbers.line-numbers {
165
- padding-left: 0;
166
- }
167
- pre[class*="language-"].line-numbers.line-numbers code {
168
- padding-left: 3.8em;
169
- }
170
- pre[class*="language-"].line-numbers.line-numbers .line-numbers-rows {
171
- left: 0;
172
- }
173
- pre[class*="language-"][data-line] {
174
- padding-top: 0;
175
- padding-bottom: 0;
176
- padding-left: 0;
177
- }
178
- pre[data-line] code {
179
- position: relative;
180
- padding-left: 4em;
181
- }
182
- pre .line-highlight {
183
- margin-top: 0;
184
- }
@@ -1,3 +0,0 @@
1
- <template>
2
- <!-- TODO: We don't need this file and have to figure why it's required by the build process. 🤷🏼‍♂️ -->
3
- </template>