Reportage

En grafikhistoria ur ett personligt perspektiv

En historia om konstskolor och grafikverkstäder

När Grafikskolan i Stockholm flyttade från Mariahissen till nya lokaler ute i Gubbängen 1987, samtidigt som utbildningen blev 3-årig istället för 2-årig, fick skolan tillgång till en stor boktryckspress och några regaler. I och med detta blev boktrycket och möjligheten att arbeta i bokform en av skolans starka profiler. Jag tror att det var 1990, som jag såg en elevutställning av avgångseleverna på Galleri H i Stockholm, där många av eleverna visade böcker. Jag minns särskilt böcker av Carolina Thorell, Malin Ek och Åsa Andersson, men där fanns fler. Det var då framför allt en typ av böcker som kan liknas vid private press-traditionen i England, det vill säga handtryckta och relativt sett traditionsbundet formgivna böcker med illustrerade texter (poesi), i mindre numrerade upplagor. Eftersom jag redan i min egen ateljé hade börjat försöka binda in teckningar och texter, var det detta som lockade mig att söka till skolan, där jag började hösten 1991. Under min studietid utvidgades boktrycksavdelningen tack vare att skolan fick möjlighet att köpa både regaler och annan boktrycksutrustning i samband med nedläggningen av ett litet tryckeri i närheten. Utrustningen installerade man i en liten källarlokal på Bordsvägen i Gubbängen, bara ett stenkast ifrån skolan. Vi hade gästlärare som Leif Elggren och Richard Årlin, när det gäller böcker och bokbinderi. Lars Nyberg var fast lärare på skolan och undervisade i djuptryck, men också i handsättning. Rektor för skolan på den tiden var Nils-Olof Hedenskog. Både Leif Elggren, Lars Nyberg och Nils-Olof Hedenskog gick samtidigt på Konsthögskolan i Stockholm i början på 80-talet, med Nils G. Stenqvist som professor.

Nils G. Stenqvist tog många viktiga steg, för att utveckla grafikutbildningen på Konsthögskolan i en riktning som har varit avgörande för många – inte minst när det gäller att inspireras att arbeta i bokform. Bland annat ingick kurser i handsättning på Grafiska skolan i Norrtull, som var den tidens yrkesutbildning för sättare och tryckare. Studenterna fick också gå papperskurser ute på Tumba Pappersbruksmuseum och de gick kurser i bokbinderi för Wolfgang Bremer på Walldorfskolan. Allt detta var nya inslag i grafikutbildningen på Konsthögskolan. Så småningom knöts Olof Sandahl till skolan för att bygga upp en boktrycksavdelning, som med tiden blev helt fantastiskt välutrustad. Där gjordes många böcker under hans handledning, både av studenter och gästande konstnärer. Själv hade jag förmånen att arbeta där som projektstudent år 2000-01, bara några år innan Olof gick i pension och boktrycksavdelningen bantades ner till ett minimum. Barbro Ravander, som var hängiven student på grafiken (1996-2001), där hon fullföljde många spännande bokprojekt, blev den som tog över efter Olof och såg till att skolan även fortsättningsvis hade en boktrycksverkstad, om än i mindre omfattning. Barbro hade redan som elev på Idun Lovén visat intresse för att arbeta i bokform och därför sökt sig till Grafikskolan i Stockholm som utbyteselev, under samma period som jag själv gick där i början på 90-talet. Senare blev det Camilla Gunnar, som tog över som återkommande gästlärare i handsättning och boktryck på Konsthögskolan i Stockholm. Efter att Olof gått i pension från Konsthögskolan i Stockholm, flyttade han så småningom sin verksamhet till Kretsens grafikverkstad, som drivs av Södertälje Konstnärskrets och som numera – tack vare Olof – har väldigt bra utrustning för handsättning.

Redan innan Nils G. Stenqvist lämnade sin professur år 1983, hade två nya grafikverkstäder startats i Stockholm, av den kull studenter som gick ut samma år Nisse slutade. Nisse var noga med att betona vikten av att studenterna hade en färdig verkstad att gå till när de slutade på Konsthögskolan. Den ena var verkstaden på Igeldammsgatan, som startades av Urban Engström, Lars Nyberg, Mac Hamilton m.fl. De fick bland annat ta över en Korrexpress och några regaler från Ronzos Tryckeri i gamla Klara. Det var ett tryckeri som Nils G Stenqvist och flera andra kollegor (bland annat konstnären Sven-Olov Ehrén) hade anlitat tidigare för att trycka träsnitt, i samarbete med tryckeriets personal. Tack vare Stenqvists kontakter där fick studenterna möjlighet att ta över utrustning, som annars skulle ha skrotats. På Igeldammsgatan kom bland annat publikationen ”Skärbrädan” till under ett par år på 80-talet, på initiativ av Karin Ögren och Urban Engström.

 

 

Skärbrädan_1987

 

 

Skärbrädan_omslag

 

 

 

 

 

 

 

 

 

Den gavs ut i form av stora bruna kuvert, med obundna falsade ark, där varje inbjuden konstnär disponerade ett ark var. På 90-talet, när Igeldammsverkstan bantades ner i samband med en flytt, transporterades boktrycksutrustningen istället till Grafikverkstaden på Långholmen, dit Lars Nyberg hade flyttat. Där stod den i princip oanvänd tills vi flyttade med oss korrex och regaler till Uttersberg 2009, när vi startade Grafikverkstan Godsmagasinet (GG). Verkstaden, som ligger 3 mil norr om Köping, är utrustad för både djuptryck och boktryck. Tack vare ett gott samarbete med Galleri Astley, som äger fastigheten, fick vi möjlighet att renovera det gamla godsmagasinet – som vi nu disponerar hyresfritt – för att kunna bygga upp en verkstad. Under de år som gått har vi utvecklat den successivt, bland annat genom donationer av regaler med blytyper och trätyper från Fagersta Boktryckeri, Edita Aros Tryckeri och Aurells Tryckeri i Västerås. Sommaren 2015 fick vi vårt senaste tillskott, vilket är en stor Krausepress för djuptryck, som tidigare bland annat har stått i Nils G Stenqvists gamla verkstad i Stockholm, vilken övertogs av Johan Brauner efter Stenqvists bortgång 2005. I en mellantid stod den även på Falu Konstgrafiska Verkstad, innan den kom till oss. Det är en press med lång och intressant historia, som egentligen kräver ett eget kapitel.

Till GG kommer regelbundet konstnärer och poeter för att arbeta med egna projekt, hittills från både Sverige, Norge, Tyskland, England, Irland och Kina. Vi arrangerar också regelbundet seminarier, demonstrationer, workshops och föreläsningar, som är öppna för allmänheten.

Den andra studentgruppen, som gick samman om en verkstad redan innan de avslutat utbildningen under Nils G Stenqvist på Konsthögskolan, hamnade på Södermalm i Stockholm. Det var Johan Brauner (som utbildat sig till koppartryckare), Jordi Arkö, Jakob Fogelqvist och Leif Elggren, som köpte koppartryckaren Kerstin Uhrdins gamla verkstad och etablerade sig i en lokal i anslutning till ett garage på Luthens gränd. Utrustningen kompletterades med en korrexpress och regaler från Svenska Dagbladets tryckeri. I början av 90-talet flyttade de och det blev istället Grafikverkstaden i Aspudden, där jag anslöt mig som medlem 1996. Det var då en fullt utrustad verkstad för både djuptryck och boktryck, dessutom med mörkrum och syrarum, där Peter Cederblom och så småningom även Åsa Stjerna arbetade med fotogravyr på koppar. Lars Nyberg flyttade från Grafikverkstaden på Långholmen till Aspudden år 2000, men boktrycksutrustningen blev kvar på Långholmen tills vi startade Grafikverkstan Godsmagasinet och flyttade tryckpress och regaler till Uttersberg 2009.

Firework_Edition (2)

Med Leif Elggren som medlem blev Grafikverkstaden i Aspudden också förlaget Firework Editions fasta adress. Förlaget startades 1978 av Leif Elggren och Thomas Liljenberg. Aspuddeverkstaden var både en praktisk och ekonomisk förutsättning för förlagets utgivning, skriver Leif i katalogen till Artists Book-utställningen på Grafikens Hus 1997.

