@alpaca-headless/alpaca-headless-nextjs 0.0.4 → 1.0.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 (139) hide show
  1. package/dist/cjs/components/Image.js +36 -0
  2. package/dist/cjs/components/Link.js +22 -0
  3. package/dist/cjs/components/Picture.js +119 -0
  4. package/dist/cjs/components/PictureEditor.js +43 -0
  5. package/dist/cjs/components/Placeholder.js +40 -4
  6. package/dist/cjs/components/RichText.js +44 -0
  7. package/dist/cjs/components/RichTextEditor.js +82 -0
  8. package/dist/cjs/components/Slot.js +8 -0
  9. package/dist/cjs/components/Text.js +24 -4
  10. package/dist/cjs/components/TextEditor.js +68 -0
  11. package/dist/cjs/components/Translate.js +14 -0
  12. package/dist/cjs/components/index.js +5 -0
  13. package/dist/cjs/editor/AiTerminal.js +150 -0
  14. package/dist/cjs/editor/ComponentInfo.js +14 -0
  15. package/dist/cjs/editor/ComponentPalette.js +78 -0
  16. package/dist/cjs/editor/ComponentTree.js +200 -0
  17. package/dist/cjs/editor/ContentTree.js +120 -0
  18. package/dist/cjs/editor/Debug.js +16 -0
  19. package/dist/cjs/editor/DictionaryEditor.js +35 -0
  20. package/dist/cjs/editor/EditFrame.js +61 -0
  21. package/dist/cjs/editor/EditHistory.js +30 -0
  22. package/dist/cjs/editor/Editor.js +27 -0
  23. package/dist/cjs/editor/EditorClient.js +457 -0
  24. package/dist/cjs/editor/EditorClientHost.js +37 -0
  25. package/dist/cjs/editor/FieldList.js +59 -0
  26. package/dist/cjs/editor/GraphQL.js +90 -0
  27. package/dist/cjs/editor/LanguageSelector.js +21 -0
  28. package/dist/cjs/editor/MediaSelector.js +61 -0
  29. package/dist/cjs/editor/PageInfo.js +12 -0
  30. package/dist/cjs/editor/PlaceholderDropZone.js +54 -0
  31. package/dist/cjs/editor/PlaceholderDropZoneHost.js +37 -0
  32. package/dist/cjs/editor/Terminal.js +51 -0
  33. package/dist/cjs/editor/TranslateEditor.js +25 -0
  34. package/dist/cjs/editor/VersionSelector.js +21 -0
  35. package/dist/cjs/editor/componentTreeHelper.js +18 -0
  36. package/dist/cjs/editor/contentService.js +38 -0
  37. package/dist/cjs/editor/editContext.js +35 -0
  38. package/dist/cjs/editor/editService.js +150 -0
  39. package/dist/cjs/editor/fieldTypes/RichTextEditor.js +19 -0
  40. package/dist/cjs/editor/fieldTypes/SingleLineText.js +17 -0
  41. package/dist/cjs/editor/index.js +18 -0
  42. package/dist/cjs/graphQLTypes.js +2 -0
  43. package/dist/cjs/index.js +15 -0
  44. package/dist/cjs/loadRouteData.js +98 -40
  45. package/dist/cjs/mediaProtection.js +56 -0
  46. package/dist/editor.css +120 -0
  47. package/dist/esm/components/Image.js +32 -0
  48. package/dist/esm/components/Link.js +18 -0
  49. package/dist/esm/components/Picture.js +115 -0
  50. package/dist/esm/components/PictureEditor.js +39 -0
  51. package/dist/esm/components/Placeholder.js +38 -5
  52. package/dist/esm/components/RichText.js +37 -0
  53. package/dist/esm/components/RichTextEditor.js +55 -0
  54. package/dist/esm/components/Slot.js +5 -0
  55. package/dist/esm/components/Text.js +24 -4
  56. package/dist/esm/components/TextEditor.js +41 -0
  57. package/dist/esm/components/Translate.js +10 -0
  58. package/dist/esm/components/index.js +5 -0
  59. package/dist/esm/editor/AiTerminal.js +146 -0
  60. package/dist/esm/editor/ComponentInfo.js +10 -0
  61. package/dist/esm/editor/ComponentPalette.js +71 -0
  62. package/dist/esm/editor/ComponentTree.js +196 -0
  63. package/dist/esm/editor/ContentTree.js +117 -0
  64. package/dist/esm/editor/Debug.js +9 -0
  65. package/dist/esm/editor/DictionaryEditor.js +31 -0
  66. package/dist/esm/editor/EditFrame.js +57 -0
  67. package/dist/esm/editor/EditHistory.js +26 -0
  68. package/dist/esm/editor/Editor.js +23 -0
  69. package/dist/esm/editor/EditorClient.js +450 -0
  70. package/dist/esm/editor/EditorClientHost.js +7 -0
  71. package/dist/esm/editor/FieldList.js +55 -0
  72. package/dist/esm/editor/GraphQL.js +83 -0
  73. package/dist/esm/editor/LanguageSelector.js +17 -0
  74. package/dist/esm/editor/MediaSelector.js +54 -0
  75. package/dist/esm/editor/PageInfo.js +8 -0
  76. package/dist/esm/editor/PlaceholderDropZone.js +50 -0
  77. package/dist/esm/editor/PlaceholderDropZoneHost.js +7 -0
  78. package/dist/esm/editor/Terminal.js +47 -0
  79. package/dist/esm/editor/TranslateEditor.js +21 -0
  80. package/dist/esm/editor/VersionSelector.js +17 -0
  81. package/dist/esm/editor/componentTreeHelper.js +14 -0
  82. package/dist/esm/editor/contentService.js +31 -0
  83. package/dist/esm/editor/editContext.js +5 -0
  84. package/dist/esm/editor/editService.js +139 -0
  85. package/dist/esm/editor/fieldTypes/RichTextEditor.js +15 -0
  86. package/dist/esm/editor/fieldTypes/SingleLineText.js +13 -0
  87. package/dist/esm/editor/index.js +2 -0
  88. package/dist/esm/graphQLTypes.js +1 -0
  89. package/dist/esm/index.js +2 -0
  90. package/dist/esm/loadRouteData.js +97 -39
  91. package/dist/esm/mediaProtection.js +49 -0
  92. package/package.json +16 -4
  93. package/types/alpacaContext.d.ts +11 -0
  94. package/types/components/Image.d.ts +10 -0
  95. package/types/components/Link.d.ts +6 -0
  96. package/types/components/Picture.d.ts +20 -0
  97. package/types/components/PictureEditor.d.ts +3 -0
  98. package/types/components/RichText.d.ts +7 -0
  99. package/types/components/RichTextEditor.d.ts +296 -0
  100. package/types/components/Slot.d.ts +4 -0
  101. package/types/components/Text.d.ts +3 -2
  102. package/types/components/TextEditor.d.ts +296 -0
  103. package/types/components/Translate.d.ts +3 -0
  104. package/types/components/index.d.ts +5 -0
  105. package/types/editor/AiTerminal.d.ts +4 -0
  106. package/types/editor/ComponentInfo.d.ts +4 -0
  107. package/types/editor/ComponentPalette.d.ts +7 -0
  108. package/types/editor/ComponentTree.d.ts +5 -0
  109. package/types/editor/ContentTree.d.ts +13 -0
  110. package/types/editor/Debug.d.ts +6 -0
  111. package/types/editor/DictionaryEditor.d.ts +3 -0
  112. package/types/editor/EditFrame.d.ts +6 -0
  113. package/types/editor/EditHistory.d.ts +4 -0
  114. package/types/editor/Editor.d.ts +6 -0
  115. package/types/editor/EditorClient.d.ts +9 -0
  116. package/types/editor/EditorClientHost.d.ts +8 -0
  117. package/types/editor/FieldList.d.ts +4 -0
  118. package/types/editor/GraphQL.d.ts +5 -0
  119. package/types/editor/LanguageSelector.d.ts +5 -0
  120. package/types/editor/MediaSelector.d.ts +5 -0
  121. package/types/editor/PageInfo.d.ts +4 -0
  122. package/types/editor/PlaceholderDropZone.d.ts +6 -0
  123. package/types/editor/PlaceholderDropZoneHost.d.ts +6 -0
  124. package/types/editor/Terminal.d.ts +4 -0
  125. package/types/editor/TranslateEditor.d.ts +3 -0
  126. package/types/editor/VersionSelector.d.ts +5 -0
  127. package/types/editor/componentTreeHelper.d.ts +2 -0
  128. package/types/editor/contentService.d.ts +14 -0
  129. package/types/editor/editContext.d.ts +81 -0
  130. package/types/editor/editService.d.ts +12 -0
  131. package/types/editor/fieldTypes/RichTextEditor.d.ts +4 -0
  132. package/types/editor/fieldTypes/SingleLineText.d.ts +4 -0
  133. package/types/editor/index.d.ts +2 -0
  134. package/types/fieldTypes.d.ts +63 -1
  135. package/types/graphQLTypes.d.ts +24 -0
  136. package/types/index.d.ts +2 -0
  137. package/types/layoutData.d.ts +56 -1
  138. package/types/loadRouteData.d.ts +30 -1
  139. package/types/mediaProtection.d.ts +2 -0
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.commitChanges = exports.executeRedo = exports.executeUndo = exports.executeEditOperation = exports.setCurrentOperation = exports.currentOperation = void 0;
16
+ const universal_cookie_1 = __importDefault(require("universal-cookie"));
17
+ exports.currentOperation = undefined;
18
+ function setCurrentOperation(operation) {
19
+ exports.currentOperation = operation;
20
+ }
21
+ exports.setCurrentOperation = setCurrentOperation;
22
+ function executeEditOperation(editOperation, sessionId) {
23
+ return __awaiter(this, void 0, void 0, function* () {
24
+ const response = yield fetch("/alpaca/headless/editor/edit?sessionId=" + sessionId, {
25
+ method: "POST",
26
+ body: JSON.stringify(editOperation),
27
+ credentials: "include",
28
+ headers: {
29
+ "Content-Type": "application/json",
30
+ Cookie: new universal_cookie_1.default().getAll(),
31
+ },
32
+ next: {
33
+ revalidate: 0,
34
+ },
35
+ });
36
+ if (response.status === 500 || response.redirected) {
37
+ return {
38
+ type: "error",
39
+ summary: "Error",
40
+ details: "An error occured while saving changes.",
41
+ };
42
+ }
43
+ if (response.status === 401) {
44
+ return {
45
+ type: "unauthenticated",
46
+ summary: "Unauthorized",
47
+ details: "Not logged in anymore?",
48
+ };
49
+ }
50
+ return yield response.json();
51
+ });
52
+ }
53
+ exports.executeEditOperation = executeEditOperation;
54
+ function executeUndo(sessionId) {
55
+ return __awaiter(this, void 0, void 0, function* () {
56
+ const response = yield fetch("/alpaca/headless/editor/undo?sessionId=" + sessionId, {
57
+ method: "POST",
58
+ body: "",
59
+ credentials: "include",
60
+ headers: {
61
+ "Content-Type": "application/json",
62
+ Cookie: new universal_cookie_1.default().getAll(),
63
+ },
64
+ next: {
65
+ revalidate: 0,
66
+ },
67
+ });
68
+ if (response.status === 500 || response.redirected) {
69
+ return {
70
+ type: "error",
71
+ summary: "Error",
72
+ details: "An error occured while saving changes.",
73
+ };
74
+ }
75
+ if (response.status === 401) {
76
+ return {
77
+ type: "error",
78
+ summary: "Unauthorized",
79
+ details: "Not logged in anymore?",
80
+ };
81
+ }
82
+ return { type: "success" };
83
+ });
84
+ }
85
+ exports.executeUndo = executeUndo;
86
+ function executeRedo(sessionId) {
87
+ return __awaiter(this, void 0, void 0, function* () {
88
+ const response = yield fetch("/alpaca/headless/editor/redo?sessionId=" + sessionId, {
89
+ method: "POST",
90
+ body: "",
91
+ credentials: "include",
92
+ headers: {
93
+ "Content-Type": "application/json",
94
+ Cookie: new universal_cookie_1.default().getAll(),
95
+ },
96
+ next: {
97
+ revalidate: 0,
98
+ },
99
+ });
100
+ if (response.status === 500 || response.redirected) {
101
+ return {
102
+ type: "error",
103
+ summary: "Error",
104
+ details: "An error occured while saving changes.",
105
+ };
106
+ }
107
+ if (response.status === 401) {
108
+ return {
109
+ type: "error",
110
+ summary: "Unauthorized",
111
+ details: "Not logged in anymore?",
112
+ };
113
+ }
114
+ return { type: "success" };
115
+ });
116
+ }
117
+ exports.executeRedo = executeRedo;
118
+ function commitChanges(sessionId) {
119
+ return __awaiter(this, void 0, void 0, function* () {
120
+ const response = yield fetch("/alpaca/headless/editor/commit?sessionId=" + sessionId, {
121
+ method: "POST",
122
+ body: "",
123
+ credentials: "include",
124
+ headers: {
125
+ "Content-Type": "application/json",
126
+ Cookie: new universal_cookie_1.default().getAll(),
127
+ },
128
+ next: {
129
+ revalidate: 0,
130
+ },
131
+ });
132
+ if (response.ok)
133
+ return { type: "success" };
134
+ else {
135
+ if (response.status === 401) {
136
+ return {
137
+ type: "error",
138
+ summary: "Unauthorized",
139
+ details: "Not logged in anymore?",
140
+ };
141
+ }
142
+ return {
143
+ type: "error",
144
+ summary: "Error",
145
+ details: "An error occured while saving changes.",
146
+ };
147
+ }
148
+ });
149
+ }
150
+ exports.commitChanges = commitChanges;
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ "use client";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.RichTextEditor = void 0;
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ const __1 = require("../..");
7
+ const editor_1 = require("primereact/editor");
8
+ function RichTextEditor({ field }) {
9
+ const editContext = (0, __1.useEditContext)();
10
+ if (!editContext)
11
+ return;
12
+ return ((0, jsx_runtime_1.jsx)(editor_1.Editor, { value: field.value, style: { width: "100%" }, onTextChange: (e) => {
13
+ var _a;
14
+ // console.log("Text change: " + field.itemId);
15
+ editContext.editField(field, (_a = e.htmlValue) !== null && _a !== void 0 ? _a : "", true);
16
+ field.value = e.htmlValue;
17
+ } }, field.itemId + field.id + field.language + field.version));
18
+ }
19
+ exports.RichTextEditor = RichTextEditor;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ "use client";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.SingleLineText = void 0;
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ const __1 = require("../..");
7
+ const inputtext_1 = require("primereact/inputtext");
8
+ function SingleLineText({ field }) {
9
+ const editContext = (0, __1.useEditContext)();
10
+ if (!editContext)
11
+ return;
12
+ return ((0, jsx_runtime_1.jsx)(inputtext_1.InputText, { value: field.value, style: { width: "100%" }, onChange: (e) => {
13
+ editContext.editField(field, e.target.value, false);
14
+ field.value = e.target.value;
15
+ } }, field.itemId + field.id + field.language + field.version));
16
+ }
17
+ exports.SingleLineText = SingleLineText;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./Editor"), exports);
18
+ __exportStar(require("./editContext"), exports);
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
package/dist/cjs/index.js CHANGED
@@ -10,12 +10,27 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
10
10
  if (k2 === undefined) k2 = k;
