@cling-se/widget 0.14.4 → 0.14.6

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 (129) hide show
  1. package/dist/AddClientCallout-C7abPZ87.js +46 -0
  2. package/dist/AnswerModal-CsA2pl2P.js +3874 -0
  3. package/dist/AttachmentItem-Da1-7xwf.js +78 -0
  4. package/dist/BaseDatePicker-k9zlSi5J.js +3183 -0
  5. package/dist/BaseUpload-BUrXX3fT.js +1977 -0
  6. package/dist/BlockMedia-CYI07qAn.js +76 -0
  7. package/dist/CCallout-Qwae66vo.js +59 -0
  8. package/dist/CCurrencyDropdown-Y_u0hgBx.js +246 -0
  9. package/dist/CDropdownItem-CXJ4xD8W.js +538 -0
  10. package/dist/CField.vue_vue_type_style_index_0_lang-l0sNRNKZ.js +1 -0
  11. package/dist/CFormField--m3PvQuT.js +241 -0
  12. package/dist/CPhoneFormat-Qg6MkDVP.js +62 -0
  13. package/dist/CPriceInput-Dlx44UrR.js +112 -0
  14. package/dist/CTabs.vue_vue_type_style_index_0_scoped_b7262014_lang-l0sNRNKZ.js +1 -0
  15. package/dist/ClientAutocomplete-BKKc_br6.js +78 -0
  16. package/dist/ClientModal-CVZFb1Br.js +625 -0
  17. package/dist/ColorPicker-Bo3s3Esp.js +2879 -0
  18. package/dist/CompanyModal-DadjAioS.js +141 -0
  19. package/dist/ContentWrapper-BC3ZBQW9.js +183 -0
  20. package/dist/CoverBlockSettings-B484eE4g.js +275 -0
  21. package/dist/DocAnswer-CcYryOWI.js +36 -0
  22. package/dist/DocDetails-BigsoEWL.js +246 -0
  23. package/dist/DocForm-DlN0eNWt.js +7273 -0
  24. package/dist/DocFormSend-TqKo210I.js +143 -0
  25. package/dist/DocLinks-DSo54vDn.js +38 -0
  26. package/dist/DocModalBase-XlM1SThW.js +28 -0
  27. package/dist/DocPrint-tD0Vd9Sw.js +240 -0
  28. package/dist/DocReceipt-CDHPrhXM.js +210 -0
  29. package/dist/DocSendReminder-C62RhltH.js +137 -0
  30. package/dist/DocTextEditor-VjhV9IRp.js +17181 -0
  31. package/dist/DocTimeline-LcW4z3nC.js +481 -0
  32. package/dist/DocumentClient-CqbTRdpB.js +136 -0
  33. package/dist/DocumentLayout-Dbf8_01r.js +4909 -0
  34. package/dist/DocumentLogotype-DXYnBedV.js +87 -0
  35. package/dist/DocumentVoided-vH1Ti5lZ.js +25 -0
  36. package/dist/EmbedInput-D9qP8OnY.js +113 -0
  37. package/dist/EmbedSettings-DISuNqJT.js +72 -0
  38. package/dist/ErrorCallout-CCtCVwSh.js +28 -0
  39. package/dist/FilePreviewModal-BjhNyb6L.js +81 -0
  40. package/dist/Flag-Dhukv9_J.js +114 -0
  41. package/dist/HeaderSettings-CK4SkB1x.js +392 -0
  42. package/dist/ImageSelectModal-DnvPZzXx.js +84 -0
  43. package/dist/ImageUploadWrapper-B7cNMu5a.js +1604 -0
  44. package/dist/Index-B3HoK_cZ.js +84 -0
  45. package/dist/Index-B3aucNji.js +25 -0
  46. package/dist/Index-B9H5MMHb.js +62 -0
  47. package/dist/Index-BAYdvT-t.js +754 -0
  48. package/dist/Index-BLeQprjq.js +46 -0
  49. package/dist/Index-BOyvQlng.js +154 -0
  50. package/dist/Index-BVsw2tak.js +70 -0
  51. package/dist/Index-BY1UKGEO.js +98 -0
  52. package/dist/Index-Bh0kMSsA.js +107 -0
  53. package/dist/Index-BlQSM7tC.js +144 -0
  54. package/dist/Index-BpcJBGGd.js +642 -0
  55. package/dist/Index-Bs8wprXw.js +58 -0
  56. package/dist/Index-BvZZAvFd.js +21 -0
  57. package/dist/Index-CFo-3Y5Q.js +26 -0
  58. package/dist/Index-CNvp5K3L.js +559 -0
  59. package/dist/Index-CPJVx14x.js +171 -0
  60. package/dist/Index-CQ325eVT.js +140 -0
  61. package/dist/Index-CWrDtcfT.js +49 -0
  62. package/dist/Index-CyJnSvDR.js +223 -0
  63. package/dist/Index-D6bc7lg4.js +52 -0
  64. package/dist/Index-DCR8ev4U.js +33 -0
  65. package/dist/Index-DGQSB9cH.js +24 -0
  66. package/dist/Index-DXAvlq74.js +292 -0
  67. package/dist/Index-D_rfst8y.js +45 -0
  68. package/dist/Index-Dm8xMFGg.js +61 -0
  69. package/dist/Index-DtSSgtxB.js +55 -0
  70. package/dist/Index-DuTw9vhb.js +77 -0
  71. package/dist/Index-Dw26jtGV.js +31 -0
  72. package/dist/Index-OxN73_fO.js +32 -0
  73. package/dist/Index-S-FHG7_k.js +2402 -0
  74. package/dist/Index-ZFkitzfq.js +69 -0
  75. package/dist/Index-dyWK9jgr.js +25 -0
  76. package/dist/Index-gb11ngPS.js +57 -0
  77. package/dist/Index-lKk_XKJ3.js +150 -0
  78. package/dist/InputToggleRow-DSSvhPKA.js +57 -0
  79. package/dist/ManualPopover-lpJYSkw5.js +58 -0
  80. package/dist/MediaWrapper-BQ22FA2B.js +23 -0
  81. package/dist/NotBindingText-JxwzZLPP.js +32 -0
  82. package/dist/PackageGroup-BLSMSUDz.js +699 -0
  83. package/dist/PdfTerms-DtutjM5Y.js +36 -0
  84. package/dist/PdfViewer-BsxcZI_x.js +374 -0
  85. package/dist/PlainHtml-BMPZs2fT.js +20 -0
  86. package/dist/PriceHeader-BRYY01H2.js +339 -0
  87. package/dist/SearchApi-6001iFxU.js +161 -0
  88. package/dist/Setup-cw6jMI9M.js +50 -0
  89. package/dist/SmartList-q6H-uLbm.js +83 -0
  90. package/dist/TermsSettings-DWvaPneu.js +102 -0
  91. package/dist/ThemeColorRow-BXWnvfz-.js +67 -0
  92. package/dist/ToggleBinding-DydtwpNG.js +38 -0
  93. package/dist/UploadModal-D_EDKHGD.js +95 -0
  94. package/dist/VideoPlayerInput-B9yzUeBW.js +93 -0
  95. package/dist/VideoPlayerSettings-Bvp9l0yj.js +61 -0
  96. package/dist/VideoSelectModal-DY3N4JiS.js +100 -0
  97. package/dist/anime.es-BrPTThYb.js +858 -0
  98. package/dist/answerDocumentMixin-BYZPU_R-.js +51 -0
  99. package/dist/color-TdtKxwVa.js +19 -0
  100. package/dist/debounce-BPnlzNwd.js +84 -0
  101. package/dist/dom-CJxkno7i.js +91 -0
  102. package/dist/favicon.ico +0 -0
  103. package/dist/focusDrawerMixin-DC9Oa1i7.js +22 -0
  104. package/dist/formComponentsInstall-CEW6TK6z.js +2499 -0
  105. package/dist/formDrawerState-CAzvSMiQ.js +20 -0
  106. package/dist/formValidationMixin-D7zXxCpC.js +49 -0
  107. package/dist/i18nMessages-Chz_lxGG.js +17 -0
  108. package/dist/index-B9WDC3Xe.js +166 -0
  109. package/dist/index-BCMaUC5r.js +3916 -0
  110. package/dist/index-BDMI4NVY.js +492 -0
  111. package/dist/index-BbscgdRg.js +81 -0
  112. package/dist/index-CLUljEDI.js +347 -0
  113. package/dist/index-SxyZvewN.js +102 -0
  114. package/dist/index.es.js +35 -0
  115. package/dist/index.umd.js +3148 -0
  116. package/dist/main-CQBEuZk9.js +56739 -0
  117. package/dist/mapFormMixin-DlFcgwhm.js +72 -0
  118. package/dist/omit-BWy0Zhd3.js +31 -0
  119. package/dist/publicSenderState-CvOcFv2U.js +21 -0
  120. package/dist/splitpanes-BHUVsCZF.js +382 -0
  121. package/dist/style.css +4 -0
  122. package/dist/throttle-BrC8eGjQ.js +18 -0
  123. package/dist/tinycolor-PhFP695w.js +633 -0
  124. package/dist/tippy.esm-7dmKOUvu.js +1799 -0
  125. package/dist/utils-NBLgNGHR.js +108 -0
  126. package/dist/vuedraggable.umd-ByfH7ZxC.js +3161 -0
  127. package/dist/vuex.esm-DKGl8mcw.js +467 -0
  128. package/package.json +1 -1
  129. package/vite.config.ts +0 -1