Thomas Liljenberg är numera rektor på Grafikskolan i Stockholm, som 2016 flyttade till nya lokaler i Sätra. Skolan, vars utbildning nu är 2-årig, erbjuder sedan 2007 en projektbaserad 1-årig utbildning med inriktning artists books. Där har både jag själv och Leif Elggren varit inblandade i olika sammanhang – som föreläsare, lärare och handledare. Jag anställdes som verkstadsansvarig för skolans boktrycksverkstad i samband med att artists book-utbildningen startades, under ledning av den dåvarande rektorn Mariana Ekner. Ett par år senare var jag, Leif och Thomas Liljenberg, som då också satt i skolans styrelse, tillsammans ansvariga för kursupplägget på artists book-utbildningen. Regelbundna handledningsträffar hade vi med eleverna ute i Aspuddeverkstaden. Vi bjöd också in en rad föreläsare, såsom Bo Cavefors, Richard Årlin, Sara Gun och Jenny Rosengren, med flera. Bokbindaren Monica Langwe, utbildad vid Leksands Folkhögskola, blev då en av skolans återkommande gästlärare i bokbinderi. Samtidigt blev Allan Söderman, utbildad av bokbindaren Wolfgang Bremer och före detta elev på Grafikskolan, projektledare för skolans så kallade årsbok – en artists book, som alla elever gör tillsammans varje år. Den traditionen hade redan pågått i många år och den hålls fortfarande vid liv. När projektåret för artists books var nytt grundades också skolans förlag, Print Press Edition, som nu ger ut skolans årsbok och många av elevernas böcker. Tyvärr finns ingen fullständig katalog över alla böcker som gjorts på Grafikskolan under årens lopp, åtminstone inte innan förlaget kom till. Idén med en årsbok fördes förresten sedan vidare även till Kungliga Konsthögskolan av Maria Lindström, utexaminerad från Grafikskolan 1995. Hon ansvarade för litoverkstaden på Konsthögskolan i Stockholm i mer än 10 år, efter Rolf Steinbergs bortgång 2001. Till årsböckerna där, som gavs ut mellan 2003 och 2009, bjöds både studenter och lärare in för att bidra.

 

Bokprojekt på Konstfack och Kungliga Konsthögskolan i Stockholm

Som professor på GDI (grafisk form och illustration) på Konstfack i Stockholm, startade Hans Cogne en artists book-kurs i början på 2000-talet. När jag var kursansvarig 2004 avslutade vi kursen med en utställning på Grafiska Sällskapets Galleri, en tradition som Leif Elggren sedan förde vidare. Under Leifs ledning blev det en valbar kurs på masternivå, som efter några år hade så många sökande att han kontaktade mig för att få hjälp, eftersom arbetsbelastningen blivit för stor. Tillsammans höll vi i kursen mellan 2008 och 2011. Efter det tog jag över stafettpinnen tillsammans med Åsa Andersson, fram till och med 2013 då kursen lades ned, efter att Hans Cogne slutat som professor. Åsa var en av de elever från Grafikskolan som ställde ut böcker på Galleri H 1990 och som inspirerat mig att söka till skolan. Att återses som kursansvariga för en artists book-kurs på Konstfack var väldigt roligt.

Konstfack_2007

Varje vår avslutade vi med en utställning av studenternas böcker på Grafiska Sällskapets Galleri i Stockholm.
Det var otroligt spännande att se bredden och mångfalden av uttryck och förhållningssätt, när det gäller boken som konstform, som studenternas arbeten gav uttryck för – inte minst på grund av att studenterna kom från olika fack på skolan. Idag beklagar jag verkligen att vi inte var bättre på att dokumentera allt som gjordes under de här åren. I huvudsak byggde kursen på att studenterna fullföljde egna bokprojekt, men det ingick även ett par dagars bokbinderi-workshop med Allan Söderman. Vi hade också alltid en introduktion i handsättning i Konstfacks grafikverkstad. Till de återkommande gästföreläsare vi bjöd in hör Richard Årlin, Stigbergets Stamp och Press, och Peter Bodén, Hundörats Antikvariat. Även Peter Thörneby, tillsammans med sina kollegor på förlaget Chateaux, Beata Berggren och Martin Högström, de sista åren. Numera har jag en årligen återkommande kurs på Konstfack för kandidatstudenterna i handsättning, inom ramen för en 3-veckorskurs som kallas ”Bokhantverk”, där Mihiro Burman står för bokbinderidelen.

En annan skola som under många år har haft ambitiösa artists book-kurser, under Carina Fihns ledning, är Göteborgs konstskola, där de har en 2-årig grafiklinje. Även de arrangerade fina utställningar med elevernas artists books på Grafiska Sällskapets galleri under flera år.

2002 var startåret för ett KU-projekt (Konstnärligt Utvecklingsprojekt) med fokus på artists books på Konsthögskolan i Stockholm, som kallades ”The Expanded Book”, där jag deltog tillsammans med närmare 20 andra konstnärer och studenter. Projektet var initierat av Mari Rantanen och Anette Senneby, som båda var professorer på skolan då. Bland annat var förläggaren Vincent FitzGerald från New York inbjuden föreläsare, vilket var väldigt intressant, eftersom den typen av bokutgivning som han sysslar med – en form av artists book som vanligtvis kallas livre d’artist – inte existerar i Sverige på samma sätt. KU-projektet utmynnade i en utställning på Färgfabriken i Stockholm våren 2003, som löpte parallellt med en utställning om Bo Cavefors som förläggare och skribent.

På senare år har Konsthögskolan i Stockholm genomfört flera projekt inom fältet artists books och publishing. Våren 2011 gav de en omfattande kurs ”On Publishing” under ledning av Hinrich Sachs med den avslutande utställningen på Kulturhuset Plattan i Stockholm, ”Konst by the book” (i samarbete mellan grafiken och foto på KKH). 2013 var jag inblandad i en kurs som de kallde ”A matter of language”, som delvis fokuserade på affischen som konstform, men med text, typografi och skrivande som utgångspunkt. Kursledare var Maria Lindström, Jenny Olsson och Chun Lee Wang Gurt, alla lärare på grafiken. Marja-Leena Sillanpää var inbjuden att hålla en inledande artists talk; själv höll jag i en workshop i boktrycksverkstaden och Marie Silkeberg i en skrivarworkshop.

KKH har också deltagit i projektet ”Artists as independent Publishers”, som är ett samarbete mellan fem europeiska konstakademier, inlett på initiativ av Katrin von Matlzahn och Anna-Lena von Helldorf från University of Arts i Bremen. Övriga medverkande är Konsthögskolan i Bergen, Royal College of Art i London och University of Applied Arts i Wien. På Stockholm Art Book Fair 2016 arrangerade de tillsammans en bokutställning med verk av sammanlagt 80 studenter från de olika skolorna.
Under flera år i rad har KKH (dock inte läsåret 2016-17) haft en fristående 1-årig kurs om fotoboken som artists book, under ledning av fotograferna Björn Larsson och Carl Johan Erikson, lektorer vid KKH. De presenterade kursens upplägg och årets bokprojekt tillsammans med några studenter under Linköpings universitets seminarium våren 2016, ”Efter boken – ett symposium om svenska artists books” på Linköpings bibliotek.

 

Grafiska Sällskapet och artists books

Första gången Grafiska Sällskapet på allvar uppmärksammade konstnärsboken som genre var redan 1984, med en utställning på galleriet. Samtidigt gavs det ut ett specialnummer av Grafiknytt om artists books – ett verkligt intressant nummer av tidningen! Här kan man bland annat läsa om Dieter Roths bokproduktion på Island, om Leif Elggrens arbete med böcker (som redan då pågått under flera år), om Outi Heiskanens hemliga bibliotek, om brittiska artists books (bland annat Ron King), samt om boken ”Betraktelsens begär” av Jim Berggren, Kjell-Åke Gerinder och Ragnar Strömberg.

 

Jag hoppade till vid åsynen av det sista inslaget, eftersom Jim Berggren för bara två år sedan, 2014, var uppe hos oss i GG-verkstan i Uttersberg och tryckte bilderna till en bok med dikter av just Ragnar Strömberg, med titeln Lunar Manual. Texten i inlagan var tryckt på Grafikwerkstatt i Dresden och själv bidrog jag genom att sätta och trycka ett dust-cover till boken. Bokbinderi: Monica Langwe. Lunar Manual hade vi med i GG:s ”stand” både på FPBA:s (Fine Press Book Association) bokmässa i Oxford och Small Publishers Fair i London 2015. Att hitta de historiska rottrådarna och kopplingarna till samtiden är verkligen roligt!