11
11
  o[k2] = m[k];
12
12
  }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
13
18
  var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
19
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
20
  };
21
+ var __importStar = (this && this.__importStar) || function (mod) {
22
+ if (mod && mod.__esModule) return mod;
23
+ var result = {};
24
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
25
+ __setModuleDefault(result, mod);
26
+ return result;
27
+ };
16
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
+ exports.GraphQLTypes = void 0;
17
30
  __exportStar(require("./layoutData"), exports);
18
31
  __exportStar(require("./loadRouteData"), exports);
19
32
  __exportStar(require("./components"), exports);
20
33
  __exportStar(require("./alpacaContext"), exports);
21
34
  __exportStar(require("./fieldTypes"), exports);
35
+ __exportStar(require("./editor"), exports);
36
+ exports.GraphQLTypes = __importStar(require("./graphQLTypes"));
@@ -12,58 +12,116 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.loadRouteData = void 0;
13
13
  const alpacaContext_1 = require("./alpacaContext");
14
14
  const headers_1 = require("next/headers");
15
+ const react_1 = require("react");
16
+ const fetchRouteData = (0, react_1.cache)((path, host, mode, itemId, language, session, version) => __awaiter(void 0, void 0, void 0, function* () {
17
+ const request = {
18
+ Path: path,
19
+ Host: host,
20
+ Mode: mode,
21
+ ItemId: itemId,
22
+ Language: language,
23
+ SessionId: session,
24
+ Version: version,
25
+ };
26
+ const url = process.env.LAYOUT_SERVICE_URL +
27
+ "/alpaca/headless/layout?session=" +
28
+ session;
29
+ console.log(`Fetching page layout from ${url}. Host:${request.Host} Path: ${request.Path}`);
30
+ const response = yield fetch(url, {
31
+ method: "POST",
32
+ body: JSON.stringify(request),
33
+ credentials: "include",
34
+ headers: {
35
+ "Content-Type": "application/json",
36
+ Cookie: (0, headers_1.cookies)().toString(),
37
+ "x-api-key": getApiKey(),
38
+ },
39
+ next: {
40
+ tags: ["pages"],
41
+ revalidate: mode === "preview" || mode == "edit" ? 0 : 30,
42
+ },
43
+ });
44
+ console.log("STATUS: " + response.status + " mode: " + mode);
45
+ if (response.status === 404) {
46
+ return {
47
+ type: "notfound",
48
+ };
49
+ }
50
+ if (response.status === 301) {
51
+ return {
52
+ type: "redirect",
53
+ location: response.url,
54
+ };
55
+ }
56
+ if (!response.ok) {
57
+ const message = yield response.text();
58
+ return {
59
+ type: "error",
60
+ errorCode: response.status,
61
+ message: message,
62
+ };
63
+ }
64
+ const data = yield response.json();
65
+ //console.log(JSON.stringify(data, null, 2));
66
+ const context = (0, alpacaContext_1.useAlpacaContext)();
67
+ context.pageContext = {
68
+ itemId: data.page.id,
69
+ language: data.page.language,
70
+ site: data.site,
71
+ pageEditing: data.page.editing,
72
+ pageState: "",
73
+ database: data.page.database,
74
+ };
75
+ context.fields = data.page.fields;
76
+ context.edit = data.edit;
77
+ const dictionary = yield loadDictionary(context.pageContext.site.name, context.pageContext.language, mode);
78
+ context.dictionary = dictionary;
79
+ context.translate = (text) => {
80
+ return context.dictionary[text] || text;
81
+ };
82
+ return Object.assign(Object.assign({}, data.page), { type: "page" });
83
+ }));
15
84
  function loadRouteData(params, searchParams, host) {
16
85
  var _a, _b;
17
86
  return __awaiter(this, void 0, void 0, function* () {
18
- const request = {
19
- Path: (_b = (_a = params.path) === null || _a === void 0 ? void 0 : _a.join("/")) !== null && _b !== void 0 ? _b : "/",
20
- Host: host,
21
- Mode: searchParams["mode"] || "preview",
22
- ItemId: searchParams["itemid"],
23
- Language: searchParams["language"],
24
- };
25
- const url = process.env.LAYOUT_SERVICE_URL + "/alpaca/headless/layout";
26
- console.log(`Fetching page layout from ${url}. Host:${request.Host} Path: ${request.Path}`);
87
+ const result = yield fetchRouteData((_b = (_a = params.path) === null || _a === void 0 ? void 0 : _a.join("/")) !== null && _b !== void 0 ? _b : "/", host, searchParams["mode"] || "normal", searchParams["itemid"], searchParams["language"], searchParams["session"], searchParams["version"]);
88
+ return result;
89
+ });
90
+ }
91
+ exports.loadRouteData = loadRouteData;
92
+ function loadDictionary(siteName, language, mode) {
93
+ return __awaiter(this, void 0, void 0, function* () {
94
+ const url = process.env.LAYOUT_SERVICE_URL +
95
+ "/alpaca/headless/dictionary?siteName=" +
96
+ siteName +
97
+ "&language=" +
98
+ language;
99
+ console.log(`Fetching dictionary from ${url}.`);
27
100
  const response = yield fetch(url, {
28
- method: "POST",
29
- body: JSON.stringify(request),
101
+ method: "GET",
30
102
  credentials: "include",
31
103
  headers: {
32
104
  "Content-Type": "application/json",
33
105
  Cookie: (0, headers_1.cookies)().toString(),
106
+ "x-api-key": getApiKey(),
107
+ },
108
+ next: {
109
+ tags: ["dictionary"],
110
+ revalidate: mode === "preview" || mode == "edit" ? 15 : 600,
34
111
  },
35
- next: { tags: ["pages"], revalidate: 10 },
36
112
  });
37
- if (response.status === 404) {
38
- return {
39
- type: "notfound",
40
- };
41
- }
42
- if (response.status === 301) {
43
- return {
44
- type: "redirect",
45
- location: response.url,
46
- };
47
- }
48
- if (response.status !== 200) {
49
- const message = yield response.text();
50
- return {
51
- type: "error",
52
- errorCode: response.status,
53
- message: message,
54
- };
113
+ if (!response.ok) {
114
+ console.log("Could not load dictionary: Response code: " + response.status);
115
+ return {};
55
116
  }
56
117
  const data = yield response.json();
57
118
  console.log(data);
58
- const context = (0, alpacaContext_1.useAlpacaContext)();
59
- context.pageContext = {
60
- itemId: data.page.id,
61
- language: data.page.language,
62
- site: data.site,
63
- pageEditing: true,
64
- pageState: "",
65
- };
66
- return Object.assign(Object.assign({}, data.page), { type: "page" });
119
+ return data;
67
120
  });
68
121
  }
69
- exports.loadRouteData = loadRouteData;
122
+ function getApiKey() {
123
+ const apiKey = process.env.ALPACA_HEADLESS_API_KEY || process.env.API_KEY;
124
+ if (!apiKey)
125
+ console.log("ERROR: Could not find API key environment variable: ALPACA_HEADLESS_API_KEY");
126
+ return apiKey;
127
+ }
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.hashImageUrl = void 0;
7
+ const crypto_1 = __importDefault(require("crypto"));
8
+ require("url");
9
+ const protectedParams = [
10
+ "w",
11
+ "h",
12
+ "mw",
13
+ "mh",
14
+ "sc",
15
+ "as",
16
+ "bc",
17
+ "db",
18
+ "iar",
19
+ "la",
20
+ "thn",
21
+ "vs",
22
+ "sc_content",
23
+ "sc_lang",
24
+ "sc_site",
25
+ "gray",
26
+ "rev",
27
+ "devicepixelratio",
28
+ "encodequality",
29
+ "rx",
30
+ "ry",
31
+ "rw",
32
+ "rh",
33
+ "crop",
34
+ ];
35
+ function hashImageUrl(url) {
36
+ if (!process.env.MEDIA_REQUESTPROTECTION_SHAREDSECRET)
37
+ return url;
38
+ if (!url)
39
+ return url;
40
+ const baseURL = 'http://temp-base-url.com'; // This will serve as a placeholder.
41
+ const uri = new URL(url.toLowerCase(), baseURL);
42
+ uri.searchParams.delete("hash");
43
+ const searchParams = protectedParams
44
+ .map((x) => ({ name: x, val: uri.searchParams.get(x) }))
45
+ .filter((x) => x.val)
46
+ .map((x) => x.name + "=" + x.val)
47
+ .join("&");
48
+ const stringToProtect = uri.pathname.substring(1) + "?" + searchParams;
49
+ const hash = crypto_1.default
50
+ .createHash("md5")
51
+ .update(stringToProtect + process.env.MEDIA_REQUESTPROTECTION_SHAREDSECRET, "utf16le")
52
+ .digest("hex");
53
+ uri.searchParams.set("hash", hash);
54
+ return url.startsWith('http') ? uri.toString() : uri.pathname + uri.search;
55
+ }
56
+ exports.hashImageUrl = hashImageUrl;
@@ -0,0 +1,120 @@
1
+ .alpaca-no-border {
2
+ border: none !important;
3
+ }
4
+
5
+ .alpaca-overflow-scroll {
6
+ overflow: auto;
7
+ }
8
+
9
+ .alpaca-editor-content {
10
+ height: calc(100vh - 70px);
11
+ padding: 3px;
12
+ }
13
+
14
+ .alpaca-component-selected {
15
+ outline: 3px solid red;
16
+ }
17
+
18
+ .alpaca-minor-label {
19
+ display: block;
20
+ font-size: 12px;
21
+ font-weight: bold;
22
+ }
23
+
24
+ .alpaca-fields-section-headline {
25
+ background: #f0f0f0;
26
+ padding: 8px;
27
+ margin-top: 30px;
28
+ }
29
+
30
+ .alpaca-field-label {
31
+ font-weight: bolder;
32
+ display: block;
33
+ margin: 15px 0 5px 0;
34
+ }
35
+
36
+ .alpaca-editor-tabs {
37
+ overflow: hidden;
38
+ position: relative;
39
+ }
40
+
41
+ .alpaca-editor-tabs div.p-tabview-panels {
42
+ overflow: auto;
43
+ height: calc(100% - 60px);
44
+ padding: 0;
45
+ }
46
+
47
+ .alpaca-editor.p-splitter {
48
+ border: 0;
49
+ border-radius: 0;
50
+ }
51
+
52
+ .alpaca-editor.p-menubar {
53
+ border-radius: 0;
54
+ border: 0 0 1px 0;
55
+ }
56
+
57
+ /* placeholder code */
58
+ [contentEditable="true"]:empty:before {
59
+ content: attr(placeholder);
60
+ opacity: 0.6;
61
+ }
62
+
63
+ [contenteditable] {
64
+ outline: 0px solid transparent;
65
+ }
66
+
67
+ div.p-tree {
68
+ padding: 0;
69
+ }
70
+
71
+ div.p-tree .p-tree-container .p-treenode .p-treenode-content {
72
+ padding: 0px;
73
+ }
74
+
75
+ div.p-tree .p-tree-container .p-treenode {
76
+ padding: 0;
77
+ }
78
+
79
+ div.p-tree .p-tree .p-tree-container .p-treenode {
80
+ padding: 0;
81
+ }
82
+
83
+ div.p-tree .p-treenode-droppoint {
84
+ height: 3px;
85
+ }
86
+
87
+ .ape-placeholder {
88
+ transition: all 0.3s;
89
+ display: flex;
90
+ justify-items: center;
91
+ align-items: center;
92
+ background: #eee;
93
+ cursor: pointer;
94
+ padding: 20px;
95
+ visibility: visible;
96
+ opacity: 1;
97
+ }
98
+
99
+ .ape-placeholder > div {
100
+ opacity: 1;
101
+ transition: 0.3s;
102
+ }
103
+
104
+ .ape-placeholder.ape-hidden > div {
105
+ opacity: 0;
106
+ }
107
+
108
+ .ape-placeholder.ape-hidden {
109
+ height: 0;
110
+ width: 0;
111
+ padding: 0;
112
+ opacity: 0;
113
+ visibility: hidden;
114
+ transition: none;
115
+ }
116
+
117
+ .ap-editframe.ap-removed {
118
+ transition: all 1.5s;
119
+ opacity: 0;
120
+ }
@@ -0,0 +1,32 @@
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
11
+ };
12
+ import { jsx as _jsx } from "react/jsx-runtime";
13
+ // const addClassName = (otherAttrs: { [key: string]: unknown }): void => {
14
+ // if (otherAttrs.class) {
15
+ // // if any classes are defined properly already
16
+ // if (otherAttrs.className) {
17
+ // let className: string = otherAttrs.className as string;
18
+ // className += ` ${otherAttrs.class}`;
19
+ // otherAttrs.className = className;
20
+ // } else {
21
+ // otherAttrs.className = otherAttrs.class;
22
+ // }
23
+ // delete otherAttrs.class;
24
+ // }
25
+ // };
26
+ export const Image = (_a) => {
27
+ var { field } = _a, otherProps = __rest(_a, ["field"]);
28
+ if (!field)
29
+ return;
30
+ const attrs = Object.assign(Object.assign({}, field.value), otherProps);
31
+ return _jsx("img", Object.assign({}, attrs, { alt: "" }));
32
+ };
@@ -0,0 +1,18 @@
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
11
+ };
12
+ import { jsx as _jsx } from "react/jsx-runtime";
13
+ export function Link(_a) {
14
+ var { field, children } = _a, props = __rest(_a, ["field", "children"]);
15
+ if (!field)
16
+ return;
17
+ return (_jsx("a", Object.assign({ href: field.value.url }, props, { children: children })));
18
+ }