@@ -0,0 +1,46 @@
1
+ import { P as e } from "./PlainHtml-BMPZs2fT.js";
2
+ import { n } from "./main-CQBEuZk9.js";
3
+ const s = {
4
+ name: "EstimatedWorkStartAndEndAtTextRead",
5
+ props: {
6
+ startAt: {
7
+ type: String,
8
+ default: null
9
+ },
10
+ endAt: {
11
+ type: String,
12
+ default: null
13
+ }
14
+ },
15
+ i18nOptions: {
16
+ namespaces: "estimatedWorkStartAndEndAtTextTextRead",
17
+ messages: {
18
+ en: {
19
+ description1: "Proposed commencement shall be at the latest",
20
+ description2: "and end at the latest",
21
+ description3: " Agreed upon project duration may be subject to change in case of additional work or events outside the control of the contractor."
22
+ },
23
+ sv: {
24
+ description1: "Arbetet påbörjas tidigast den",
25
+ description2: "och avslutas senast",
26
+ description3: "Överenskommen projekttid kan komma att ändras vid eventuella ändringar och tilläggsarbeten eller händelser bortom Utställlarens kontroll."
27
+ }
28
+ }
29
+ },
30
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
31
+ render(t) {
32
+ return t(e, [this.$t("description1"), " ", t("strong", [this.$formatDate(this.startAt)]), " ", this.$t("description2"), " ", t("strong", [this.$formatDate(this.endAt)]), ".", " ", this.$t("description3")]);
33
+ }
34
+ }, r = null, o = null;
35
+ var a = /* @__PURE__ */ n(
36
+ s,
37
+ r,
38
+ o,
39
+ !1,
40
+ null,
41
+ null
42
+ );
43
+ const l = a.exports;
44
+ export {
45
+ l as default
46
+ };
@@ -0,0 +1,154 @@
1
+ import { m as n } from "./mapFormMixin-DlFcgwhm.js";
2
+ import { D as l } from "./DocModalBase-XlM1SThW.js";
3
+ import { a as o } from "./DocumentLayout-Dbf8_01r.js";
4
+ import { n as a } from "./main-CQBEuZk9.js";
5
+ const c = {
6
+ name: "TermsModal",
7
+ components: {
8
+ DocModalBase: l,
9
+ DocumentStyleContainer: o
10
+ },
11
+ mixins: [n([])],
12
+ props: {
13
+ text: {
14
+ type: String,
15
+ required: !0
16
+ }
17
+ }
18
+ };
19
+ var m = function() {
20
+ var i;
21
+ var e = this, t = e._self._c;
22
+ return t("div", [t("div", { staticStyle: { height: "200px", "max-height": "15vh" }, on: { click: function(r) {
23
+ return e.$emit("close");
24
+ } } }), t("DocModalBase", { staticClass: "terms-root" }, [t("div", { staticClass: "sticky-btn" }, [t("CButton", { staticStyle: { "margin-top": "calc(0.5 * var(--rem))" }, attrs: { circle: "", icon: "x" }, on: { click: function(r) {
25
+ return e.$emit("close");
26
+ } } })], 1), t("div", { staticStyle: { padding: "0 calc(1 * var(--rem))" } }, [t("DocumentStyleContainer", { staticStyle: { width: "100%", height: "100%" }, attrs: { "input-style": ((i = e._document.data) == null ? void 0 : i.css) || null } }, [t("div", { staticClass: "term-text quill-format", domProps: { innerHTML: e._s(e.text) } })])], 1)])], 1);
27
+ }, d = [], f = /* @__PURE__ */ a(
28
+ c,
29
+ m,
30
+ d,
31
+ !1,
32
+ null,
33
+ null
34
+ );
35
+ const p = f.exports, u = {
36
+ name: "TermsDisclaimer",
37
+ mixins: [n([])],
38
+ inject: {
39
+ isPdf: {
40
+ default: !1
41
+ },
42
+ _firstBlock: {
43
+ default: !1
44
+ },
45
+ _lastBlock: {
46
+ default: !1
47
+ }
48
+ },
49
+ props: {
50
+ href: {
51
+ type: String,
52
+ default: null
53
+ },
54
+ termType: {
55
+ type: String,
56
+ default: null
57
+ },
58
+ file: {
59
+ type: Object,
60
+ default: () => ({})
61
+ },
62
+ text: {
63
+ type: String,
64
+ default: null
65
+ }
66
+ },
67
+ computed: {
68
+ printPdfTerms() {
69
+ return this.isPdf ? () => import("./PdfTerms-DtutjM5Y.js") : void 0;
70
+ }
71
+ },
72
+ methods: {
73
+ openTerms() {
74
+ this.$modal.show(
75
+ p,
76
+ {
77
+ text: this.text,
78
+ _document: this._document
79
+ },
80
+ {
81
+ adaptive: !0,
82
+ height: "auto",
83
+ scrollable: !0,
84
+ maxWidth: 700,
85
+ width: "100%",
86
+ classes: "overflow-visible mobile-margin-bottom-0",
87
+ transition: "fade-in-slide-up"
88
+ }
89
+ );
90
+ }
91
+ },
92
+ render(s) {
93
+ let e = {};
94
+ const t = this.termType;
95
+ if (t === "href" ? e = {
96
+ href: this.href,
97
+ target: "_blank",
98
+ rel: "noopener"
99
+ } : t === "file" && (e = {
100
+ // Some documents with file terms are missing url
101
+ href: (this.file.url || "").replace(/\+/g, "%2B"),
102
+ target: "_blank",
103
+ rel: "noopener"
104
+ }), this.$scopedSlots.default)
105
+ return this.$scopedSlots.default({
106
+ openTerms: t === "text" ? this.openTerms : () => window.open(e.href)
107
+ });
108
+ if (this.printPdfTerms) {
109
+ const r = {
110
+ ...t === "text" && { text: this.text },
111
+ ...t === "file" && { file: this.file }
112
+ };
113
+ return s(
114
+ "div",
115
+ {
116
+ class: {
117
+ "break-before-page": this.isPdf && !this._firstBlock,
118
+ "break-after-page": this.isPdf && !this._lastBlock
119
+ }
120
+ },
121
+ [s(this.printPdfTerms, { attrs: r })]
122
+ );
123
+ }
124
+ const i = {};
125
+ return t && (i.attrs = e), t === "text" && (i.on = { click: this.openTerms }), s(
126
+ "div",
127
+ {
128
+ staticClass: "terms-disclaimer"
129
+ },
130
+ [
131
+ s("div", { staticClass: "terms-disclaimer__divider" }),
132
+ this._document.$t("chapters.termsDisclaimer.description"),
133
+ s(
134
+ "a",
135
+ i,
136
+ this._document.$t("chapters.termsDisclaimer.termsAndConditions")
137
+ ),
138
+ "."
139
+ ]
140
+ );
141
+ }
142
+ }, h = null, _ = null;
143
+ var v = /* @__PURE__ */ a(
144
+ u,
145
+ h,
146
+ _,
147
+ !1,
148
+ null,
149
+ "1909510f"
150
+ );
151
+ const k = v.exports;
152
+ export {
153
+ k as default
154
+ };
@@ -0,0 +1,70 @@
1
+ import { m as i } from "./mapFormMixin-DlFcgwhm.js";
2
+ import { S as o, n as a } from "./main-CQBEuZk9.js";
3
+ import { f as r } from "./focusDrawerMixin-DC9Oa1i7.js";
4
+ const d = {
5
+ // eslint-disable-next-line vue/no-reserved-component-names
6
+ name: "Embed",
7
+ i18nOptions: {
8
+ namespaces: "embed",
9
+ messages: {
10
+ en: {
11
+ subTitle: "Embed anything (PDFs, Google Docs, Calender Sheets...)"
12
+ },
13
+ sv: {
14
+ subTitle: "Bädda in vad som helst (PDF:er, Google Docs, Calender Sheets...)"
15
+ }
16
+ }
17
+ },
18
+ components: {
19
+ EmbedSettings: () => import("./EmbedSettings-DISuNqJT.js"),
20
+ EmbedInput: () => import("./EmbedInput-D9qP8OnY.js"),
21
+ Spinner: o
22
+ },
23
+ mixins: [i(["embed", "size"]), r],
24
+ data() {
25
+ return {
26
+ showControls: !1,
27
+ isLoading: !0
28
+ };
29
+ },
30
+ methods: {
31
+ onAdd() {
32
+ const n = () => {
33
+ this.$refs.input.focus();
34
+ };
35
+ this.$refs.input ? n() : this.$once("triggerOnAdd", n);
36
+ }
37
+ }
38
+ };
39
+ var m = function() {
40
+ var e = this, s = e._self._c;
41
+ return s("div", { staticClass: "embed-root font-inter", on: { "&mouseover": function(t) {
42
+ e.showControls = !0;
43
+ }, "&mouseleave": function(t) {
44
+ e.showControls = !1;
45
+ } } }, [s("div", { staticClass: "no-drag", class: [
46
+ (e.size || !(e.embed && e.embed.src)) && "auto-size",
47
+ `embed-is-${e.size}`
48
+ ] }, [e.embed ? s("div", { staticClass: "embed-container" }, [!e.embed.src && e.canEdit ? s("div", { staticClass: "embed-element" }, [s("div", { staticClass: "is-placeholder" }, [s("div", { staticClass: "text-gray-600" }, [e._v(" " + e._s(e.$t("subTitle")) + " ")]), s("EmbedInput", { ref: "input", staticStyle: { "padding-top": "1em" }, on: { "hook:mounted": function(t) {
49
+ return e.$emit("triggerOnAdd");
50
+ } }, model: { value: e.embed, callback: function(t) {
51
+ e.embed = t;
52
+ }, expression: "embed" } })], 1)]) : e.embed.src ? s("iframe", e._b({ ref: "iframe", staticClass: "embed-element", on: { load: function(t) {
53
+ e.isLoading = !1;
54
+ } } }, "iframe", { allowfullscreen: "", ...e.embed }, !1)) : e._e(), e.embed.src && e.isLoading ? s("div", { staticClass: "embed-loading-container" }, [s("Spinner", { attrs: { color: "hsl(0, 0%, 60%)" } })], 1) : e._e()]) : e._e()]), e.isForm ? [e.showDrawer ? s("portal", { attrs: { to: "drawer-content" } }, [s("EmbedSettings", { attrs: { size: e.size }, on: { "update:size": function(t) {
55
+ e.size = t;
56
+ } }, model: { value: e.embed, callback: function(t) {
57
+ e.embed = t;
58
+ }, expression: "embed" } })], 1) : e._e()] : e._e()], 2);
59
+ }, l = [], c = /* @__PURE__ */ a(
60
+ d,
61
+ m,
62
+ l,
63
+ !1,
64
+ null,
65
+ "f12f277e"
66
+ );
67
+ const p = c.exports;
68
+ export {
69
+ p as default
70
+ };
@@ -0,0 +1,98 @@
1
+ import { m as o } from "./mapFormMixin-DlFcgwhm.js";
2
+ import { f as r } from "./focusDrawerMixin-DC9Oa1i7.js";
3
+ import { g as a } from "./utils-NBLgNGHR.js";
4
+ import { n } from "./main-CQBEuZk9.js";
5
+ const d = {
6
+ name: "VideoPlayer",
7
+ i18nOptions: {
8
+ namespaces: "components",
9
+ keyPrefix: "document.videoPlayer"
10
+ },
11
+ components: {
12
+ VideoPlayerSettings: () => import("./VideoPlayerSettings-Bvp9l0yj.js"),
13
+ VideoPlayerInput: () => import("./VideoPlayerInput-B9yzUeBW.js")
14
+ },
15
+ mixins: [o(["videoPlayer"]), r],
16
+ data() {
17
+ return {
18
+ showControls: !1,
19
+ aspectRatio: null,
20
+ sizes: {
21
+ small: 600,
22
+ medium: 1e3,
23
+ large: 1e3
24
+ },
25
+ // defaults to 16:9 aspect ratio
26
+ videoSize: {
27
+ width: 480,
28
+ height: 270
29
+ }
30
+ };
31
+ },
32
+ computed: {
33
+ video() {
34
+ var t;
35
+ return ((t = this.videoPlayer) == null ? void 0 : t.video) || {};
36
+ },
37
+ size() {
38
+ var t;
39
+ return ((t = this.videoPlayer) == null ? void 0 : t.size) || "medium";
40
+ }
41
+ },
42
+ watch: {
43
+ video: {
44
+ immediate: !0,
45
+ async handler(t) {
46
+ if (!t || !t.url)
47
+ return;
48
+ let { width: e, height: i } = t;
49
+ (!e || !i) && ({ width: e, height: i } = await a(t.url) || {}), this.videoSize = { width: e, height: i }, this.setAspectRatio();
50
+ }
51
+ },
52
+ size() {
53
+ this.setAspectRatio();
54
+ }
55
+ },
56
+ methods: {
57
+ setValue({ key: t, value: e }) {
58
+ this.videoPlayer = {
59
+ ...this.videoPlayer,
60
+ [t]: e
61
+ };
62
+ },
63
+ setAspectRatio() {
64
+ !this.videoSize.width || !this.videoSize.height || (this.aspectRatio = `${Math.round(
65
+ 100 * this.videoSize.height / this.videoSize.width
66
+ )}%`);
67
+ },
68
+ onAdd() {
69
+ const t = () => {
70
+ this.$refs.input.focus();
71
+ };
72
+ this.$refs.input ? t() : this.$once("triggerOnAdd", t);
73
+ }
74
+ }
75
+ };
76
+ var l = function() {
77
+ var e = this, i = e._self._c;
78
+ return i("div", { staticClass: "video-root font-inter", on: { "&mouseover": function(s) {
79
+ e.showControls = !0;
80
+ }, "&mouseleave": function(s) {
81
+ e.showControls = !1;
82
+ } } }, [i("div", { staticClass: "no-drag", class: [`video-is-${e.size}`] }, [i("div", { staticClass: "video-container", style: { paddingTop: e.aspectRatio } }, [!e.video.url && e.canEdit ? i("div", { staticClass: "video-element" }, [i("div", { staticClass: "is-placeholder" }, [i("div", { staticClass: "text-gray-600" }, [e._v(" " + e._s(e.$t("subTitle")) + " ")]), i("VideoPlayerInput", { ref: "input", staticStyle: { "padding-top": "1em" }, attrs: { value: e.video }, on: { input: function(s) {
83
+ return e.setValue({ key: "video", value: s });
84
+ }, "hook:mounted": function(s) {
85
+ return e.$emit("triggerOnAdd");
86
+ } } })], 1)]) : i("iframe", { ref: "iframe", staticClass: "video-element", attrs: { title: "Video", src: e.video.url, frameborder: "0", allowfullscreen: "" } })])]), e.isForm ? [e.showDrawer ? i("portal", { attrs: { to: "drawer-content" } }, [i("VideoPlayerSettings", { attrs: { video: e.video, size: e.size }, on: { input: e.setValue } })], 1) : e._e()] : e._e()], 2);
87
+ }, c = [], u = /* @__PURE__ */ n(
88
+ d,
89
+ l,
90
+ c,
91
+ !1,
92
+ null,
93
+ "b2b57ac9"
94
+ );
95
+ const f = u.exports;
96
+ export {
97
+ f as default
98
+ };
@@ -0,0 +1,107 @@
1
+ import { m as i } from "./mapFormMixin-DlFcgwhm.js";
2
+ import { V as n } from "./PdfViewer-BsxcZI_x.js";
3
+ import { c as l, d as o, n as d } from "./main-CQBEuZk9.js";
4
+ const u = {
5
+ i18nOptions: {
6
+ namespaces: "pdfBlock",
7
+ messages: {
8
+ en: {
9
+ embedded: "Embedded",
10
+ numOfPages: "- {{numPages}} pages",
11
+ upload: "Upload PDF"
12
+ },
13
+ sv: {
14
+ embedded: "Inbäddat",
15
+ numOfPages: "- {{numPages}} sidor",
16
+ upload: "Ladda upp en pdf"
17
+ }
18
+ }
19
+ },
20
+ name: "Pdf",
21
+ components: {
22
+ PdfViewer: n,
23
+ FileIcon: () => import("./Index-BAYdvT-t.js"),
24
+ BaseUpload: () => import("./BaseUpload-BUrXX3fT.js")
25
+ },
26
+ mixins: [i(["file"])],
27
+ inject: {
28
+ isPdf: {
29
+ default: !1
30
+ },
31
+ _firstBlock: {
32
+ default: !1
33
+ },
34
+ _lastBlock: {
35
+ default: !1
36
+ }
37
+ },
38
+ data() {
39
+ return {
40
+ uploadProgress: null,
41
+ isHover: !1,
42
+ numPages: null,
43
+ maxFileSize: 1e3 * 1e3 * 30
44
+ // 30 MB
45
+ };
46
+ },
47
+ computed: {
48
+ showControls() {
49
+ return !this.file || this.isHover || this.uploadProgress !== null;
50
+ },
51
+ // Fetch the file from API instead of AWS directly
52
+ fileUrl() {
53
+ if (!this.file || !this.file.url)
54
+ return null;
55
+ if (this.file.url.startsWith(l.api.baseUrl))
56
+ return this.file.url;
57
+ try {
58
+ const { hostname: a } = new URL(this.file.url);
59
+ if (Object.keys(o).some(
60
+ (s) => a.includes(o[s].domain)
61
+ ))
62
+ return this.file.url;
63
+ } catch {
64
+ }
65
+ return `${l.api.baseUrl}/public/fileProxy?url=${encodeURIComponent(
66
+ this.file.url
67
+ )}`;
68
+ }
69
+ },
70
+ methods: {
71
+ onUploadSuccess(a) {
72
+ const { id: e, displayName: s, url: t, mime: r } = a.response;
73
+ if (!e)
74
+ throw new Error("Could not read id from uploaded file");
75
+ this.file = {
76
+ fileId: e,
77
+ name: s,
78
+ mime: r,
79
+ url: t
80
+ }, this.$refs.uploader.remove(a), this.uploadProgress = null;
81
+ }
82
+ }
83
+ };
84
+ var f = function() {
85
+ var e = this, s = e._self._c;
86
+ return s("div", { staticClass: "font-inter print-no-margin", staticStyle: { position: "relative" }, on: { mouseover: function(t) {
87
+ e.isHover = !0;
88
+ }, mouseleave: function(t) {
89
+ e.isHover = !1;
90
+ } } }, [e.canEdit ? s("div", { directives: [{ name: "show", rawName: "v-show", value: e.showControls, expression: "showControls" }], staticClass: "chapter-spacing-x pointer-events-none mx-auto flex max-w-full items-center justify-center", class: !!e.file && "absolute left-0 right-0 top-2 z-10" }, [s("div", { staticClass: "pointer-events-auto flex w-full max-w-[95%] items-center rounded-lg bg-gray-100 !p-4 text-left", class: !!e.file && "border border-gray-200 !p-2 shadow-lg" }, [s("FileIcon", { attrs: { mime: "application/pdf" } }), s("div", { staticClass: "flex-auto pl-4" }, [s("div", { staticClass: "font-medium" }, [e._v("PDF")]), s("div", { staticClass: "text-sm text-gray-600" }, [e._v(" " + e._s(e.$t("embedded")) + " " + e._s(e.numPages ? e.$t("numOfPages", { numPages: e.numPages }) : "") + " ")])]), s("BaseUpload", { ref: "uploader", attrs: { "autostart-upload": !0, "background-drop": !1, extensions: "pdf", accept: "application/pdf", "max-size": e.maxFileSize }, on: { input: ([t]) => e.uploadProgress = t ? parseInt(t.progress, 10) : null, "upload-success": e.onUploadSuccess }, scopedSlots: e._u([{ key: "default", fn: function({ openFilePicker: t }) {
91
+ return [s("CButton", { staticStyle: { "z-index": "2" }, attrs: { type: e.file ? "none" : "secondary", pattern: e.file ? "secondary" : "primary", disabled: e.uploadProgress !== null }, on: { click: t } }, [e.uploadProgress !== null ? [e._v(" " + e._s(`${e.uploadProgress}% ${e.$t("_common:uploading")}`) + " ")] : [e._v(" " + e._s(e.file ? e.$t("_common:change", { thing: e.$t("_common:file") }) : e.$t("upload")) + " ")]], 2)];
92
+ } }], null, !1, 3134809537) })], 1)]) : e._e(), e.file ? s("div", [s("div", { class: {
93
+ "break-before-page": e.isPdf && !e._firstBlock,
94
+ "break-after-page": e.isPdf && !e._lastBlock
95
+ } }, [e.file && e.file.url ? s("PdfViewer", { attrs: { src: e.fileUrl, toolbar: !e.canEdit, "doc-file-path": `${e._value.file}.url` }, on: { numPages: (t) => e.numPages = t } }) : e._e()], 1)]) : e._e()]);
96
+ }, c = [], p = /* @__PURE__ */ d(
97
+ u,
98
+ f,
99
+ c,
100
+ !1,
101
+ null,
102
+ null
103
+ );
104
+ const _ = p.exports;
105
+ export {
106
+ _ as default
107
+ };
@@ -0,0 +1,144 @@
1
+ import { m as r } from "./mapFormMixin-DlFcgwhm.js";
2
+ import { f as l } from "./focusDrawerMixin-DC9Oa1i7.js";
3
+ import { d as c } from "./debounce-BPnlzNwd.js";
4
+ import { s as m, p as u } from "./splitpanes-BHUVsCZF.js";
5
+ import { n } from "./main-CQBEuZk9.js";
6
+ const d = {
7
+ name: "HeaderItems",
8
+ components: {
9
+ MediaWrapper: () => import("./MediaWrapper-BQ22FA2B.js"),
10
+ ContentWrapper: () => import("./ContentWrapper-BC3ZBQW9.js"),
11
+ Splitpanes: m,
12
+ Pane: u
13
+ },
14
+ mixins: [r(["layout", "items", "baseStyle"])],
15
+ props: {
16
+ showControls: {
17
+ type: Boolean,
18
+ default: !1
19
+ }
20
+ },
21
+ computed: {
22
+ forceHorizontal() {
23
+ return this.device === "mobile";
24
+ },
25
+ canResize() {
26
+ return this.device === "desktop" || this.device === "tablet";
27
+ },
28
+ useSplitPane() {
29
+ return this.canEdit && this.canResize;
30
+ }
31
+ },
32
+ created() {
33
+ ["layout", "canEdit"].forEach(
34
+ (t) => this.$watch(t, {
35
+ immediate: !0,
36
+ handler: this.addNoDragClass
37
+ })
38
+ );
39
+ },
40
+ methods: {
41
+ addNoDragClass() {
42
+ !this.canEdit || !["vertical", "horizontal"].includes(this.layout) || setTimeout(() => {
43
+ const t = this.$el.querySelector(".splitpanes__splitter");
44
+ t && !t.classList.contains("no-drag") && t.classList.add("no-drag");
45
+ }, 0);
46
+ },
47
+ onResize: c(function([{ size: e }]) {
48
+ const a = Math.round(e), o = 100 - a;
49
+ this.items = this.items.map((s, i) => ({ ...s, size: [a, o][i] }));
50
+ }, 100)
51
+ }
52
+ };
53
+ var h = function() {
54
+ var e = this, a = e._self._c;
55
+ return e.layout === "center" ? a("div", { staticStyle: { position: "relative", "min-height": "calc(100 * var(--vh, 1vh))" } }, e._l(e.items, function(o, s) {
56
+ return a(`${o.type}Wrapper`, e._g({ key: s, tag: "component", staticClass: "item", staticStyle: { position: "absolute", left: "0", top: "0", right: "0", bottom: "0" }, attrs: { size: o.size, _document: e._document, _value: { ...e._value, item: `${e._value.items}.${s}` }, "has-hover": e.showControls } }, e.$listeners));
57
+ }), 1) : a(e.useSplitPane ? "splitpanes" : "div", { tag: "component", staticClass: "layout-wrapper", style: !e.canEdit && {
58
+ "flex-direction": e.forceHorizontal || e.layout === "horizontal" ? "column" : "row"
59
+ }, attrs: { horizontal: e.forceHorizontal ? !0 : e.layout === "horizontal", vertical: e.forceHorizontal ? !1 : e.layout === "vertical" }, on: { resize: e.onResize } }, e._l(e.items, function(o, s) {
60
+ return a(e.useSplitPane ? "pane" : "div", { key: s, tag: "component", style: !e.useSplitPane && {
61
+ flex: `1 1 ${o.size}%`
62
+ }, attrs: { size: o.size } }, [a(`${o.type}Wrapper`, e._g({ tag: "component", staticClass: "item", attrs: { _document: e._document, _value: { ...e._value, item: `${e._value.items}.${s}` }, "has-hover": e.showControls } }, e.$listeners))], 1);
63
+ }), 1);
64
+ }, _ = [], p = /* @__PURE__ */ n(
65
+ d,
66
+ h,
67
+ _,
68
+ !1,
69
+ null,
70
+ "f9074e87"
71
+ );
72
+ const v = p.exports, f = {
73
+ name: "HeaderBlock",
74
+ components: {
75
+ PriceHeader: () => import("./PriceHeader-BRYY01H2.js"),
76
+ HeaderSettings: () => import("./HeaderSettings-CK4SkB1x.js"),
77
+ HeaderItems: v
78
+ },
79
+ mixins: [r(["header"]), l],
80
+ data() {
81
+ return {
82
+ showControls: !1
83
+ };
84
+ },
85
+ computed: {
86
+ layout() {
87
+ var t;
88
+ return (t = this.header) == null ? void 0 : t.layout;
89
+ },
90
+ items() {
91
+ var t;
92
+ return ((t = this.header) == null ? void 0 : t.items) || [];
93
+ },
94
+ mediaPath() {
95
+ const t = this.items.findIndex(({ type: e }) => e === "media");
96
+ return t !== -1 ? `${this._value.header}.items.${t}.media` : "";
97
+ },
98
+ contentPath() {
99
+ const t = this.items.findIndex(({ type: e }) => e === "content");
100
+ return t !== -1 ? `${this._value.header}.items.${t}` : "";
101
+ }
102
+ }
103
+ };
104
+ var $ = function() {
105
+ var e = this, a = e._self._c;
106
+ return a("div", { staticClass: "header-root", class: {
107
+ "has-parent-nav": e.viewSettings.isForm,
108
+ "has-hover": e.showControls
109
+ }, on: { "&mouseover": function(o) {
110
+ e.showControls = !0;
111
+ }, "&mouseleave": function(o) {
112
+ e.showControls = !1;
113
+ } } }, [e.layout === "price" ? a("PriceHeader", e._g({ attrs: { _document: e._document, _value: {
114
+ media: e.mediaPath,
115
+ backgroundColor: `${e.contentPath}.media.backgroundColor`,
116
+ documentName: `${e.contentPath}.value.documentName`,
117
+ showLogo: `${e.contentPath}.value.showLogo`,
118
+ logotype: `${e.contentPath}.value.logotype`,
119
+ showPriceSummary: `${e._value.header}.showPriceSummary`
120
+ }, "has-hover": e.showControls } }, e.$listeners)) : a("HeaderItems", e._g({ attrs: { _document: e._document, _value: {
121
+ layout: `${e._value.header}.layout`,
122
+ items: `${e._value.header}.items`,
123
+ baseStyle: `${e._value.header}.baseStyle`
124
+ }, "show-controls": e.showControls } }, e.$listeners)), e.isForm ? [e.showDrawer ? a("portal", { attrs: { to: "drawer-content" } }, [a("HeaderSettings", { attrs: { _document: e._document, _value: {
125
+ layout: `${e._value.header}.layout`,
126
+ items: `${e._value.header}.items`,
127
+ showPriceSummary: `${e._value.header}.showPriceSummary`,
128
+ media: e.mediaPath,
129
+ backgroundColor: `${e.contentPath}.media.backgroundColor`,
130
+ textAlign: `${e._value.header}.baseStyle.textAlign`,
131
+ textColor: `${e._value.header}.baseStyle.textColor`
132
+ } } })], 1) : e._e()] : e._e()], 2);
133
+ }, y = [], g = /* @__PURE__ */ n(
134
+ f,
135
+ $,
136
+ y,
137
+ !1,
138
+ null,
139
+ null
140
+ );
141
+ const x = g.exports;
142
+ export {
143
+ x as default
144
+ };