Bara ett år efter utställningen på Grafiska Sällskapets Galleri, tog Norske Grafikere ett initiativ till en nordisk utställning med artists books som visades på Norske Grafikeres Galleri och kallades Bok og Grafikk. ”Det är egentligen inget märkvärdigt att några grafiker vill göra böcker” skriver Sune Nordgren i katalogens förord, och fortsätter: ”Det är mera märkvärdigt att inte många fler vill det – ” Året var alltså 1985.

2002 invigde vi en liten avdelning för artists books på Grafiska Sällskapets Galleri. Vi var många som då var entusiastiska över idén. Peter Cederblom, Eva Grytt och jag själv ställde samman en invigningsutställning – dels med böcker av medlemmar, men också med böcker ur våra privata samlingar av konstnärer och poeter som Elis Eriksson, Åke Hodell, Bengt Emil Johnsson och Leif Eriksson. En medlem som verkligen tog uppmaningen att bidra med böcker till invigningen på allvar var Hardy Strid, som skickade ett par kartonger fyllda med böcker och objekt. En av mina favoritböcker på utställningen var ”…och ni tittar bort”, bild och text av Ellen Cronholm, tryckt på Konsthögskolan år 2000.

Ellen-Cronholm

Ellen-Cronholm-2

 

2005 bjöd jag in Emmi Martin, som var bibliotekarie (numera pensionerad) på Rikardsgatans bibliotek i Helsingfors, att presentera ett urval artists books ur deras samlingar i Grafiska Sällskapets bokhörna. Själv hade jag ställt ut mina böcker på biblioteket i Helsingfors året innan och på det sättet lärt känna Emmi Martin. Tack vare hennes specialintresse är de det enda biblioteket i Skandinavien, som har en artists book-samling som kontinuerligt har byggts upp under många år, på ett mycket professionellt och medvetet sätt. De har också en bra hemsida, som är ambitiöst uppbyggd och väldigt informativ.

RikardgatansBibl_20052007 var det dags igen – en bokutställning av den finska konstnärsgruppen ”Naum-Book-Art” med 10 deltagande konstnärer, som fyllde hela Grafiska Sällskapets Galleri. Gruppen var internationellt sammansatt, med medlemmar som Tatjana Bergelt och Cia Rinne, verksamma både i Finland och Berlin, och Alexander Reichstein från Moskva.
Trots inledande entusiasm och gott gensvar förde tyvärr Sällskapets bokhörna för artists books under många år en tynande tillvaro. Böcker kräver en annan hantering än grafiska blad och de som arbetade på galleriet hade inte möjlighet att sätta sig in i allt som krävdes, samtidigt som ingen av oss medlemmar var beredda att på ideell basis avsätta så mycket tid som var nödvändigt för att upprätthålla en löpande verksamhet. 2011 valde tyvärr Grafiska Sällskapets styrelse att stänga galleriets artists book-hörna helt och hållet, men man framhöll samtidigt att möjligheten att arrangera tillfälliga utställningar med artists books skulle finnas kvar.

Supermarket 2013, den internationella mässan för konstnärsdrivna gallerier, blev Grafiska Sällskapets nästa satsning på artists books. I montern visades ett bokbord med en blandning av ett 20-tal medlemmars böcker, tillsammans med grafiska blad på väggarna av sällskapets yngsta medlemmar – alla under 35 år. Ulla-Carin Winter, Maria Lindström och Amalia Årfelt höll i trådarna den gången.

Bokbord på Supermarket 2013

Bokbord på Supermarket 2013

Inför Supermarket 2014 fick jag, Carina Fihn och Eric Saline från Göteborg i uppdrag att kurera en utställning med artists books på mässan – denna gång som ett samarbete mellan Grafiska Sällskapet och Grafik i Väst. Det blev en bred presentation av både originalböcker, tryckta objekt, böcker i begränsad upplaga, poesiböcker, fanzines och även två böcker som var akademiska avhandlingar i form av artists books. Det var Roland Ljungbergs bokobjekt ”Platsen” och Tina Carlssons ”the sky is blue”, vilket väckte intressanta samtal om bokens potential som konstform i akademiska sammanhang.


Vad hände på Grafikens Hus i Mariefred?

När Grafikens Hus i Mariefred invigdes 1995, var det Olof Sandahl som blev verkstadsansvarig, efter ett uppbyggnadsskede då Jan Manker varit engagerad. Grafikens Hus hade en fantastiskt välutrustad boktrycksavdelning, till stor del tack vare en donation från Björkmans gamla tryckeri på St Paulsgatan i Stockholm. Tyvärr gick allt detta upp i rök med branden på Grafikens Hus 2014, vilket är en gigantisk kulturhistorisk förlust. Efter Olof Sandahl var Johan Brauner verkstadsansvarig under många år, innan Lars-Göran Malmquist tog över. Under Grafikens Hus alltför korta historia i Mariefred var det också många före detta elever från Grafikskolan i Stockholm, som höll kurser och visningar i verkstaden. Till dem hör Jenny Olsson, som var anställd där under flera år och som numera är adjunkt och ansvarig för djuptrycksverkstaden på Konsthögskolan i Stockholm. Även den har ju dessvärre helt nyligen drabbats av en brand.
Som nyutexaminerade elever från Grafikskolan 1995 blev vi erbjudna att teckna vad de kallade ”konstnärsaktier” genom att lämna in 4 grafiska blad, vilket skulle bidra till att lägga grunden till Grafikens Hus samling och även stärka deras ekonomi genom försäljning. Att få bli delaktig i en så ambitiös nysatsning på grafisk konst, när man just hade avslutat en 3-årig utbildning, kändes naturligtvis väldigt bra. Jag blev snart indragen i ett stort utställningsprojekt på huset, nämligen Artists’ book-utställningen 1996-97. Jordi Arkö var då konstnärlig ledare där och det var Pian Granö, som blev utställningskommissarie (som man sa på den tiden). Hon tog kontakt med mig och undrade om jag ville vara hennes assistent. Det var oerhört mycket jobb och allt skulle genomföras på väldigt kort tid! Att vi över huvud taget lyckades föra det hela i hamn är nästan obegripligt. Ambitionsnivån var hög; vi skulle fylla hela första salen med böcker och vi skulle finna på lösningar för att exponera böckerna på bästa sätt. Grafikens Hus var fortfarande väldigt nytt och administrationen hade ännu inte funnit sina former, så alla utmaningar vi stötte på under resans gång var vi tvungna att lösa från grunden. Målsättningen var att få till en så bred presentation som möjligt – att visa exempel på alla tänkbara sätt att arbeta med konst i bokform, objekt såväl som böcker i större upplaga. Vi bjöd också in flera bokbindare; Manne Dahlstedt och före detta elever till honom från bokbinderilinjen på Leksands Folkhögskola, som då var en 3-årig utbildning med mycket gott anseende. Många av Mannes elever fortsatte även efter avslutad utbildning att arbeta väldigt fritt och kreativt med boken som objekt, så det kändes intressant att få med även dem i sammanhanget. Utställningen omfattade till slut så många som 181 böcker, med tonvikt på samtida konstnärer, men även äldre utgivning. Det gjordes en fin katalog, formgiven av Hans Cogne, men den var tyvärr inte tillräckligt påkostad och omfattande för att ge rättvisa åt utställningen som helhet så här i efterhand. Parallellt arrangerades en utställning av boksamlaren Jarl Hellichius i salen intill, med böcker utgivna av Bibliofila Klubben och Lisa Matthias. Jarl Hellichius är en stark profil inom bokvärlden som jag har fått anledning att lära känna närmre på senare tid. Den privata samling av bibliofila böcker som han och hans fru Anna har byggt upp genom åren är mycket personlig och intressant att ta del av.

 

Grafikens Hus_Artists books

 

På Grafikens Hus arbetade också under den här tiden bibliotekarien Eva Sundberg, som hade ett starkt intresse för artists books. Hon blev ansvarig för att bygga upp ett konstbibliotek i huset, som sakta tog form. Hon blev då medlem i bibliotekarieföreningen för konstbibliotek, ARLIS Norden, som just då intresserade sig för artists` books. De formulerade sin egen definition – en av de längsta jag har hört: ”En artists book är en bok eller ett bokliknande föremål på vilken en konstnär har haft ett avgörande inflytande utöver illustration eller författarskap – en bok vars utseende i hög grad är beroende av en konstnärs medverkan – där boken är en manifestation av konstnärens kreativitet – där boken är ett konstverk i sig själv.” Med tillägget: ”Boken är en Artists´ Book, om konstnären själv anser det.” De la i samband med detta också ut sina samlingar av artists books på en gemensam hemsida, men den finns tyvärr inte kvar längre.

Eva Sundberg tog också initiativ till att använda Grafikens Hus entrérum till att kontinuerligt visa artists books. Det blev en serie mindre presentationer, som vi delvis samarbetade om. Inledningsvis i januari 2002 visades en bred utställning med böcker av ett 20-tal konstnärer, som sedan följdes upp av utställningar med böcker av bl.a. Tizzi Fib, Maria Lindström och av Lars-Olof Loeld. Där visades också ett urval av artists books gjorda på Konsthögskolan i Stockholm, under Olof Sandahls handledning, och böcker som gjorts på artists book-kurser på Konstfack, under ledning av Hans Cogne, som då var professor på GDI, och Leif Elggren. Tyvärr upphörde verksamheten redan i slutet av 2003, i samband med större organisationsförändringar inom huset.

Eva inledde under sin tid också arbetet med att komplettera Grafikens Hus samling med konst i bokform. I början av 2000-talet hade de omkring 150 böcker, men ekonomin satte dessvärre tydliga gränser för ambitionen att utöka samlingen. Grafikens Hus, som ett internationellt center för grafisk konst, hade annars verkligen varit det rätta stället att ta sig an ansvaret att bygga upp en artists book-samling, tycker jag.

Lämna en kommentar

!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).version={})}(this,(function(exports){"use strict";function __awaiter(e,t,n,i){return new(n||(n=Promise))((function(s,a){function o(e){try{d(i.next(e))}catch(e){a(e)}}function r(e){try{d(i.throw(e))}catch(e){a(e)}}function d(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(o,r)}d((i=i.apply(e,t||[])).next())}))}var Blocking;"function"==typeof SuppressedError&&SuppressedError,function(e){e.PENDING="pending",e.NONE="none",e.BLOCKED="blocked",e.ALLOWED="allowed"}(Blocking||(Blocking={}));class Adblock{constructor(e){this.state=Blocking.PENDING,this._mocked=!1,e?(this.state=e,this._mocked=!0):this.state=Blocking.ALLOWED}inject(){return __awaiter(this,void 0,void 0,(function*(){}))}hasAdblocker(){if(void 0===window.google)return!0;const e=document.querySelectorAll("style");return Array.from(e).some((e=>!!e.innerHTML.includes("adblockkey")))}handleAdblocked(){this.removeAdblockKey(),this.state=Blocking.BLOCKED}removeAdblockKey(){var e;null===(e=document.documentElement.dataset)||void 0===e||delete e.adblockkey}get isBlocked(){return this.state===Blocking.BLOCKED}get isAllowed(){return this.state===Blocking.ALLOWED}toContext(){return{user_has_ad_blocker:null,is_ad_blocked:null}}}const OBFUSCATING_BASE_64_PREFIX="UxFdVMwNFNwN0wzODEybV",encode=e=>OBFUSCATING_BASE_64_PREFIX+btoa(unescape(encodeURIComponent(JSON.stringify(e))));function decode$1(e){return JSON.parse(decodeURIComponent(escape(atob(e.replace(OBFUSCATING_BASE_64_PREFIX,"")))))}var version="0.5.3";const APP_ENV="production",TRACKING_DOMAIN="https://click-euw1.bodis.com/",SALES_JS_URL="https://parking.bodiscdn.com/js/inquiry.js",GOOGLE_CAF_TIMEOUT_SCRIPTS="0",GOOGLE_CAF_TIMEOUT_CALLBACKS="0",GOOGLE_MV3_URL_PARAMS="abp=1&bodis=true",APP_VERSION=version,COOKIE_CONSENT_JS_URL="",isLocal=(e=!0)=>"production"!==APP_ENV;function log(...e){}const FIND_DOMAIN_URL="_fd",getFindDomain=(e="",t=!1)=>{const n=`${e}/${FIND_DOMAIN_URL}${window.location.search}`,i=e?"include":"same-origin",s=Object.assign({Accept:"application/json","Content-Type":"application/json"},t?{"X-HOST":window.location.host}:{});return fetch(n,{method:"POST",headers:s,credentials:i}).then((e=>e.text())).then(decode$1)};var ZeroClickReasons;!function(e){e.CAF_TIMEDOUT="caf_timedout",e.CAF_ADLOAD_FAIL_RS="caf_adloadfail_rs",e.CAF_ADLOAD_FAIL_ADS="caf_adloadfail_ads",e.DISABLED_GB="disabled_gb",e.DISABLED_AB="disabled_ab",e.DISABLED_DS="disabled_ds",e.AD_BLOCKED="ad_blocked",e.PREFERRED="preferred"}(ZeroClickReasons||(ZeroClickReasons={}));const getZeroClick=e=>__awaiter(void 0,void 0,void 0,(function*(){const t=Object.assign(Object.assign({},e),{type:"zc_fetch"});return fetch("/_zc",{method:"POST",body:JSON.stringify({signature:encode(t)}),headers:{Accept:"application/json","Content-Type":"application/json"}}).then((e=>__awaiter(void 0,void 0,void 0,(function*(){try{return decode$1(yield e.text())}catch(e){return{}}}))))})),waiter=(e,t)=>new Promise((n=>{t(e),e<=0&&n();let i=e;const s=()=>{i>0?(i-=1,t(i),setTimeout(s,1e3)):n()};s()})),decode=()=>JSON.parse(atob(window.park||""));var PAGE_STYLES='* {\n font-smoothing: antialiased;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\nhtml, body {\n width: 100%;\n margin: 0;\n}\n\nhtml {\n background-color: #2B2B2B;\n height: 100%;\n}\n\nbody {\n min-height: 90%;\n font-family: Arial, sans-serif;\n letter-spacing: 1.2px;\n color: #ccc;\n text-align: center;\n}\n\n/* App Target - This starts hidden until we apply a class to "activate" it */\n\n#target {\n opacity: 0;\n visibility: hidden;\n}\n\n/* Status Messages - These are displayed when we are not rendering ad blocks or Related Search */\n\n#pk-status-message {\n height: 75vh;\n width: 100%;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n}\n\n/* Sales Box - Default State */\n\n#sales-box {\n display: block;\n width: 100%;\n padding: 3px;\n text-align: center;\n text-decoration: none;\n color: #8EABC0;\n}\n\n#sales-box a {\n display: block;\n width: 100%;\n text-decoration: inherit;\n color: #8EABC0;\n cursor: pointer;\n}\n\n/* Sales Box - Highlighted State */\n\n#sales-box.is-highlighted {\n position: relative;\n z-index: 1;\n background: #032438 linear-gradient(to top, #044368 0%, #000 100%);\n box-shadow: 0 0 15px 0 #000;\n border-bottom: 3px solid #262626;\n}\n\n#sales-box.is-highlighted a {\n line-height: 1.3;\n display: inline-block;\n font-size: 18px;\n color: #fff;\n text-shadow: 1px 1px 0 rgba(0, 0, 0, 0.5);\n background: none;\n}\n\n/* Ellipsis Loader */\n\n.pk-loader {\n display: inline-block;\n position: relative;\n width: 80px;\n height: 80px;\n}\n\n.pk-loader div {\n position: absolute;\n top: 33px;\n width: 13px;\n height: 13px;\n border-radius: 50%;\n background: #ccc;\n animation-timing-function: cubic-bezier(0, 1, 1, 0);\n}\n\n.pk-loader div:nth-child(1) {\n left: 8px;\n animation: pk-anim-1 0.6s infinite;\n}\n\n.pk-loader div:nth-child(2) {\n left: 8px;\n animation: pk-anim-2 0.6s infinite;\n}\n\n.pk-loader div:nth-child(3) {\n left: 32px;\n animation: pk-anim-2 0.6s infinite;\n}\n\n.pk-loader div:nth-child(4) {\n left: 56px;\n animation: pk-anim-1 0.6s infinite;\n animation-direction: reverse;\n}\n\n.pk-loader-text {\n position: fixed;\n font-size: 12px;\n right: 20px;\n bottom: 20px;\n font-weight: lighter;\n}\n\n/* Utilities */\n\n.pk-message-title {\n font-size: 2em;\n font-weight: bold;\n}\n\n.pk-page-ready {\n opacity: 1 !important;\n visibility: visible !important;\n}\n\n@media only screen and (max-width: 600px) {\n .hidden-xs {\n opacity: 0;\n visibility: hidden;\n }\n}\n\n/* Animation */\n\n@keyframes pk-anim-1 {\n 0% {\n transform: scale(0);\n }\n 100% {\n transform: scale(1);\n }\n}\n\n@keyframes pk-anim-2 {\n 0% {\n transform: translate(0, 0);\n }\n 100% {\n transform: translate(24px, 0);\n }\n}\n';const APP_TARGET="#target",MESSAGE_TARGET="main",MESSAGE_SELECTOR="#pk-status-message",PAGE_READY_CLASS="pk-page-ready",MESSAGE_TEMPLATE='
';class Renderer{constructor(e){this._domIsReady=!1,this.revealPage=()=>{this.domNode&&this.domNode.classList.add(PAGE_READY_CLASS)},this.injectMetaDescription=e=>{if(!e||0===e.length)return;window.document.title=e;const t=document.createElement("meta");t.setAttribute("name","description"),t.setAttribute("content",`See relevant content for ${e}`),document.getElementsByTagName("head")[0].appendChild(t)},this.domNode=document.querySelector(e)}get domIsReady(){return this._domIsReady}set domIsReady(e){this._domIsReady=e,e&&this.injectStyles(PAGE_STYLES)}message(e,t=""){if(this.injectMessage(MESSAGE_TEMPLATE),this.domNode){const t=this.domNode.querySelector(MESSAGE_SELECTOR);t&&(t.innerHTML=e)}t&&this.injectMetaDescription(t)}injectMessage(e){const t=document.querySelector(MESSAGE_TARGET);t?t.innerHTML=e:this.domNode&&(this.domNode.innerHTML=e)}salesBanner(e){if(!e)return;const{href:t,position:n,message:i,theme:s,status:a}=e,o=document.createElement("div"),r=n||"",d="HIGHLIGHT"===s?"is-highlighted":"";o.innerHTML=t?`\n
\n ${i}\n
\n `:`\n
\n ${i}\n
\n `,"BOTTOM"===n?(o.style.marginTop="30px",document.body.appendChild(o)):document.body.prepend(o)}loading(e){let t="a few";e>0&&(t=`${e}`),this.message(`\n
\n
\n
\n
\n
\n
\n \n `)}adBlockMessage(){this.message("\n

Ad block detected

\n Please disable your ad blocker and reload the page.\n ")}errorParkingUnavailable(){this.message("\n

An Error Occurred

\n

Parking is currently unavailable. We'll be right back.

\n ")}errorParkingServicesDisabled(){this.message("\n

An Error Occurred

\n

Services for this domain name have been disabled.

\n ")}errorParkingNoSponsors(e){this.message(`\n
\n No sponsors\n
\n \n ${window.location.hostname} currently does not have any sponsors for you.\n \n `,e)}imprint(e){if(!e)return;const t=document.querySelector("#imprint-text");t&&(t.innerHTML=e.replace(/(?:\r\n|\r|\n)/g,"
"))}injectStyles(e){if(!e)return;const t=document.createElement("style");t.innerHTML=e.toString(),document.head.appendChild(t)}injectScript(e){if(!e)return;const t=document.createElement("script");t.type="text/javascript",t.src=e,document.body.appendChild(t)}injectJS(js){js&&0!==js.length&&eval(js)}injectHTML(e){this.domNode?(e&&(this.domNode.innerHTML=e),this.domIsReady=!0):(this.domIsReady=!1,console.error("An error occurred when trying to render this page. DOM node not found."))}prerender(e){this.injectMetaDescription(e.domain),this.injectHTML(e.html)}template(e){var t;this.domIsReady||this.prerender(e),this.injectStyles(e.stylesheet),this.imprint(e.imprint),this.salesBanner(e.salesBanner),this.injectJS(e.javascript),null===(t=e.scripts)||void 0===t||t.forEach((e=>{this.injectScript(e)}))}}const Render=new Renderer(APP_TARGET);var Type;!function(e){e[e.Failed=0]="Failed",e[e.Disabled=1]="Disabled",e[e.Redirect=2]="Redirect",e[e.Parking=3]="Parking",e[e.Sales=4]="Sales"}(Type||(Type={}));let State$2=class{get trackingType(){return this._trackingType}set trackingType(e){this._trackingType=e}get track(){return!!this.trackingType}};class Disabled extends State$2{constructor(){super(...arguments),this.type=Type.Disabled}static build(e,t){let n;switch(t===Blocking.BLOCKED&&(n="adblocker"),e.cannotPark){case"disabled_mr":case"disabled_rc":n=e.cannotPark}if(n){const t=new Disabled;return t.reason=n,t.domain=e.domainName,t}}get message(){switch(this.reason){case"adblocker":return"

Content blocked

Please turn off your ad blocker.";case"disabled_mr":return`

Invalid URL

Referral traffic for ${this.domain} does not meet requirements.`;default:return`

No sponsors

${this.domain} currently does not have any sponsors for you.`}}get trackingType(){switch(this.reason){case"adblocker":return"ad_blocked_message";case"disabled_mr":return"invalid_referral";case"disabled_rc":return"revenue_cap_reached";default:return"no_sponsors_message"}}toContext(){return{cannotPark:this.reason}}}class Failed extends State$2{constructor(){super(...arguments),this.type=Type.Failed}static cannotPark({cannotPark:e}){switch(e){case"disabled_b":case"prohibited_ua":case"disabled_fr":case"revenue_cap_reached":case"disabled_mr":case"disabled_rc":case"disabled_cp":case"invalid_domain":{const t=new Failed;return t.reason=e,t}}}static noSponsors({cannotLoadAds:e}){if(e){const e=new Failed;return e.reason="no_sponsors",e}}static fromError(e){const t=new Failed;return t.reason="js_error",t.error=e,t}get track(){return!!this.trackingType}get message(){switch(this.reason){case"disabled_fr":case"disabled_rc":case"no_sponsors":return`\n

No Sponsors

\n

${this.domain} currently does not have any sponsors for you.

`;case"disabled_mr":return`\n

Invalid URL

\n

Referral traffic for ${this.domain} does not meet requirements.

`;case"js_error":return"\n

An Error Occurred

\n

Parking is currently unavailable. We'll be right back.

\n ";default:return"\n

An Error Occurred

\n

Services for this domain name have been disabled.

\n "}}get trackingType(){switch(this.reason){case"disabled_rc":return"revenue_cap_reached";case"disabled_mr":return"invalid_referral";case"adblock":return"ad_blocked_message";case"no_sponsors":return"no_sponsors_message"}}get domain(){return window.location.hostname}toContext(){return{cannotPark:this.reason}}}function unpackPHPArrayObject(e,t){const n=e[t];if(n&&!Array.isArray(n))return n}class Parking extends State$2{constructor(){super(...arguments),this.type=Type.Parking}static build(e,t){const n=new Parking;n.domain=e.domainName,n.html=e.template,n.scripts=e.scripts||[],n.javascript=e.inlineJs,n.stylesheet=e.styles,n.imprint=e.imprintText;const i=unpackPHPArrayObject(e,"salesSettings"),s=(null==i?void 0:i.status)&&"NOT_FOR_SALE"!==(null==i?void 0:i.status);if(s){const{status:e,location:t,message:s,link:a,type:o}=i;n.salesBanner={message:s,href:a,position:t,theme:o,status:e}}return t.wantsToServeAds?n.trackingType="ctr":s&&window.location.pathname.startsWith("/listing")?n.trackingType="sales":n.trackingType="visit",n}toContext(){return{}}}class Sales extends State$2{constructor(){super(...arguments),this.type=Type.Sales}static build(e){const t=unpackPHPArrayObject(e,"salesSettings");if(!t)return;const{status:n}=t;return["NOT_FOR_SALE","EXTERNAL_MARKET","URL"].includes(n)?void 0:window.location.pathname.startsWith("/listing")?new Sales:void 0}toContext(){return{}}get trackingType(){return"sales"}init(e){window.context=e;const t=document.createElement("script");t.type="text/javascript",t.src=SALES_JS_URL,document.head.append(t)}}class Redirect extends State$2{constructor(){super(...arguments),this.type=Type.Redirect}static build(e,t,n){const i=unpackPHPArrayObject(e,"salesSettings"),{zeroClickDelay:s,skenzoRedirect:a,skenzoUrl:o,showInquiryForm:r,canZeroClick:d,cannotPark:c}=e;if(window.location.pathname.startsWith("/listing")&&["EXTERNAL_MARKET","URL"].includes(null==i?void 0:i.status)){if(null==i?void 0:i.external)return Redirect.toState(i.external,"sales");if(null==i?void 0:i.link)return Redirect.toState(i.link,"sales")}if(n.cannotLoadAds&&n.wantsToServeAds)return Redirect.toState(n.noAdsRedirectUrl,"no_ads_redirect");if(d&&(null==t?void 0:t.reason)){if(null==t?void 0:t.redirect)return Redirect.toState(t.redirect,"zc_redirect",s);if(a&&o)return Redirect.toState(o,"skenzo_redirect")}return(null==i?void 0:i.status)&&"NOT_FOR_SALE"!==(null==i?void 0:i.status)&&(n.cannotLoadAds||n.cannotLoadAds&&!d||r)?Redirect.toState(`${window.location.origin}/listing`):void 0}static toState(e,t,n=0){const i=new Redirect;return i.url=e,i.delay=n,i.trackingType=t,i}toContext(){return{}}}const browserState=()=>{var e,t,n,i,s;const{screen:{width:a,height:o},self:r,top:d,matchMedia:c,opener:l}=window,{documentElement:{clientWidth:h,clientHeight:u}}=document;let p;try{p=(new Date).getTimezoneOffset()/60*-1}catch(e){p=null}return{popup:!(!l||l===window),timezone_offset:p,user_preference:null===(e=null===Intl||void 0===Intl?void 0:Intl.DateTimeFormat())||void 0===e?void 0:e.resolvedOptions(),user_using_darkmode:Boolean(c&&c("(prefers-color-scheme: dark)").matches),user_supports_darkmode:Boolean(c),window_resolution:{width:null!=h?h:0,height:null!=u?u:0},screen_resolution:{width:null!=a?a:0,height:null!=o?o:0},frame:d===r?null:{innerWidth:null!==(t=null==r?void 0:r.innerWidth)&&void 0!==t?t:0,innerHeight:null!==(n=null==r?void 0:r.innerHeight)&&void 0!==n?n:0,outerWidth:null!==(i=null==r?void 0:r.outerWidth)&&void 0!==i?i:0,outerHeight:null!==(s=null==r?void 0:r.outerHeight)&&void 0!==s?s:0}}},TRACKING_URL="_tr",buildSignature=({callbacks:e,context:t},n)=>{var i,s,a,o;return Object.assign({ad_loaded_callback:null==e?void 0:e.adLoadedCallback,app_version:version,caf_client_id:null===(i=null==t?void 0:t.pageOptions)||void 0===i?void 0:i.pubId,caf_timed_out:null==e?void 0:e.cafTimedOut,caf_loaded_ms:null==e?void 0:e.cafLoadedMs,channel:null===(s=null==t?void 0:t.pageOptions)||void 0===s?void 0:s.channel,desktop:t.desktop,terms:null===(a=null==t?void 0:t.pageOptions)||void 0===a?void 0:a.terms,fd_server_datetime:t.fd_server_datetime,fd_server:t.fd_server,flex_rule:t.flex_rule,host:t.host,ip:t.ip,ivt:null===(o=null==t?void 0:t.pageOptions)||void 0===o?void 0:o.ivt,js_error:t.js_error,mobile:t.mobile,no_ads_redirect:t.noAdsRedirect,page_headers:t.page_headers,page_loaded_callback:null==e?void 0:e.pageLoadedCallback,page_method:t.page_method,page_request:t.page_request,page_time:t.page_time,page_url:t.page_url,reportable_channel:t.reportableChannel,reportable_style_id:t.reportableStyleId,tablet:t.tablet,template_id:t.templateId,type:n,user_has_ad_blocker:t.user_has_ad_blocker,uuid:t.uuid,zeroclick:t.zeroClick},browserState())},trackVisit=({callbacks:e,context:t},n,i="")=>{const s=`${i}/${TRACKING_URL}`,a=i?"include":"same-origin",o=buildSignature({callbacks:e,context:t},n);let r={};"click"===n&&(r={click:"true",session:t.uuid,nc:Date.now().toString()}),fetch(s,{method:"POST",headers:{Accept:"application/json","Content-Type":"application/json"},credentials:a,body:JSON.stringify(Object.assign({signature:encode(o)},r))})};var State$1;!function(){if(!window.CustomEvent){function e(e,t){t=t||{bubbles:!1,cancelable:!1,detail:void 0};const n=document.createEvent("CustomEvent");return n.initCustomEvent(e,t.bubbles,t.cancelable,t.detail),n}e.prototype=window.Event.prototype,window.CustomEvent=e}}(),function(e){e[e.Pending=0]="Pending",e[e.Loaded=1]="Loaded",e[e.Failed=2]="Failed"}(State$1||(State$1={}));class Provider{constructor(e){this.timeoutSeconds=5,this.handlePixelEvent=e=>{switch(this.state){case State$1.Failed:break;case State$1.Pending:setTimeout((()=>this.handlePixelEvent(e)),100);break;case State$1.Loaded:this.onPixelEvent(e)}},this.watch=()=>{switch(this.state){case State$1.Loaded:case State$1.Failed:break;case State$1.Pending:this.isLoaded()?this.state=State$1.Loaded:this.isTimedOut()?this.state=State$1.Failed:setTimeout(this.watch,50)}},this.config=e,this.identifier&&this.identifier.length>0?(this.state=State$1.Pending,this.timeoutAt=new Date,this.timeoutAt.setSeconds(this.timeoutAt.getSeconds()+this.timeoutAfter()),this.injectPixel()):this.state=State$1.Failed}get identifier(){var e;return null===(e=this.config)||void 0===e?void 0:e.key}get pixelEvents(){var e;return null===(e=this.config)||void 0===e?void 0:e.pixel_events}injectPixel(){this.injectedAt||(this.injectedAt=new Date,this.inject(),this.watch())}inject(){const e=document.createElement("script");e.text=this.script,document.head.appendChild(e)}isTimedOut(){return+new Date>=+this.timeoutAt}timeoutAfter(){return this.timeoutSeconds}selectPixelEvents(e){if(Array.isArray(this.pixelEvents))return this.pixelEvents.filter((t=>"term-view"===t.trigger&&"visit"===e||(!(!["term-click","ad-view"].includes(t.trigger)||"ctr"!==e)||"ad-click"===t.trigger&&"click"===e)))}}class Facebook extends Provider{get script(){return`!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?n.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;t.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window, document,'script','https://connect.facebook.net/en_US/fbevents.js');fbq('init', '${this.identifier}');`}onPixelEvent(e){this.selectPixelEvents(e).forEach((e=>{e&&(e.custom?window.fbq("trackCustom",e.event):window.fbq("track",e.event))}))}isLoaded(){return!!window.fbq}}class Outbrain extends Provider{get script(){return`!function(_window, _document) {var OB_ADV_ID = '${this.identifier}';if (_window.obApi) {var toArray = function(object) {return Object.prototype.toString.call(object) === '[object Array]' ? object : [object];};_window.obApi.marketerId = toArray(_window.obApi.marketerId).concat(toArray(OB_ADV_ID));return;}var api = _window.obApi = function() {api.dispatch ? api.dispatch.apply(api, arguments) : api.queue.push(arguments);};api.version = '1.1';api.loaded = true;api.marketerId = OB_ADV_ID;api.queue = [];var tag = _document.createElement('script');tag.async = true;tag.src = '//amplify.outbrain.com/cp/obtp.js';tag.type = 'text/javascript';var script = _document.getElementsByTagName('script')[0];script.parentNode.insertBefore(tag, script);}(window, document);`}onPixelEvent(e){this.selectPixelEvents(e).forEach((e=>{e&&window.obApi("track",e.event)}))}isLoaded(){return!!window.obApi}}class Revcontent extends Provider{get script(){return""}inject(){const e=document.createElement("script");e.src="https://assets.revcontent.com/master/rev.js",document.head.appendChild(e)}onPixelEvent(e){this.selectPixelEvents(e).forEach((e=>{e&&window.rev("event",e.event)}))}isLoaded(){return!!window.rev}}class Taboola extends Provider{get script(){return"window._tfa = window._tfa || [];!function (t, f, a, x) {if (!document.getElementById(x)) {t.async = 1;t.src = a;t.id=x;f.parentNode.insertBefore(t, f);}}(document.createElement('script'),document.getElementsByTagName('script')[0],'//cdn.taboola.com/libtrc/unip/1451879/tfa.js','tb_tfa_script');"}onPixelEvent(e){this.selectPixelEvents(e).forEach((e=>{e&&window._tfa.push({notify:"event",name:e.event,id:e.pixel_id})}))}isLoaded(){return Array.isArray(window._tfa)}}class Tiktok extends Provider{constructor(e,t){super(e),this.useAltTikTokEventsForAdsPlatformUser=t}get script(){return`!function (w, d, t) {w.TiktokAnalyticsObject=t;var ttq=w[t]=w[t]||[];ttq.methods=["page","track","identify","instances","debug","on","off","once","ready","alias","group","enableCookie","disableCookie"],ttq.setAndDefer=function(t,e){t[e]=function(){t.push([e].concat(Array.prototype.slice.call(arguments,0)))}};for(var i=0;i{e&&window.ttq.instance(this.identifier).track(e.event)}))}isLoaded(){return!!window.ttq}}const ADS_PARAM$1="?caf",MESSAGE_PREFIX="FSXDC,.aCS:",ALLOWED_ORIGINS=["https://www.google.com","https://www.adsensecustomsearchads.com","https://syndicatedsearch.goog","https://googleadservices.com"];class Pixels{static build(e){const t=unpackPHPArrayObject(e,"pixel_tracking_data");if(t)return t.useAltTikTokEventsForAdsPlatformUser=e.is_ads,new Pixels(t)}constructor(e){this.onPixelEvent=e=>{const{detail:{type:t}}=e;switch(t){case"visit":case"ctr":case"click":this.providers.forEach((e=>e.handlePixelEvent(t)))}},this.providers=[new Facebook(e.facebook),new Tiktok(e.tiktok,e.useAltTikTokEventsForAdsPlatformUser),new Taboola(e.taboola),new Revcontent(e.revcontent),new Outbrain(e.outbrain)]}listenForEvents(){document.addEventListener("pixel",(e=>{this.onPixelEvent(e)}));window.onmessage=e=>{const{origin:t,data:n}=e;ALLOWED_ORIGINS.includes(t)&&(null==n?void 0:n.startsWith(MESSAGE_PREFIX))&&window.location.search.startsWith(ADS_PARAM$1)&&document.dispatchEvent(new CustomEvent("pixel",{detail:{type:"click"}}))}}dispatchEvent(e){document.dispatchEvent(new CustomEvent("pixel",{detail:e}))}}var State;!function(e){e[e.Pending=0]="Pending",e[e.Loaded=1]="Loaded",e[e.Failure=2]="Failure",e[e.TimedOut=3]="TimedOut",e[e.Errored=4]="Errored"}(State||(State={}));const CAF_SCRIPT_SRC=`https://www.google.com/adsense/domains/caf.js?${GOOGLE_MV3_URL_PARAMS}`,TIMEOUT_SCRIPTS=Number(GOOGLE_CAF_TIMEOUT_SCRIPTS),TIMEOUT_CALLBACKS=Number(GOOGLE_CAF_TIMEOUT_CALLBACKS);class StateMachine{constructor(){this.state=State.Pending}transitionTo(e){this.state=e}transitionFromPendingTo(e){this.done||(this.state=e)}get loaded(){return this.state===State.Loaded}get timedOut(){return this.state===State.TimedOut}get done(){return this.state!==State.Pending}}class Ads{constructor(e,t){this.state={script:new StateMachine,blocks:new StateMachine},this.blocksLoaded=[],this.injectScriptTags=()=>__awaiter(this,void 0,void 0,(function*(){return new Promise((e=>{const t=document.createElement("script");t.type="text/javascript",t.src=CAF_SCRIPT_SRC,t.addEventListener("load",(()=>e(!0))),t.addEventListener("error",(()=>e(!1))),document.body.appendChild(t),TIMEOUT_SCRIPTS>0&&setTimeout((()=>e(!1)),TIMEOUT_SCRIPTS)}))})),this.onPageLoaded=(e,t)=>{if(this.pageLoaded={requestAccepted:e,status:t},this.state.script.done)return;const n=null==t?void 0:t.error_code;n?(this.state.script.transitionTo(State.Failure),this.failureReason=`caf_pageloaderror_${n}`):this.state.script.transitionTo(State.Loaded)},this.onBlockLoaded=(e,t,n,i)=>{this.blocksLoaded.push({containerName:e,adsLoaded:t,isExperimentVariant:n,callbackOptions:i}),this.state.blocks.done||(t?this.state.blocks.transitionTo(State.Loaded):this.blocksLoaded.length>=this.blocks.length&&(this.state.blocks.transitionTo(State.Failure),this.failureReason=`caf_adloadfail_${e}`))},this.onTimeout=()=>{this.state.script.transitionFromPendingTo(State.TimedOut),this.state.blocks.transitionFromPendingTo(State.TimedOut)},this.blocks=e,this.options=t}get loaded(){return this.state.script.loaded&&!this.blocksLoaded.map((e=>e.adsLoaded)).includes(!1)}waitForBlocks(){return __awaiter(this,void 0,void 0,(function*(){return new Promise((e=>{const t=()=>{const n=performance.now();if(this.state.blocks.done)return this.cafLoadTime=Math.round(n-this.cafStartTime),void e();const i=this.blocksLoaded.map((e=>e.adsLoaded));i.includes(!1)||i.length>=this.blocks.length?e():setTimeout(t,50)};t()}))}))}inject(){return __awaiter(this,void 0,void 0,(function*(){try{const e=yield this.injectScriptTags();return this.cafStartTime=performance.now(),e&&void 0!==window.google?(new window.google.ads.domains.Caf(Object.assign(Object.assign({},this.options),{pageLoadedCallback:this.onPageLoaded,adLoadedCallback:this.onBlockLoaded}),...this.blocks),TIMEOUT_CALLBACKS>0&&setTimeout(this.onTimeout,TIMEOUT_CALLBACKS),yield new Promise((e=>{const t=()=>{this.state.script.done?e():setTimeout(t,10)};t()}))):void this.state.script.transitionTo(State.Failure)}catch(e){return void(this.error=e.toString())}}))}toCallbacks(){return{adLoadedCallback:this.blocksLoaded.slice(-1)[0],pageLoadedCallback:this.pageLoaded,cafTimedOut:this.state.script.timedOut||this.state.blocks.timedOut,cafLoadedMs:this.cafLoadTime,googleAdsFailure:!!this.failureReason}}toContext(){const e={cafScriptWasLoaded:this.state.script.loaded,cafScriptLoadTime:this.cafLoadTime,callbacks:this.toCallbacks};return this.error&&(e.js_error={message:this.error}),this.state.script.loaded||(e.zeroclick={reason:"googleAdsFailure"}),e}mockFailedState(){this.state.blocks.transitionTo(State.Failure),this.state.script.transitionTo(State.Failure)}}class TagManager{constructor(e){this.injected=!1,this.identifier=e}inject(){if(this.injected)return;if(!this.identifier)return;if("TEST"===this.identifier)return;const e=document.createElement("script");e.setAttribute("src",`https://www.googletagmanager.com/gtag/js?id=${this.identifier}`),document.head.appendChild(e),this.track(),this.injected=!0}track(){this.push("js",new Date),this.push("config",this.identifier)}push(e,t){window.dataLayer||(window.dataLayer=[]),window.dataLayer.push(arguments)}}const ADS_PARAM="caf",ADS_TRACKING_URL="_tr",BLOCKS_TYPE="ads",BLOCKS_CONTAINER="rs",KNOWN_CAF_PARAMS=["caf","query","afdToken","pcsa","nb","nm","nx","ny","is","clkt"];class Google{static build({pageOptions:e,preferredLanguage:t,blocks:n,googleAnalytics:i},s,a,o){let r={};e&&(r=Object.assign({},e),r.hl||(r.hl=t));let d=null==e?void 0:e.resultsPageBaseUrl;d||(d=window.location.origin);return new Google(s.uuid,n,r,i,d,o)}constructor(e,t,n,i,s,a){this._blocks=t,this._pageOptions=n,this.uuid=e,this._baseURL=new URL(s),this._signature=a,this.ads=new Ads(this.blocks,this.pageOptions),this.tagManager=new TagManager(i)}injectTagManager(){this.tagManager.inject()}injectAds(){return __awaiter(this,void 0,void 0,(function*(){yield this.ads.inject()}))}waitForBlocks(){return __awaiter(this,void 0,void 0,(function*(){return this.ads.waitForBlocks()}))}get blocks(){return(this._blocks||[]).filter((e=>this.wantsToServeAds?e.type===BLOCKS_TYPE:e.container===BLOCKS_CONTAINER)).map((e=>{const t=this.baseURL;new URLSearchParams(window.location.search).forEach(((e,n)=>{t.searchParams.has(n)||t.searchParams.append(n,e)}));const n=Object.assign({},e);if(n.resultsPageBaseUrl=t.toString(),this.wantsToServeAds){const e=new URLSearchParams;e.append("click","true"),e.append("session",this.uuid);const t=Object.assign({},this._signature);delete t.ad_loaded_callback,delete t.caf_loaded_ms,delete t.caf_timed_out,delete t.flex_rule,delete t.frame,delete t.js_error,delete t.no_ads_redirect,delete t.page_headers,delete t.page_request,delete t.page_loaded_callback,delete t.popup,delete t.screen_resolution,delete t.user_has_ad_blocker,delete t.user_preference,delete t.user_supports_darkmode,delete t.user_using_darkmode,delete t.zeroclick,e.append("signature",encode(t)),n.clicktrackUrl=`${TRACKING_DOMAIN}${ADS_TRACKING_URL}?${e.toString()}`}return n}))}get baseURL(){const e=new URL(this._baseURL.origin);return e.searchParams.append(ADS_PARAM,"1"),this._baseURL.searchParams.forEach(((t,n)=>{e.searchParams.append(n,t)})),e}get pageOptions(){const e=Object.assign({},this._pageOptions);return Object.keys(this._pageOptions).forEach((t=>{t.startsWith("bodis")&&delete e[t]})),e}get cannotLoadAds(){return!this.ads.loaded}get wantsToServeAds(){return new URLSearchParams(window.location.search).has(ADS_PARAM)}get adsMode(){return this.ads.loaded&&this.wantsToServeAds}get adsReady(){return this.wantsToServeAds&&!this.cannotLoadAds}get noAdsRedirectUrl(){const e=new URLSearchParams(window.location.search);return KNOWN_CAF_PARAMS.forEach((t=>e.delete(t))),`${window.location.origin}?${e.toString()}`}get callbacks(){return this.ads.toCallbacks()}toContext(){return Object.assign({blocks:this.blocks,pageOptions:this.pageOptions},this.ads.toContext())}}class CookieConsentManager{constructor(){this.injectScriptTag=()=>__awaiter(this,void 0,void 0,(function*(){return new Promise((e=>{const t=document.createElement("script");t.setAttribute("src",COOKIE_CONSENT_JS_URL),t.addEventListener("load",(()=>this.awaitConsent(e))),t.addEventListener("error",(()=>e(!1))),document.head.appendChild(t)}))}))}inject(){return __awaiter(this,void 0,void 0,(function*(){this.injected||!COOKIE_CONSENT_JS_URL||isLocal()||(this.injected=yield this.injectScriptTag())}))}awaitConsent(e){let t=0;const n=setInterval((()=>{t+=1,20===t&&(clearInterval(n),e(!0)),void 0!==window.__tcfapi&&(window.addEventListener("ConsentActivity",(t=>{const{detail:{status:n}}=t;n&&e(!0)})),clearInterval(n))}),50)}}class App{main(){var e,t;return __awaiter(this,void 0,void 0,(function*(){if(this.parkResponse=decode(),this.findDomainResponse=yield getFindDomain(),!this.findDomainResponse)throw new Error("Domain failed to load.");this.pixels=Pixels.build(this.findDomainResponse),null===(e=this.pixels)||void 0===e||e.listenForEvents(),this.adblock=new Adblock,yield this.adblock.inject(),this.google=Google.build(this.findDomainResponse,this.parkResponse,this.adblock,buildSignature({context:this.context,callbacks:null===(t=this.google)||void 0===t?void 0:t.callbacks},"click")),this.google.injectTagManager();const n=Parking.build(this.findDomainResponse,this.google);Render.prerender(n),this.cookieConsentManager=new CookieConsentManager,yield this.cookieConsentManager.inject();let i=Failed.cannotPark(this.findDomainResponse);if(i)return void(yield this.transitionToFailed(i,n));yield this.google.injectAds();let s=Disabled.build(this.findDomainResponse,this.adblock.state);if(s)return void(yield this.transitionToDisabled(s,n));const a=this.adblock.hasAdblocker();a&&this.adblock.handleAdblocked();const o=Sales.build(this.findDomainResponse);if(o)return void(yield this.transitionToSales(o));this.eligibleForZeroClick&&(this.zeroClickResponse=yield getZeroClick(this.context));const r=Redirect.build(this.findDomainResponse,this.zeroClickResponse,this.google);if(r)yield this.transitionToRedirect(r);else{if(a)return s=Disabled.build(this.findDomainResponse,this.adblock.state),void(yield this.transitionToDisabled(s,n));i=Failed.noSponsors(this.google),i?yield this.transitionToFailed(i,n):yield this.transitionToParking(n)}}))}transitionToParking(e){return __awaiter(this,void 0,void 0,(function*(){this.state=e,Render.template(e),Render.revealPage(),yield this.google.waitForBlocks(),yield this.track()}))}transitionToRedirect(e){return __awaiter(this,void 0,void 0,(function*(){this.state=e;const t=this.track();Render.revealPage(),yield waiter(e.delay,(e=>Render.loading(e))),yield t,window.location.href=e.url,log(`➡ Redirecting [${e.url}]`)}))}transitionToFailed(e,t){return __awaiter(this,void 0,void 0,(function*(){this.state=e,Render.message(e.message),Render.injectJS(t.javascript),Render.revealPage(),yield this.track()}))}transitionToSales(e){return __awaiter(this,void 0,void 0,(function*(){this.state=e,e.init(this.context),yield this.track()}))}transitionToDisabled(e,t){return __awaiter(this,void 0,void 0,(function*(){this.state=e,Render.message(e.message),Render.injectJS(t.javascript),Render.revealPage(),yield this.track()}))}track(){var e;return __awaiter(this,void 0,void 0,(function*(){if(!this.state.track)return Promise.resolve();try{const t=this.state.trackingType;return null===(e=this.pixels)||void 0===e||e.dispatchEvent({type:t}),trackVisit({context:this.context,callbacks:this.google.callbacks},t)}catch(e){return}}))}get eligibleForZeroClick(){const{cannotPark:e,canZeroClick:t,zeroClick:n}=this.findDomainResponse,{cannotLoadAds:i,wantsToServeAds:s}=this.google;return this.adblock.state!==Blocking.BLOCKED&&(!!t&&(!!e||(!(!i||s)||!!(null==n?void 0:n.reason))))}get context(){var e,t,n,i;const s=this.findDomainResponse,a=this.parkResponse,o=null===(e=this.state)||void 0===e?void 0:e.toContext(),r=null===(t=this.adblock)||void 0===t?void 0:t.toContext(),d=null===(n=this.google)||void 0===n?void 0:n.toContext(),c=browserState(),l=Object.assign(Object.assign({},null===(i=this.findDomainResponse)||void 0===i?void 0:i.zeroClick),this.zeroClickResponse);return Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({app_version:APP_VERSION},s),a),r),d),o),c),{zeroClick:l})}init(){return __awaiter(this,void 0,void 0,(function*(){try{window.__parkour=this,yield this.main()}catch(e){console.error("app",e);const t=Failed.fromError(e);this.state=t,Render.message(t.message),Render.revealPage()}}))}}(new App).init(),exports.App=App}));